diff --git a/Gruntfile.js b/Gruntfile.js
index 368a526f1..ff2cf9eaa 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -107,16 +107,6 @@ module.exports = function (grunt) {
dest: disDir + '<%= pkg.name %>.parse.min.js'
}
},
- closurecompiler: {
- dist: {
- src: disDir + '<%= pkg.name %>.all.js',
- dest: disDir + '<%= pkg.name %>.all.min.js'
- },
- parse: {
- src: disDir + '<%= pkg.name %>.parse.js',
- dest: disDir + '<%= pkg.name %>.parse.min.js'
- }
- },
copy: {
base: {
files: [
@@ -229,14 +219,14 @@ module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-text-replace');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-cssmin');
- grunt.loadNpmTasks('grunt-closurecompiler');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-transcoding');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.registerTask('default', 'UEditor build', function () {
- var tasks = [ 'concat', 'cssmin', 'closurecompiler', 'copy:base', 'copy:' + server, 'copy:demo', 'replace:demo', 'clean' ];
+ var tasks = [ 'concat', 'cssmin', 'uglify', 'copy:base', 'copy:' + server, 'copy:demo', 'replace:demo', 'clean' ];
if (encode === 'gbk') {
tasks.push('replace:fileEncode');
@@ -279,4 +269,4 @@ module.exports = function (grunt) {
}
-};
\ No newline at end of file
+};
diff --git a/_examples/completeDemo.html b/_examples/completeDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/customPluginDemo.html b/_examples/customPluginDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/customToolbarDemo.html b/_examples/customToolbarDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/editor_api.js b/_examples/editor_api.js
index 54b81bdf1..fc0bba4ce 100755
--- a/_examples/editor_api.js
+++ b/_examples/editor_api.js
@@ -89,8 +89,9 @@
'plugins/section.js',
'plugins/simpleupload.js',
'plugins/serverparam.js',
- 'plugins/insertfile.js',
- 'ui/ui.js',
+ 'plugins/insertfile.js',
+ 'plugins/xssFilter.js',
+ 'ui/ui.js',
'ui/uiutils.js',
'ui/uibase.js',
'ui/separator.js',
@@ -119,9 +120,8 @@
'adapter/editorui.js',
'adapter/editor.js',
'adapter/message.js',
- 'adapter/autosave.js'
-
- ],
+ 'adapter/autosave.js'
+ ],
baseURL = '../_src/';
for (var i=0,pi;pi = paths[i++];) {
document.write('');
diff --git a/_examples/filterRuleDemo.html b/_examples/filterRuleDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/highlightDemo.html b/_examples/highlightDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/index.html b/_examples/index.html
old mode 100755
new mode 100644
diff --git a/_examples/jqueryCompleteDemo.html b/_examples/jqueryCompleteDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/jqueryValidation.html b/_examples/jqueryValidation.html
old mode 100755
new mode 100644
diff --git a/_examples/multiDemo.html b/_examples/multiDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/renderInTable.html b/_examples/renderInTable.html
old mode 100755
new mode 100644
diff --git a/_examples/resetDemo.html b/_examples/resetDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/setWidthHeightDemo.html b/_examples/setWidthHeightDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/simpleDemo.html b/_examples/simpleDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/submitFormDemo.html b/_examples/submitFormDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/textareaDemo.html b/_examples/textareaDemo.html
old mode 100755
new mode 100644
diff --git a/_examples/uparsedemo.html b/_examples/uparsedemo.html
old mode 100755
new mode 100644
diff --git a/_src/core/htmlparser.js b/_src/core/htmlparser.js
index 3d242fc16..013a7ec92 100644
--- a/_src/core/htmlparser.js
+++ b/_src/core/htmlparser.js
@@ -194,4 +194,4 @@ var htmlparser = UE.htmlparser = function (htmlstr,ignoreBlank) {
text(currentParent, htmlstr.slice(nextIndex));
}
return root;
-};
\ No newline at end of file
+};
diff --git a/_src/core/utils.js b/_src/core/utils.js
index 036a93d91..7584d96e9 100644
--- a/_src/core/utils.js
+++ b/_src/core/utils.js
@@ -474,6 +474,24 @@ var utils = UE.utils = {
}) : '';
},
+ /**
+ * 将url中的html字符转义, 仅转义 ', ", <, > 四个字符
+ * @param { String } str 需要转义的字符串
+ * @param { RegExp } reg 自定义的正则
+ * @return { String } 转义后的字符串
+ */
+ unhtmlForUrl:function (str, reg) {
+ return str ? str.replace(reg || /[<">']/g, function (a) {
+ return {
+ '<':'<',
+ '&':'&',
+ '"':'"',
+ '>':'>',
+ "'":'''
+ }[a]
+
+ }) : '';
+ },
/**
* 将str中的转义字符还原成html字符
@@ -1189,4 +1207,4 @@ utils.each(['String', 'Function', 'Array', 'Number', 'RegExp', 'Object', 'Date']
UE.utils['is' + v] = function (obj) {
return Object.prototype.toString.apply(obj) == '[object ' + v + ']';
}
-});
\ No newline at end of file
+});
diff --git a/_src/editor.js b/_src/editor.js
old mode 100755
new mode 100644
diff --git a/_src/plugins/image.js b/_src/plugins/image.js
index 82cd4101b..1cd07cb2d 100644
--- a/_src/plugins/image.js
+++ b/_src/plugins/image.js
@@ -195,6 +195,29 @@ UE.commands['insertimage'] = {
return;
}
+ function unhtmlData(imgCi) {
+
+ utils.each('width,height,border,hspace,vspace'.split(','), function (item) {
+
+ if (imgCi[item]) {
+ imgCi[item] = parseInt(imgCi[item], 10) || 0;
+ }
+ });
+
+ utils.each('src,_src'.split(','), function (item) {
+
+ if (imgCi[item]) {
+ imgCi[item] = utils.unhtmlForUrl(imgCi[item]);
+ }
+ });
+ utils.each('title,alt'.split(','), function (item) {
+
+ if (imgCi[item]) {
+ imgCi[item] = utils.unhtml(imgCi[item]);
+ }
+ });
+ }
+
if (img && /img/i.test(img.tagName) && (img.className != "edui-faked-video" || img.className.indexOf("edui-upload-video")!=-1) && !img.getAttribute("word_img")) {
var first = opt.shift();
var floatStyle = first['floatStyle'];
@@ -213,6 +236,8 @@ UE.commands['insertimage'] = {
var html = [], str = '', ci;
ci = opt[0];
if (opt.length == 1) {
+ unhtmlData(ci);
+
str = ' /**"," * 该文件定义了API文档所使用到的本地函数的说明 "," * @file "," * @module Native "," */ ","","/** "," * 辅助接口说明 "," * @module Native "," * @unfile "," */ ","","/** "," * 原生String对象, 字符串 "," * @class String "," */ ","","/** "," * 原生Function对象, 函数 "," * @class Function "," */ ","","/** "," * 原生Object对象, 普通对象 "," * @class Object "," */ ","","/** "," * 原生Boolean对象, 布尔值 "," * @class Boolean "," */ ","","/** "," * 原生Number对象, 数值 "," * @class Number "," */ ","","/** "," * 原生NULL对象, 空 "," * @class NULL "," */ ","","/** "," * 原生Array对象, 数组 "," * @class Array "," */ ","","/** "," * 浏览器DOMNode, dom节点 "," * @class Node "," */ ","","/** "," * 浏览器DOMElement, dom元素 "," * @class Element "," */ "];
diff --git a/_test/coverage/commands.js b/_test/coverage/commands.js
new file mode 100644
index 000000000..9bd1f4b23
--- /dev/null
+++ b/_test/coverage/commands.js
@@ -0,0 +1,43 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['commands.js']) {
+ _$jscoverage['commands.js'] = [];
+}
+_$jscoverage['commands.js'].source = ["//本文件非编辑器核心文件,仅适用于生成对应的命令接口文档 ","/** "," * @file "," * @name 编辑器命令接口 "," * @short Commands "," * @desc "," * "," * UEditor中执行命令的统一调用格式为 "," * <code>editor.execCommand(\"cmdName\"[,opt]);</code> "," * "," * "," * 检测当前命令是否可用的方法是 "," * <code>editor.queryCommandState(\"cmdName\");</code> "," * "," * "," * 部分命令可以返回命令值,其格式为 "," * <code>editor.queryCommandValue(\"cmdName\");</code> "," */ ","/** "," * 插入锚点 "," * @name anchor "," * @grammar editor.execCommand(\"anchor\",\"name\"); //锚点的名字 "," */ ","/** "," * 为当前选中文字添加粗体效果 "," * @name bold "," * @grammar editor.execCommand(\"bold\"); "," */ ","/** "," * 为当前选中文字添加斜体效果 "," * @name italic "," * @grammar editor.execCommand(\"italic\"); "," */ ","/** "," * 为当前选中文字添加下划线效果 "," * @name underline "," * @grammar editor.execCommand(\"underline\"); "," */ ","","","/** "," * 为当前选中文字添加删除线效果 "," * @name strikethrough "," * @grammar editor.execCommand(\"strikethrough\"); "," */ ","/** "," * 将当前选中文字转换成上标 "," * @name superscript "," * @grammar editor.execCommand(\"superscript\"); "," */ ","/** "," * 将当前选中文字转换成下标 "," * @name subscript "," * @grammar editor.execCommand(\"subscript\"); "," */ ","/** "," * 为当前选中文字添加颜色 "," * @name foreColor "," * @grammar editor.execCommand(\"foreColor\",\"#ffffff\"); "," */ ","/** "," * 为当前选中文字添加背景颜色 "," * @name backColor "," * @grammar editor.execCommand(\"backColor\",\"#dddddd\"); "," */ ","/** "," * 设置当前选中文字的字体 "," * @name fontFamily "," * @grammar editor.execCommand(\"fontFamily\",\"微软雅黑,Microsoft YaHei\"); "," */ ","/** "," * 设置当前选中文字的字号 "," * @name fontSize "," * @grammar editor.execCommand(\"fontSize\",\"32px\"); "," */ ","/** "," * 设置当前选区的段落格式,如p,h1,h2,h3,... "," * @name paragraph "," * @grammar editor.execCommand(\"paragraph\",\"h1\"); "," */ ","/** "," * 将当前选区变换成有序或者无序列表 "," * @name insert(Un)OrderedList "," * @grammar editor.execCommand(\"insertOrderedList\"); "," */ ","/** "," * 设置当前选区的行间距 "," * @name lineHeight "," * @grammar editor.execCommand(\"lineHeight\"); "," */ ","/** "," * 设置当前选区中的字体对齐方式 "," * @name justify "," * @grammar editor.execCommand(\"justify\",align); //align可为Left,Right,Center,Justify "," */ ","/** "," * 将当前选中文字中的字母转换成大写 "," * @name toUppercase "," * @grammar editor.execCommand(\"toUppercase\"); "," */ ","/** "," * 将当前选中文字中的字母转换成小写 "," * @name toLowercase "," * @grammar editor.execCommand(\"toLowercase\"); "," */ ","/** "," * 为当前选区所在的块级元素添加引用标记 "," * @name blockquote "," * @grammar editor.execCommand(\"blockquote\"); "," */ ","/** "," * 设置当前选区所在块级元素的文字输入方向 "," * @name directionality "," * @grammar editor.execCommand(\"directionality\",dir); //dir可为LTR,RTL "," */ ","/** "," * 清除当前选中文字上的所有样式或者指定样式 "," * @name removeFormat "," * @grammar editor.execCommand(\"removeFormat\") //根据ueditor.config.js里的removeFormatTags,removeFormatAttributes两个属性作为规则 "," * @grammar editor.execCommand(\"removeFormat\",tags,style); //清除指定tags上的指定style "," * @example "," * editor.execCommand(\"removeFormat\",'span,a','color,background-color') "," */ ","/** "," * 切换纯文本粘贴模式 "," * @name pastePlain "," * @grammar ue.execCommand(\"pastePlain\"); "," */ ","/** "," * 开启格式刷功能 "," * @name formatMatch "," * @grammar editor.execCommand(\"formatMatch\"); "," */ ","/** "," * 清空文档 "," * @name clearDoc "," * @grammar editor.execCommand(\"clearDoc\"); "," */ ","/** "," * 删除当前选中文本 "," * @name delete "," * @grammar editor.execCommand(\"delete\"); "," */ ","/** "," * 全部选择 "," * @name selectAll "," * @grammar editor.execCommand(\"selectAll\"); "," */ ","/** "," * 撤销操作 "," * @name undo "," * @grammar editor.execCommand(\"undo\"); "," */ ","/** "," * 恢复操作 "," * @name redo "," * @grammar editor.execCommand(\"redo\"); "," */ ","/** "," * 对整个编辑文档进行自动排版 "," * @name autoTypeset "," * @grammar editor.execCommand(\"autoTypeset\"); "," */ ","/** "," * 在当前选区位置插入一段html代码,最基本功能。大部分其他插入命令都会调用此命令完成最后的插入 "," * @name insertHtml "," * @grammar editor.execCommand(\"insertHtml\",\"欢迎使用UEditor!\") "," */ ","/** "," * 在当前选区位置插入一个超链接 "," * @name link "," * @grammar editor.execCommand(\"link\",linkObj); "," * @example "," * editor.execCommand(\"link\",{ "," * href: \"http://ueditor.baidu.com\", //超链地址,必选 "," * _src: \"http://ueditor.baidu.com\", //UE内部使用参数,与href保持一致即可,可选 "," * target: \"_self\", //目标窗口,可选 "," * textValue: \"UEditor\", //链接显示文本,可选 "," * title: \"百度开源富文本编辑器UEditor官网\" //标题,可选 "," * }) "," */ ","/** "," * 在当前选区位置插入一个图片 "," * @name insertImage "," * @grammar editor.execCommand(\"insertImage\",imageObj); "," * @example "," * editor.execCommand(\"insertImage\",{ "," * src: \"http://ueditor.baidu.com/logo.jpg\", //图片链接地址,必选 "," * _src: \"http://ueditor.baidu.com/logo.jpg\", //UE内部使用参数,与src保持一致即可,可选 "," * width: 300, //图片显示宽度,可选 "," * height: 400, //图片显示高度,可选 "," * border: 2, //图片边框,可选 "," * hspace: 5, //图片左右边距,可选 "," * vspace: 2, //图片上下边距,可选 "," * alt: 'UEditor-logo', //图片替换文字,可选 "," * title: \"百度开源富文本编辑器UEditor官网\" //图片标题,可选 "," * }) "," */ ","/** "," * 在当前选区位置插入一个视频 "," * @name insertVideo "," * @grammar editor.execCommand(\"insertVideo\",videoObj); "," * @example "," * editor.execCommand(\"insertVideo\",{ "," * url: \"http://youku.com/id?id=1233122\", //视频地址,必选 "," * width: 420, //视频宽度,可选 "," * height: 280, //视频高度,可选 "," * align: \"none\" //对齐方式,支持right,left,center,none ,可选 "," * }) "," */ ","/** "," * 在当前选区位置插入一个日期或者时间 "," * @name date|time "," * @grammar editor.execCommand(\"date\"); "," */ ","/** "," * 在当前选区位置插入一个分页符标记 "," * @name pageBreak "," * @grammar editor.execCommand(\"pageBreak\"); "," */ ","/** "," * 切换源码编辑模式和富文本编辑模式 "," * @name source "," * @grammar editor.execCommand(\"source\"); "," */ ","/** "," * IE下进入截屏模式 "," * @name snapScreen "," * @grammar editor.execCommand(\"snapScreen\"); "," */ ","/** "," * 插入表格 "," * @name insertTable "," * @grammar editor.execCommand(\"insertTable\",rows,cols); "," */ ","","/** "," * 查找替换 "," * @name searchreplace "," * @grammar editor.execCommand(\"searchreplace\",opt); "," * @desc "," * opt是个json对象,属性如下 "," * * ''all'' true表示查找整个文档,false表示从上次的位置开始查找,默认是false "," * * ''casesensitive'' 大小写铭感,true是铭感,默认是false "," * * ''dir'' 1表示从前往后查,-1表示从后往前 "," * * ''searchStr'' 查找的字符串 "," * * ''replaceStr'' 替换用的字符串 "," */ ","","","","","","","","",""];
diff --git a/_test/coverage/core/Editor.js b/_test/coverage/core/Editor.js
new file mode 100644
index 000000000..524c2e45b
--- /dev/null
+++ b/_test/coverage/core/Editor.js
@@ -0,0 +1,1492 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/Editor.js']) {
+ _$jscoverage['core/Editor.js'] = [];
+ _$jscoverage['core/Editor.js'][22] = 0;
+ _$jscoverage['core/Editor.js'][23] = 0;
+ _$jscoverage['core/Editor.js'][32] = 0;
+ _$jscoverage['core/Editor.js'][33] = 0;
+ _$jscoverage['core/Editor.js'][34] = 0;
+ _$jscoverage['core/Editor.js'][35] = 0;
+ _$jscoverage['core/Editor.js'][36] = 0;
+ _$jscoverage['core/Editor.js'][37] = 0;
+ _$jscoverage['core/Editor.js'][38] = 0;
+ _$jscoverage['core/Editor.js'][39] = 0;
+ _$jscoverage['core/Editor.js'][43] = 0;
+ _$jscoverage['core/Editor.js'][46] = 0;
+ _$jscoverage['core/Editor.js'][47] = 0;
+ _$jscoverage['core/Editor.js'][53] = 0;
+ _$jscoverage['core/Editor.js'][55] = 0;
+ _$jscoverage['core/Editor.js'][66] = 0;
+ _$jscoverage['core/Editor.js'][68] = 0;
+ _$jscoverage['core/Editor.js'][69] = 0;
+ _$jscoverage['core/Editor.js'][71] = 0;
+ _$jscoverage['core/Editor.js'][73] = 0;
+ _$jscoverage['core/Editor.js'][82] = 0;
+ _$jscoverage['core/Editor.js'][83] = 0;
+ _$jscoverage['core/Editor.js'][84] = 0;
+ _$jscoverage['core/Editor.js'][135] = 0;
+ _$jscoverage['core/Editor.js'][136] = 0;
+ _$jscoverage['core/Editor.js'][137] = 0;
+ _$jscoverage['core/Editor.js'][138] = 0;
+ _$jscoverage['core/Editor.js'][139] = 0;
+ _$jscoverage['core/Editor.js'][140] = 0;
+ _$jscoverage['core/Editor.js'][141] = 0;
+ _$jscoverage['core/Editor.js'][142] = 0;
+ _$jscoverage['core/Editor.js'][143] = 0;
+ _$jscoverage['core/Editor.js'][145] = 0;
+ _$jscoverage['core/Editor.js'][171] = 0;
+ _$jscoverage['core/Editor.js'][173] = 0;
+ _$jscoverage['core/Editor.js'][174] = 0;
+ _$jscoverage['core/Editor.js'][176] = 0;
+ _$jscoverage['core/Editor.js'][182] = 0;
+ _$jscoverage['core/Editor.js'][186] = 0;
+ _$jscoverage['core/Editor.js'][188] = 0;
+ _$jscoverage['core/Editor.js'][205] = 0;
+ _$jscoverage['core/Editor.js'][206] = 0;
+ _$jscoverage['core/Editor.js'][207] = 0;
+ _$jscoverage['core/Editor.js'][238] = 0;
+ _$jscoverage['core/Editor.js'][239] = 0;
+ _$jscoverage['core/Editor.js'][240] = 0;
+ _$jscoverage['core/Editor.js'][242] = 0;
+ _$jscoverage['core/Editor.js'][244] = 0;
+ _$jscoverage['core/Editor.js'][258] = 0;
+ _$jscoverage['core/Editor.js'][259] = 0;
+ _$jscoverage['core/Editor.js'][260] = 0;
+ _$jscoverage['core/Editor.js'][261] = 0;
+ _$jscoverage['core/Editor.js'][262] = 0;
+ _$jscoverage['core/Editor.js'][263] = 0;
+ _$jscoverage['core/Editor.js'][264] = 0;
+ _$jscoverage['core/Editor.js'][266] = 0;
+ _$jscoverage['core/Editor.js'][269] = 0;
+ _$jscoverage['core/Editor.js'][270] = 0;
+ _$jscoverage['core/Editor.js'][271] = 0;
+ _$jscoverage['core/Editor.js'][272] = 0;
+ _$jscoverage['core/Editor.js'][273] = 0;
+ _$jscoverage['core/Editor.js'][274] = 0;
+ _$jscoverage['core/Editor.js'][275] = 0;
+ _$jscoverage['core/Editor.js'][277] = 0;
+ _$jscoverage['core/Editor.js'][278] = 0;
+ _$jscoverage['core/Editor.js'][279] = 0;
+ _$jscoverage['core/Editor.js'][282] = 0;
+ _$jscoverage['core/Editor.js'][299] = 0;
+ _$jscoverage['core/Editor.js'][302] = 0;
+ _$jscoverage['core/Editor.js'][304] = 0;
+ _$jscoverage['core/Editor.js'][305] = 0;
+ _$jscoverage['core/Editor.js'][307] = 0;
+ _$jscoverage['core/Editor.js'][308] = 0;
+ _$jscoverage['core/Editor.js'][309] = 0;
+ _$jscoverage['core/Editor.js'][311] = 0;
+ _$jscoverage['core/Editor.js'][313] = 0;
+ _$jscoverage['core/Editor.js'][314] = 0;
+ _$jscoverage['core/Editor.js'][316] = 0;
+ _$jscoverage['core/Editor.js'][319] = 0;
+ _$jscoverage['core/Editor.js'][321] = 0;
+ _$jscoverage['core/Editor.js'][324] = 0;
+ _$jscoverage['core/Editor.js'][326] = 0;
+ _$jscoverage['core/Editor.js'][342] = 0;
+ _$jscoverage['core/Editor.js'][350] = 0;
+ _$jscoverage['core/Editor.js'][352] = 0;
+ _$jscoverage['core/Editor.js'][353] = 0;
+ _$jscoverage['core/Editor.js'][354] = 0;
+ _$jscoverage['core/Editor.js'][355] = 0;
+ _$jscoverage['core/Editor.js'][357] = 0;
+ _$jscoverage['core/Editor.js'][358] = 0;
+ _$jscoverage['core/Editor.js'][359] = 0;
+ _$jscoverage['core/Editor.js'][373] = 0;
+ _$jscoverage['core/Editor.js'][375] = 0;
+ _$jscoverage['core/Editor.js'][376] = 0;
+ _$jscoverage['core/Editor.js'][377] = 0;
+ _$jscoverage['core/Editor.js'][378] = 0;
+ _$jscoverage['core/Editor.js'][380] = 0;
+ _$jscoverage['core/Editor.js'][382] = 0;
+ _$jscoverage['core/Editor.js'][383] = 0;
+ _$jscoverage['core/Editor.js'][384] = 0;
+ _$jscoverage['core/Editor.js'][385] = 0;
+ _$jscoverage['core/Editor.js'][386] = 0;
+ _$jscoverage['core/Editor.js'][388] = 0;
+ _$jscoverage['core/Editor.js'][390] = 0;
+ _$jscoverage['core/Editor.js'][391] = 0;
+ _$jscoverage['core/Editor.js'][392] = 0;
+ _$jscoverage['core/Editor.js'][394] = 0;
+ _$jscoverage['core/Editor.js'][396] = 0;
+ _$jscoverage['core/Editor.js'][397] = 0;
+ _$jscoverage['core/Editor.js'][398] = 0;
+ _$jscoverage['core/Editor.js'][399] = 0;
+ _$jscoverage['core/Editor.js'][400] = 0;
+ _$jscoverage['core/Editor.js'][401] = 0;
+ _$jscoverage['core/Editor.js'][404] = 0;
+ _$jscoverage['core/Editor.js'][405] = 0;
+ _$jscoverage['core/Editor.js'][408] = 0;
+ _$jscoverage['core/Editor.js'][411] = 0;
+ _$jscoverage['core/Editor.js'][412] = 0;
+ _$jscoverage['core/Editor.js'][413] = 0;
+ _$jscoverage['core/Editor.js'][414] = 0;
+ _$jscoverage['core/Editor.js'][415] = 0;
+ _$jscoverage['core/Editor.js'][416] = 0;
+ _$jscoverage['core/Editor.js'][418] = 0;
+ _$jscoverage['core/Editor.js'][420] = 0;
+ _$jscoverage['core/Editor.js'][425] = 0;
+ _$jscoverage['core/Editor.js'][426] = 0;
+ _$jscoverage['core/Editor.js'][429] = 0;
+ _$jscoverage['core/Editor.js'][430] = 0;
+ _$jscoverage['core/Editor.js'][431] = 0;
+ _$jscoverage['core/Editor.js'][433] = 0;
+ _$jscoverage['core/Editor.js'][436] = 0;
+ _$jscoverage['core/Editor.js'][437] = 0;
+ _$jscoverage['core/Editor.js'][439] = 0;
+ _$jscoverage['core/Editor.js'][440] = 0;
+ _$jscoverage['core/Editor.js'][443] = 0;
+ _$jscoverage['core/Editor.js'][444] = 0;
+ _$jscoverage['core/Editor.js'][447] = 0;
+ _$jscoverage['core/Editor.js'][448] = 0;
+ _$jscoverage['core/Editor.js'][451] = 0;
+ _$jscoverage['core/Editor.js'][452] = 0;
+ _$jscoverage['core/Editor.js'][458] = 0;
+ _$jscoverage['core/Editor.js'][459] = 0;
+ _$jscoverage['core/Editor.js'][460] = 0;
+ _$jscoverage['core/Editor.js'][461] = 0;
+ _$jscoverage['core/Editor.js'][462] = 0;
+ _$jscoverage['core/Editor.js'][463] = 0;
+ _$jscoverage['core/Editor.js'][465] = 0;
+ _$jscoverage['core/Editor.js'][466] = 0;
+ _$jscoverage['core/Editor.js'][467] = 0;
+ _$jscoverage['core/Editor.js'][468] = 0;
+ _$jscoverage['core/Editor.js'][469] = 0;
+ _$jscoverage['core/Editor.js'][471] = 0;
+ _$jscoverage['core/Editor.js'][475] = 0;
+ _$jscoverage['core/Editor.js'][476] = 0;
+ _$jscoverage['core/Editor.js'][483] = 0;
+ _$jscoverage['core/Editor.js'][485] = 0;
+ _$jscoverage['core/Editor.js'][486] = 0;
+ _$jscoverage['core/Editor.js'][487] = 0;
+ _$jscoverage['core/Editor.js'][489] = 0;
+ _$jscoverage['core/Editor.js'][490] = 0;
+ _$jscoverage['core/Editor.js'][493] = 0;
+ _$jscoverage['core/Editor.js'][494] = 0;
+ _$jscoverage['core/Editor.js'][515] = 0;
+ _$jscoverage['core/Editor.js'][518] = 0;
+ _$jscoverage['core/Editor.js'][520] = 0;
+ _$jscoverage['core/Editor.js'][533] = 0;
+ _$jscoverage['core/Editor.js'][534] = 0;
+ _$jscoverage['core/Editor.js'][536] = 0;
+ _$jscoverage['core/Editor.js'][538] = 0;
+ _$jscoverage['core/Editor.js'][564] = 0;
+ _$jscoverage['core/Editor.js'][565] = 0;
+ _$jscoverage['core/Editor.js'][566] = 0;
+ _$jscoverage['core/Editor.js'][568] = 0;
+ _$jscoverage['core/Editor.js'][570] = 0;
+ _$jscoverage['core/Editor.js'][579] = 0;
+ _$jscoverage['core/Editor.js'][580] = 0;
+ _$jscoverage['core/Editor.js'][581] = 0;
+ _$jscoverage['core/Editor.js'][582] = 0;
+ _$jscoverage['core/Editor.js'][583] = 0;
+ _$jscoverage['core/Editor.js'][584] = 0;
+ _$jscoverage['core/Editor.js'][585] = 0;
+ _$jscoverage['core/Editor.js'][586] = 0;
+ _$jscoverage['core/Editor.js'][587] = 0;
+ _$jscoverage['core/Editor.js'][588] = 0;
+ _$jscoverage['core/Editor.js'][594] = 0;
+ _$jscoverage['core/Editor.js'][595] = 0;
+ _$jscoverage['core/Editor.js'][596] = 0;
+ _$jscoverage['core/Editor.js'][635] = 0;
+ _$jscoverage['core/Editor.js'][636] = 0;
+ _$jscoverage['core/Editor.js'][637] = 0;
+ _$jscoverage['core/Editor.js'][638] = 0;
+ _$jscoverage['core/Editor.js'][640] = 0;
+ _$jscoverage['core/Editor.js'][641] = 0;
+ _$jscoverage['core/Editor.js'][643] = 0;
+ _$jscoverage['core/Editor.js'][644] = 0;
+ _$jscoverage['core/Editor.js'][645] = 0;
+ _$jscoverage['core/Editor.js'][646] = 0;
+ _$jscoverage['core/Editor.js'][647] = 0;
+ _$jscoverage['core/Editor.js'][660] = 0;
+ _$jscoverage['core/Editor.js'][663] = 0;
+ _$jscoverage['core/Editor.js'][664] = 0;
+ _$jscoverage['core/Editor.js'][665] = 0;
+ _$jscoverage['core/Editor.js'][666] = 0;
+ _$jscoverage['core/Editor.js'][667] = 0;
+ _$jscoverage['core/Editor.js'][669] = 0;
+ _$jscoverage['core/Editor.js'][670] = 0;
+ _$jscoverage['core/Editor.js'][674] = 0;
+ _$jscoverage['core/Editor.js'][689] = 0;
+ _$jscoverage['core/Editor.js'][691] = 0;
+ _$jscoverage['core/Editor.js'][695] = 0;
+ _$jscoverage['core/Editor.js'][698] = 0;
+ _$jscoverage['core/Editor.js'][711] = 0;
+ _$jscoverage['core/Editor.js'][713] = 0;
+ _$jscoverage['core/Editor.js'][755] = 0;
+ _$jscoverage['core/Editor.js'][757] = 0;
+ _$jscoverage['core/Editor.js'][758] = 0;
+ _$jscoverage['core/Editor.js'][759] = 0;
+ _$jscoverage['core/Editor.js'][760] = 0;
+ _$jscoverage['core/Editor.js'][763] = 0;
+ _$jscoverage['core/Editor.js'][766] = 0;
+ _$jscoverage['core/Editor.js'][767] = 0;
+ _$jscoverage['core/Editor.js'][771] = 0;
+ _$jscoverage['core/Editor.js'][773] = 0;
+ _$jscoverage['core/Editor.js'][774] = 0;
+ _$jscoverage['core/Editor.js'][779] = 0;
+ _$jscoverage['core/Editor.js'][782] = 0;
+ _$jscoverage['core/Editor.js'][783] = 0;
+ _$jscoverage['core/Editor.js'][784] = 0;
+ _$jscoverage['core/Editor.js'][785] = 0;
+ _$jscoverage['core/Editor.js'][786] = 0;
+ _$jscoverage['core/Editor.js'][787] = 0;
+ _$jscoverage['core/Editor.js'][789] = 0;
+ _$jscoverage['core/Editor.js'][790] = 0;
+ _$jscoverage['core/Editor.js'][791] = 0;
+ _$jscoverage['core/Editor.js'][792] = 0;
+ _$jscoverage['core/Editor.js'][794] = 0;
+ _$jscoverage['core/Editor.js'][795] = 0;
+ _$jscoverage['core/Editor.js'][798] = 0;
+ _$jscoverage['core/Editor.js'][802] = 0;
+ _$jscoverage['core/Editor.js'][803] = 0;
+ _$jscoverage['core/Editor.js'][805] = 0;
+ _$jscoverage['core/Editor.js'][807] = 0;
+ _$jscoverage['core/Editor.js'][809] = 0;
+ _$jscoverage['core/Editor.js'][810] = 0;
+ _$jscoverage['core/Editor.js'][811] = 0;
+ _$jscoverage['core/Editor.js'][813] = 0;
+ _$jscoverage['core/Editor.js'][814] = 0;
+ _$jscoverage['core/Editor.js'][837] = 0;
+ _$jscoverage['core/Editor.js'][838] = 0;
+ _$jscoverage['core/Editor.js'][840] = 0;
+ _$jscoverage['core/Editor.js'][841] = 0;
+ _$jscoverage['core/Editor.js'][843] = 0;
+ _$jscoverage['core/Editor.js'][845] = 0;
+ _$jscoverage['core/Editor.js'][856] = 0;
+ _$jscoverage['core/Editor.js'][859] = 0;
+ _$jscoverage['core/Editor.js'][860] = 0;
+ _$jscoverage['core/Editor.js'][861] = 0;
+ _$jscoverage['core/Editor.js'][862] = 0;
+ _$jscoverage['core/Editor.js'][864] = 0;
+ _$jscoverage['core/Editor.js'][865] = 0;
+ _$jscoverage['core/Editor.js'][867] = 0;
+ _$jscoverage['core/Editor.js'][868] = 0;
+ _$jscoverage['core/Editor.js'][921] = 0;
+ _$jscoverage['core/Editor.js'][929] = 0;
+ _$jscoverage['core/Editor.js'][936] = 0;
+ _$jscoverage['core/Editor.js'][937] = 0;
+ _$jscoverage['core/Editor.js'][938] = 0;
+ _$jscoverage['core/Editor.js'][939] = 0;
+ _$jscoverage['core/Editor.js'][940] = 0;
+ _$jscoverage['core/Editor.js'][941] = 0;
+ _$jscoverage['core/Editor.js'][942] = 0;
+ _$jscoverage['core/Editor.js'][943] = 0;
+ _$jscoverage['core/Editor.js'][946] = 0;
+ _$jscoverage['core/Editor.js'][947] = 0;
+ _$jscoverage['core/Editor.js'][948] = 0;
+ _$jscoverage['core/Editor.js'][949] = 0;
+ _$jscoverage['core/Editor.js'][953] = 0;
+ _$jscoverage['core/Editor.js'][954] = 0;
+ _$jscoverage['core/Editor.js'][955] = 0;
+ _$jscoverage['core/Editor.js'][956] = 0;
+ _$jscoverage['core/Editor.js'][957] = 0;
+ _$jscoverage['core/Editor.js'][959] = 0;
+ _$jscoverage['core/Editor.js'][962] = 0;
+ _$jscoverage['core/Editor.js'][963] = 0;
+ _$jscoverage['core/Editor.js'][964] = 0;
+ _$jscoverage['core/Editor.js'][965] = 0;
+ _$jscoverage['core/Editor.js'][966] = 0;
+ _$jscoverage['core/Editor.js'][969] = 0;
+ _$jscoverage['core/Editor.js'][970] = 0;
+ _$jscoverage['core/Editor.js'][971] = 0;
+ _$jscoverage['core/Editor.js'][973] = 0;
+ _$jscoverage['core/Editor.js'][974] = 0;
+ _$jscoverage['core/Editor.js'][976] = 0;
+ _$jscoverage['core/Editor.js'][977] = 0;
+ _$jscoverage['core/Editor.js'][978] = 0;
+ _$jscoverage['core/Editor.js'][992] = 0;
+ _$jscoverage['core/Editor.js'][994] = 0;
+ _$jscoverage['core/Editor.js'][995] = 0;
+ _$jscoverage['core/Editor.js'][997] = 0;
+ _$jscoverage['core/Editor.js'][998] = 0;
+ _$jscoverage['core/Editor.js'][999] = 0;
+ _$jscoverage['core/Editor.js'][1000] = 0;
+ _$jscoverage['core/Editor.js'][1014] = 0;
+ _$jscoverage['core/Editor.js'][1015] = 0;
+ _$jscoverage['core/Editor.js'][1018] = 0;
+ _$jscoverage['core/Editor.js'][1019] = 0;
+ _$jscoverage['core/Editor.js'][1021] = 0;
+ _$jscoverage['core/Editor.js'][1022] = 0;
+ _$jscoverage['core/Editor.js'][1023] = 0;
+ _$jscoverage['core/Editor.js'][1024] = 0;
+ _$jscoverage['core/Editor.js'][1025] = 0;
+ _$jscoverage['core/Editor.js'][1026] = 0;
+ _$jscoverage['core/Editor.js'][1027] = 0;
+ _$jscoverage['core/Editor.js'][1029] = 0;
+ _$jscoverage['core/Editor.js'][1031] = 0;
+ _$jscoverage['core/Editor.js'][1032] = 0;
+ _$jscoverage['core/Editor.js'][1034] = 0;
+ _$jscoverage['core/Editor.js'][1035] = 0;
+ _$jscoverage['core/Editor.js'][1051] = 0;
+ _$jscoverage['core/Editor.js'][1062] = 0;
+ _$jscoverage['core/Editor.js'][1088] = 0;
+ _$jscoverage['core/Editor.js'][1089] = 0;
+ _$jscoverage['core/Editor.js'][1090] = 0;
+ _$jscoverage['core/Editor.js'][1091] = 0;
+ _$jscoverage['core/Editor.js'][1095] = 0;
+ _$jscoverage['core/Editor.js'][1096] = 0;
+ _$jscoverage['core/Editor.js'][1099] = 0;
+ _$jscoverage['core/Editor.js'][1100] = 0;
+ _$jscoverage['core/Editor.js'][1101] = 0;
+ _$jscoverage['core/Editor.js'][1102] = 0;
+ _$jscoverage['core/Editor.js'][1103] = 0;
+ _$jscoverage['core/Editor.js'][1104] = 0;
+ _$jscoverage['core/Editor.js'][1108] = 0;
+ _$jscoverage['core/Editor.js'][1121] = 0;
+ _$jscoverage['core/Editor.js'][1133] = 0;
+ _$jscoverage['core/Editor.js'][1134] = 0;
+ _$jscoverage['core/Editor.js'][1135] = 0;
+ _$jscoverage['core/Editor.js'][1136] = 0;
+ _$jscoverage['core/Editor.js'][1138] = 0;
+ _$jscoverage['core/Editor.js'][1139] = 0;
+ _$jscoverage['core/Editor.js'][1140] = 0;
+ _$jscoverage['core/Editor.js'][1142] = 0;
+ _$jscoverage['core/Editor.js'][1144] = 0;
+ _$jscoverage['core/Editor.js'][1145] = 0;
+ _$jscoverage['core/Editor.js'][1146] = 0;
+ _$jscoverage['core/Editor.js'][1147] = 0;
+ _$jscoverage['core/Editor.js'][1149] = 0;
+ _$jscoverage['core/Editor.js'][1164] = 0;
+ _$jscoverage['core/Editor.js'][1191] = 0;
+ _$jscoverage['core/Editor.js'][1192] = 0;
+ _$jscoverage['core/Editor.js'][1193] = 0;
+ _$jscoverage['core/Editor.js'][1194] = 0;
+ _$jscoverage['core/Editor.js'][1195] = 0;
+ _$jscoverage['core/Editor.js'][1197] = 0;
+ _$jscoverage['core/Editor.js'][1198] = 0;
+ _$jscoverage['core/Editor.js'][1199] = 0;
+ _$jscoverage['core/Editor.js'][1200] = 0;
+ _$jscoverage['core/Editor.js'][1201] = 0;
+ _$jscoverage['core/Editor.js'][1203] = 0;
+ _$jscoverage['core/Editor.js'][1205] = 0;
+ _$jscoverage['core/Editor.js'][1236] = 0;
+ _$jscoverage['core/Editor.js'][1246] = 0;
+ _$jscoverage['core/Editor.js'][1247] = 0;
+ _$jscoverage['core/Editor.js'][1248] = 0;
+ _$jscoverage['core/Editor.js'][1249] = 0;
+ _$jscoverage['core/Editor.js'][1250] = 0;
+ _$jscoverage['core/Editor.js'][1251] = 0;
+ _$jscoverage['core/Editor.js'][1252] = 0;
+ _$jscoverage['core/Editor.js'][1253] = 0;
+ _$jscoverage['core/Editor.js'][1258] = 0;
+ _$jscoverage['core/Editor.js'][1259] = 0;
+ _$jscoverage['core/Editor.js'][1260] = 0;
+ _$jscoverage['core/Editor.js'][1262] = 0;
+ _$jscoverage['core/Editor.js'][1272] = 0;
+ _$jscoverage['core/Editor.js'][1273] = 0;
+ _$jscoverage['core/Editor.js'][1275] = 0;
+ _$jscoverage['core/Editor.js'][1276] = 0;
+ _$jscoverage['core/Editor.js'][1277] = 0;
+ _$jscoverage['core/Editor.js'][1279] = 0;
+ _$jscoverage['core/Editor.js'][1282] = 0;
+ _$jscoverage['core/Editor.js'][1283] = 0;
+ _$jscoverage['core/Editor.js'][1285] = 0;
+ _$jscoverage['core/Editor.js'][1299] = 0;
+ _$jscoverage['core/Editor.js'][1308] = 0;
+ _$jscoverage['core/Editor.js'][1309] = 0;
+ _$jscoverage['core/Editor.js'][1310] = 0;
+ _$jscoverage['core/Editor.js'][1312] = 0;
+ _$jscoverage['core/Editor.js'][1325] = 0;
+ _$jscoverage['core/Editor.js'][1339] = 0;
+ _$jscoverage['core/Editor.js'][1340] = 0;
+ _$jscoverage['core/Editor.js'][1341] = 0;
+ _$jscoverage['core/Editor.js'][1343] = 0;
+ _$jscoverage['core/Editor.js'][1344] = 0;
+ _$jscoverage['core/Editor.js'][1345] = 0;
+ _$jscoverage['core/Editor.js'][1346] = 0;
+ _$jscoverage['core/Editor.js'][1348] = 0;
+ _$jscoverage['core/Editor.js'][1385] = 0;
+ _$jscoverage['core/Editor.js'][1386] = 0;
+ _$jscoverage['core/Editor.js'][1387] = 0;
+ _$jscoverage['core/Editor.js'][1388] = 0;
+ _$jscoverage['core/Editor.js'][1389] = 0;
+ _$jscoverage['core/Editor.js'][1390] = 0;
+ _$jscoverage['core/Editor.js'][1393] = 0;
+ _$jscoverage['core/Editor.js'][1410] = 0;
+ _$jscoverage['core/Editor.js'][1424] = 0;
+ _$jscoverage['core/Editor.js'][1425] = 0;
+ _$jscoverage['core/Editor.js'][1443] = 0;
+ _$jscoverage['core/Editor.js'][1457] = 0;
+ _$jscoverage['core/Editor.js'][1458] = 0;
+ _$jscoverage['core/Editor.js'][1462] = 0;
+}
+_$jscoverage['core/Editor.js'].source = ["/** "," * 编辑器主类,包含编辑器提供的大部分公用接口 "," * @file "," * @module UE "," * @class Editor "," * @since 1.2.6.1 "," */ ","","/** "," * UEditor公用空间,UEditor所有的功能都挂载在该空间下 "," * @unfile "," * @module UE "," */ ","","/** "," * UEditor的核心类,为用户提供与编辑器交互的接口。 "," * @unfile "," * @module UE "," * @class Editor "," */ ","","( function () { "," var uid = 0 , _selectionChangeTimer; ","",""," /** "," * 获取编辑器的html内容,赋值到编辑器所在表单的textarea文本域里面 "," * @private "," * @method setValue "," * @param { UE.Editor } editor 编辑器事例 "," */ "," function setValue( form, editor) { "," var textarea; "," if ( editor. textarea) { "," if ( utils. isString( editor. textarea)) { "," for ( var i = 0 , ti, tis = domUtils. getElementsByTagName( form, 'textarea' ); ti = tis[ i++];) { "," if ( ti. id == 'ueditor_textarea_' + editor. options. textarea) { "," textarea = ti; "," break ; "," } "," } "," } else { "," textarea = editor. textarea; "," } "," } "," if (! textarea) { "," form. appendChild( textarea = domUtils. createElement( document, 'textarea' , { "," 'name' : editor. options. textarea, "," 'id' : 'ueditor_textarea_' + editor. options. textarea, "," 'style' : \"display:none\" "," } )); "," //不要产生多个textarea "," editor. textarea = textarea; "," } "," textarea. value = editor. hasContents() ? "," ( editor. options. allHtmlEnabled ? editor. getAllHtml() : editor. getContent( null , null , true )) : "," '' "," } ",""," /** "," * 初始化插件 "," * @private "," * @method loadPlugins "," * @param { UE.Editor } editor 编辑器事例 "," */ "," function loadPlugins( me) { "," //初始化插件 "," for ( var pi in UE. plugins) { "," UE. plugins[ pi]. call( me); "," } "," me. langIsReady = true ; ",""," me. fireEvent( \"langReady\" ); "," } ",""," /** "," * 获取语言包里面的第一个 "," * @private "," * @method checkCurLang "," * @param { KeyValueMap } I18N 编辑器事例 "," */ "," function checkCurLang( I18N) { "," for ( var lang in I18N) { "," return lang"," } "," } ","",""," /** "," * 编辑器准备就绪后会触发该事件 "," * @module UE "," * @class Editor "," * @event ready "," * @example "," * ```javascript "," * editor.addListener( 'ready', function( editor ) { "," * editor.execCommand( 'focus' ); "," * } ); "," * ``` "," */ ",""," /** "," * 每当编辑器内部选区发生改变后, 将触发该事件 "," * @event selectionchange "," * @warning 该事件的触发非常频繁,不建议在该事件的处理过程中做重量级的处理 "," * @example "," * ```javascript "," * editor.addListener( 'selectionchange', function( editor ) { "," * console.log('选区发生改变'); "," * } "," */ ",""," /** "," * 以默认参数构建一个编辑器实例 "," * @constructor "," * @example "," * ```javascript "," * var editor = new UE.Editor(); "," * editor.execCommand('blod'); "," * ``` "," * @see UE.Config "," */ ",""," /** "," * 以给定的参数集合创建一个编辑器对象,对于未指定的参数,将应用默认参数。 "," * @constructor "," * @param { KeyValueMap } setting 创建编辑器的参数 "," * @example "," * ```javascript "," * var editor = new UE.Editor(); "," * editor.execCommand('blod'); "," * ``` "," * @see UE.Config "," */ "," var Editor = UE. Editor = function ( options) { "," var me = this ; "," me. uid = uid++; "," EventBase. call( me); "," me. commands = {} ; "," me. options = utils. extend( utils. clone( options || {} ), UEDITOR_CONFIG, true ); "," me. shortcutkeys = {} ; "," me. inputRules = []; "," me. outputRules = []; "," //设置默认的常用属性 "," me. setOpt( { "," isShow: true , "," initialContent: '' , "," initialStyle: '' , "," autoClearinitialContent: false , "," iframeCssUrl: me. options. UEDITOR_HOME_URL + 'themes/iframe.css' , "," textarea: 'editorValue' , "," focus: false , "," focusInEnd: true , "," autoClearEmptyNode: true , "," fullscreen: false , "," readonly: false , "," zIndex: 999 , "," imagePopup: true , "," enterTag: 'p' , "," customDomain: false , "," lang: 'zh-cn' , "," langPath: me. options. UEDITOR_HOME_URL + 'lang/' , "," theme: 'default' , "," themePath: me. options. UEDITOR_HOME_URL + 'themes/' , "," allHtmlEnabled: false , "," scaleEnabled: false , "," tableNativeEditInFF: false , "," autoSyncData: true "," } ); ",""," if (! utils. isEmptyObject( UE. I18N)) { "," //修改默认的语言类型 "," me. options. lang = checkCurLang( UE. I18N); "," loadPlugins( me) "," } else { "," utils. loadFile( document, { "," src: me. options. langPath + me. options. lang + \"/\" + me. options. lang + \".js\" , "," tag: \"script\" , "," type: \"text/javascript\" , "," defer: \"defer\" "," } , function () { "," loadPlugins( me) "," } ); "," } ",""," UE. instants[ 'ueditorInstant' + me. uid] = me; "," } ; "," Editor. prototype = { ","",""," /** "," * 编辑器对外提供的监听ready事件的接口, 通过调用该方法,达到的效果与监听ready事件是一致的 "," * @method ready "," * @param { Function } fn 编辑器ready之后所执行的回调, 如果在注册事件之前编辑器已经ready,将会 "," * 立即触发该回调。 "," * @see UE.Editor.event:ready "," * @example "," * ```javascript "," * editor.ready( function( editor ) { "," * editor.setContent('初始化完毕'); "," * } ); "," * ``` "," */ "," ready: function ( fn) { "," var me = this ; "," if ( fn) { "," me. isReady ? fn. apply( me) : me. addListener( 'ready' , fn); "," } "," } , ","",""," /** "," * 该方法是提供给插件里面使用,以key,value的方式设置插件内用到的配置项默认值 "," * @method setOpt "," * @warning 在config文件里面有定义参数key或者用户实例化的时候有传入参数key,该方法设置的key参数值无效 "," * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 "," * @param { String } key 编辑器的可接受的选项名称 "," * @param { * } val 该选项可接受的值 "," * @example "," * ```javascript "," * editor.setOpt( 'initContent', '欢迎使用编辑器' ); "," * ``` "," */ ",""," /** "," * 该方法是提供给插件里面使用,以{key:value}集合的方式设置插件内用到的配置项默认值 "," * @method setOpt "," * @warning 在config文件里面有定义参数key或者用户实例化的时候有传入参数key,该方法设置的key参数值无效 "," * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 "," * @example "," * ```javascript "," * editor.setOpt( { "," * 'initContent': '欢迎使用编辑器' "," * } ); "," * ``` "," */ "," setOpt: function ( key, val) { "," var obj = {} ; "," if ( utils. isString( key)) { "," obj[ key] = val"," } else { "," obj = key; "," } "," utils. extend( this . options, obj, true ); "," } , ","",""," /** "," * 销毁编辑器实例对象 "," * @method destroy "," * @example "," * ```javascript "," * editor.destroy(); "," * ``` "," */ "," destroy: function () { ",""," var me = this ; "," me. fireEvent( 'destroy' ); "," var container = me. container. parentNode; "," var textarea = me. textarea; "," if (! textarea) { "," textarea = document. createElement( 'textarea' ); "," container. parentNode. insertBefore( textarea, container); "," } else { "," textarea. style. display = '' "," } ",""," textarea. style. width = me. iframe. offsetWidth + 'px' ; "," textarea. style. height = me. iframe. offsetHeight + 'px' ; "," textarea. value = me. getContent(); "," textarea. id = me. key; "," container. innerHTML = '' ; "," domUtils. remove( container); "," var key = me. key; "," //trace:2004 "," for ( var p in me) { "," if ( me. hasOwnProperty( p)) { "," delete this [ p]; "," } "," } "," UE. delEditor( key); "," } , ",""," /** "," * 渲染编辑器的DOM到指定容器 "," * @method render "," * @param { String } containerId 指定一个容器ID "," * @warning 必须且只能调用一次 "," */ ",""," /** "," * 渲染编辑器的DOM到指定容器 "," * @method render "," * @param { Element } containerDom 直接指定容器对象 "," * @warning 必须且只能调用一次 "," */ "," render: function ( container) { "," var me = this , "," options = me. options, "," getStyleValue = function ( attr) { "," return parseInt( domUtils. getComputedStyle( container, attr)); "," } ; "," if ( utils. isString( container)) { "," container = document. getElementById( container); "," } "," if ( container) { "," if ( options. initialFrameWidth) { "," options. minFrameWidth = options. initialFrameWidth"," } else { "," options. minFrameWidth = options. initialFrameWidth = container. offsetWidth; "," } "," if ( options. initialFrameHeight) { "," options. minFrameHeight = options. initialFrameHeight"," } else { "," options. initialFrameHeight = options. minFrameHeight = container. offsetHeight; "," } ",""," container. style. width = /%$/ . test( options. initialFrameWidth) ? '100%' : options. initialFrameWidth - "," getStyleValue( \"padding-left\" ) - getStyleValue( \"padding-right\" ) + 'px' ; "," container. style. height = /%$/ . test( options. initialFrameHeight) ? '100%' : options. initialFrameHeight - "," getStyleValue( \"padding-top\" ) - getStyleValue( \"padding-bottom\" ) + 'px' ; ",""," container. style. zIndex = options. zIndex; ",""," var html = ( ie && browser. version < 9 ? '' : '<!DOCTYPE html>' ) + "," '<html xmlns= \\' http://www.w3.org/1999/xhtml \\' class= \\' view \\' ><head>' + "," '<style type= \\' text/css \\' >' + "," //设置四周的留边 "," '.view{padding:0;word-wrap:break-word;cursor:text;height:90%;} \\n ' + "," //设置默认字体和字号 "," //font-family不能呢随便改,在safari下fillchar会有解析问题 "," 'body{margin:8px;font-family:sans-serif;font-size:16px;}' + "," //设置段落间距 "," 'p{margin:5px 0;}</style>' + "," ( options. iframeCssUrl ? '<link rel= \\' stylesheet \\' type= \\' text/css \\' href= \\' ' + utils. unhtml( options. iframeCssUrl) + ' \\' />' : '' ) + "," ( options. initialStyle ? '<style>' + options. initialStyle + '</style>' : '' ) + "," '</head><body class= \\' view \\' ></body>' + "," '<script type= \\' text/javascript \\' ' + ( ie ? 'defer= \\' defer \\' ' : '' ) + ' id= \\' _initialScript \\' >' + "," 'setTimeout(function(){window.parent.UE.instants[ \\' ueditorInstant' + me. uid + ' \\' ]._setup(document);},0);' + "," 'var _tmpScript = document.getElementById( \\' _initialScript \\' );_tmpScript.parentNode.removeChild(_tmpScript);</script></html>' ; "," container. appendChild( domUtils. createElement( document, 'iframe' , { "," id: 'ueditor_' + me. uid, "," width: \"100%\" , "," height: \"100%\" , "," frameborder: \"0\" , "," src: 'javascript:void(function(){document.open();' + ( options. customDomain && document. domain != location. hostname ? 'document.domain=\"' + document. domain + '\";' : '' ) + "," 'document.write(\"' + html + '\");document.close();}())' "," } )); "," container. style. overflow = 'hidden' ; "," //解决如果是给定的百分比,会导致高度算不对的问题 "," setTimeout( function () { "," if ( /%$/ . test( options. initialFrameWidth)) { "," options. minFrameWidth = options. initialFrameWidth = container. offsetWidth; "," container. style. width = options. initialFrameWidth + 'px' ; "," } "," if ( /%$/ . test( options. initialFrameHeight)) { "," options. minFrameHeight = options. initialFrameHeight = container. offsetHeight; "," container. style. height = options. initialFrameHeight + 'px' ; "," } "," } ) "," } "," } , ",""," /** "," * 编辑器初始化 "," * @method _setup "," * @private "," * @param { Element } doc 编辑器Iframe中的文档对象 "," */ "," _setup: function ( doc) { ",""," var me = this , "," options = me. options; "," if ( ie) { "," doc. body. disabled = true ; "," doc. body. contentEditable = true ; "," doc. body. disabled = false ; "," } else { "," doc. body. contentEditable = true ; "," } "," doc. body. spellcheck = false ; "," me. document = doc; "," me. window = doc. defaultView || doc. parentWindow; "," me. iframe = me. window. frameElement; "," me. body = doc. body; ",""," me. selection = new dom. Selection( doc); "," //gecko初始化就能得到range,无法判断isFocus了 "," var geckoSel; "," if ( browser. gecko && ( geckoSel = this . selection. getNative())) { "," geckoSel. removeAllRanges(); "," } "," this . _initEvents(); "," //为form提交提供一个隐藏的textarea "," for ( var form = this . iframe. parentNode; ! domUtils. isBody( form); form = form. parentNode) { "," if ( form. tagName == 'FORM' ) { "," me. form = form; "," if ( me. options. autoSyncData) { "," domUtils. on( me. window, 'blur' , function () { "," setValue( form, me); "," } ); "," } else { "," domUtils. on( form, 'submit' , function () { "," setValue( this , me); "," } ); "," } "," break ; "," } "," } "," if ( options. initialContent) { "," if ( options. autoClearinitialContent) { "," var oldExecCommand = me. execCommand; "," me. execCommand = function () { "," me. fireEvent( 'firstBeforeExecCommand' ); "," return oldExecCommand. apply( me, arguments); "," } ; "," this . _setDefaultContent( options. initialContent); "," } else "," this . setContent( options. initialContent, false , true ); "," } ",""," //编辑器不能为空内容 ",""," if ( domUtils. isEmptyNode( me. body)) { "," me. body. innerHTML = '<p>' + ( browser. ie ? '' : '<br/>' ) + '</p>' ; "," } "," //如果要求focus, 就把光标定位到内容开始 "," if ( options. focus) { "," setTimeout( function () { "," me. focus( me. options. focusInEnd); "," //如果自动清除开着,就不需要做selectionchange; "," ! me. options. autoClearinitialContent && me. _selectionChange(); "," } , 0 ); "," } "," if (! me. container) { "," me. container = this . iframe. parentNode; "," } "," if ( options. fullscreen && me. ui) { "," me. ui. setFullScreen( true ); "," } ",""," try { "," me. document. execCommand( '2D-position' , false , false ); "," } catch ( e) { "," } "," try { "," me. document. execCommand( 'enableInlineTableEditing' , false , false ); "," } catch ( e) { "," } "," try { "," me. document. execCommand( 'enableObjectResizing' , false , false ); "," } catch ( e) { ","// domUtils.on(me.body,browser.ie ? 'resizestart' : 'resize', function( evt ) { ","// domUtils.preventDefault(evt) ","// }); "," } "," me. _bindshortcutKeys(); "," me. isReady = 1 ; "," me. fireEvent( 'ready' ); "," options. onready && options. onready. call( me); "," if (! browser. ie) { "," domUtils. on( me. window, [ 'blur' , 'focus' ], function ( e) { "," //chrome下会出现alt+tab切换时,导致选区位置不对 "," if ( e. type == 'blur' ) { "," me. _bakRange = me. selection. getRange(); "," try { "," me. _bakNativeRange = me. selection. getNative(). getRangeAt( 0 ); "," me. selection. getNative(). removeAllRanges(); "," } catch ( e) { "," me. _bakNativeRange = null ; "," } ",""," } else { "," try { "," me. _bakRange && me. _bakRange. select(); "," } catch ( e) { "," } "," } "," } ); "," } "," //trace:1518 ff3.6body不够寛,会导致点击空白处无法获得焦点 "," if ( browser. gecko && browser. version <= 10902 ) { "," //修复ff3.6初始化进来,不能点击获得焦点 "," me. body. contentEditable = false ; "," setTimeout( function () { "," me. body. contentEditable = true ; "," } , 100 ); "," setInterval( function () { "," me. body. style. height = me. iframe. offsetHeight - 20 + 'px' "," } , 100 ) "," } "," ! options. isShow && me. setHide(); "," options. readonly && me. setDisabled(); "," } , ",""," /** "," * 从编辑器的容器节点向上查找form元素,若找到,就同步编辑内容到找到的form里,为提交数据做准备,主要用于是手动提交的情况 "," * 后台取得数据的键值,使用你容器上的name属性,如果没有就使用参数里的textarea项 "," * @method sync "," * @example "," * ```javascript "," * editor.sync(); "," * form.sumbit(); //form变量已经指向了form元素 "," * ``` "," */ ",""," /** "," * 根据传入的formId,在页面上查找要同步数据的表单,若找到,就同步编辑内容到找到的form里,为提交数据做准备,主要用于是手动提交的情况 "," * 后台取得数据的键值,使用你容器上的name属性,如果没有就使用参数里的textarea项 "," * @method sync "," * @param { String } formID 指定一个要同步数据的form的id,编辑器的数据会同步到你指定form下 "," */ "," sync: function ( formId) { "," var me = this , "," form = formId ? document. getElementById( formId) : "," domUtils. findParent( me. iframe. parentNode, function ( node) { "," return node. tagName == 'FORM' "," } , true ); "," form && setValue( form, me); "," } , ",""," /** "," * 设置编辑器高度 "," * @method setHeight "," * @param { Number } number 设置的高度值,纯数值,不带单位 "," * @example "," * ```javascript "," * editor.setHeight(number); "," * ``` "," */ "," setHeight: function ( height, notSetHeight) { "," if ( height !== parseInt( this . iframe. parentNode. style. height)) { "," this . iframe. parentNode. style. height = height + 'px' ; "," } "," ! notSetHeight && ( this . options. minFrameHeight = this . options. initialFrameHeight = height); ",""," this . body. style. height = height + 'px' ; "," } , ",""," /** "," * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 "," * @method addshortcutkey "," * @param { KeyValueMap } keyset 命令和快捷键的键值对对象,多个按钮的快捷键用“+”分隔 "," * @example "," * ```javascript "," * editor.addshortcutkey({ "," * \"Bold\" : \"ctrl+66\",//^B "," * \"Italic\" : \"ctrl+73\", //^I "," * }); "," * ``` "," */ "," /** "," * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 "," * @method addshortcutkey "," * @param { String } cmd 触发快捷键时,响应的命令 "," * @param { String } keys 快捷键的字符串,多个按钮用“+”分隔 "," * @example "," * ```javascript "," * editor.addshortcutkey(\"Underline\", \"ctrl+85\"); //^U "," * ``` "," */ "," addshortcutkey: function ( cmd, keys) { "," var obj = {} ; "," if ( keys) { "," obj[ cmd] = keys"," } else { "," obj = cmd; "," } "," utils. extend( this . shortcutkeys, obj) "," } , ",""," /** "," * 对编辑器设置keydown事件监听,绑定快捷键和命令,当快捷键组合触发成功,会响应对应的命令 "," * @method _bindshortcutKeys "," * @private "," */ "," _bindshortcutKeys: function () { "," var me = this , shortcutkeys = this . shortcutkeys; "," me. addListener( 'keydown' , function ( type, e) { "," var keyCode = e. keyCode || e. which; "," for ( var i in shortcutkeys) { "," var tmp = shortcutkeys[ i]. split( ',' ); "," for ( var t = 0 , ti; ti = tmp[ t++];) { "," ti = ti. split( ':' ); "," var key = ti[ 0 ], param = ti[ 1 ]; "," if ( /^(ctrl)(\\+shift)?\\+(\\d+)$/ . test( key. toLowerCase()) || /^(\\d+)$/ . test( key)) { "," if (( ( RegExp. $1 == 'ctrl' ? ( e. ctrlKey || e. metaKey) : 0 ) "," && ( RegExp. $2 != \"\" ? e[ RegExp. $2. slice( 1 ) + \"Key\" ] : 1 ) "," && keyCode == RegExp. $3"," ) || "," keyCode == RegExp. $1"," ) { "," if ( me. queryCommandState( i, param) != - 1 ) "," me. execCommand( i, param); "," domUtils. preventDefault( e); "," } "," } "," } ",""," } "," } ); "," } , ",""," /** "," * 获取编辑器的内容 "," * @method getContent "," * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 "," * @return { String } 编辑器的内容字符串, 如果编辑器的内容为空,或者是空的标签内容(如:”<p><br/></p>“), 则返回空字符串 "," * @example "," * ```javascript "," * var content = editor.getContent(); "," * ``` "," */ ",""," /** "," * 获取编辑器的内容。 可以通过参数定义编辑器内置的判空规则 "," * @method getContent "," * @param { Function } fn 自定的判空规则, 要求该方法返回一个boolean类型的值, "," * 代表当前编辑器的内容是否空, "," * 如果返回true, 则该方法将直接返回空字符串;如果返回false,则编辑器将返回 "," * 经过内置过滤规则处理后的内容。 "," * @remind 该方法在处理包含有初始化内容的时候能起到很好的作用。 "," * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 "," * @return { String } 编辑器的内容字符串 "," * @example "," * ```javascript "," * // editor 是一个编辑器的实例 "," * var content = editor.getContent( function ( editor ) { "," * return editor.body.innerHTML === '欢迎使用UEditor'; "," * } ); "," * ``` "," */ "," getContent: function ( cmd, fn, notSetCursor, ignoreBlank, formatter) { "," var me = this ; "," if ( cmd && utils. isFunction( cmd)) { "," fn = cmd; "," cmd = '' ; "," } "," if ( fn ? ! fn() : ! this . hasContents()) { "," return '' ; "," } "," me. fireEvent( 'beforegetcontent' ); "," var root = UE. htmlparser( me. body. innerHTML, ignoreBlank); "," me. filterOutputRule( root); "," me. fireEvent( 'aftergetcontent' , cmd); "," return root. toHtml( formatter); "," } , ",""," /** "," * 取得完整的html代码,可以直接显示成完整的html文档 "," * @method getAllHtml "," * @return { String } 编辑器的内容html文档字符串 "," * @eaxmple "," * ```javascript "," * editor.getAllHtml(); "," * ``` "," */ "," getAllHtml: function () { "," var me = this , "," headHtml = [], "," html = '' ; "," me. fireEvent( 'getAllHtml' , headHtml); "," if ( browser. ie && browser. version > 8 ) { "," var headHtmlForIE9 = '' ; "," utils. each( me. document. styleSheets, function ( si) { "," headHtmlForIE9 += ( si. href ? '<link rel=\"stylesheet\" type=\"text/css\" href=\"' + si. href + '\" />' : '<style>' + si. cssText + '</style>' ); "," } ); "," utils. each( me. document. getElementsByTagName( 'script' ), function ( si) { "," headHtmlForIE9 += si. outerHTML; "," } ); ",""," } "," return '<html><head>' + ( me. options. charset ? '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=' + me. options. charset + '\"/>' : '' ) "," + ( headHtmlForIE9 || me. document. getElementsByTagName( 'head' )[ 0 ]. innerHTML) + headHtml. join( ' \\n ' ) + '</head>' "," + '<body ' + ( ie && browser. version < 9 ? 'class=\"view\"' : '' ) + '>' + me. getContent( null , null , true ) + '</body></html>' ; "," } , ",""," /** "," * 得到编辑器的纯文本内容,但会保留段落格式 "," * @method getPlainTxt "," * @return { String } 编辑器带段落格式的纯文本内容字符串 "," * @example "," * ```javascript "," * editor.getPlainTxt(); "," * ``` "," */ "," getPlainTxt: function () { "," var reg = new RegExp( domUtils. fillChar, 'g' ), "," html = this . body. innerHTML. replace( /[\\n\\r]/g , '' ); //ie要先去了\\n在处理 "," html = html. replace( /<(p|div)[^>]*>(<br\\/?>| )<\\/\\1>/gi , ' \\n ' ) "," . replace( /<br\\/?>/gi , ' \\n ' ) "," . replace( /<[^>/]+>/g , '' ) "," . replace( /(\\n)?<\\/([^>]+)>/g , function ( a, b, c) { "," return dtd. $block[ c] ? ' \\n ' : b ? b : '' ; "," } ); "," //取出来的空格会有c2a0会变成乱码,处理这种情况\\u00a0 "," return html. replace( reg, '' ). replace( /\\u00a0/g , ' ' ). replace( / /g , ' ' ); "," } , ",""," /** "," * 获取编辑器中的纯文本内容,没有段落格式 "," * @method getContentTxt "," * @return { String } 编辑器不带段落格式的纯文本内容字符串 "," * @example "," * ```javascript "," * editor.getContentTxt(); "," * ``` "," */ "," getContentTxt: function () { "," var reg = new RegExp( domUtils. fillChar, 'g' ); "," //取出来的空格会有c2a0会变成乱码,处理这种情况\\u00a0 "," return this . body[ browser. ie ? 'innerText' : 'textContent' ]. replace( reg, '' ). replace( /\\u00a0/g , ' ' ); "," } , ",""," /** "," * 设置编辑器的内容,可修改编辑器当前的html内容 "," * @method setContent "," * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 "," * @warning 该方法会出发selectionchange事件 "," * @param { String } 要插入的html内容 "," * @example "," * ```javascript "," * editor.getContent('<p>test</p>'); "," * ``` "," */ ",""," /** "," * 设置编辑器的内容,可修改编辑器当前的html内容 "," * @method setContent "," * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 "," * @warning 该方法会出发selectionchange事件 "," * @param { String } html 要插入的html内容 "," * @param { Boolean } isAppendTo 若传入true,不清空原来的内容,在最后插入内容,否则,清空内容再插入 "," * @example "," * ```javascript "," * //假设设置前的编辑器内容是 <p>old text</p> "," * editor.getContent('<p>new text</p>', true); //插入的结果是<p>old text</p><p>new text</p> "," * ``` "," */ ",""," /** "," * 设置编辑器的内容,可修改编辑器当前的html内容 "," * @method setContent "," * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 "," * @param { String } html 要插入的html内容 "," * @param { Boolean } isAppendTo 若传入true,不清空原来的内容,在最后插入内容,否则,清空内容再插入 "," * @param { Boolean } notFireSelectionchange 若传入true,执行该函数过程不触发编辑器的selectionchange事件 "," * @example "," * ```javascript "," * editor.getContent('<p>new text</p>', false, true); "," * ``` "," */ "," setContent: function ( html, isAppendTo, notFireSelectionchange) { "," var me = this ; ",""," me. fireEvent( 'beforesetcontent' , html); "," var root = UE. htmlparser( html); "," me. filterInputRule( root); "," html = root. toHtml(); ","",""," me. body. innerHTML = ( isAppendTo ? me. body. innerHTML : '' ) + html; ","",""," function isCdataDiv( node) { "," return node. tagName == 'DIV' && node. getAttribute( 'cdata_tag' ); "," } ",""," //给文本或者inline节点套p标签 "," if ( me. options. enterTag == 'p' ) { ",""," var child = this . body. firstChild, tmpNode; "," if (! child || child. nodeType == 1 && "," ( dtd. $cdata[ child. tagName] || isCdataDiv( child) || "," domUtils. isCustomeNode( child) "," ) "," && child === this . body. lastChild) { "," this . body. innerHTML = '<p>' + ( browser. ie ? ' ' : '<br/>' ) + '</p>' + this . body. innerHTML; ",""," } else { "," var p = me. document. createElement( 'p' ); "," while ( child) { "," while ( child && ( child. nodeType == 3 || child. nodeType == 1 && dtd. p[ child. tagName] && ! dtd. $cdata[ child. tagName])) { "," tmpNode = child. nextSibling; "," p. appendChild( child); "," child = tmpNode; "," } "," if ( p. firstChild) { "," if (! child) { "," me. body. appendChild( p); "," break ; "," } else { "," child. parentNode. insertBefore( p, child); "," p = me. document. createElement( 'p' ); "," } "," } "," child = child. nextSibling; "," } "," } "," } "," me. fireEvent( 'aftersetcontent' ); "," me. fireEvent( 'contentchange' ); ",""," ! notFireSelectionchange && me. _selectionChange(); "," //清除保存的选区 "," me. _bakRange = me. _bakIERange = me. _bakNativeRange = null ; "," //trace:1742 setContent后gecko能得到焦点问题 "," var geckoSel; "," if ( browser. gecko && ( geckoSel = this . selection. getNative())) { "," geckoSel. removeAllRanges(); "," } "," if ( me. options. autoSyncData) { "," me. form && setValue( me. form, me); "," } "," } , ",""," /** "," * 让编辑器获得焦点,默认focus到编辑器头部 "," * @method focus "," * @example "," * ```javascript "," * editor.focus() "," * ``` "," */ ",""," /** "," * 让编辑器获得焦点,toEnd确定focus位置 "," * @method focus "," * @param { Boolean } toEnd 默认focus到编辑器头部,toEnd为true时focus到内容尾部 "," * @example "," * ```javascript "," * editor.focus(true) "," * ``` "," */ "," focus: function ( toEnd) { "," try { "," var me = this , "," rng = me. selection. getRange(); "," if ( toEnd) { "," rng. setStartAtLast( me. body. lastChild). setCursor( false , true ); "," } else { "," rng. select( true ); "," } "," this . fireEvent( 'focus' ); "," } catch ( e) { "," } "," } , ",""," /** "," * 初始化UE事件及部分事件代理 "," * @method _initEvents "," * @private "," */ "," _initEvents: function () { "," var me = this , "," doc = me. document, "," win = me. window; "," me. _proxyDomEvent = utils. bind( me. _proxyDomEvent, me); "," domUtils. on( doc, [ 'click' , 'contextmenu' , 'mousedown' , 'keydown' , 'keyup' , 'keypress' , 'mouseup' , 'mouseover' , 'mouseout' , 'selectstart' ], me. _proxyDomEvent); "," domUtils. on( win, [ 'focus' , 'blur' ], me. _proxyDomEvent); "," domUtils. on( doc, [ 'mouseup' , 'keydown' ], function ( evt) { "," //特殊键不触发selectionchange "," if ( evt. type == 'keydown' && ( evt. ctrlKey || evt. metaKey || evt. shiftKey || evt. altKey)) { "," return ; "," } "," if ( evt. button == 2 ) return ; "," me. _selectionChange( 250 , evt); "," } ); ","// //处理拖拽 ","// //ie ff不能从外边拖入 ","// //chrome只针对从外边拖入的内容过滤 ","// var innerDrag = 0, source = browser.ie ? me.body : me.document, dragoverHandler; ","// domUtils.on(source, 'dragstart', function () { ","// innerDrag = 1; ","// }); ","// domUtils.on(source, browser.webkit ? 'dragover' : 'drop', function () { ","// return browser.webkit ? ","// function () { ","// clearTimeout(dragoverHandler); ","// dragoverHandler = setTimeout(function () { ","// if (!innerDrag) { ","// var sel = me.selection, ","// range = sel.getRange(); ","// if (range) { ","// var common = range.getCommonAncestor(); ","// if (common && me.serialize) { ","// var f = me.serialize, ","// node = ","// f.filter( ","// f.transformInput( ","// f.parseHTML( ","// f.word(common.innerHTML) ","// ) ","// ) ","// ); ","// common.innerHTML = f.toHTML(node); ","// } ","// } ","// } ","// innerDrag = 0; ","// }, 200); ","// } : ","// function (e) { ","// if (!innerDrag) { ","// e.preventDefault ? e.preventDefault() : (e.returnValue = false); ","// } ","// innerDrag = 0; ","// } ","// }()); "," } , ",""," /** "," * 触发事件代理 "," * @method _proxyDomEvent "," * @private "," * @return { * } fireEvent的返回值 "," * @see UE.EventBase:fireEvent(String) "," */ "," _proxyDomEvent: function ( evt) { "," return this . fireEvent( evt. type. replace( /^on/ , '' ), evt); "," } , "," /** "," * 变化选区 "," * @method _selectionChange "," * @private "," */ "," _selectionChange: function ( delay, evt) { "," var me = this ; "," //有光标才做selectionchange 为了解决未focus时点击source不能触发更改工具栏状态的问题(source命令notNeedUndo=1) ","// if ( !me.selection.isFocus() ){ ","// return; ","// } ","",""," var hackForMouseUp = false ; "," var mouseX, mouseY; "," if ( browser. ie && browser. version < 9 && evt && evt. type == 'mouseup' ) { "," var range = this . selection. getRange(); "," if (! range. collapsed) { "," hackForMouseUp = true ; "," mouseX = evt. clientX; "," mouseY = evt. clientY; "," } "," } "," clearTimeout( _selectionChangeTimer); "," _selectionChangeTimer = setTimeout( function () { "," if (! me. selection. getNative()) { "," return ; "," } "," //修复一个IE下的bug: 鼠标点击一段已选择的文本中间时,可能在mouseup后的一段时间内取到的range是在selection的type为None下的错误值. "," //IE下如果用户是拖拽一段已选择文本,则不会触发mouseup事件,所以这里的特殊处理不会对其有影响 "," var ieRange; "," if ( hackForMouseUp && me. selection. getNative(). type == 'None' ) { "," ieRange = me. document. body. createTextRange(); "," try { "," ieRange. moveToPoint( mouseX, mouseY); "," } catch ( ex) { "," ieRange = null ; "," } "," } "," var bakGetIERange; "," if ( ieRange) { "," bakGetIERange = me. selection. getIERange; "," me. selection. getIERange = function () { "," return ieRange; "," } ; "," } "," me. selection. cache(); "," if ( bakGetIERange) { "," me. selection. getIERange = bakGetIERange; "," } "," if ( me. selection. _cachedRange && me. selection. _cachedStartElement) { "," me. fireEvent( 'beforeselectionchange' ); "," // 第二个参数causeByUi为true代表由用户交互造成的selectionchange. "," me. fireEvent( 'selectionchange' , !! evt); "," me. fireEvent( 'afterselectionchange' ); "," me. selection. clear(); "," } "," } , delay || 50 ); "," } , ",""," /** "," * 执行编辑命令 "," * @method _callCmdFn "," * @private "," * @param { String } fnName 函数名称 "," * @param { * } args 传给命令函数的参数 "," * @return { * } 返回命令函数运行的返回值 "," */ "," _callCmdFn: function ( fnName, args) { "," var cmdName = args[ 0 ]. toLowerCase(), "," cmd, cmdFn; "," cmd = this . commands[ cmdName] || UE. commands[ cmdName]; "," cmdFn = cmd && cmd[ fnName]; "," //没有querycommandstate或者没有command的都默认返回0 "," if ((! cmd || ! cmdFn) && fnName == 'queryCommandState' ) { "," return 0 ; "," } else if ( cmdFn) { "," return cmdFn. apply( this , args); "," } "," } , ",""," /** "," * 执行编辑命令cmdName,完成富文本编辑效果 "," * @method execCommand "," * @return { * } 返回命令函数运行的返回值 "," * @example "," * ```javascript "," * editor.execCommand(cmdName); "," * ``` "," */ "," execCommand: function ( cmdName) { "," cmdName = cmdName. toLowerCase(); "," var me = this , "," result, "," cmd = me. commands[ cmdName] || UE. commands[ cmdName]; "," if (! cmd || ! cmd. execCommand) { "," return null ; "," } "," if (! cmd. notNeedUndo && ! me. __hasEnterExecCommand) { "," me. __hasEnterExecCommand = true ; "," if ( me. queryCommandState. apply( me, arguments) != - 1 ) { "," me. fireEvent( 'beforeexeccommand' , cmdName); "," result = this . _callCmdFn( 'execCommand' , arguments); "," ! me. _ignoreContentChange && me. fireEvent( 'contentchange' ); "," me. fireEvent( 'afterexeccommand' , cmdName); "," } "," me. __hasEnterExecCommand = false ; "," } else { "," result = this . _callCmdFn( 'execCommand' , arguments); "," ! me. _ignoreContentChange && me. fireEvent( 'contentchange' ) "," } "," ! me. _ignoreContentChange && me. _selectionChange(); "," return result; "," } , ",""," /** "," * 根据传入的command命令,查选编辑器当前的选区,返回命令的状态 "," * @method queryCommandState "," * @return { Number } number 返回放前命令的状态 "," * 返回 -1 当前命令不可用 "," * 返回 0 当前命令可用 "," * 返回 1 当前命令已经执行过了 "," * @example "," * ```javascript "," * editor.queryCommandState(cmdName) => (-1|0|1) "," * ``` "," */ "," queryCommandState: function ( cmdName) { "," return this . _callCmdFn( 'queryCommandState' , arguments); "," } , ",""," /** "," * 根据传入的command命令,查选编辑器当前的选区,根据命令返回相关的值 "," * @method queryCommandValue "," * @remind 只有部分插件有此方法 "," * @return { * } 返回每个命令特定的当前状态值 "," * @grammar editor.queryCommandValue(cmdName) => {*} "," */ "," queryCommandValue: function ( cmdName) { "," return this . _callCmdFn( 'queryCommandValue' , arguments); "," } , ",""," /** "," * 检查编辑区域中是否有内容 "," * @method hasContents "," * @remind 默认有文本内容,或者有以下节点都不认为是空 "," * table,ul,ol,dl,iframe,area,base,col,hr,img,embed,input,link,meta,param "," * @return { Boolean } 检查有内容返回true,否则返回false "," * @example "," * ```javascript "," * editor.hasContents() "," * ``` "," */ ",""," /** "," * 检查编辑区域中是否有内容,若包含参数tags中的节点类型,直接返回true "," * @method hasContents "," * @param { Array } tags 传入数组判断时用到的节点类型 "," * @return { Boolean } 若文档中包含tags数组里对应的tag,返回true,否则返回false "," * @example "," * ```javascript "," * editor.hasContents(['span']); "," * ``` "," */ "," hasContents: function ( tags) { "," if ( tags) { "," for ( var i = 0 , ci; ci = tags[ i++];) { "," if ( this . document. getElementsByTagName( ci). length > 0 ) { "," return true ; "," } "," } "," } "," if (! domUtils. isEmptyBlock( this . body)) { "," return true "," } "," //随时添加,定义的特殊标签如果存在,不能认为是空 "," tags = [ 'div' ]; "," for ( i = 0 ; ci = tags[ i++];) { "," var nodes = domUtils. getElementsByTagName( this . document, ci); "," for ( var n = 0 , cn; cn = nodes[ n++];) { "," if ( domUtils. isCustomeNode( cn)) { "," return true ; "," } "," } "," } "," return false ; "," } , ",""," /** "," * 重置编辑器,可用来做多个tab使用同一个编辑器实例 "," * @method reset "," * @remind 此方法会清空编辑器内容,清空回退列表 "," * @example "," * ```javascript "," * editor.reset() "," * ``` "," */ "," reset: function () { "," this . fireEvent( 'reset' ); "," } , ",""," /** "," * 设置当前编辑区域可以编辑 "," * @method setEnabled "," * @example "," * ```javascript "," * editor.setEnabled() "," * ``` "," */ "," setEnabled: function () { "," var me = this , range; "," if ( me. body. contentEditable == 'false' ) { "," me. body. contentEditable = true ; "," range = me. selection. getRange(); "," //有可能内容丢失了 "," try { "," range. moveToBookmark( me. lastBk); "," delete me. lastBk"," } catch ( e) { "," range. setStartAtFirst( me. body). collapse( true ) "," } "," range. select( true ); "," if ( me. bkqueryCommandState) { "," me. queryCommandState = me. bkqueryCommandState; "," delete me. bkqueryCommandState; "," } "," me. fireEvent( 'selectionchange' ); "," } "," } , ",""," /** "," * 设置当前编辑区域可以编辑 "," * @method enable "," * @return { * } 返回setEnabled方法的返回值 "," * @example "," * ```javascript "," * editor.enable() "," * ``` "," * @see UE.Editor:setEnabled() "," */ "," enable: function () { "," return this . setEnabled(); "," } , ",""," /** 设置当前编辑区域不可编辑 "," * @method setDisabled "," */ ",""," /** 设置当前编辑区域不可编辑,except中的命令除外 "," * @method setDisabled "," * @param { String } except 例外命令的字符串 "," * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 "," * @example "," * ```javascript "," * editor.setDisabled('bold'); //禁用工具栏中除加粗之外的所有功能 "," * ``` "," */ ",""," /** 设置当前编辑区域不可编辑,except中的命令除外 "," * @method setDisabled "," * @param { Array } except 字符串数组,数组中的命令仍然可以执行 "," * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 "," * @example "," * ```javascript "," * editor.setDisabled(['bold','insertimage']); //禁用工具栏中除加粗和插入图片之外的所有功能 "," * ``` "," */ "," setDisabled: function ( except) { "," var me = this ; "," except = except ? utils. isArray( except) ? except : [ except] : []; "," if ( me. body. contentEditable == 'true' ) { "," if (! me. lastBk) { "," me. lastBk = me. selection. getRange(). createBookmark( true ); "," } "," me. body. contentEditable = false ; "," me. bkqueryCommandState = me. queryCommandState; "," me. queryCommandState = function ( type) { "," if ( utils. indexOf( except, type) != - 1 ) { "," return me. bkqueryCommandState. apply( me, arguments); "," } "," return - 1 ; "," } ; "," me. fireEvent( 'selectionchange' ); "," } "," } , ",""," /** 设置当前编辑区域不可编辑 "," * @method disable "," * @see UE.Editor:setEnabled() "," */ ",""," /** 设置当前编辑区域不可编辑,except中的命令除外 "," * @method disable "," * @param { String } except 例外命令的字符串 "," * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 "," * @example "," * ```javascript "," * editor.disable('bold'); //禁用工具栏中除加粗之外的所有功能 "," * ``` "," * @see UE.Editor:setEnabled(String) "," */ ",""," /** 设置当前编辑区域不可编辑,except中的命令除外 "," * @method disable "," * @param { Array } except 字符串数组,数组中的命令仍然可以执行 "," * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 "," * @example "," * ```javascript "," * editor.disable(['bold','insertimage']); //禁用工具栏中除加粗和插入图片之外的所有功能 "," * ``` "," * @see UE.Editor:setEnabled(Array) "," */ "," disable: function ( except) { "," return this . setDisabled( except); "," } , ",""," /** "," * 设置默认内容 "," * @method _setDefaultContent "," * @private "," * @param { String } cont 要存入的内容 "," */ "," _setDefaultContent: function () { "," function clear() { "," var me = this ; "," if ( me. document. getElementById( 'initContent' )) { "," me. body. innerHTML = '<p>' + ( ie ? '' : '<br/>' ) + '</p>' ; "," me. removeListener( 'firstBeforeExecCommand focus' , clear); "," setTimeout( function () { "," me. focus(); "," me. _selectionChange(); "," } , 0 ) "," } "," } ",""," return function ( cont) { "," var me = this ; "," me. body. innerHTML = '<p id=\"initContent\">' + cont + '</p>' ; ",""," me. addListener( 'firstBeforeExecCommand focus' , clear); "," } "," } (), ",""," /** "," * 显示编辑器,show方法的兼容版本 "," * @method setShow "," * @private "," */ "," setShow: function () { "," var me = this , range = me. selection. getRange(); "," if ( me. container. style. display == 'none' ) { "," //有可能内容丢失了 "," try { "," range. moveToBookmark( me. lastBk); "," delete me. lastBk"," } catch ( e) { "," range. setStartAtFirst( me. body). collapse( true ) "," } "," //ie下focus实效,所以做了个延迟 "," setTimeout( function () { "," range. select( true ); "," } , 100 ); "," me. container. style. display = '' ; "," } "," } , ",""," /** "," * 显示编辑器 "," * @method show "," * @example "," * ```javascript "," * editor.show() "," * ``` "," * @see UE.Editor:setShow(String) "," */ "," show: function () { "," return this . setShow(); "," } , ",""," /** "," * 隐藏编辑器,hide方法的兼容版本 "," * @method setHide "," * @private "," */ "," setHide: function () { "," var me = this ; "," if (! me. lastBk) { "," me. lastBk = me. selection. getRange(). createBookmark( true ); "," } "," me. container. style. display = 'none' "," } , ",""," /** "," * 隐藏编辑器 "," * @method hide "," * @example "," * ```javascript "," * editor.hide() "," * ``` "," * @see UE.Editor:setHide() "," */ "," hide: function () { "," return this . setHide(); "," } , ",""," /** "," * 根据指定的路径,获取对应的语言资源 "," * @method getLang "," * @param { String } path 路径根据的是lang目录下的语言文件的路径结构 "," * @return { KeyValueMap | String } 根据路径返回语言资源的Json格式对象或者语言字符串 "," * @example "," * ```javascript "," * editor.getLang('contextMenu.delete'); //如果当前是中文,那返回是的是'删除' "," * ``` "," */ "," getLang: function ( path) { "," var lang = UE. I18N[ this . options. lang]; "," if (! lang) { "," throw Error( \"not import language file\" ); "," } "," path = ( path || \"\" ). split( \".\" ); "," for ( var i = 0 , ci; ci = path[ i++];) { "," lang = lang[ ci]; "," if (! lang) break ; "," } "," return lang; "," } , ",""," /** "," * 计算编辑器当前html内容的长度 "," * @method getContentLength "," * @return { Number } 返回计算的长度 "," * @example "," * ```javascript "," * editor.getContentLength() "," * ``` "," */ ",""," /** "," * 计算编辑器当前存文本内容的长度 "," * @method getContentLength "," * @param { Boolean } ingoneHtml 传入true时,只按照纯文本来计算 "," * @return { Number } 返回计算的长度,内容中有hr/img/iframe标签,长度加1 "," * @example "," * ```javascript "," * editor.getContentLength(true) "," * ``` "," */ ",""," /** "," * 计算编辑器当前内容的长度 "," * @method getContentLength "," * @param { Boolean } ingoneHtml 传入true时,只按照纯文本来计算 "," * @param { Array } tagNames 忽略html代码时,遇到数组里的标签,长度加1 "," * @return { Number } 返回计算的长度,内容中有hr/img/iframe标签或者参数tagNames中的标签,长度加1 "," * @remind 当ingoneHtml为false,第二个参数不作用 "," * @example "," * ```javascript "," * editor.getContentLength(true, ['em','strong']) "," * ``` "," */ "," getContentLength: function ( ingoneHtml, tagNames) { "," var count = this . getContent( false , false , true ). length; "," if ( ingoneHtml) { "," tagNames = ( tagNames || []). concat([ 'hr' , 'img' , 'iframe' ]); "," count = this . getContentTxt(). replace( /[\\t\\r\\n]+/g , '' ). length; "," for ( var i = 0 , ci; ci = tagNames[ i++];) { "," count += this . document. getElementsByTagName( ci). length; "," } "," } "," return count; "," } , ",""," /** "," * 添加输入过滤规则 "," * @method addInputRule "," * @param { Function } rule 要添加的过滤规则 "," * @example "," * ```javascript "," * editor.addInputRule(function(root){ "," * $.each(root.getNodesByTagName('div'),function(i,node){ "," * node.tagName=\"p\"; "," * }); "," * }); "," * ``` "," */ "," addInputRule: function ( rule) { "," this . inputRules. push( rule); "," } , ",""," /** "," * 根据输入过滤规则,过滤编辑器内容 "," * @method filterInputRule "," * @param { UE.uNode } root 要过滤的uNode节点 "," * @remind 执行editor.setContent方法和执行'inserthtml'命令后,会运行该过滤函数 "," * @example "," * ```javascript "," * editor.filterInputRule(editor.body); "," * ``` "," */ "," filterInputRule: function ( root) { "," for ( var i = 0 , ci; ci = this . inputRules[ i++];) { "," ci. call( this , root) "," } "," } , ",""," /** "," * 添加输出过滤规则 "," * @method addOutputRule "," * @param { Function } rule 要添加的过滤规则 "," * @example "," * ```javascript "," * editor.addOutputRule(function(root){ "," * $.each(root.getNodesByTagName('p'),function(i,node){ "," * node.tagName=\"div\"; "," * }); "," * }); "," * ``` "," */ "," addOutputRule: function ( rule) { "," this . outputRules. push( rule) "," } , ",""," /** "," * 根据输出过滤规则,过滤编辑器内容 "," * @method filterOutputRule "," * @remind 执行editor.getContent方法的时候,会先运行该过滤函数 "," * @param { UE.uNode } root 要过滤的uNode节点 "," * @example "," * ```javascript "," * editor.filterOutputRule(editor.body); "," * ``` "," */ "," filterOutputRule: function ( root) { "," for ( var i = 0 , ci; ci = this . outputRules[ i++];) { "," ci. call( this , root) "," } "," } "," } ; "," utils. inherits( Editor, EventBase); ","} )(); "];
+_$jscoverage['core/Editor.js'][22]++;
+(function () {
+ _$jscoverage['core/Editor.js'][23]++;
+ var uid = 0, _selectionChangeTimer;
+ _$jscoverage['core/Editor.js'][32]++;
+ function setValue(form, editor) {
+ _$jscoverage['core/Editor.js'][33]++;
+ var textarea;
+ _$jscoverage['core/Editor.js'][34]++;
+ if (editor.textarea) {
+ _$jscoverage['core/Editor.js'][35]++;
+ if (utils.isString(editor.textarea)) {
+ _$jscoverage['core/Editor.js'][36]++;
+ for (var i = 0, ti, tis = domUtils.getElementsByTagName(form, "textarea"); (ti = tis[(i++)]);) {
+ _$jscoverage['core/Editor.js'][37]++;
+ if ((ti.id == ("ueditor_textarea_" + editor.options.textarea))) {
+ _$jscoverage['core/Editor.js'][38]++;
+ textarea = ti;
+ _$jscoverage['core/Editor.js'][39]++;
+ break;
+ }
+}
+ }
+ else {
+ _$jscoverage['core/Editor.js'][43]++;
+ textarea = editor.textarea;
+ }
+ }
+ _$jscoverage['core/Editor.js'][46]++;
+ if ((! textarea)) {
+ _$jscoverage['core/Editor.js'][47]++;
+ form.appendChild((textarea = domUtils.createElement(document, "textarea", {"name": editor.options.textarea, "id": ("ueditor_textarea_" + editor.options.textarea), "style": "display:none"})));
+ _$jscoverage['core/Editor.js'][53]++;
+ editor.textarea = textarea;
+ }
+ _$jscoverage['core/Editor.js'][55]++;
+ textarea.value = (editor.hasContents()? (editor.options.allHtmlEnabled? editor.getAllHtml(): editor.getContent(null, null, true)): "");
+}
+ _$jscoverage['core/Editor.js'][66]++;
+ function loadPlugins(me) {
+ _$jscoverage['core/Editor.js'][68]++;
+ for (var pi in UE.plugins) {
+ _$jscoverage['core/Editor.js'][69]++;
+ UE.plugins[pi].call(me);
+}
+ _$jscoverage['core/Editor.js'][71]++;
+ me.langIsReady = true;
+ _$jscoverage['core/Editor.js'][73]++;
+ me.fireEvent("langReady");
+}
+ _$jscoverage['core/Editor.js'][82]++;
+ function checkCurLang(I18N) {
+ _$jscoverage['core/Editor.js'][83]++;
+ for (var lang in I18N) {
+ _$jscoverage['core/Editor.js'][84]++;
+ return lang;
+}
+}
+ _$jscoverage['core/Editor.js'][135]++;
+ var Editor = (UE.Editor = (function (options) {
+ _$jscoverage['core/Editor.js'][136]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][137]++;
+ me.uid = (uid++);
+ _$jscoverage['core/Editor.js'][138]++;
+ EventBase.call(me);
+ _$jscoverage['core/Editor.js'][139]++;
+ me.commands = {};
+ _$jscoverage['core/Editor.js'][140]++;
+ me.options = utils.extend(utils.clone((options || {})), UEDITOR_CONFIG, true);
+ _$jscoverage['core/Editor.js'][141]++;
+ me.shortcutkeys = {};
+ _$jscoverage['core/Editor.js'][142]++;
+ me.inputRules = [];
+ _$jscoverage['core/Editor.js'][143]++;
+ me.outputRules = [];
+ _$jscoverage['core/Editor.js'][145]++;
+ me.setOpt({isShow: true, initialContent: "", initialStyle: "", autoClearinitialContent: false, iframeCssUrl: (me.options.UEDITOR_HOME_URL + "themes/iframe.css"), textarea: "editorValue", focus: false, focusInEnd: true, autoClearEmptyNode: true, fullscreen: false, readonly: false, zIndex: 999, imagePopup: true, enterTag: "p", customDomain: false, lang: "zh-cn", langPath: (me.options.UEDITOR_HOME_URL + "lang/"), theme: "default", themePath: (me.options.UEDITOR_HOME_URL + "themes/"), allHtmlEnabled: false, scaleEnabled: false, tableNativeEditInFF: false, autoSyncData: true});
+ _$jscoverage['core/Editor.js'][171]++;
+ if ((! utils.isEmptyObject(UE.I18N))) {
+ _$jscoverage['core/Editor.js'][173]++;
+ me.options.lang = checkCurLang(UE.I18N);
+ _$jscoverage['core/Editor.js'][174]++;
+ loadPlugins(me);
+ }
+ else {
+ _$jscoverage['core/Editor.js'][176]++;
+ utils.loadFile(document, {src: (me.options.langPath + me.options.lang + "/" + me.options.lang + ".js"), tag: "script", type: "text/javascript", defer: "defer"}, (function () {
+ _$jscoverage['core/Editor.js'][182]++;
+ loadPlugins(me);
+}));
+ }
+ _$jscoverage['core/Editor.js'][186]++;
+ UE.instants[("ueditorInstant" + me.uid)] = me;
+}));
+ _$jscoverage['core/Editor.js'][188]++;
+ Editor.prototype = {ready: (function (fn) {
+ _$jscoverage['core/Editor.js'][205]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][206]++;
+ if (fn) {
+ _$jscoverage['core/Editor.js'][207]++;
+ (me.isReady? fn.apply(me): me.addListener("ready", fn));
+ }
+}), setOpt: (function (key, val) {
+ _$jscoverage['core/Editor.js'][238]++;
+ var obj = {};
+ _$jscoverage['core/Editor.js'][239]++;
+ if (utils.isString(key)) {
+ _$jscoverage['core/Editor.js'][240]++;
+ obj[key] = val;
+ }
+ else {
+ _$jscoverage['core/Editor.js'][242]++;
+ obj = key;
+ }
+ _$jscoverage['core/Editor.js'][244]++;
+ utils.extend(this.options, obj, true);
+}), destroy: (function () {
+ _$jscoverage['core/Editor.js'][258]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][259]++;
+ me.fireEvent("destroy");
+ _$jscoverage['core/Editor.js'][260]++;
+ var container = me.container.parentNode;
+ _$jscoverage['core/Editor.js'][261]++;
+ var textarea = me.textarea;
+ _$jscoverage['core/Editor.js'][262]++;
+ if ((! textarea)) {
+ _$jscoverage['core/Editor.js'][263]++;
+ textarea = document.createElement("textarea");
+ _$jscoverage['core/Editor.js'][264]++;
+ container.parentNode.insertBefore(textarea, container);
+ }
+ else {
+ _$jscoverage['core/Editor.js'][266]++;
+ textarea.style.display = "";
+ }
+ _$jscoverage['core/Editor.js'][269]++;
+ textarea.style.width = (me.iframe.offsetWidth + "px");
+ _$jscoverage['core/Editor.js'][270]++;
+ textarea.style.height = (me.iframe.offsetHeight + "px");
+ _$jscoverage['core/Editor.js'][271]++;
+ textarea.value = me.getContent();
+ _$jscoverage['core/Editor.js'][272]++;
+ textarea.id = me.key;
+ _$jscoverage['core/Editor.js'][273]++;
+ container.innerHTML = "";
+ _$jscoverage['core/Editor.js'][274]++;
+ domUtils.remove(container);
+ _$jscoverage['core/Editor.js'][275]++;
+ var key = me.key;
+ _$jscoverage['core/Editor.js'][277]++;
+ for (var p in me) {
+ _$jscoverage['core/Editor.js'][278]++;
+ if (me.hasOwnProperty(p)) {
+ _$jscoverage['core/Editor.js'][279]++;
+ (delete this[p]);
+ }
+}
+ _$jscoverage['core/Editor.js'][282]++;
+ UE.delEditor(key);
+}), render: (function (container) {
+ _$jscoverage['core/Editor.js'][299]++;
+ var me = this, options = me.options, getStyleValue = (function (attr) {
+ _$jscoverage['core/Editor.js'][302]++;
+ return parseInt(domUtils.getComputedStyle(container, attr));
+});
+ _$jscoverage['core/Editor.js'][304]++;
+ if (utils.isString(container)) {
+ _$jscoverage['core/Editor.js'][305]++;
+ container = document.getElementById(container);
+ }
+ _$jscoverage['core/Editor.js'][307]++;
+ if (container) {
+ _$jscoverage['core/Editor.js'][308]++;
+ if (options.initialFrameWidth) {
+ _$jscoverage['core/Editor.js'][309]++;
+ options.minFrameWidth = options.initialFrameWidth;
+ }
+ else {
+ _$jscoverage['core/Editor.js'][311]++;
+ options.minFrameWidth = (options.initialFrameWidth = container.offsetWidth);
+ }
+ _$jscoverage['core/Editor.js'][313]++;
+ if (options.initialFrameHeight) {
+ _$jscoverage['core/Editor.js'][314]++;
+ options.minFrameHeight = options.initialFrameHeight;
+ }
+ else {
+ _$jscoverage['core/Editor.js'][316]++;
+ options.initialFrameHeight = (options.minFrameHeight = container.offsetHeight);
+ }
+ _$jscoverage['core/Editor.js'][319]++;
+ container.style.width = (/%$/.test(options.initialFrameWidth)? "100%": ((options.initialFrameWidth - getStyleValue("padding-left") - getStyleValue("padding-right")) + "px"));
+ _$jscoverage['core/Editor.js'][321]++;
+ container.style.height = (/%$/.test(options.initialFrameHeight)? "100%": ((options.initialFrameHeight - getStyleValue("padding-top") - getStyleValue("padding-bottom")) + "px"));
+ _$jscoverage['core/Editor.js'][324]++;
+ container.style.zIndex = options.zIndex;
+ _$jscoverage['core/Editor.js'][326]++;
+ var html = (((ie && (browser.version < 9))? "": "") + "
" + "" + (options.iframeCssUrl? (" "): "") + (options.initialStyle? (""): "") + "" + "");
+ _$jscoverage['core/Editor.js'][342]++;
+ container.appendChild(domUtils.createElement(document, "iframe", {id: ("ueditor_" + me.uid), width: "100%", height: "100%", frameborder: "0", src: ("javascript:void(function(){document.open();" + ((options.customDomain && (document.domain != location.hostname))? ("document.domain=\"" + document.domain + "\";"): "") + "document.write(\"" + html + "\");document.close();}())")}));
+ _$jscoverage['core/Editor.js'][350]++;
+ container.style.overflow = "hidden";
+ _$jscoverage['core/Editor.js'][352]++;
+ setTimeout((function () {
+ _$jscoverage['core/Editor.js'][353]++;
+ if (/%$/.test(options.initialFrameWidth)) {
+ _$jscoverage['core/Editor.js'][354]++;
+ options.minFrameWidth = (options.initialFrameWidth = container.offsetWidth);
+ _$jscoverage['core/Editor.js'][355]++;
+ container.style.width = (options.initialFrameWidth + "px");
+ }
+ _$jscoverage['core/Editor.js'][357]++;
+ if (/%$/.test(options.initialFrameHeight)) {
+ _$jscoverage['core/Editor.js'][358]++;
+ options.minFrameHeight = (options.initialFrameHeight = container.offsetHeight);
+ _$jscoverage['core/Editor.js'][359]++;
+ container.style.height = (options.initialFrameHeight + "px");
+ }
+}));
+ }
+}), _setup: (function (doc) {
+ _$jscoverage['core/Editor.js'][373]++;
+ var me = this, options = me.options;
+ _$jscoverage['core/Editor.js'][375]++;
+ if (ie) {
+ _$jscoverage['core/Editor.js'][376]++;
+ doc.body.disabled = true;
+ _$jscoverage['core/Editor.js'][377]++;
+ doc.body.contentEditable = true;
+ _$jscoverage['core/Editor.js'][378]++;
+ doc.body.disabled = false;
+ }
+ else {
+ _$jscoverage['core/Editor.js'][380]++;
+ doc.body.contentEditable = true;
+ }
+ _$jscoverage['core/Editor.js'][382]++;
+ doc.body.spellcheck = false;
+ _$jscoverage['core/Editor.js'][383]++;
+ me.document = doc;
+ _$jscoverage['core/Editor.js'][384]++;
+ me.window = (doc.defaultView || doc.parentWindow);
+ _$jscoverage['core/Editor.js'][385]++;
+ me.iframe = me.window.frameElement;
+ _$jscoverage['core/Editor.js'][386]++;
+ me.body = doc.body;
+ _$jscoverage['core/Editor.js'][388]++;
+ me.selection = new (dom.Selection)(doc);
+ _$jscoverage['core/Editor.js'][390]++;
+ var geckoSel;
+ _$jscoverage['core/Editor.js'][391]++;
+ if ((browser.gecko && (geckoSel = this.selection.getNative()))) {
+ _$jscoverage['core/Editor.js'][392]++;
+ geckoSel.removeAllRanges();
+ }
+ _$jscoverage['core/Editor.js'][394]++;
+ this._initEvents();
+ _$jscoverage['core/Editor.js'][396]++;
+ for (var form = this.iframe.parentNode; (! domUtils.isBody(form)); (form = form.parentNode)) {
+ _$jscoverage['core/Editor.js'][397]++;
+ if ((form.tagName == "FORM")) {
+ _$jscoverage['core/Editor.js'][398]++;
+ me.form = form;
+ _$jscoverage['core/Editor.js'][399]++;
+ if (me.options.autoSyncData) {
+ _$jscoverage['core/Editor.js'][400]++;
+ domUtils.on(me.window, "blur", (function () {
+ _$jscoverage['core/Editor.js'][401]++;
+ setValue(form, me);
+}));
+ }
+ else {
+ _$jscoverage['core/Editor.js'][404]++;
+ domUtils.on(form, "submit", (function () {
+ _$jscoverage['core/Editor.js'][405]++;
+ setValue(this, me);
+}));
+ }
+ _$jscoverage['core/Editor.js'][408]++;
+ break;
+ }
+}
+ _$jscoverage['core/Editor.js'][411]++;
+ if (options.initialContent) {
+ _$jscoverage['core/Editor.js'][412]++;
+ if (options.autoClearinitialContent) {
+ _$jscoverage['core/Editor.js'][413]++;
+ var oldExecCommand = me.execCommand;
+ _$jscoverage['core/Editor.js'][414]++;
+ me.execCommand = (function () {
+ _$jscoverage['core/Editor.js'][415]++;
+ me.fireEvent("firstBeforeExecCommand");
+ _$jscoverage['core/Editor.js'][416]++;
+ return oldExecCommand.apply(me, arguments);
+});
+ _$jscoverage['core/Editor.js'][418]++;
+ this._setDefaultContent(options.initialContent);
+ }
+ else {
+ _$jscoverage['core/Editor.js'][420]++;
+ this.setContent(options.initialContent, false, true);
+ }
+ }
+ _$jscoverage['core/Editor.js'][425]++;
+ if (domUtils.isEmptyNode(me.body)) {
+ _$jscoverage['core/Editor.js'][426]++;
+ me.body.innerHTML = ("" + (browser.ie? "": " ") + "
");
+ }
+ _$jscoverage['core/Editor.js'][429]++;
+ if (options.focus) {
+ _$jscoverage['core/Editor.js'][430]++;
+ setTimeout((function () {
+ _$jscoverage['core/Editor.js'][431]++;
+ me.focus(me.options.focusInEnd);
+ _$jscoverage['core/Editor.js'][433]++;
+ ((! me.options.autoClearinitialContent) && me._selectionChange());
+}), 0);
+ }
+ _$jscoverage['core/Editor.js'][436]++;
+ if ((! me.container)) {
+ _$jscoverage['core/Editor.js'][437]++;
+ me.container = this.iframe.parentNode;
+ }
+ _$jscoverage['core/Editor.js'][439]++;
+ if ((options.fullscreen && me.ui)) {
+ _$jscoverage['core/Editor.js'][440]++;
+ me.ui.setFullScreen(true);
+ }
+ _$jscoverage['core/Editor.js'][443]++;
+ try {
+ _$jscoverage['core/Editor.js'][444]++;
+ me.document.execCommand("2D-position", false, false);
+ }
+ catch (e) {
+ }
+ _$jscoverage['core/Editor.js'][447]++;
+ try {
+ _$jscoverage['core/Editor.js'][448]++;
+ me.document.execCommand("enableInlineTableEditing", false, false);
+ }
+ catch (e) {
+ }
+ _$jscoverage['core/Editor.js'][451]++;
+ try {
+ _$jscoverage['core/Editor.js'][452]++;
+ me.document.execCommand("enableObjectResizing", false, false);
+ }
+ catch (e) {
+ }
+ _$jscoverage['core/Editor.js'][458]++;
+ me._bindshortcutKeys();
+ _$jscoverage['core/Editor.js'][459]++;
+ me.isReady = 1;
+ _$jscoverage['core/Editor.js'][460]++;
+ me.fireEvent("ready");
+ _$jscoverage['core/Editor.js'][461]++;
+ (options.onready && options.onready.call(me));
+ _$jscoverage['core/Editor.js'][462]++;
+ if ((! browser.ie)) {
+ _$jscoverage['core/Editor.js'][463]++;
+ domUtils.on(me.window, ["blur", "focus"], (function (e) {
+ _$jscoverage['core/Editor.js'][465]++;
+ if ((e.type == "blur")) {
+ _$jscoverage['core/Editor.js'][466]++;
+ me._bakRange = me.selection.getRange();
+ _$jscoverage['core/Editor.js'][467]++;
+ try {
+ _$jscoverage['core/Editor.js'][468]++;
+ me._bakNativeRange = me.selection.getNative().getRangeAt(0);
+ _$jscoverage['core/Editor.js'][469]++;
+ me.selection.getNative().removeAllRanges();
+ }
+ catch (e) {
+ _$jscoverage['core/Editor.js'][471]++;
+ me._bakNativeRange = null;
+ }
+ }
+ else {
+ _$jscoverage['core/Editor.js'][475]++;
+ try {
+ _$jscoverage['core/Editor.js'][476]++;
+ (me._bakRange && me._bakRange.select());
+ }
+ catch (e) {
+ }
+ }
+}));
+ }
+ _$jscoverage['core/Editor.js'][483]++;
+ if ((browser.gecko && (browser.version <= 10902))) {
+ _$jscoverage['core/Editor.js'][485]++;
+ me.body.contentEditable = false;
+ _$jscoverage['core/Editor.js'][486]++;
+ setTimeout((function () {
+ _$jscoverage['core/Editor.js'][487]++;
+ me.body.contentEditable = true;
+}), 100);
+ _$jscoverage['core/Editor.js'][489]++;
+ setInterval((function () {
+ _$jscoverage['core/Editor.js'][490]++;
+ me.body.style.height = ((me.iframe.offsetHeight - 20) + "px");
+}), 100);
+ }
+ _$jscoverage['core/Editor.js'][493]++;
+ ((! options.isShow) && me.setHide());
+ _$jscoverage['core/Editor.js'][494]++;
+ (options.readonly && me.setDisabled());
+}), sync: (function (formId) {
+ _$jscoverage['core/Editor.js'][515]++;
+ var me = this, form = (formId? document.getElementById(formId): domUtils.findParent(me.iframe.parentNode, (function (node) {
+ _$jscoverage['core/Editor.js'][518]++;
+ return (node.tagName == "FORM");
+}), true));
+ _$jscoverage['core/Editor.js'][520]++;
+ (form && setValue(form, me));
+}), setHeight: (function (height, notSetHeight) {
+ _$jscoverage['core/Editor.js'][533]++;
+ if ((height !== parseInt(this.iframe.parentNode.style.height))) {
+ _$jscoverage['core/Editor.js'][534]++;
+ this.iframe.parentNode.style.height = (height + "px");
+ }
+ _$jscoverage['core/Editor.js'][536]++;
+ ((! notSetHeight) && (this.options.minFrameHeight = (this.options.initialFrameHeight = height)));
+ _$jscoverage['core/Editor.js'][538]++;
+ this.body.style.height = (height + "px");
+}), addshortcutkey: (function (cmd, keys) {
+ _$jscoverage['core/Editor.js'][564]++;
+ var obj = {};
+ _$jscoverage['core/Editor.js'][565]++;
+ if (keys) {
+ _$jscoverage['core/Editor.js'][566]++;
+ obj[cmd] = keys;
+ }
+ else {
+ _$jscoverage['core/Editor.js'][568]++;
+ obj = cmd;
+ }
+ _$jscoverage['core/Editor.js'][570]++;
+ utils.extend(this.shortcutkeys, obj);
+}), _bindshortcutKeys: (function () {
+ _$jscoverage['core/Editor.js'][579]++;
+ var me = this, shortcutkeys = this.shortcutkeys;
+ _$jscoverage['core/Editor.js'][580]++;
+ me.addListener("keydown", (function (type, e) {
+ _$jscoverage['core/Editor.js'][581]++;
+ var keyCode = (e.keyCode || e.which);
+ _$jscoverage['core/Editor.js'][582]++;
+ for (var i in shortcutkeys) {
+ _$jscoverage['core/Editor.js'][583]++;
+ var tmp = shortcutkeys[i].split(",");
+ _$jscoverage['core/Editor.js'][584]++;
+ for (var t = 0, ti; (ti = tmp[(t++)]);) {
+ _$jscoverage['core/Editor.js'][585]++;
+ ti = ti.split(":");
+ _$jscoverage['core/Editor.js'][586]++;
+ var key = ti[0], param = ti[1];
+ _$jscoverage['core/Editor.js'][587]++;
+ if ((/^(ctrl)(\+shift)?\+(\d+)$/.test(key.toLowerCase()) || /^(\d+)$/.test(key))) {
+ _$jscoverage['core/Editor.js'][588]++;
+ if (((((RegExp.$1 == "ctrl")? (e.ctrlKey || e.metaKey): 0) && ((RegExp.$2 != "")? e[(RegExp.$2.slice(1) + "Key")]: 1) && (keyCode == RegExp.$3)) || (keyCode == RegExp.$1))) {
+ _$jscoverage['core/Editor.js'][594]++;
+ if ((me.queryCommandState(i, param) != -1)) {
+ _$jscoverage['core/Editor.js'][595]++;
+ me.execCommand(i, param);
+ }
+ _$jscoverage['core/Editor.js'][596]++;
+ domUtils.preventDefault(e);
+ }
+ }
+}
+}
+}));
+}), getContent: (function (cmd, fn, notSetCursor, ignoreBlank, formatter) {
+ _$jscoverage['core/Editor.js'][635]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][636]++;
+ if ((cmd && utils.isFunction(cmd))) {
+ _$jscoverage['core/Editor.js'][637]++;
+ fn = cmd;
+ _$jscoverage['core/Editor.js'][638]++;
+ cmd = "";
+ }
+ _$jscoverage['core/Editor.js'][640]++;
+ if ((fn? (! fn()): (! this.hasContents()))) {
+ _$jscoverage['core/Editor.js'][641]++;
+ return "";
+ }
+ _$jscoverage['core/Editor.js'][643]++;
+ me.fireEvent("beforegetcontent");
+ _$jscoverage['core/Editor.js'][644]++;
+ var root = UE.htmlparser(me.body.innerHTML, ignoreBlank);
+ _$jscoverage['core/Editor.js'][645]++;
+ me.filterOutputRule(root);
+ _$jscoverage['core/Editor.js'][646]++;
+ me.fireEvent("aftergetcontent", cmd);
+ _$jscoverage['core/Editor.js'][647]++;
+ return root.toHtml(formatter);
+}), getAllHtml: (function () {
+ _$jscoverage['core/Editor.js'][660]++;
+ var me = this, headHtml = [], html = "";
+ _$jscoverage['core/Editor.js'][663]++;
+ me.fireEvent("getAllHtml", headHtml);
+ _$jscoverage['core/Editor.js'][664]++;
+ if ((browser.ie && (browser.version > 8))) {
+ _$jscoverage['core/Editor.js'][665]++;
+ var headHtmlForIE9 = "";
+ _$jscoverage['core/Editor.js'][666]++;
+ utils.each(me.document.styleSheets, (function (si) {
+ _$jscoverage['core/Editor.js'][667]++;
+ headHtmlForIE9 += (si.href? (" "): (""));
+}));
+ _$jscoverage['core/Editor.js'][669]++;
+ utils.each(me.document.getElementsByTagName("script"), (function (si) {
+ _$jscoverage['core/Editor.js'][670]++;
+ headHtmlForIE9 += si.outerHTML;
+}));
+ }
+ _$jscoverage['core/Editor.js'][674]++;
+ return ("" + (me.options.charset? (" "): "") + (headHtmlForIE9 || me.document.getElementsByTagName("head")[0].innerHTML) + headHtml.join("\n") + "" + "" + me.getContent(null, null, true) + "");
+}), getPlainTxt: (function () {
+ _$jscoverage['core/Editor.js'][689]++;
+ var reg = new RegExp(domUtils.fillChar, "g"), html = this.body.innerHTML.replace(/[\n\r]/g, "");
+ _$jscoverage['core/Editor.js'][691]++;
+ html = html.replace(/<(p|div)[^>]*>( | )<\/\1>/gi, "\n").replace(/ /gi, "\n").replace(/<[^>/]+>/g, "").replace(/(\n)?<\/([^>]+)>/g, (function (a, b, c) {
+ _$jscoverage['core/Editor.js'][695]++;
+ return (dtd.$block[c]? "\n": (b? b: ""));
+}));
+ _$jscoverage['core/Editor.js'][698]++;
+ return html.replace(reg, "").replace(/\u00a0/g, " ").replace(/ /g, " ");
+}), getContentTxt: (function () {
+ _$jscoverage['core/Editor.js'][711]++;
+ var reg = new RegExp(domUtils.fillChar, "g");
+ _$jscoverage['core/Editor.js'][713]++;
+ return this.body[(browser.ie? "innerText": "textContent")].replace(reg, "").replace(/\u00a0/g, " ");
+}), setContent: (function (html, isAppendTo, notFireSelectionchange) {
+ _$jscoverage['core/Editor.js'][755]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][757]++;
+ me.fireEvent("beforesetcontent", html);
+ _$jscoverage['core/Editor.js'][758]++;
+ var root = UE.htmlparser(html);
+ _$jscoverage['core/Editor.js'][759]++;
+ me.filterInputRule(root);
+ _$jscoverage['core/Editor.js'][760]++;
+ html = root.toHtml();
+ _$jscoverage['core/Editor.js'][763]++;
+ me.body.innerHTML = ((isAppendTo? me.body.innerHTML: "") + html);
+ _$jscoverage['core/Editor.js'][766]++;
+ function isCdataDiv(node) {
+ _$jscoverage['core/Editor.js'][767]++;
+ return ((node.tagName == "DIV") && node.getAttribute("cdata_tag"));
+}
+ _$jscoverage['core/Editor.js'][771]++;
+ if ((me.options.enterTag == "p")) {
+ _$jscoverage['core/Editor.js'][773]++;
+ var child = this.body.firstChild, tmpNode;
+ _$jscoverage['core/Editor.js'][774]++;
+ if (((! child) || ((child.nodeType == 1) && (dtd.$cdata[child.tagName] || isCdataDiv(child) || domUtils.isCustomeNode(child)) && (child === this.body.lastChild)))) {
+ _$jscoverage['core/Editor.js'][779]++;
+ this.body.innerHTML = ("" + (browser.ie? " ": " ") + "
" + this.body.innerHTML);
+ }
+ else {
+ _$jscoverage['core/Editor.js'][782]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['core/Editor.js'][783]++;
+ while (child) {
+ _$jscoverage['core/Editor.js'][784]++;
+ while ((child && ((child.nodeType == 3) || ((child.nodeType == 1) && dtd.p[child.tagName] && (! dtd.$cdata[child.tagName]))))) {
+ _$jscoverage['core/Editor.js'][785]++;
+ tmpNode = child.nextSibling;
+ _$jscoverage['core/Editor.js'][786]++;
+ p.appendChild(child);
+ _$jscoverage['core/Editor.js'][787]++;
+ child = tmpNode;
+}
+ _$jscoverage['core/Editor.js'][789]++;
+ if (p.firstChild) {
+ _$jscoverage['core/Editor.js'][790]++;
+ if ((! child)) {
+ _$jscoverage['core/Editor.js'][791]++;
+ me.body.appendChild(p);
+ _$jscoverage['core/Editor.js'][792]++;
+ break;
+ }
+ else {
+ _$jscoverage['core/Editor.js'][794]++;
+ child.parentNode.insertBefore(p, child);
+ _$jscoverage['core/Editor.js'][795]++;
+ p = me.document.createElement("p");
+ }
+ }
+ _$jscoverage['core/Editor.js'][798]++;
+ child = child.nextSibling;
+}
+ }
+ }
+ _$jscoverage['core/Editor.js'][802]++;
+ me.fireEvent("aftersetcontent");
+ _$jscoverage['core/Editor.js'][803]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['core/Editor.js'][805]++;
+ ((! notFireSelectionchange) && me._selectionChange());
+ _$jscoverage['core/Editor.js'][807]++;
+ me._bakRange = (me._bakIERange = (me._bakNativeRange = null));
+ _$jscoverage['core/Editor.js'][809]++;
+ var geckoSel;
+ _$jscoverage['core/Editor.js'][810]++;
+ if ((browser.gecko && (geckoSel = this.selection.getNative()))) {
+ _$jscoverage['core/Editor.js'][811]++;
+ geckoSel.removeAllRanges();
+ }
+ _$jscoverage['core/Editor.js'][813]++;
+ if (me.options.autoSyncData) {
+ _$jscoverage['core/Editor.js'][814]++;
+ (me.form && setValue(me.form, me));
+ }
+}), focus: (function (toEnd) {
+ _$jscoverage['core/Editor.js'][837]++;
+ try {
+ _$jscoverage['core/Editor.js'][838]++;
+ var me = this, rng = me.selection.getRange();
+ _$jscoverage['core/Editor.js'][840]++;
+ if (toEnd) {
+ _$jscoverage['core/Editor.js'][841]++;
+ rng.setStartAtLast(me.body.lastChild).setCursor(false, true);
+ }
+ else {
+ _$jscoverage['core/Editor.js'][843]++;
+ rng.select(true);
+ }
+ _$jscoverage['core/Editor.js'][845]++;
+ this.fireEvent("focus");
+ }
+ catch (e) {
+ }
+}), _initEvents: (function () {
+ _$jscoverage['core/Editor.js'][856]++;
+ var me = this, doc = me.document, win = me.window;
+ _$jscoverage['core/Editor.js'][859]++;
+ me._proxyDomEvent = utils.bind(me._proxyDomEvent, me);
+ _$jscoverage['core/Editor.js'][860]++;
+ domUtils.on(doc, ["click", "contextmenu", "mousedown", "keydown", "keyup", "keypress", "mouseup", "mouseover", "mouseout", "selectstart"], me._proxyDomEvent);
+ _$jscoverage['core/Editor.js'][861]++;
+ domUtils.on(win, ["focus", "blur"], me._proxyDomEvent);
+ _$jscoverage['core/Editor.js'][862]++;
+ domUtils.on(doc, ["mouseup", "keydown"], (function (evt) {
+ _$jscoverage['core/Editor.js'][864]++;
+ if (((evt.type == "keydown") && (evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey))) {
+ _$jscoverage['core/Editor.js'][865]++;
+ return;
+ }
+ _$jscoverage['core/Editor.js'][867]++;
+ if ((evt.button == 2)) {
+ _$jscoverage['core/Editor.js'][867]++;
+ return;
+ }
+ _$jscoverage['core/Editor.js'][868]++;
+ me._selectionChange(250, evt);
+}));
+}), _proxyDomEvent: (function (evt) {
+ _$jscoverage['core/Editor.js'][921]++;
+ return this.fireEvent(evt.type.replace(/^on/, ""), evt);
+}), _selectionChange: (function (delay, evt) {
+ _$jscoverage['core/Editor.js'][929]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][936]++;
+ var hackForMouseUp = false;
+ _$jscoverage['core/Editor.js'][937]++;
+ var mouseX, mouseY;
+ _$jscoverage['core/Editor.js'][938]++;
+ if ((browser.ie && (browser.version < 9) && evt && (evt.type == "mouseup"))) {
+ _$jscoverage['core/Editor.js'][939]++;
+ var range = this.selection.getRange();
+ _$jscoverage['core/Editor.js'][940]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['core/Editor.js'][941]++;
+ hackForMouseUp = true;
+ _$jscoverage['core/Editor.js'][942]++;
+ mouseX = evt.clientX;
+ _$jscoverage['core/Editor.js'][943]++;
+ mouseY = evt.clientY;
+ }
+ }
+ _$jscoverage['core/Editor.js'][946]++;
+ clearTimeout(_selectionChangeTimer);
+ _$jscoverage['core/Editor.js'][947]++;
+ _selectionChangeTimer = setTimeout((function () {
+ _$jscoverage['core/Editor.js'][948]++;
+ if ((! me.selection.getNative())) {
+ _$jscoverage['core/Editor.js'][949]++;
+ return;
+ }
+ _$jscoverage['core/Editor.js'][953]++;
+ var ieRange;
+ _$jscoverage['core/Editor.js'][954]++;
+ if ((hackForMouseUp && (me.selection.getNative().type == "None"))) {
+ _$jscoverage['core/Editor.js'][955]++;
+ ieRange = me.document.body.createTextRange();
+ _$jscoverage['core/Editor.js'][956]++;
+ try {
+ _$jscoverage['core/Editor.js'][957]++;
+ ieRange.moveToPoint(mouseX, mouseY);
+ }
+ catch (ex) {
+ _$jscoverage['core/Editor.js'][959]++;
+ ieRange = null;
+ }
+ }
+ _$jscoverage['core/Editor.js'][962]++;
+ var bakGetIERange;
+ _$jscoverage['core/Editor.js'][963]++;
+ if (ieRange) {
+ _$jscoverage['core/Editor.js'][964]++;
+ bakGetIERange = me.selection.getIERange;
+ _$jscoverage['core/Editor.js'][965]++;
+ me.selection.getIERange = (function () {
+ _$jscoverage['core/Editor.js'][966]++;
+ return ieRange;
+});
+ }
+ _$jscoverage['core/Editor.js'][969]++;
+ me.selection.cache();
+ _$jscoverage['core/Editor.js'][970]++;
+ if (bakGetIERange) {
+ _$jscoverage['core/Editor.js'][971]++;
+ me.selection.getIERange = bakGetIERange;
+ }
+ _$jscoverage['core/Editor.js'][973]++;
+ if ((me.selection._cachedRange && me.selection._cachedStartElement)) {
+ _$jscoverage['core/Editor.js'][974]++;
+ me.fireEvent("beforeselectionchange");
+ _$jscoverage['core/Editor.js'][976]++;
+ me.fireEvent("selectionchange", (! (! evt)));
+ _$jscoverage['core/Editor.js'][977]++;
+ me.fireEvent("afterselectionchange");
+ _$jscoverage['core/Editor.js'][978]++;
+ me.selection.clear();
+ }
+}), (delay || 50));
+}), _callCmdFn: (function (fnName, args) {
+ _$jscoverage['core/Editor.js'][992]++;
+ var cmdName = args[0].toLowerCase(), cmd, cmdFn;
+ _$jscoverage['core/Editor.js'][994]++;
+ cmd = (this.commands[cmdName] || UE.commands[cmdName]);
+ _$jscoverage['core/Editor.js'][995]++;
+ cmdFn = (cmd && cmd[fnName]);
+ _$jscoverage['core/Editor.js'][997]++;
+ if ((((! cmd) || (! cmdFn)) && (fnName == "queryCommandState"))) {
+ _$jscoverage['core/Editor.js'][998]++;
+ return 0;
+ }
+ else {
+ _$jscoverage['core/Editor.js'][999]++;
+ if (cmdFn) {
+ _$jscoverage['core/Editor.js'][1000]++;
+ return cmdFn.apply(this, args);
+ }
+ }
+}), execCommand: (function (cmdName) {
+ _$jscoverage['core/Editor.js'][1014]++;
+ cmdName = cmdName.toLowerCase();
+ _$jscoverage['core/Editor.js'][1015]++;
+ var me = this, result, cmd = (me.commands[cmdName] || UE.commands[cmdName]);
+ _$jscoverage['core/Editor.js'][1018]++;
+ if (((! cmd) || (! cmd.execCommand))) {
+ _$jscoverage['core/Editor.js'][1019]++;
+ return null;
+ }
+ _$jscoverage['core/Editor.js'][1021]++;
+ if (((! cmd.notNeedUndo) && (! me.__hasEnterExecCommand))) {
+ _$jscoverage['core/Editor.js'][1022]++;
+ me.__hasEnterExecCommand = true;
+ _$jscoverage['core/Editor.js'][1023]++;
+ if ((me.queryCommandState.apply(me, arguments) != -1)) {
+ _$jscoverage['core/Editor.js'][1024]++;
+ me.fireEvent("beforeexeccommand", cmdName);
+ _$jscoverage['core/Editor.js'][1025]++;
+ result = this._callCmdFn("execCommand", arguments);
+ _$jscoverage['core/Editor.js'][1026]++;
+ ((! me._ignoreContentChange) && me.fireEvent("contentchange"));
+ _$jscoverage['core/Editor.js'][1027]++;
+ me.fireEvent("afterexeccommand", cmdName);
+ }
+ _$jscoverage['core/Editor.js'][1029]++;
+ me.__hasEnterExecCommand = false;
+ }
+ else {
+ _$jscoverage['core/Editor.js'][1031]++;
+ result = this._callCmdFn("execCommand", arguments);
+ _$jscoverage['core/Editor.js'][1032]++;
+ ((! me._ignoreContentChange) && me.fireEvent("contentchange"));
+ }
+ _$jscoverage['core/Editor.js'][1034]++;
+ ((! me._ignoreContentChange) && me._selectionChange());
+ _$jscoverage['core/Editor.js'][1035]++;
+ return result;
+}), queryCommandState: (function (cmdName) {
+ _$jscoverage['core/Editor.js'][1051]++;
+ return this._callCmdFn("queryCommandState", arguments);
+}), queryCommandValue: (function (cmdName) {
+ _$jscoverage['core/Editor.js'][1062]++;
+ return this._callCmdFn("queryCommandValue", arguments);
+}), hasContents: (function (tags) {
+ _$jscoverage['core/Editor.js'][1088]++;
+ if (tags) {
+ _$jscoverage['core/Editor.js'][1089]++;
+ for (var i = 0, ci; (ci = tags[(i++)]);) {
+ _$jscoverage['core/Editor.js'][1090]++;
+ if ((this.document.getElementsByTagName(ci).length > 0)) {
+ _$jscoverage['core/Editor.js'][1091]++;
+ return true;
+ }
+}
+ }
+ _$jscoverage['core/Editor.js'][1095]++;
+ if ((! domUtils.isEmptyBlock(this.body))) {
+ _$jscoverage['core/Editor.js'][1096]++;
+ return true;
+ }
+ _$jscoverage['core/Editor.js'][1099]++;
+ tags = ["div"];
+ _$jscoverage['core/Editor.js'][1100]++;
+ for (i = 0; (ci = tags[(i++)]);) {
+ _$jscoverage['core/Editor.js'][1101]++;
+ var nodes = domUtils.getElementsByTagName(this.document, ci);
+ _$jscoverage['core/Editor.js'][1102]++;
+ for (var n = 0, cn; (cn = nodes[(n++)]);) {
+ _$jscoverage['core/Editor.js'][1103]++;
+ if (domUtils.isCustomeNode(cn)) {
+ _$jscoverage['core/Editor.js'][1104]++;
+ return true;
+ }
+}
+}
+ _$jscoverage['core/Editor.js'][1108]++;
+ return false;
+}), reset: (function () {
+ _$jscoverage['core/Editor.js'][1121]++;
+ this.fireEvent("reset");
+}), setEnabled: (function () {
+ _$jscoverage['core/Editor.js'][1133]++;
+ var me = this, range;
+ _$jscoverage['core/Editor.js'][1134]++;
+ if ((me.body.contentEditable == "false")) {
+ _$jscoverage['core/Editor.js'][1135]++;
+ me.body.contentEditable = true;
+ _$jscoverage['core/Editor.js'][1136]++;
+ range = me.selection.getRange();
+ _$jscoverage['core/Editor.js'][1138]++;
+ try {
+ _$jscoverage['core/Editor.js'][1139]++;
+ range.moveToBookmark(me.lastBk);
+ _$jscoverage['core/Editor.js'][1140]++;
+ (delete me.lastBk);
+ }
+ catch (e) {
+ _$jscoverage['core/Editor.js'][1142]++;
+ range.setStartAtFirst(me.body).collapse(true);
+ }
+ _$jscoverage['core/Editor.js'][1144]++;
+ range.select(true);
+ _$jscoverage['core/Editor.js'][1145]++;
+ if (me.bkqueryCommandState) {
+ _$jscoverage['core/Editor.js'][1146]++;
+ me.queryCommandState = me.bkqueryCommandState;
+ _$jscoverage['core/Editor.js'][1147]++;
+ (delete me.bkqueryCommandState);
+ }
+ _$jscoverage['core/Editor.js'][1149]++;
+ me.fireEvent("selectionchange");
+ }
+}), enable: (function () {
+ _$jscoverage['core/Editor.js'][1164]++;
+ return this.setEnabled();
+}), setDisabled: (function (except) {
+ _$jscoverage['core/Editor.js'][1191]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][1192]++;
+ except = (except? (utils.isArray(except)? except: [except]): []);
+ _$jscoverage['core/Editor.js'][1193]++;
+ if ((me.body.contentEditable == "true")) {
+ _$jscoverage['core/Editor.js'][1194]++;
+ if ((! me.lastBk)) {
+ _$jscoverage['core/Editor.js'][1195]++;
+ me.lastBk = me.selection.getRange().createBookmark(true);
+ }
+ _$jscoverage['core/Editor.js'][1197]++;
+ me.body.contentEditable = false;
+ _$jscoverage['core/Editor.js'][1198]++;
+ me.bkqueryCommandState = me.queryCommandState;
+ _$jscoverage['core/Editor.js'][1199]++;
+ me.queryCommandState = (function (type) {
+ _$jscoverage['core/Editor.js'][1200]++;
+ if ((utils.indexOf(except, type) != -1)) {
+ _$jscoverage['core/Editor.js'][1201]++;
+ return me.bkqueryCommandState.apply(me, arguments);
+ }
+ _$jscoverage['core/Editor.js'][1203]++;
+ return -1;
+});
+ _$jscoverage['core/Editor.js'][1205]++;
+ me.fireEvent("selectionchange");
+ }
+}), disable: (function (except) {
+ _$jscoverage['core/Editor.js'][1236]++;
+ return this.setDisabled(except);
+}), _setDefaultContent: (function () {
+ _$jscoverage['core/Editor.js'][1246]++;
+ function clear() {
+ _$jscoverage['core/Editor.js'][1247]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][1248]++;
+ if (me.document.getElementById("initContent")) {
+ _$jscoverage['core/Editor.js'][1249]++;
+ me.body.innerHTML = ("" + (ie? "": " ") + "
");
+ _$jscoverage['core/Editor.js'][1250]++;
+ me.removeListener("firstBeforeExecCommand focus", clear);
+ _$jscoverage['core/Editor.js'][1251]++;
+ setTimeout((function () {
+ _$jscoverage['core/Editor.js'][1252]++;
+ me.focus();
+ _$jscoverage['core/Editor.js'][1253]++;
+ me._selectionChange();
+}), 0);
+ }
+}
+ _$jscoverage['core/Editor.js'][1258]++;
+ return (function (cont) {
+ _$jscoverage['core/Editor.js'][1259]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][1260]++;
+ me.body.innerHTML = ("" + cont + "
");
+ _$jscoverage['core/Editor.js'][1262]++;
+ me.addListener("firstBeforeExecCommand focus", clear);
+});
+})(), setShow: (function () {
+ _$jscoverage['core/Editor.js'][1272]++;
+ var me = this, range = me.selection.getRange();
+ _$jscoverage['core/Editor.js'][1273]++;
+ if ((me.container.style.display == "none")) {
+ _$jscoverage['core/Editor.js'][1275]++;
+ try {
+ _$jscoverage['core/Editor.js'][1276]++;
+ range.moveToBookmark(me.lastBk);
+ _$jscoverage['core/Editor.js'][1277]++;
+ (delete me.lastBk);
+ }
+ catch (e) {
+ _$jscoverage['core/Editor.js'][1279]++;
+ range.setStartAtFirst(me.body).collapse(true);
+ }
+ _$jscoverage['core/Editor.js'][1282]++;
+ setTimeout((function () {
+ _$jscoverage['core/Editor.js'][1283]++;
+ range.select(true);
+}), 100);
+ _$jscoverage['core/Editor.js'][1285]++;
+ me.container.style.display = "";
+ }
+}), show: (function () {
+ _$jscoverage['core/Editor.js'][1299]++;
+ return this.setShow();
+}), setHide: (function () {
+ _$jscoverage['core/Editor.js'][1308]++;
+ var me = this;
+ _$jscoverage['core/Editor.js'][1309]++;
+ if ((! me.lastBk)) {
+ _$jscoverage['core/Editor.js'][1310]++;
+ me.lastBk = me.selection.getRange().createBookmark(true);
+ }
+ _$jscoverage['core/Editor.js'][1312]++;
+ me.container.style.display = "none";
+}), hide: (function () {
+ _$jscoverage['core/Editor.js'][1325]++;
+ return this.setHide();
+}), getLang: (function (path) {
+ _$jscoverage['core/Editor.js'][1339]++;
+ var lang = UE.I18N[this.options.lang];
+ _$jscoverage['core/Editor.js'][1340]++;
+ if ((! lang)) {
+ _$jscoverage['core/Editor.js'][1341]++;
+ throw Error("not import language file");
+ }
+ _$jscoverage['core/Editor.js'][1343]++;
+ path = (path || "").split(".");
+ _$jscoverage['core/Editor.js'][1344]++;
+ for (var i = 0, ci; (ci = path[(i++)]);) {
+ _$jscoverage['core/Editor.js'][1345]++;
+ lang = lang[ci];
+ _$jscoverage['core/Editor.js'][1346]++;
+ if ((! lang)) {
+ _$jscoverage['core/Editor.js'][1346]++;
+ break;
+ }
+}
+ _$jscoverage['core/Editor.js'][1348]++;
+ return lang;
+}), getContentLength: (function (ingoneHtml, tagNames) {
+ _$jscoverage['core/Editor.js'][1385]++;
+ var count = this.getContent(false, false, true).length;
+ _$jscoverage['core/Editor.js'][1386]++;
+ if (ingoneHtml) {
+ _$jscoverage['core/Editor.js'][1387]++;
+ tagNames = (tagNames || []).concat(["hr", "img", "iframe"]);
+ _$jscoverage['core/Editor.js'][1388]++;
+ count = this.getContentTxt().replace(/[\t\r\n]+/g, "").length;
+ _$jscoverage['core/Editor.js'][1389]++;
+ for (var i = 0, ci; (ci = tagNames[(i++)]);) {
+ _$jscoverage['core/Editor.js'][1390]++;
+ count += this.document.getElementsByTagName(ci).length;
+}
+ }
+ _$jscoverage['core/Editor.js'][1393]++;
+ return count;
+}), addInputRule: (function (rule) {
+ _$jscoverage['core/Editor.js'][1410]++;
+ this.inputRules.push(rule);
+}), filterInputRule: (function (root) {
+ _$jscoverage['core/Editor.js'][1424]++;
+ for (var i = 0, ci; (ci = this.inputRules[(i++)]);) {
+ _$jscoverage['core/Editor.js'][1425]++;
+ ci.call(this, root);
+}
+}), addOutputRule: (function (rule) {
+ _$jscoverage['core/Editor.js'][1443]++;
+ this.outputRules.push(rule);
+}), filterOutputRule: (function (root) {
+ _$jscoverage['core/Editor.js'][1457]++;
+ for (var i = 0, ci; (ci = this.outputRules[(i++)]);) {
+ _$jscoverage['core/Editor.js'][1458]++;
+ ci.call(this, root);
+}
+})};
+ _$jscoverage['core/Editor.js'][1462]++;
+ utils.inherits(Editor, EventBase);
+})();
diff --git a/_test/coverage/core/EventBase.js b/_test/coverage/core/EventBase.js
new file mode 100644
index 000000000..1c090257d
--- /dev/null
+++ b/_test/coverage/core/EventBase.js
@@ -0,0 +1,143 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/EventBase.js']) {
+ _$jscoverage['core/EventBase.js'] = [];
+ _$jscoverage['core/EventBase.js'][32] = 0;
+ _$jscoverage['core/EventBase.js'][35] = 0;
+ _$jscoverage['core/EventBase.js'][61] = 0;
+ _$jscoverage['core/EventBase.js'][62] = 0;
+ _$jscoverage['core/EventBase.js'][63] = 0;
+ _$jscoverage['core/EventBase.js'][80] = 0;
+ _$jscoverage['core/EventBase.js'][81] = 0;
+ _$jscoverage['core/EventBase.js'][82] = 0;
+ _$jscoverage['core/EventBase.js'][110] = 0;
+ _$jscoverage['core/EventBase.js'][111] = 0;
+ _$jscoverage['core/EventBase.js'][112] = 0;
+ _$jscoverage['core/EventBase.js'][113] = 0;
+ _$jscoverage['core/EventBase.js'][115] = 0;
+ _$jscoverage['core/EventBase.js'][116] = 0;
+ _$jscoverage['core/EventBase.js'][117] = 0;
+ _$jscoverage['core/EventBase.js'][118] = 0;
+ _$jscoverage['core/EventBase.js'][119] = 0;
+ _$jscoverage['core/EventBase.js'][120] = 0;
+ _$jscoverage['core/EventBase.js'][121] = 0;
+ _$jscoverage['core/EventBase.js'][123] = 0;
+ _$jscoverage['core/EventBase.js'][124] = 0;
+ _$jscoverage['core/EventBase.js'][128] = 0;
+ _$jscoverage['core/EventBase.js'][129] = 0;
+ _$jscoverage['core/EventBase.js'][132] = 0;
+ _$jscoverage['core/EventBase.js'][148] = 0;
+ _$jscoverage['core/EventBase.js'][149] = 0;
+ _$jscoverage['core/EventBase.js'][150] = 0;
+ _$jscoverage['core/EventBase.js'][151] = 0;
+}
+_$jscoverage['core/EventBase.js'].source = ["/** "," * UE采用的事件基类 "," * @file "," * @module UE "," * @class EventBase "," * @since 1.2.6.1 "," */ ","","/** "," * UEditor公用空间,UEditor所有的功能都挂载在该空间下 "," * @unfile "," * @module UE "," */ ","","/** "," * UE采用的事件基类,继承此类的对应类将获取addListener,removeListener,fireEvent方法。 "," * 在UE中,Editor以及所有ui实例都继承了该类,故可以在对应的ui对象以及editor对象上使用上述方法。 "," * @unfile "," * @module UE "," * @class EventBase "," */ ","","/** "," * 通过此构造器,子类可以继承EventBase获取事件监听的方法 "," * @constructor "," * @example "," * ```javascript "," * UE.EventBase.call(editor); "," * ``` "," */ ","","var EventBase = UE. EventBase = function () { ","} ; ","","EventBase. prototype = { ","",""," /** "," * 注册事件监听器 "," * @method addListener "," * @param { String } types 监听的事件名称,同时监听多个事件使用空格分隔 "," * @param { Function } fn 监听的事件被触发时,会执行该回调函数 "," * @waining 事件被触发时,监听的函数假如返回的值恒等于true,回调函数的队列中后面的函数将不执行 "," * @example "," * ```javascript "," * editor.addListener('selectionchange',function(){ "," * console.log(\"选区已经变化!\"); "," * }) "," * editor.addListener('beforegetcontent aftergetcontent',function(type){ "," * if(type == 'beforegetcontent'){ "," * //do something "," * }else{ "," * //do something "," * } "," * console.log(this.getContent) // this是注册的事件的编辑器实例 "," * }) "," * ``` "," * @see UE.EventBase:fireEvent(String) "," */ "," addListener: function ( types, listener) { "," types = utils. trim( types). split( ' ' ); "," for ( var i = 0 , ti; ti = types[ i++];) { "," getListener( this , ti, true ). push( listener); "," } "," } , ","",""," /** "," * 移除事件监听器 "," * @method removeListener "," * @param { String } types 移除的事件名称,同时移除多个事件使用空格分隔 "," * @param { Function } fn 移除监听事件的函数引用 "," * @example "," * ```javascript "," * //changeCallback为方法体 "," * editor.removeListener(\"selectionchange\",changeCallback); "," * ``` "," */ "," removeListener: function ( types, listener) { "," types = utils. trim( types). split( ' ' ); "," for ( var i = 0 , ti; ti = types[ i++];) { "," utils. removeItem( getListener( this , ti) || [], listener); "," } "," } , ","",""," /** "," * 触发事件 "," * @method fireEvent "," * @param { String } types 触发的事件名称,同时触发多个事件使用空格分隔 "," * @remind 该方法会触发addListener "," * @return { * } 返回触发事件的队列中,最后执行的回调函数的返回值 "," * @example "," * ```javascript "," * editor.fireEvent(\"selectionchange\"); "," * ``` "," */ ",""," /** "," * 触发事件 "," * @method fireEvent "," * @param { String } types 触发的事件名称,同时触发多个事件使用空格分隔 "," * @param { *... } options 可选参数,可以传入一个或多个参数,会传给事件触发的回调函数 "," * @example "," * ```javascript "," * editor.fireEvent(\"selectionchange\"); "," * ``` "," */ "," fireEvent: function () { "," var types = arguments[ 0 ]; "," types = utils. trim( types). split( ' ' ); "," for ( var i = 0 , ti; ti = types[ i++];) { "," var listeners = getListener( this , ti), "," r, t, k; "," if ( listeners) { "," k = listeners. length; "," while ( k--) { "," if (! listeners[ k]) continue ; "," t = listeners[ k]. apply( this , arguments); "," if ( t === true ) { "," return t; "," } "," if ( t !== undefined) { "," r = t; "," } "," } "," } "," if ( t = this [ 'on' + ti. toLowerCase()]) { "," r = t. apply( this , arguments); "," } "," } "," return r; "," } ","} ; ","","/** "," * 获得对象所拥有监听类型的所有监听器 "," * @unfile "," * @module UE "," * @since 1.2.6.1 "," * @method getListener "," * @public "," * @param { Object } obj 查询监听器的对象 "," * @param { String } type 事件类型 "," * @param { Boolean } force 为true且当前所有type类型的侦听器不存在时,创建一个空监听器数组 "," * @return { Array } 监听器数组 "," */ ","function getListener( obj, type, force) { "," var allListeners; "," type = type. toLowerCase(); "," return ( ( allListeners = ( obj. __allListeners || force && ( obj. __allListeners = {} ) ) ) "," && ( allListeners[ type] || force && ( allListeners[ type] = [] ) ) ); ","} "];
+_$jscoverage['core/EventBase.js'][32]++;
+var EventBase = (UE.EventBase = (function () {
+}));
+_$jscoverage['core/EventBase.js'][35]++;
+EventBase.prototype = {addListener: (function (types, listener) {
+ _$jscoverage['core/EventBase.js'][61]++;
+ types = utils.trim(types).split(" ");
+ _$jscoverage['core/EventBase.js'][62]++;
+ for (var i = 0, ti; (ti = types[(i++)]);) {
+ _$jscoverage['core/EventBase.js'][63]++;
+ getListener(this, ti, true).push(listener);
+}
+}), removeListener: (function (types, listener) {
+ _$jscoverage['core/EventBase.js'][80]++;
+ types = utils.trim(types).split(" ");
+ _$jscoverage['core/EventBase.js'][81]++;
+ for (var i = 0, ti; (ti = types[(i++)]);) {
+ _$jscoverage['core/EventBase.js'][82]++;
+ utils.removeItem((getListener(this, ti) || []), listener);
+}
+}), fireEvent: (function () {
+ _$jscoverage['core/EventBase.js'][110]++;
+ var types = arguments[0];
+ _$jscoverage['core/EventBase.js'][111]++;
+ types = utils.trim(types).split(" ");
+ _$jscoverage['core/EventBase.js'][112]++;
+ for (var i = 0, ti; (ti = types[(i++)]);) {
+ _$jscoverage['core/EventBase.js'][113]++;
+ var listeners = getListener(this, ti), r, t, k;
+ _$jscoverage['core/EventBase.js'][115]++;
+ if (listeners) {
+ _$jscoverage['core/EventBase.js'][116]++;
+ k = listeners.length;
+ _$jscoverage['core/EventBase.js'][117]++;
+ while ((k--)) {
+ _$jscoverage['core/EventBase.js'][118]++;
+ if ((! listeners[k])) {
+ _$jscoverage['core/EventBase.js'][118]++;
+ continue;
+ }
+ _$jscoverage['core/EventBase.js'][119]++;
+ t = listeners[k].apply(this, arguments);
+ _$jscoverage['core/EventBase.js'][120]++;
+ if ((t === true)) {
+ _$jscoverage['core/EventBase.js'][121]++;
+ return t;
+ }
+ _$jscoverage['core/EventBase.js'][123]++;
+ if ((t !== undefined)) {
+ _$jscoverage['core/EventBase.js'][124]++;
+ r = t;
+ }
+}
+ }
+ _$jscoverage['core/EventBase.js'][128]++;
+ if ((t = this[("on" + ti.toLowerCase())])) {
+ _$jscoverage['core/EventBase.js'][129]++;
+ r = t.apply(this, arguments);
+ }
+}
+ _$jscoverage['core/EventBase.js'][132]++;
+ return r;
+})};
+_$jscoverage['core/EventBase.js'][148]++;
+function getListener(obj, type, force) {
+ _$jscoverage['core/EventBase.js'][149]++;
+ var allListeners;
+ _$jscoverage['core/EventBase.js'][150]++;
+ type = type.toLowerCase();
+ _$jscoverage['core/EventBase.js'][151]++;
+ return ((allListeners = (obj.__allListeners || (force && (obj.__allListeners = {})))) && (allListeners[type] || (force && (allListeners[type] = []))));
+}
diff --git a/_test/coverage/core/Range.js b/_test/coverage/core/Range.js
new file mode 100644
index 000000000..21bb7e05d
--- /dev/null
+++ b/_test/coverage/core/Range.js
@@ -0,0 +1,1888 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/Range.js']) {
+ _$jscoverage['core/Range.js'] = [];
+ _$jscoverage['core/Range.js'][22] = 0;
+ _$jscoverage['core/Range.js'][23] = 0;
+ _$jscoverage['core/Range.js'][31] = 0;
+ _$jscoverage['core/Range.js'][32] = 0;
+ _$jscoverage['core/Range.js'][38] = 0;
+ _$jscoverage['core/Range.js'][39] = 0;
+ _$jscoverage['core/Range.js'][41] = 0;
+ _$jscoverage['core/Range.js'][43] = 0;
+ _$jscoverage['core/Range.js'][44] = 0;
+ _$jscoverage['core/Range.js'][45] = 0;
+ _$jscoverage['core/Range.js'][47] = 0;
+ _$jscoverage['core/Range.js'][48] = 0;
+ _$jscoverage['core/Range.js'][49] = 0;
+ _$jscoverage['core/Range.js'][50] = 0;
+ _$jscoverage['core/Range.js'][51] = 0;
+ _$jscoverage['core/Range.js'][54] = 0;
+ _$jscoverage['core/Range.js'][55] = 0;
+ _$jscoverage['core/Range.js'][56] = 0;
+ _$jscoverage['core/Range.js'][57] = 0;
+ _$jscoverage['core/Range.js'][60] = 0;
+ _$jscoverage['core/Range.js'][61] = 0;
+ _$jscoverage['core/Range.js'][64] = 0;
+ _$jscoverage['core/Range.js'][67] = 0;
+ _$jscoverage['core/Range.js'][74] = 0;
+ _$jscoverage['core/Range.js'][75] = 0;
+ _$jscoverage['core/Range.js'][77] = 0;
+ _$jscoverage['core/Range.js'][78] = 0;
+ _$jscoverage['core/Range.js'][80] = 0;
+ _$jscoverage['core/Range.js'][81] = 0;
+ _$jscoverage['core/Range.js'][83] = 0;
+ _$jscoverage['core/Range.js'][84] = 0;
+ _$jscoverage['core/Range.js'][85] = 0;
+ _$jscoverage['core/Range.js'][87] = 0;
+ _$jscoverage['core/Range.js'][89] = 0;
+ _$jscoverage['core/Range.js'][91] = 0;
+ _$jscoverage['core/Range.js'][92] = 0;
+ _$jscoverage['core/Range.js'][94] = 0;
+ _$jscoverage['core/Range.js'][95] = 0;
+ _$jscoverage['core/Range.js'][96] = 0;
+ _$jscoverage['core/Range.js'][97] = 0;
+ _$jscoverage['core/Range.js'][98] = 0;
+ _$jscoverage['core/Range.js'][99] = 0;
+ _$jscoverage['core/Range.js'][101] = 0;
+ _$jscoverage['core/Range.js'][102] = 0;
+ _$jscoverage['core/Range.js'][105] = 0;
+ _$jscoverage['core/Range.js'][109] = 0;
+ _$jscoverage['core/Range.js'][110] = 0;
+ _$jscoverage['core/Range.js'][112] = 0;
+ _$jscoverage['core/Range.js'][113] = 0;
+ _$jscoverage['core/Range.js'][114] = 0;
+ _$jscoverage['core/Range.js'][116] = 0;
+ _$jscoverage['core/Range.js'][117] = 0;
+ _$jscoverage['core/Range.js'][118] = 0;
+ _$jscoverage['core/Range.js'][120] = 0;
+ _$jscoverage['core/Range.js'][122] = 0;
+ _$jscoverage['core/Range.js'][123] = 0;
+ _$jscoverage['core/Range.js'][124] = 0;
+ _$jscoverage['core/Range.js'][125] = 0;
+ _$jscoverage['core/Range.js'][127] = 0;
+ _$jscoverage['core/Range.js'][128] = 0;
+ _$jscoverage['core/Range.js'][129] = 0;
+ _$jscoverage['core/Range.js'][130] = 0;
+ _$jscoverage['core/Range.js'][131] = 0;
+ _$jscoverage['core/Range.js'][133] = 0;
+ _$jscoverage['core/Range.js'][134] = 0;
+ _$jscoverage['core/Range.js'][138] = 0;
+ _$jscoverage['core/Range.js'][139] = 0;
+ _$jscoverage['core/Range.js'][142] = 0;
+ _$jscoverage['core/Range.js'][143] = 0;
+ _$jscoverage['core/Range.js'][144] = 0;
+ _$jscoverage['core/Range.js'][145] = 0;
+ _$jscoverage['core/Range.js'][147] = 0;
+ _$jscoverage['core/Range.js'][148] = 0;
+ _$jscoverage['core/Range.js'][149] = 0;
+ _$jscoverage['core/Range.js'][152] = 0;
+ _$jscoverage['core/Range.js'][154] = 0;
+ _$jscoverage['core/Range.js'][155] = 0;
+ _$jscoverage['core/Range.js'][157] = 0;
+ _$jscoverage['core/Range.js'][158] = 0;
+ _$jscoverage['core/Range.js'][159] = 0;
+ _$jscoverage['core/Range.js'][193] = 0;
+ _$jscoverage['core/Range.js'][194] = 0;
+ _$jscoverage['core/Range.js'][195] = 0;
+ _$jscoverage['core/Range.js'][199] = 0;
+ _$jscoverage['core/Range.js'][200] = 0;
+ _$jscoverage['core/Range.js'][208] = 0;
+ _$jscoverage['core/Range.js'][209] = 0;
+ _$jscoverage['core/Range.js'][210] = 0;
+ _$jscoverage['core/Range.js'][211] = 0;
+ _$jscoverage['core/Range.js'][212] = 0;
+ _$jscoverage['core/Range.js'][213] = 0;
+ _$jscoverage['core/Range.js'][214] = 0;
+ _$jscoverage['core/Range.js'][218] = 0;
+ _$jscoverage['core/Range.js'][219] = 0;
+ _$jscoverage['core/Range.js'][220] = 0;
+ _$jscoverage['core/Range.js'][223] = 0;
+ _$jscoverage['core/Range.js'][235] = 0;
+ _$jscoverage['core/Range.js'][236] = 0;
+ _$jscoverage['core/Range.js'][237] = 0;
+ _$jscoverage['core/Range.js'][238] = 0;
+ _$jscoverage['core/Range.js'][239] = 0;
+ _$jscoverage['core/Range.js'][240] = 0;
+ _$jscoverage['core/Range.js'][241] = 0;
+ _$jscoverage['core/Range.js'][245] = 0;
+ _$jscoverage['core/Range.js'][263] = 0;
+ _$jscoverage['core/Range.js'][294] = 0;
+ _$jscoverage['core/Range.js'][295] = 0;
+ _$jscoverage['core/Range.js'][296] = 0;
+ _$jscoverage['core/Range.js'][298] = 0;
+ _$jscoverage['core/Range.js'][299] = 0;
+ _$jscoverage['core/Range.js'][300] = 0;
+ _$jscoverage['core/Range.js'][301] = 0;
+ _$jscoverage['core/Range.js'][302] = 0;
+ _$jscoverage['core/Range.js'][305] = 0;
+ _$jscoverage['core/Range.js'][338] = 0;
+ _$jscoverage['core/Range.js'][373] = 0;
+ _$jscoverage['core/Range.js'][407] = 0;
+ _$jscoverage['core/Range.js'][440] = 0;
+ _$jscoverage['core/Range.js'][473] = 0;
+ _$jscoverage['core/Range.js'][504] = 0;
+ _$jscoverage['core/Range.js'][535] = 0;
+ _$jscoverage['core/Range.js'][568] = 0;
+ _$jscoverage['core/Range.js'][602] = 0;
+ _$jscoverage['core/Range.js'][633] = 0;
+ _$jscoverage['core/Range.js'][665] = 0;
+ _$jscoverage['core/Range.js'][691] = 0;
+ _$jscoverage['core/Range.js'][720] = 0;
+ _$jscoverage['core/Range.js'][750] = 0;
+ _$jscoverage['core/Range.js'][751] = 0;
+ _$jscoverage['core/Range.js'][824] = 0;
+ _$jscoverage['core/Range.js'][825] = 0;
+ _$jscoverage['core/Range.js'][826] = 0;
+ _$jscoverage['core/Range.js'][827] = 0;
+ _$jscoverage['core/Range.js'][829] = 0;
+ _$jscoverage['core/Range.js'][830] = 0;
+ _$jscoverage['core/Range.js'][832] = 0;
+ _$jscoverage['core/Range.js'][833] = 0;
+ _$jscoverage['core/Range.js'][880] = 0;
+ _$jscoverage['core/Range.js'][882] = 0;
+ _$jscoverage['core/Range.js'][883] = 0;
+ _$jscoverage['core/Range.js'][885] = 0;
+ _$jscoverage['core/Range.js'][888] = 0;
+ _$jscoverage['core/Range.js'][890] = 0;
+ _$jscoverage['core/Range.js'][891] = 0;
+ _$jscoverage['core/Range.js'][893] = 0;
+ _$jscoverage['core/Range.js'][894] = 0;
+ _$jscoverage['core/Range.js'][898] = 0;
+ _$jscoverage['core/Range.js'][901] = 0;
+ _$jscoverage['core/Range.js'][1043] = 0;
+ _$jscoverage['core/Range.js'][1046] = 0;
+ _$jscoverage['core/Range.js'][1047] = 0;
+ _$jscoverage['core/Range.js'][1048] = 0;
+ _$jscoverage['core/Range.js'][1049] = 0;
+ _$jscoverage['core/Range.js'][1050] = 0;
+ _$jscoverage['core/Range.js'][1053] = 0;
+ _$jscoverage['core/Range.js'][1055] = 0;
+ _$jscoverage['core/Range.js'][1132] = 0;
+ _$jscoverage['core/Range.js'][1133] = 0;
+ _$jscoverage['core/Range.js'][1137] = 0;
+ _$jscoverage['core/Range.js'][1138] = 0;
+ _$jscoverage['core/Range.js'][1139] = 0;
+ _$jscoverage['core/Range.js'][1141] = 0;
+ _$jscoverage['core/Range.js'][1142] = 0;
+ _$jscoverage['core/Range.js'][1144] = 0;
+ _$jscoverage['core/Range.js'][1146] = 0;
+ _$jscoverage['core/Range.js'][1147] = 0;
+ _$jscoverage['core/Range.js'][1148] = 0;
+ _$jscoverage['core/Range.js'][1149] = 0;
+ _$jscoverage['core/Range.js'][1151] = 0;
+ _$jscoverage['core/Range.js'][1154] = 0;
+ _$jscoverage['core/Range.js'][1155] = 0;
+ _$jscoverage['core/Range.js'][1158] = 0;
+ _$jscoverage['core/Range.js'][1159] = 0;
+ _$jscoverage['core/Range.js'][1160] = 0;
+ _$jscoverage['core/Range.js'][1161] = 0;
+ _$jscoverage['core/Range.js'][1162] = 0;
+ _$jscoverage['core/Range.js'][1163] = 0;
+ _$jscoverage['core/Range.js'][1165] = 0;
+ _$jscoverage['core/Range.js'][1166] = 0;
+ _$jscoverage['core/Range.js'][1170] = 0;
+ _$jscoverage['core/Range.js'][1302] = 0;
+ _$jscoverage['core/Range.js'][1303] = 0;
+ _$jscoverage['core/Range.js'][1305] = 0;
+ _$jscoverage['core/Range.js'][1306] = 0;
+ _$jscoverage['core/Range.js'][1307] = 0;
+ _$jscoverage['core/Range.js'][1308] = 0;
+ _$jscoverage['core/Range.js'][1310] = 0;
+ _$jscoverage['core/Range.js'][1311] = 0;
+ _$jscoverage['core/Range.js'][1312] = 0;
+ _$jscoverage['core/Range.js'][1318] = 0;
+ _$jscoverage['core/Range.js'][1319] = 0;
+ _$jscoverage['core/Range.js'][1320] = 0;
+ _$jscoverage['core/Range.js'][1322] = 0;
+ _$jscoverage['core/Range.js'][1361] = 0;
+ _$jscoverage['core/Range.js'][1362] = 0;
+ _$jscoverage['core/Range.js'][1363] = 0;
+ _$jscoverage['core/Range.js'][1364] = 0;
+ _$jscoverage['core/Range.js'][1366] = 0;
+ _$jscoverage['core/Range.js'][1367] = 0;
+ _$jscoverage['core/Range.js'][1369] = 0;
+ _$jscoverage['core/Range.js'][1370] = 0;
+ _$jscoverage['core/Range.js'][1371] = 0;
+ _$jscoverage['core/Range.js'][1373] = 0;
+ _$jscoverage['core/Range.js'][1375] = 0;
+ _$jscoverage['core/Range.js'][1376] = 0;
+ _$jscoverage['core/Range.js'][1378] = 0;
+ _$jscoverage['core/Range.js'][1397] = 0;
+ _$jscoverage['core/Range.js'][1410] = 0;
+ _$jscoverage['core/Range.js'][1412] = 0;
+ _$jscoverage['core/Range.js'][1413] = 0;
+ _$jscoverage['core/Range.js'][1414] = 0;
+ _$jscoverage['core/Range.js'][1416] = 0;
+ _$jscoverage['core/Range.js'][1417] = 0;
+ _$jscoverage['core/Range.js'][1418] = 0;
+ _$jscoverage['core/Range.js'][1420] = 0;
+ _$jscoverage['core/Range.js'][1421] = 0;
+ _$jscoverage['core/Range.js'][1422] = 0;
+ _$jscoverage['core/Range.js'][1424] = 0;
+ _$jscoverage['core/Range.js'][1425] = 0;
+ _$jscoverage['core/Range.js'][1440] = 0;
+ _$jscoverage['core/Range.js'][1442] = 0;
+ _$jscoverage['core/Range.js'][1443] = 0;
+ _$jscoverage['core/Range.js'][1444] = 0;
+ _$jscoverage['core/Range.js'][1445] = 0;
+ _$jscoverage['core/Range.js'][1446] = 0;
+ _$jscoverage['core/Range.js'][1448] = 0;
+ _$jscoverage['core/Range.js'][1450] = 0;
+ _$jscoverage['core/Range.js'][1511] = 0;
+ _$jscoverage['core/Range.js'][1513] = 0;
+ _$jscoverage['core/Range.js'][1514] = 0;
+ _$jscoverage['core/Range.js'][1515] = 0;
+ _$jscoverage['core/Range.js'][1516] = 0;
+ _$jscoverage['core/Range.js'][1517] = 0;
+ _$jscoverage['core/Range.js'][1519] = 0;
+ _$jscoverage['core/Range.js'][1520] = 0;
+ _$jscoverage['core/Range.js'][1523] = 0;
+ _$jscoverage['core/Range.js'][1525] = 0;
+ _$jscoverage['core/Range.js'][1526] = 0;
+ _$jscoverage['core/Range.js'][1527] = 0;
+ _$jscoverage['core/Range.js'][1528] = 0;
+ _$jscoverage['core/Range.js'][1529] = 0;
+ _$jscoverage['core/Range.js'][1531] = 0;
+ _$jscoverage['core/Range.js'][1532] = 0;
+ _$jscoverage['core/Range.js'][1534] = 0;
+ _$jscoverage['core/Range.js'][1535] = 0;
+ _$jscoverage['core/Range.js'][1537] = 0;
+ _$jscoverage['core/Range.js'][1538] = 0;
+ _$jscoverage['core/Range.js'][1539] = 0;
+ _$jscoverage['core/Range.js'][1540] = 0;
+ _$jscoverage['core/Range.js'][1542] = 0;
+ _$jscoverage['core/Range.js'][1544] = 0;
+ _$jscoverage['core/Range.js'][1546] = 0;
+ _$jscoverage['core/Range.js'][1548] = 0;
+ _$jscoverage['core/Range.js'][1549] = 0;
+ _$jscoverage['core/Range.js'][1550] = 0;
+ _$jscoverage['core/Range.js'][1551] = 0;
+ _$jscoverage['core/Range.js'][1552] = 0;
+ _$jscoverage['core/Range.js'][1554] = 0;
+ _$jscoverage['core/Range.js'][1555] = 0;
+ _$jscoverage['core/Range.js'][1557] = 0;
+ _$jscoverage['core/Range.js'][1558] = 0;
+ _$jscoverage['core/Range.js'][1560] = 0;
+ _$jscoverage['core/Range.js'][1561] = 0;
+ _$jscoverage['core/Range.js'][1563] = 0;
+ _$jscoverage['core/Range.js'][1567] = 0;
+ _$jscoverage['core/Range.js'][1568] = 0;
+ _$jscoverage['core/Range.js'][1569] = 0;
+ _$jscoverage['core/Range.js'][1570] = 0;
+ _$jscoverage['core/Range.js'][1572] = 0;
+ _$jscoverage['core/Range.js'][1573] = 0;
+ _$jscoverage['core/Range.js'][1575] = 0;
+ _$jscoverage['core/Range.js'][1577] = 0;
+ _$jscoverage['core/Range.js'][1578] = 0;
+ _$jscoverage['core/Range.js'][1579] = 0;
+ _$jscoverage['core/Range.js'][1581] = 0;
+ _$jscoverage['core/Range.js'][1582] = 0;
+ _$jscoverage['core/Range.js'][1584] = 0;
+ _$jscoverage['core/Range.js'][1587] = 0;
+ _$jscoverage['core/Range.js'][1597] = 0;
+ _$jscoverage['core/Range.js'][1598] = 0;
+ _$jscoverage['core/Range.js'][1603] = 0;
+ _$jscoverage['core/Range.js'][1605] = 0;
+ _$jscoverage['core/Range.js'][1608] = 0;
+ _$jscoverage['core/Range.js'][1611] = 0;
+ _$jscoverage['core/Range.js'][1624] = 0;
+ _$jscoverage['core/Range.js'][1625] = 0;
+ _$jscoverage['core/Range.js'][1627] = 0;
+ _$jscoverage['core/Range.js'][1629] = 0;
+ _$jscoverage['core/Range.js'][1632] = 0;
+ _$jscoverage['core/Range.js'][1638] = 0;
+ _$jscoverage['core/Range.js'][1639] = 0;
+ _$jscoverage['core/Range.js'][1640] = 0;
+ _$jscoverage['core/Range.js'][1641] = 0;
+ _$jscoverage['core/Range.js'][1642] = 0;
+ _$jscoverage['core/Range.js'][1643] = 0;
+ _$jscoverage['core/Range.js'][1644] = 0;
+ _$jscoverage['core/Range.js'][1645] = 0;
+ _$jscoverage['core/Range.js'][1648] = 0;
+ _$jscoverage['core/Range.js'][1649] = 0;
+ _$jscoverage['core/Range.js'][1650] = 0;
+ _$jscoverage['core/Range.js'][1651] = 0;
+ _$jscoverage['core/Range.js'][1652] = 0;
+ _$jscoverage['core/Range.js'][1653] = 0;
+ _$jscoverage['core/Range.js'][1654] = 0;
+ _$jscoverage['core/Range.js'][1656] = 0;
+ _$jscoverage['core/Range.js'][1658] = 0;
+ _$jscoverage['core/Range.js'][1660] = 0;
+ _$jscoverage['core/Range.js'][1661] = 0;
+ _$jscoverage['core/Range.js'][1663] = 0;
+ _$jscoverage['core/Range.js'][1664] = 0;
+ _$jscoverage['core/Range.js'][1666] = 0;
+ _$jscoverage['core/Range.js'][1667] = 0;
+ _$jscoverage['core/Range.js'][1668] = 0;
+ _$jscoverage['core/Range.js'][1669] = 0;
+ _$jscoverage['core/Range.js'][1670] = 0;
+ _$jscoverage['core/Range.js'][1672] = 0;
+ _$jscoverage['core/Range.js'][1673] = 0;
+ _$jscoverage['core/Range.js'][1676] = 0;
+ _$jscoverage['core/Range.js'][1677] = 0;
+ _$jscoverage['core/Range.js'][1678] = 0;
+ _$jscoverage['core/Range.js'][1679] = 0;
+ _$jscoverage['core/Range.js'][1680] = 0;
+ _$jscoverage['core/Range.js'][1683] = 0;
+ _$jscoverage['core/Range.js'][1686] = 0;
+ _$jscoverage['core/Range.js'][1696] = 0;
+ _$jscoverage['core/Range.js'][1697] = 0;
+ _$jscoverage['core/Range.js'][1698] = 0;
+ _$jscoverage['core/Range.js'][1699] = 0;
+ _$jscoverage['core/Range.js'][1700] = 0;
+ _$jscoverage['core/Range.js'][1701] = 0;
+ _$jscoverage['core/Range.js'][1702] = 0;
+ _$jscoverage['core/Range.js'][1703] = 0;
+ _$jscoverage['core/Range.js'][1705] = 0;
+ _$jscoverage['core/Range.js'][1706] = 0;
+ _$jscoverage['core/Range.js'][1707] = 0;
+ _$jscoverage['core/Range.js'][1710] = 0;
+ _$jscoverage['core/Range.js'][1712] = 0;
+ _$jscoverage['core/Range.js'][1713] = 0;
+ _$jscoverage['core/Range.js'][1714] = 0;
+ _$jscoverage['core/Range.js'][1715] = 0;
+ _$jscoverage['core/Range.js'][1717] = 0;
+ _$jscoverage['core/Range.js'][1718] = 0;
+ _$jscoverage['core/Range.js'][1719] = 0;
+ _$jscoverage['core/Range.js'][1722] = 0;
+ _$jscoverage['core/Range.js'][1724] = 0;
+ _$jscoverage['core/Range.js'][1727] = 0;
+ _$jscoverage['core/Range.js'][1728] = 0;
+ _$jscoverage['core/Range.js'][1729] = 0;
+ _$jscoverage['core/Range.js'][1730] = 0;
+ _$jscoverage['core/Range.js'][1731] = 0;
+ _$jscoverage['core/Range.js'][1732] = 0;
+ _$jscoverage['core/Range.js'][1734] = 0;
+ _$jscoverage['core/Range.js'][1735] = 0;
+ _$jscoverage['core/Range.js'][1736] = 0;
+ _$jscoverage['core/Range.js'][1737] = 0;
+ _$jscoverage['core/Range.js'][1738] = 0;
+ _$jscoverage['core/Range.js'][1739] = 0;
+ _$jscoverage['core/Range.js'][1741] = 0;
+ _$jscoverage['core/Range.js'][1742] = 0;
+ _$jscoverage['core/Range.js'][1744] = 0;
+ _$jscoverage['core/Range.js'][1745] = 0;
+ _$jscoverage['core/Range.js'][1746] = 0;
+ _$jscoverage['core/Range.js'][1748] = 0;
+ _$jscoverage['core/Range.js'][1749] = 0;
+ _$jscoverage['core/Range.js'][1751] = 0;
+ _$jscoverage['core/Range.js'][1753] = 0;
+ _$jscoverage['core/Range.js'][1783] = 0;
+ _$jscoverage['core/Range.js'][1784] = 0;
+ _$jscoverage['core/Range.js'][1785] = 0;
+ _$jscoverage['core/Range.js'][1786] = 0;
+ _$jscoverage['core/Range.js'][1787] = 0;
+ _$jscoverage['core/Range.js'][1788] = 0;
+ _$jscoverage['core/Range.js'][1789] = 0;
+ _$jscoverage['core/Range.js'][1793] = 0;
+ _$jscoverage['core/Range.js'][1802] = 0;
+ _$jscoverage['core/Range.js'][1803] = 0;
+ _$jscoverage['core/Range.js'][1804] = 0;
+ _$jscoverage['core/Range.js'][1805] = 0;
+ _$jscoverage['core/Range.js'][1806] = 0;
+ _$jscoverage['core/Range.js'][1807] = 0;
+ _$jscoverage['core/Range.js'][1808] = 0;
+ _$jscoverage['core/Range.js'][1809] = 0;
+ _$jscoverage['core/Range.js'][1810] = 0;
+ _$jscoverage['core/Range.js'][1812] = 0;
+ _$jscoverage['core/Range.js'][1814] = 0;
+ _$jscoverage['core/Range.js'][1817] = 0;
+ _$jscoverage['core/Range.js'][1818] = 0;
+ _$jscoverage['core/Range.js'][1819] = 0;
+ _$jscoverage['core/Range.js'][1820] = 0;
+ _$jscoverage['core/Range.js'][1821] = 0;
+ _$jscoverage['core/Range.js'][1822] = 0;
+ _$jscoverage['core/Range.js'][1823] = 0;
+ _$jscoverage['core/Range.js'][1824] = 0;
+ _$jscoverage['core/Range.js'][1826] = 0;
+ _$jscoverage['core/Range.js'][1828] = 0;
+ _$jscoverage['core/Range.js'][1830] = 0;
+ _$jscoverage['core/Range.js'][1831] = 0;
+ _$jscoverage['core/Range.js'][1832] = 0;
+ _$jscoverage['core/Range.js'][1834] = 0;
+ _$jscoverage['core/Range.js'][1835] = 0;
+ _$jscoverage['core/Range.js'][1836] = 0;
+ _$jscoverage['core/Range.js'][1837] = 0;
+ _$jscoverage['core/Range.js'][1838] = 0;
+ _$jscoverage['core/Range.js'][1839] = 0;
+ _$jscoverage['core/Range.js'][1842] = 0;
+ _$jscoverage['core/Range.js'][1843] = 0;
+ _$jscoverage['core/Range.js'][1845] = 0;
+ _$jscoverage['core/Range.js'][1846] = 0;
+ _$jscoverage['core/Range.js'][1849] = 0;
+ _$jscoverage['core/Range.js'][1851] = 0;
+ _$jscoverage['core/Range.js'][1853] = 0;
+ _$jscoverage['core/Range.js'][1854] = 0;
+ _$jscoverage['core/Range.js'][1855] = 0;
+ _$jscoverage['core/Range.js'][1858] = 0;
+ _$jscoverage['core/Range.js'][1859] = 0;
+ _$jscoverage['core/Range.js'][1861] = 0;
+ _$jscoverage['core/Range.js'][1866] = 0;
+ _$jscoverage['core/Range.js'][1867] = 0;
+ _$jscoverage['core/Range.js'][1868] = 0;
+ _$jscoverage['core/Range.js'][1871] = 0;
+ _$jscoverage['core/Range.js'][1883] = 0;
+ _$jscoverage['core/Range.js'][1884] = 0;
+ _$jscoverage['core/Range.js'][1885] = 0;
+ _$jscoverage['core/Range.js'][1888] = 0;
+ _$jscoverage['core/Range.js'][1895] = 0;
+ _$jscoverage['core/Range.js'][1897] = 0;
+ _$jscoverage['core/Range.js'][1898] = 0;
+ _$jscoverage['core/Range.js'][1899] = 0;
+ _$jscoverage['core/Range.js'][1900] = 0;
+ _$jscoverage['core/Range.js'][1901] = 0;
+ _$jscoverage['core/Range.js'][1902] = 0;
+ _$jscoverage['core/Range.js'][1905] = 0;
+ _$jscoverage['core/Range.js'][1906] = 0;
+ _$jscoverage['core/Range.js'][1907] = 0;
+ _$jscoverage['core/Range.js'][1908] = 0;
+ _$jscoverage['core/Range.js'][1910] = 0;
+ _$jscoverage['core/Range.js'][1911] = 0;
+ _$jscoverage['core/Range.js'][1912] = 0;
+ _$jscoverage['core/Range.js'][1916] = 0;
+ _$jscoverage['core/Range.js'][1917] = 0;
+ _$jscoverage['core/Range.js'][1918] = 0;
+ _$jscoverage['core/Range.js'][1920] = 0;
+ _$jscoverage['core/Range.js'][1923] = 0;
+ _$jscoverage['core/Range.js'][1928] = 0;
+ _$jscoverage['core/Range.js'][1929] = 0;
+ _$jscoverage['core/Range.js'][1930] = 0;
+ _$jscoverage['core/Range.js'][1931] = 0;
+ _$jscoverage['core/Range.js'][1933] = 0;
+ _$jscoverage['core/Range.js'][1951] = 0;
+ _$jscoverage['core/Range.js'][1952] = 0;
+ _$jscoverage['core/Range.js'][1955] = 0;
+ _$jscoverage['core/Range.js'][1956] = 0;
+ _$jscoverage['core/Range.js'][1957] = 0;
+ _$jscoverage['core/Range.js'][1958] = 0;
+ _$jscoverage['core/Range.js'][1959] = 0;
+ _$jscoverage['core/Range.js'][1967] = 0;
+ _$jscoverage['core/Range.js'][1968] = 0;
+ _$jscoverage['core/Range.js'][1971] = 0;
+ _$jscoverage['core/Range.js'][1973] = 0;
+ _$jscoverage['core/Range.js'][2000] = 0;
+ _$jscoverage['core/Range.js'][2002] = 0;
+ _$jscoverage['core/Range.js'][2003] = 0;
+ _$jscoverage['core/Range.js'][2004] = 0;
+ _$jscoverage['core/Range.js'][2006] = 0;
+ _$jscoverage['core/Range.js'][2007] = 0;
+ _$jscoverage['core/Range.js'][2009] = 0;
+ _$jscoverage['core/Range.js'][2011] = 0;
+ _$jscoverage['core/Range.js'][2012] = 0;
+ _$jscoverage['core/Range.js'][2013] = 0;
+ _$jscoverage['core/Range.js'][2014] = 0;
+ _$jscoverage['core/Range.js'][2015] = 0;
+ _$jscoverage['core/Range.js'][2016] = 0;
+ _$jscoverage['core/Range.js'][2018] = 0;
+ _$jscoverage['core/Range.js'][2020] = 0;
+ _$jscoverage['core/Range.js'][2021] = 0;
+ _$jscoverage['core/Range.js'][2022] = 0;
+ _$jscoverage['core/Range.js'][2024] = 0;
+ _$jscoverage['core/Range.js'][2025] = 0;
+ _$jscoverage['core/Range.js'][2026] = 0;
+ _$jscoverage['core/Range.js'][2027] = 0;
+ _$jscoverage['core/Range.js'][2028] = 0;
+ _$jscoverage['core/Range.js'][2029] = 0;
+ _$jscoverage['core/Range.js'][2031] = 0;
+ _$jscoverage['core/Range.js'][2032] = 0;
+ _$jscoverage['core/Range.js'][2033] = 0;
+ _$jscoverage['core/Range.js'][2034] = 0;
+ _$jscoverage['core/Range.js'][2037] = 0;
+ _$jscoverage['core/Range.js'][2044] = 0;
+ _$jscoverage['core/Range.js'][2046] = 0;
+ _$jscoverage['core/Range.js'][2047] = 0;
+ _$jscoverage['core/Range.js'][2049] = 0;
+ _$jscoverage['core/Range.js'][2050] = 0;
+ _$jscoverage['core/Range.js'][2052] = 0;
+ _$jscoverage['core/Range.js'][2053] = 0;
+ _$jscoverage['core/Range.js'][2054] = 0;
+ _$jscoverage['core/Range.js'][2056] = 0;
+ _$jscoverage['core/Range.js'][2085] = 0;
+ _$jscoverage['core/Range.js'][2086] = 0;
+ _$jscoverage['core/Range.js'][2087] = 0;
+ _$jscoverage['core/Range.js'][2089] = 0;
+ _$jscoverage['core/Range.js'][2090] = 0;
+ _$jscoverage['core/Range.js'][2091] = 0;
+ _$jscoverage['core/Range.js'][2092] = 0;
+ _$jscoverage['core/Range.js'][2093] = 0;
+ _$jscoverage['core/Range.js'][2094] = 0;
+ _$jscoverage['core/Range.js'][2095] = 0;
+ _$jscoverage['core/Range.js'][2098] = 0;
+ _$jscoverage['core/Range.js'][2099] = 0;
+ _$jscoverage['core/Range.js'][2100] = 0;
+ _$jscoverage['core/Range.js'][2102] = 0;
+ _$jscoverage['core/Range.js'][2105] = 0;
+ _$jscoverage['core/Range.js'][2106] = 0;
+ _$jscoverage['core/Range.js'][2108] = 0;
+ _$jscoverage['core/Range.js'][2112] = 0;
+ _$jscoverage['core/Range.js'][2113] = 0;
+ _$jscoverage['core/Range.js'][2114] = 0;
+ _$jscoverage['core/Range.js'][2214] = 0;
+ _$jscoverage['core/Range.js'][2215] = 0;
+ _$jscoverage['core/Range.js'][2216] = 0;
+ _$jscoverage['core/Range.js'][2219] = 0;
+ _$jscoverage['core/Range.js'][2220] = 0;
+ _$jscoverage['core/Range.js'][2221] = 0;
+ _$jscoverage['core/Range.js'][2222] = 0;
+ _$jscoverage['core/Range.js'][2224] = 0;
+}
+_$jscoverage['core/Range.js'].source = ["/** "," * Range封装 "," * @file "," * @module UE.dom "," * @class Range "," * @since 1.2.6.1 "," */ ","","/** "," * dom操作封装 "," * @unfile "," * @module UE.dom "," */ ","","/** "," * Range实现类,本类是UEditor底层核心类,统一w3cRange和ieRange之间的差异,包括接口和属性 "," * @unfile "," * @module UE.dom "," * @class Range "," */ ","","( function () { "," var guid = 0 , "," fillChar = domUtils. fillChar, "," fillData; ",""," /* "," * 更新range的collapse状态 "," * @param {Range} range range对象 "," */ "," function updateCollapse( range) { "," range. collapsed = "," range. startContainer && range. endContainer && "," range. startContainer === range. endContainer && "," range. startOffset == range. endOffset; "," } ",""," function selectOneNode( rng) { "," return ! rng. collapsed && rng. startContainer. nodeType == 1 && rng. startContainer === rng. endContainer && rng. endOffset - rng. startOffset == 1 "," } "," function setEndPoint( toStart, node, offset, range) { "," //如果node是自闭合标签要处理 "," if ( node. nodeType == 1 && ( dtd. $empty[ node. tagName] || dtd. $nonChild[ node. tagName])) { "," offset = domUtils. getNodeIndex( node) + ( toStart ? 0 : 1 ); "," node = node. parentNode; "," } "," if ( toStart) { "," range. startContainer = node; "," range. startOffset = offset; "," if (! range. endContainer) { "," range. collapse( true ); "," } "," } else { "," range. endContainer = node; "," range. endOffset = offset; "," if (! range. startContainer) { "," range. collapse( false ); "," } "," } "," updateCollapse( range); "," return range; "," } ",""," function execContentsAction( range, action) { "," //调整边界 "," //range.includeBookmark(); "," var start = range. startContainer, "," end = range. endContainer, "," startOffset = range. startOffset, "," endOffset = range. endOffset, "," doc = range. document, "," frag = doc. createDocumentFragment(), "," tmpStart, tmpEnd; "," if ( start. nodeType == 1 ) { "," start = start. childNodes[ startOffset] || ( tmpStart = start. appendChild( doc. createTextNode( '' ))); "," } "," if ( end. nodeType == 1 ) { "," end = end. childNodes[ endOffset] || ( tmpEnd = end. appendChild( doc. createTextNode( '' ))); "," } "," if ( start === end && start. nodeType == 3 ) { "," frag. appendChild( doc. createTextNode( start. substringData( startOffset, endOffset - startOffset))); "," //is not clone "," if ( action) { "," start. deleteData( startOffset, endOffset - startOffset); "," range. collapse( true ); "," } "," return frag; "," } "," var current, currentLevel, clone = frag, "," startParents = domUtils. findParents( start, true ), endParents = domUtils. findParents( end, true ); "," for ( var i = 0 ; startParents[ i] == endParents[ i];) { "," i++; "," } "," for ( var j = i, si; si = startParents[ j]; j++) { "," current = si. nextSibling; "," if ( si == start) { "," if (! tmpStart) { "," if ( range. startContainer. nodeType == 3 ) { "," clone. appendChild( doc. createTextNode( start. nodeValue. slice( startOffset))); "," //is not clone "," if ( action) { "," start. deleteData( startOffset, start. nodeValue. length - startOffset); "," } "," } else { "," clone. appendChild(! action ? start. cloneNode( true ) : start); "," } "," } "," } else { "," currentLevel = si. cloneNode( false ); "," clone. appendChild( currentLevel); "," } "," while ( current) { "," if ( current === end || current === endParents[ j]) { "," break ; "," } "," si = current. nextSibling; "," clone. appendChild(! action ? current. cloneNode( true ) : current); "," current = si; "," } "," clone = currentLevel; "," } "," clone = frag; "," if (! startParents[ i]) { "," clone. appendChild( startParents[ i - 1 ]. cloneNode( false )); "," clone = clone. firstChild; "," } "," for ( var j = i, ei; ei = endParents[ j]; j++) { "," current = ei. previousSibling; "," if ( ei == end) { "," if (! tmpEnd && range. endContainer. nodeType == 3 ) { "," clone. appendChild( doc. createTextNode( end. substringData( 0 , endOffset))); "," //is not clone "," if ( action) { "," end. deleteData( 0 , endOffset); "," } "," } "," } else { "," currentLevel = ei. cloneNode( false ); "," clone. appendChild( currentLevel); "," } "," //如果两端同级,右边第一次已经被开始做了 "," if ( j != i || ! startParents[ i]) { "," while ( current) { "," if ( current === start) { "," break ; "," } "," ei = current. previousSibling; "," clone. insertBefore(! action ? current. cloneNode( true ) : current, clone. firstChild); "," current = ei; "," } "," } "," clone = currentLevel; "," } "," if ( action) { "," range. setStartBefore(! endParents[ i] ? endParents[ i - 1 ] : ! startParents[ i] ? startParents[ i - 1 ] : endParents[ i]). collapse( true ); "," } "," tmpStart && domUtils. remove( tmpStart); "," tmpEnd && domUtils. remove( tmpEnd); "," return frag; "," } ",""," /** "," * 创建一个跟document绑定的空的Range实例 "," * @constructor "," */ ",""," /** "," * @property { Node } startContainer 当前Range的开始边界的容器节点, 可以是一个元素节点或者是文本节点 "," */ ",""," /** "," * @property { Node } startOffset 当前Range的开始边界容器节点的偏移量, 如果是元素节点, "," * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 "," */ ",""," /** "," * @property { Node } endContainer 当前Range的结束边界的容器节点, 可以是一个元素节点或者是文本节点 "," */ ",""," /** "," * @property { Node } endOffset 当前Range的结束边界容器节点的偏移量, 如果是元素节点, "," * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 "," */ ",""," /** "," * @property { Boolean } collapsed 当前Range是否是闭合的 "," */ ",""," /** "," * @property { Document } document 当前Range所属的Document对象 "," */ ",""," var Range = dom. Range = function ( document) { "," var me = this ; "," me. startContainer = "," me. startOffset = "," me. endContainer = "," me. endOffset = null ; "," me. document = document; "," me. collapsed = true ; "," } ; ",""," /* "," * 删除fillData "," * @param doc "," * @param excludeNode "," */ "," function removeFillData( doc, excludeNode) { "," try { "," if ( fillData && domUtils. inDoc( fillData, doc)) { "," if (! fillData. nodeValue. replace( fillCharReg, '' ). length) { "," var tmpNode = fillData. parentNode; "," domUtils. remove( fillData); "," while ( tmpNode && domUtils. isEmptyInlineElement( tmpNode) && "," //safari的contains有bug "," ( browser. safari ? !( domUtils. getPosition( tmpNode, excludeNode) & domUtils. POSITION_CONTAINS) : ! tmpNode. contains( excludeNode)) "," ) { "," fillData = tmpNode. parentNode; "," domUtils. remove( tmpNode); "," tmpNode = fillData; "," } "," } else { "," fillData. nodeValue = fillData. nodeValue. replace( fillCharReg, '' ); "," } "," } "," } catch ( e) { "," } "," } ",""," /* "," * "," * @param node "," * @param dir "," */ "," function mergeSibling( node, dir) { "," var tmpNode; "," node = node[ dir]; "," while ( node && domUtils. isFillChar( node)) { "," tmpNode = node[ dir]; "," domUtils. remove( node); "," node = tmpNode; "," } "," } ",""," Range. prototype = { ",""," /** "," * 克隆选中的内容到一个DocumentFragment里 "," * @method cloneContents "," * @return { DocumentFragment | NULL } 如果选区是空的将返回null, 否则, 返回包含所clone内容的DocumentFragment元素 "," * @example "," * ```html "," * <!-- 被选中的内容 --> "," * <div>123</div><div>456</div> "," * "," * <script> "," * //output: 2 "," * console.log( range.cloneContents().childNodes.length ); "," * </script> "," * ``` "," */ "," cloneContents: function () { "," return this . collapsed ? null : execContentsAction( this , 0 ); "," } , ",""," /** "," * 删除当前选区范围中的所有内容 "," * @method deleteContents "," * @remind 执行完该操作后, 当前Range对象变成了闭合状态 "," * @remind 执行该操作会引起当前Range对象的其他属性的变化 "," * @return { UE.dom.Range } 当前操作的Range对象 "," * @example "," * ```html "," * <body> "," * <!-- 选区开始 --> "," * <div></div> "," * <span></span> "," * <!-- 选区结束 --> "," * </body> "," * "," * <script> "," * //output: 5 "," * console.log( document.body.childNodes.length ); "," * "," * //执行删除选区内容操作 "," * range.deleteContents(); "," * "," * //output: 2 "," * console.log( document.body.childNodes.length ); "," * </script> "," * ``` "," */ "," deleteContents: function () { "," var txt; "," if (! this . collapsed) { "," execContentsAction( this , 1 ); "," } "," if ( browser. webkit) { "," txt = this . startContainer; "," if ( txt. nodeType == 3 && ! txt. nodeValue. length) { "," this . setStartBefore( txt). collapse( true ); "," domUtils. remove( txt); "," } "," } "," return this ; "," } , ",""," /** "," * 将当前选区的内容提取到一个DocumentFragment里 "," * @method extractContents "," * @remind 执行该操作后, 选区将变成闭合状态 "," * @warning 执行该操作后, 原来选区所选中的内容将从dom树上剥离出来 "," * @return { DocumentFragment } 返回包含所提取内容的DocumentFragment对象 "," * @example "," * ```html "," * <body> "," * <!-- 选区开始 --> "," * <div></div> "," * <span></span> "," * <!-- 选区结束 --> "," * </body> "," * <script> "," * //output: 5 "," * console.log( document.body.childNodes.length ); "," * "," * //执行选区内容提取 "," * var contents = range.extractContents(); "," * "," * //output: 2 "," * console.log( document.body.childNodes.length ); "," * "," * //output: 3 "," * console.log( contents.childNodes.length ); "," * "," * </script> "," */ "," extractContents: function () { "," return this . collapsed ? null : execContentsAction( this , 2 ); "," } , ",""," /** "," * 设置Range的开始位置 "," * @method setStart "," * @remind 如果容器节点是元素节点,那么offset指的是其子元素中索引为offset的元素, "," * 如果是文本节点,那么offset指的是其文本内容的第offset个字符 "," * @param { Node } node 将被设为当前选区开始边界容器的节点对象 "," * @param { int } offset 开始容器的偏移量 "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <div id=\"test\"></div> "," * <!-- 选区开始 --> "," * <span></span> "," * <a></a> "," * <!-- 选区结束 --> "," * </body> "," * "," * <script> "," * "," * //output: SPAN "," * console.log( range.startContainer.tagName ); "," * "," * range.setStart( document.getElementById( \"test\" ), 0 ); "," * "," * //output: DIV "," * console.log( range.startContainer.tagName ); "," * "," * </script> "," * ``` "," */ "," setStart: function ( node, offset) { "," return setEndPoint( true , node, offset, this ); "," } , ",""," /** "," * 设置Range的结束位置 "," * @method setEnd "," * @param { Node } node 将被设为当前选区结束边界容器的节点对象 "," * @param { int } offset 结束容器的偏移量 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <!-- 选区开始 --> "," * <span></span> "," * <a></a> "," * <!-- 选区结束 --> "," * <div id=\"test\"></div> "," * </body> "," * "," * <script> "," * "," * //output: A "," * console.log( range.endContainer.tagName ); "," * "," * range.setEnd( document.getElementById( \"test\" ), 0 ); "," * "," * //output: DIV "," * console.log( range.endContainer.tagName ); "," * "," * </script> "," * ``` "," */ "," setEnd: function ( node, offset) { "," return setEndPoint( false , node, offset, this ); "," } , ",""," /** "," * 将Range开始位置设置到node节点之后 "," * @method setStartAfter "," * @param { Node } node 当前选区开始边界之前的节点 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <div id=\"test\"></div> "," * <span></span> "," * <!-- 选区开始 --> "," * <a></a> "," * <!-- 选区结束 --> "," * </body> "," * "," * <script> "," * "," * //output: A "," * console.log( range.startContainer.tagName ); "," * "," * range.setStartAfter( document.getElementById( \"test\" ) ); "," * "," * //output: SPAN "," * console.log( range.startContainer.tagName ); "," * "," * </script> "," * ``` "," */ "," setStartAfter: function ( node) { "," return this . setStart( node. parentNode, domUtils. getNodeIndex( node) + 1 ); "," } , ",""," /** "," * 将Range开始位置设置到node节点之前 "," * @method setStartBefore "," * @param { Node } node 新的选区开始位置在该节点之前 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <span></span> "," * <div id=\"test\"></div> "," * <!-- 选区开始 --> "," * <a></a> "," * <!-- 选区结束 --> "," * </body> "," * "," * <script> "," * "," * //output: A "," * console.log( range.startContainer.tagName ); "," * "," * range.setStartBefore( document.getElementById( \"test\" ) ); "," * "," * //output: SPAN "," * console.log( range.startContainer.tagName ); "," * "," * </script> "," * ``` "," */ "," setStartBefore: function ( node) { "," return this . setStart( node. parentNode, domUtils. getNodeIndex( node)); "," } , ",""," /** "," * 将Range结束位置设置到node节点之后 "," * @method setEndAfter "," * @param { Node } node 目标节点 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <!-- 选区开始 --> "," * <a></a> "," * <!-- 选区结束 --> "," * <span></span> "," * <div id=\"test\"></div> "," * "," * <script> "," * //output: A "," * console.log( range.endContainer.tagName ); "," * "," * range.setEndAfter( document.getElementById( \"test\" ) ); "," * "," * //output: DIV "," * console.log( range.endContainer.tagName ); "," * </script> "," * </body> "," * ``` "," */ "," setEndAfter: function ( node) { "," return this . setEnd( node. parentNode, domUtils. getNodeIndex( node) + 1 ); "," } , ",""," /** "," * 将Range结束位置设置到node节点之前 "," * @method setEndBefore "," * @param { Node } node 目标节点 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <!-- 选区开始 --> "," * <a></a> "," * <!-- 选区结束 --> "," * <span></span> "," * <div id=\"test\"></div> "," * "," * <script> "," * //output: A "," * console.log( range.endContainer.tagName ); "," * "," * range.setEndBefore( document.getElementById( \"test\" ) ); "," * "," * //output: SPAN "," * console.log( range.endContainer.tagName ); "," * </script> "," * </body> "," * ``` "," */ "," setEndBefore: function ( node) { "," return this . setEnd( node. parentNode, domUtils. getNodeIndex( node)); "," } , ",""," /** "," * 设置Range的开始位置设置到node节点内的第一个节点处 "," * @method setStartAtFirst "," * @param { Node } node 目标节点 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <div id=\"test\"> "," * <i></i> "," * <!-- 选区开始 --> "," * <a></a> "," * <!-- 选区结束 --> "," * <span></span> "," * </div> "," * "," * <script> "," * //output: '<a></a>' "," * console.log( range.cloneContents() ); "," * "," * range.setStartAtFirst( document.getElementById(\"test\") ); "," * "," * //output: '<i></i><a></a>' "," * console.log( range.cloneContents() ); "," * </script> "," * </body> "," * ``` "," */ "," setStartAtFirst: function ( node) { "," return this . setStart( node, 0 ); "," } , ",""," /** "," * 设置Range的开始位置设置到node节点内的最后一个节点处 "," * @method setStartAtLast "," * @param { Node } node 目标节点 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <div id=\"test\"> "," * <i></i> "," * <!-- 选区开始 --> "," * <a></a> "," * <!-- 选区结束 --> "," * <span></span> "," * </div> "," * "," * <script> "," * //output: <a></a> "," * console.log( range.cloneContents() ); "," * "," * range.setStartAtLast( document.body ); "," * "," * //选区已经闭合, 输出空字符串 "," * //output: '' "," * console.log( range.cloneContents() ); "," * </script> "," * </body> "," * ``` "," */ "," setStartAtLast: function ( node) { "," return this . setStart( node, node. nodeType == 3 ? node. nodeValue. length : node. childNodes. length); "," } , ",""," /** "," * 设置Range的结束位置设置到node节点内的第一个节点处 "," * @method setEndAtFirst "," * @param { Node } node 目标节点 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <!-- 选区开始 --> "," * <a></a> "," * <!-- 选区结束 --> "," * <span></span> "," * <div id=\"test\"></div> "," * "," * <script> "," * //output: '<a></a>' "," * console.log( range.cloneContents() ); "," * "," * range.setEndAtFirst( document.getElementById(\"test\") ); "," * "," * //output: '<a></a><div></div>' "," * console.log( range.cloneContents() ); "," * </script> "," * </body> "," * ``` "," */ "," setEndAtFirst: function ( node) { "," return this . setEnd( node, 0 ); "," } , ",""," /** "," * 设置Range的结束位置设置到node节点内的最后一个节点处 "," * @method setEndAtLast "," * @param { Node } node 目标节点 "," * @see UE.dom.Range:setStart(Node,int) "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * <div id=\"test\"> "," * <!-- 选区开始 --> "," * <a></a> "," * <!-- 选区结束 --> "," * <span></span> "," * </div> "," * "," * <script> "," * //output: '<a></a>' "," * console.log( range.cloneContents() ); "," * "," * range.setEndAtLast( document.getElementById(\"test\") ); "," * "," * //output: '<a></a><span></span>' "," * console.log( range.cloneContents() ); "," * </script> "," * </body> "," * ``` "," */ "," setEndAtLast: function ( node) { "," return this . setEnd( node, node. nodeType == 3 ? node. nodeValue. length : node. childNodes. length); "," } , ",""," /** "," * 选中一个节点, 并返回包含这个节点的range对象 "," * @method selectNode "," * @param { Node } node 需要选中的节点 "," * @return { UE.dom.Range } 当前range对象, 但是选区已经改变, 包含了当前选择的节点对象 "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"></div> "," * "," * <script> "," * "," * range.selectNode( document.getElementById(\"test\") ); "," * "," * //output: '<div id=\"test\"></div>' "," * console.log( range.cloneContents() ); "," * "," * </script> "," * </body> "," * ``` "," */ "," selectNode: function ( node) { "," return this . setStartBefore( node). setEndAfter( node); "," } , ",""," /** "," * 选中给定节点内部的所有节点, 并返回包含这个节点内容的range对象 "," * @method selectNodeContents "," * @param { Node } node 目标节点, 当前range将包含该节点内的所有节点 "," * @return { UE.dom.Range } 当前range对象, 包含了当前选择的节点对象的所有子节点 "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <a></a> "," * <i></i> "," * </div> "," * "," * <script> "," * "," * range.selectNodeContents( document.getElementById(\"test\") ); "," * "," * //output: '<a></a><i></i>' "," * console.log( range.cloneContents() ); "," * "," * </script> "," * </body> "," * ``` "," */ "," selectNodeContents: function ( node) { "," return this . setStart( node, 0 ). setEndAtLast( node); "," } , ",""," /** "," * clone当前Range对象 "," * @method cloneRange "," * @return { UE.dom.Range } 当前range对象的一个副本 "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <!-- 选区开始 --> "," * <a></a> "," * <i></i> "," * <!-- 选区结束 --> "," * </div> "," * "," * <script> "," * "," * var cloneRange = range.cloneRange(); "," * "," * //output: '<a></a><i></i>' "," * console.log( cloneRange.cloneContents() ); "," * "," * </script> "," * </body> "," * ``` "," */ "," cloneRange: function () { "," var me = this ; "," return new Range( me. document). setStart( me. startContainer, me. startOffset). setEnd( me. endContainer, me. endOffset); "," } , ",""," /** "," * 闭合当前选区,向尾部闭合 "," * @method collapse "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <!-- 选区开始 --> "," * <a></a> "," * <i></i> "," * <!-- 选区结束 --> "," * </div> "," * "," * <script> "," * "," * //output: '<a></a><i></i>' "," * console.log( range.cloneContents() ); "," * //output: 1 "," * console.log( range.startOffset ); "," * "," * range.collapse(); "," * "," * //output: '' "," * console.log( range.cloneContents() ); "," * //output: 3 "," * console.log( range.startOffset ); "," * "," * </script> "," * </body> "," * ``` "," */ ",""," /** "," * 闭合当前选区,根据给定的toStart参数项决定是向尾部闭合还是向前闭合, "," * 如果toStart的值为true,则闭合到首部, 反之,则闭合到尾部 "," * @method collapse "," * @param { Boolean } toStart 是否向前闭合选区 "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <!-- 选区开始 --> "," * <a></a> "," * <i></i> "," * <!-- 选区结束 --> "," * </div> "," * "," * <script> "," * "," * //output: '<a></a><i></i>' "," * console.log( range.cloneContents() ); "," * //output: 1 "," * console.log( range.startOffset ); "," * "," * range.collapse(); "," * "," * //output: '' "," * console.log( range.cloneContents() ); "," * //output: 3 "," * console.log( range.startOffset ); "," * "," * </script> "," * </body> "," * ``` "," */ "," collapse: function ( toStart) { "," var me = this ; "," if ( toStart) { "," me. endContainer = me. startContainer; "," me. endOffset = me. startOffset; "," } else { "," me. startContainer = me. endContainer; "," me. startOffset = me. endOffset; "," } "," me. collapsed = true ; "," return me; "," } , ",""," /* "," * 调整range的边界,使其\"收缩\"到最小的位置 "," * @name shrinkBoundary "," * @grammar range.shrinkBoundary() => Range //range开始位置和结束位置都调整,参见<code><a href=\"#adjustmentboundary\">adjustmentBoundary</a></code> "," * @grammar range.shrinkBoundary(true) => Range //仅调整开始位置,忽略结束位置 "," * @example "," * <b>xx[</b>xxxxx] ==> <b>xx</b>[xxxxx] "," * <b>x[xx</b><i>]xxx</i> ==> <b>x[xx]</b><i>xxx</i> "," * [<b><i>xxxx</i>xxxxxxx</b>] ==> <b><i>[xxxx</i>xxxxxxx]</b> "," */ "," /** "," * 调整range的开始位置和结束位置,使其\"收缩\"到最小的位置 "," * @method shrinkBoundary "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <!-- 选区开始 --> "," * <a></a> "," * <i></i> "," * <!-- 选区结束 --> "," * </div> "," * "," * <script> "," * "," * //output: '<a></a><i></i>' "," * console.log( range.cloneContents() ); "," * //output: 1 "," * console.log( range.startOffset ); "," * "," * range.collapse(); "," * "," * //output: '' "," * console.log( range.cloneContents() ); "," * //output: 3 "," * console.log( range.startOffset ); "," * "," * </script> "," * </body> "," * ``` "," */ "," shrinkBoundary: function ( ignoreEnd) { "," var me = this , child, "," collapsed = me. collapsed; "," function check( node) { "," return node. nodeType == 1 && ! domUtils. isBookmarkNode( node) && ! dtd. $empty[ node. tagName] && ! dtd. $nonChild[ node. tagName] "," } "," while ( me. startContainer. nodeType == 1 //是element "," && ( child = me. startContainer. childNodes[ me. startOffset]) //子节点也是element "," && check( child)) { "," me. setStart( child, 0 ); "," } "," if ( collapsed) { "," return me. collapse( true ); "," } "," if (! ignoreEnd) { "," while ( me. endContainer. nodeType == 1 //是element "," && me. endOffset > 0 //如果是空元素就退出 endOffset=0那么endOffst-1为负值,childNodes[endOffset]报错 "," && ( child = me. endContainer. childNodes[ me. endOffset - 1 ]) //子节点也是element "," && check( child)) { "," me. setEnd( child, child. childNodes. length); "," } "," } "," return me; "," } , ",""," /** "," * 获取当前选区所包含的所有节点的公共祖先节点, "," * 返回的公共祖先节点一定不是range自身的容器节点, 但有可能是一个文本节点 "," * @method getCommonAncestor "," * @return { Node } 当前range对象内所有节点的公共祖先节点 "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <!-- 选区开始 --> "," * <a></a> "," * <i></i> "," * <!-- 选区结束 --> "," * </div> "," * "," * <script> "," * "," * var ancestorNode = range.getCommonAncestor(); "," * "," * //output: 'DIV' "," * console.log( ancestorNode.tagName ); "," * "," * </script> "," * "," * </body> "," * ``` "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <span> "," * <!-- 选区开始 --> "," * <a></a> "," * </span> "," * <span> "," * <i></i> "," * <!-- 选区结束 --> "," * </span> "," * </div> "," * "," * <script> "," * "," * var ancestorNode = range.getCommonAncestor(); "," * "," * //output: 'DIV' "," * console.log( ancestorNode.tagName ); "," * "," * </script> "," * "," * </body> "," * ``` "," */ ",""," /** "," * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 "," * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf "," * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点 "," * @method getCommonAncestor "," * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 "," * @return { Node } 当前range对象内所有节点的公共祖先节点 "," * @see UE.dom.Range:getCommonAncestor() "," * @example "," * ```html "," * <body> "," * "," * <!-- 选区开始 --> "," * <div id=\"test\"> "," * <a></a> "," * <i></i> "," * </div> "," * <!-- 选区结束 --> "," * "," * <script> "," * "," * var ancestorNode = range.getCommonAncestor( true ); "," * "," * //output: 'DIV' "," * console.log( ancestorNode.tagName ); "," * "," * ancestorNode = range.getCommonAncestor( false ); "," * "," * //output: BODY "," * console.log( ancestorNode.tagName ); "," * "," * </script> "," * "," * </body> "," * ``` "," */ ",""," /** "," * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 "," * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf "," * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点; 同时可以根据 "," * ignoreTextNode 参数的取值决定是否忽略类型为文本节点的祖先节点。 "," * @method getCommonAncestor "," * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 "," * @param { Boolean } ignoreTextNode 获取祖先节点的过程中是否忽略类型为文本节点的祖先节点 "," * @return { Node } 当前range对象内所有节点的公共祖先节点 "," * @see UE.dom.Range:getCommonAncestor() "," * @see UE.dom.Range:getCommonAncestor(Boolean) "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <span> "," * 我是一个 "," * <!-- 选区开始 --> "," * 文本 "," * <!-- 选区结束 --> "," * 内容 "," * </span> "," * </div> "," * "," * <script> "," * "," * var ancestorNode = range.getCommonAncestor( true, false ); "," * "," * //output: 3 "," * console.log( ancestorNode.nodeType ); "," * //output: SPAN "," * console.log( ancestorNode.parentNode.tagName ); "," * "," * ancestorNode = range.getCommonAncestor( true, true ); "," * "," * //output: 1 "," * console.log( ancestorNode.nodeType ); "," * //output: SPAN "," * console.log( ancestorNode.tagName ); "," * "," * </script> "," * "," * </body> "," * ``` "," */ "," getCommonAncestor: function ( includeSelf, ignoreTextNode) { "," var me = this , "," start = me. startContainer, "," end = me. endContainer; "," if ( start === end) { "," if ( includeSelf && selectOneNode( this )) { "," start = start. childNodes[ me. startOffset]; "," if ( start. nodeType == 1 ) "," return start; "," } "," //只有在上来就相等的情况下才会出现是文本的情况 "," return ignoreTextNode && start. nodeType == 3 ? start. parentNode : start; "," } "," return domUtils. getCommonAncestor( start, end); "," } , ",""," /** "," * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上 "," * @method trimBoundary "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * "," * <body> "," * <div> "," * 你好 "," * <!-- 选区开始 --> "," * 我是一段文本, 我旁边的注释内容其实是不存在的,仅仅是为了描述一下选区的边界 "," * <!-- 选区结束 --> "," * 到这里文本结束了 "," * </div> "," * "," * <script> "," * "," * //output: 3 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * range.trimBoundary(); "," * "," * //output: 1 "," * console.log( range.startContainer.nodeType ); "," * //output: 1 "," * console.log( range.endContainer.nodeType ); "," * "," * </script> "," * </body> "," * "," * ``` "," */ ",""," /** "," * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上, "," * 可以根据 ignoreEnd 参数的值决定是否调整对结束边界的调整 "," * @method trimBoundary "," * @param { Boolean } ignoreEnd 是否忽略对结束边界的调整 "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * "," * <body> "," * <div> "," * 你好 "," * <!-- 选区开始 --> "," * 我是一段文本, 我旁边的注释内容其实是不存在的,仅仅是为了描述一下选区的边界 "," * <!-- 选区结束 --> "," * 到这里文本结束了 "," * </div> "," * "," * <script> "," * "," * //output: 3 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * range.trimBoundary( true ); "," * "," * //output: 1 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * </script> "," * </body> "," * "," * ``` "," */ "," trimBoundary: function ( ignoreEnd) { "," this . txtToElmBoundary(); "," var start = this . startContainer, "," offset = this . startOffset, "," collapsed = this . collapsed, "," end = this . endContainer; "," if ( start. nodeType == 3 ) { "," if ( offset == 0 ) { "," this . setStartBefore( start); "," } else { "," if ( offset >= start. nodeValue. length) { "," this . setStartAfter( start); "," } else { "," var textNode = domUtils. split( start, offset); "," //跟新结束边界 "," if ( start === end) { "," this . setEnd( textNode, this . endOffset - offset); "," } else if ( start. parentNode === end) { "," this . endOffset += 1 ; "," } "," this . setStartBefore( textNode); "," } "," } "," if ( collapsed) { "," return this . collapse( true ); "," } "," } "," if (! ignoreEnd) { "," offset = this . endOffset; "," end = this . endContainer; "," if ( end. nodeType == 3 ) { "," if ( offset == 0 ) { "," this . setEndBefore( end); "," } else { "," offset < end. nodeValue. length && domUtils. split( end, offset); "," this . setEndAfter( end); "," } "," } "," } "," return this ; "," } , ",""," /** "," * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则什么也不做 "," * @method txtToElmBoundary "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * "," * <body> "," * <div> "," * <!-- 选区开始 --> "," * 你好,我是一段文本, 我旁边的注释内容其实是不存在的,仅仅是为了描述一下选区的边界 "," * <!-- 选区结束 --> "," * 到这里文本结束了 "," * </div> "," * "," * <script> "," * "," * //output: 3 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * range.txtToElmBoundary(); "," * "," * //output: 1 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * </script> "," * </body> "," * "," * ``` "," * @example "," * ```html "," * "," * <body> "," * <div> "," * <!-- 选区开始 --> "," * 你好,我是一段文本, 我旁边的注释内容其实是不存在的,仅仅是为了描述一下选区的边界 "," * 到这里文本结束了 "," * <!-- 选区结束 --> "," * </div> "," * "," * <script> "," * "," * //output: 3 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * range.txtToElmBoundary(); "," * "," * //output: 1 "," * console.log( range.startContainer.nodeType ); "," * //output: 1 "," * console.log( range.endContainer.nodeType ); "," * "," * </script> "," * </body> "," * "," * ``` "," */ ",""," /** "," * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则根据参数项 "," * ignoreCollapsed 的值决定是否执行该调整 "," * @method txtToElmBoundary "," * @param { Boolean } ignoreCollapsed 是否忽略选区的闭合状态, 如果该参数取值为true, 则 "," * 不论选区是否闭合, 都会执行该操作, 反之, 则不会对闭合的选区执行该操作 "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * "," * <body> "," * <div> "," * 你好,我是一段文本, 我旁边的注释内容其实是不存在的,仅仅是为了描述一下选区的边界 "," * <!-- 选区开始 --><!-- 选区结束 --> "," * 到这里文本结束了 "," * </div> "," * "," * <script> "," * "," * //output: 3 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * range.txtToElmBoundary( true ); "," * "," * //output: 1 "," * console.log( range.startContainer.nodeType ); "," * //output: 1 "," * console.log( range.endContainer.nodeType ); "," * "," * </script> "," * </body> "," * "," * ``` "," * @example "," * ```html "," * "," * <body> "," * <div> "," * 你好,我是一段文本, 我旁边的注释内容其实是不存在的,仅仅是为了描述一下选区的边界 "," * <!-- 选区开始 --><!-- 选区结束 --> "," * 到这里文本结束了 "," * </div> "," * "," * <script> "," * "," * //output: 3 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * range.txtToElmBoundary( false ); "," * "," * //output: 3 "," * console.log( range.startContainer.nodeType ); "," * //output: 3 "," * console.log( range.endContainer.nodeType ); "," * "," * </script> "," * </body> "," * "," * ``` "," */ "," txtToElmBoundary: function ( ignoreCollapsed) { "," function adjust( r, c) { "," var container = r[ c + 'Container' ], "," offset = r[ c + 'Offset' ]; "," if ( container. nodeType == 3 ) { "," if (! offset) { "," r[ 'set' + c. replace( /(\\w)/ , function ( a) { "," return a. toUpperCase(); "," } ) + 'Before' ]( container); "," } else if ( offset >= container. nodeValue. length) { "," r[ 'set' + c. replace( /(\\w)/ , function ( a) { "," return a. toUpperCase(); "," } ) + 'After' ]( container); "," } "," } "," } ",""," if ( ignoreCollapsed || ! this . collapsed) { "," adjust( this , 'start' ); "," adjust( this , 'end' ); "," } "," return this ; "," } , ",""," /** "," * 在当前选区的开始位置后紧临着插入一个节点,新插入的节点会被该range包含 "," * @method insertNode "," * @param { Node } 需要插入的节点 "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * <!-- 选区开始 --> "," * <span></span> "," * <i></i> "," * <!-- 选区结束 --> "," * </div> "," * "," * <script> "," * "," * "," * var newNode = document.createElement('div'); "," * newNode.id = 'ueditor'; "," * "," * //output: <span></span><i></i> "," * console.log( range.cloneContents() ); "," * "," * range.insertNode( newNode ); "," * "," * //output: <div id=\"ueditor\"></div><span></span><i></i> "," * console.log( range.cloneContents() ); "," * "," * </script> "," * "," * </body> "," * ``` "," */ "," insertNode: function ( node) { "," var first = node, length = 1 ; "," if ( node. nodeType == 11 ) { "," first = node. firstChild; "," length = node. childNodes. length; "," } "," this . trimBoundary( true ); "," var start = this . startContainer, "," offset = this . startOffset; "," var nextNode = start. childNodes[ offset ]; "," if ( nextNode) { "," start. insertBefore( node, nextNode); "," } else { "," start. appendChild( node); "," } "," if ( first. parentNode === this . endContainer) { "," this . endOffset = this . endOffset + length; "," } "," return this . setStartBefore( first); "," } , ",""," /** "," * 闭合选区到当前选区的开始位置, 并且定位光标到闭合后的位置 "," * @method setCursor "," * @return { UE.dom.Range } 当前range对象 "," * @see UE.dom.Range:collapse() "," */ ",""," /** "," * 闭合选区, 并且定位光标到闭合后的位置, 可以根据参数toEnd的值控制选区是向前闭合还是向后闭合 "," * @method setCursor "," * @param { Boolean } toEnd 是否向后闭合, 如果为true, 则闭合选区时, 将向结束容器方向闭合, "," * 反之,则向开始容器方向闭合 "," * @return { UE.dom.Range } 当前range对象 "," * @see UE.dom.Range:collapse(Boolean) "," */ "," setCursor: function ( toEnd, noFillData) { "," return this . collapse(! toEnd). select( noFillData); "," } , ",""," /** "," * 创建当前range的一个书签,记录下当前range的位置,方便当dom树改变时,还能找回原来的选区位置 "," * @method createBookmark "," * @param { Boolean } serialize 控制返回的标记位置是对当前位置的引用还是ID,如果该值为true,则 "," * 返回标记位置的ID, 反之则返回标记位置的引用 "," * @return { KeyValueMap } 返回一个书签记录键值对, 其包含的key有: start => 开始标记的ID或者引用, "," * end => 结束标记的ID或引用, id => 当前标记的类型, 如果为true,则表示 "," * 返回的记录的类型为ID, 反之则为引用 "," */ "," createBookmark: function ( serialize, same) { "," var endNode, "," startNode = this . document. createElement( 'span' ); "," startNode. style. cssText = 'display:none;line-height:0px;' ; "," startNode. appendChild( this . document. createTextNode( ' \\u 200D' )); "," startNode. id = '_baidu_bookmark_start_' + ( same ? '' : guid++); ",""," if (! this . collapsed) { "," endNode = startNode. cloneNode( true ); "," endNode. id = '_baidu_bookmark_end_' + ( same ? '' : guid++); "," } "," this . insertNode( startNode); "," if ( endNode) { "," this . collapse(). insertNode( endNode). setEndBefore( endNode); "," } "," this . setStartAfter( startNode); "," return { "," start: serialize ? startNode. id : startNode, "," end: endNode ? serialize ? endNode. id : endNode : null , "," id: serialize"," } "," } , ",""," /** "," * 调整当前range的边界到书签位置,并删除该书签对象所标记的位置内的节点 "," * @method moveToBookmark "," * @param { BookMark } createBookmark所创建的标签对象 "," * @return { UE.dom.Range } 当前range对象 "," * @see UE.dom.Range:createBookmark(Boolean) "," */ "," moveToBookmark: function ( bookmark) { "," var start = bookmark. id ? this . document. getElementById( bookmark. start) : bookmark. start, "," end = bookmark. end && bookmark. id ? this . document. getElementById( bookmark. end) : bookmark. end; "," this . setStartBefore( start); "," domUtils. remove( start); "," if ( end) { "," this . setEndBefore( end); "," domUtils. remove( end); "," } else { "," this . collapse( true ); "," } "," return this ; "," } , ",""," /** "," * 调整range的边界,使其\"放大\"到最近的父节点 "," * @method enlarge "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * "," * <body> "," * <div> "," * <span> "," * <b>a<!-- 选区开始 -->b</b> "," * cdef "," * <!-- 选区结束 --> "," * </span> "," * </div> "," * "," * <script> "," * "," * range.enlarge(); "," * "," * //output: <span><b>ab</b>cdef</span> "," * console.log( enlarge.cloneContents() ); "," * "," * </script> "," * </body> "," * ``` "," */ ",""," /** "," * 调整range的边界,使其\"放大\"到最近的父节点,根据参数 toBlock 的取值, 可以 "," * 要求扩大之后的父节点是block节点 "," * @method enlarge "," * @param { Boolean } toBlock 是否要求扩大之后的父节点必须是block节点 "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * "," * <body> "," * <div> "," * <span> "," * <b>a<!-- 选区开始 -->b</b> "," * cdef "," * <!-- 选区结束 --> "," * </span> "," * </div> "," * "," * <script> "," * "," * range.enlarge( true ); "," * "," * //output: <div><span><b>ab</b>cdef</span></div> "," * console.log( enlarge.cloneContents() ); "," * "," * </script> "," * </body> "," * ``` "," */ "," enlarge: function ( toBlock, stopFn) { "," var isBody = domUtils. isBody, "," pre, node, tmp = this . document. createTextNode( '' ); "," if ( toBlock) { "," node = this . startContainer; "," if ( node. nodeType == 1 ) { "," if ( node. childNodes[ this . startOffset]) { "," pre = node = node. childNodes[ this . startOffset] "," } else { "," node. appendChild( tmp); "," pre = node = tmp; "," } "," } else { "," pre = node; "," } "," while ( 1 ) { "," if ( domUtils. isBlockElm( node)) { "," node = pre; "," while (( pre = node. previousSibling) && ! domUtils. isBlockElm( pre)) { "," node = pre; "," } "," this . setStartBefore( node); "," break ; "," } "," pre = node; "," node = node. parentNode; "," } "," node = this . endContainer; "," if ( node. nodeType == 1 ) { "," if ( pre = node. childNodes[ this . endOffset]) { "," node. insertBefore( tmp, pre); "," } else { "," node. appendChild( tmp); "," } "," pre = node = tmp; "," } else { "," pre = node; "," } "," while ( 1 ) { "," if ( domUtils. isBlockElm( node)) { "," node = pre; "," while (( pre = node. nextSibling) && ! domUtils. isBlockElm( pre)) { "," node = pre; "," } "," this . setEndAfter( node); "," break ; "," } "," pre = node; "," node = node. parentNode; "," } "," if ( tmp. parentNode === this . endContainer) { "," this . endOffset--; "," } "," domUtils. remove( tmp); "," } ",""," // 扩展边界到最大 "," if (! this . collapsed) { "," while ( this . startOffset == 0 ) { "," if ( stopFn && stopFn( this . startContainer)) { "," break ; "," } "," if ( isBody( this . startContainer)) { "," break ; "," } "," this . setStartBefore( this . startContainer); "," } "," while ( this . endOffset == ( this . endContainer. nodeType == 1 ? this . endContainer. childNodes. length : this . endContainer. nodeValue. length)) { "," if ( stopFn && stopFn( this . endContainer)) { "," break ; "," } "," if ( isBody( this . endContainer)) { "," break ; "," } "," this . setEndAfter( this . endContainer); "," } "," } "," return this ; "," } , ",""," /** "," * 调整Range的边界,使其\"缩小\"到最合适的位置 "," * @method adjustmentBoundary "," * @return { UE.dom.Range } 当前range对象 "," * @see UE.dom.Range:shrinkBoundary() "," */ "," adjustmentBoundary: function () { "," if (! this . collapsed) { "," while (! domUtils. isBody( this . startContainer) && "," this . startOffset == this . startContainer[ this . startContainer. nodeType == 3 ? 'nodeValue' : 'childNodes' ]. length && "," this . startContainer[ this . startContainer. nodeType == 3 ? 'nodeValue' : 'childNodes' ]. length"," ) { ",""," this . setStartAfter( this . startContainer); "," } "," while (! domUtils. isBody( this . endContainer) && ! this . endOffset && "," this . endContainer[ this . endContainer. nodeType == 3 ? 'nodeValue' : 'childNodes' ]. length"," ) { "," this . setEndBefore( this . endContainer); "," } "," } "," return this ; "," } , "," /* "," * 给range选区中的内容添加给定的标签,主要用于inline标签 "," * @name applyInlineStyle "," * @grammar range.applyInlineStyle(tagName) => Range //tagName为需要添加的样式标签名 "," * @grammar range.applyInlineStyle(tagName,attrs) => Range //attrs为属性json对象 "," * @desc "," * <code type=\"html\"><p>xxxx[xxxx]x</p> ==> range.applyInlineStyle(\"strong\") ==> <p>xxxx[<strong>xxxx</strong>]x</p> "," * <p>xx[dd<strong>yyyy</strong>]x</p> ==> range.applyInlineStyle(\"strong\") ==> <p>xx[<strong>ddyyyy</strong>]x</p> "," * <p>xxxx[xxxx]x</p> ==> range.applyInlineStyle(\"strong\",{\"style\":\"font-size:12px\"}) ==> <p>xxxx[<strong style=\"font-size:12px\">xxxx</strong>]x</p></code> "," */ "," applyInlineStyle: function ( tagName, attrs, list) { "," if ( this . collapsed) return this ; "," this . trimBoundary(). enlarge( false , "," function ( node) { "," return node. nodeType == 1 && domUtils. isBlockElm( node) "," } ). adjustmentBoundary(); "," var bookmark = this . createBookmark(), "," end = bookmark. end, "," filterFn = function ( node) { "," return node. nodeType == 1 ? node. tagName. toLowerCase() != 'br' : ! domUtils. isWhitespace( node); "," } , "," current = domUtils. getNextDomNode( bookmark. start, false , filterFn), "," node, "," pre, "," range = this . cloneRange(); "," while ( current && ( domUtils. getPosition( current, end) & domUtils. POSITION_PRECEDING)) { "," if ( current. nodeType == 3 || dtd[ tagName][ current. tagName]) { "," range. setStartBefore( current); "," node = current; "," while ( node && ( node. nodeType == 3 || dtd[ tagName][ node. tagName]) && node !== end) { "," pre = node; "," node = domUtils. getNextDomNode( node, node. nodeType == 1 , null , function ( parent) { "," return dtd[ tagName][ parent. tagName]; "," } ); "," } "," var frag = range. setEndAfter( pre). extractContents(), elm; "," if ( list && list. length > 0 ) { "," var level, top; "," top = level = list[ 0 ]. cloneNode( false ); "," for ( var i = 1 , ci; ci = list[ i++];) { "," level. appendChild( ci. cloneNode( false )); "," level = level. firstChild; "," } "," elm = level; "," } else { "," elm = range. document. createElement( tagName); "," } "," if ( attrs) { "," domUtils. setAttributes( elm, attrs); "," } "," elm. appendChild( frag); "," range. insertNode( list ? top : elm); "," //处理下滑线在a上的情况 "," var aNode; "," if ( tagName == 'span' && attrs. style && /text\\-decoration/ . test( attrs. style) && ( aNode = domUtils. findParentByTagName( elm, 'a' , true ))) { "," domUtils. setAttributes( aNode, attrs); "," domUtils. remove( elm, true ); "," elm = aNode; "," } else { "," domUtils. mergeSibling( elm); "," domUtils. clearEmptySibling( elm); "," } "," //去除子节点相同的 "," domUtils. mergeChild( elm, attrs); "," current = domUtils. getNextDomNode( elm, false , filterFn); "," domUtils. mergeToParent( elm); "," if ( node === end) { "," break ; "," } "," } else { "," current = domUtils. getNextDomNode( current, true , filterFn); "," } "," } "," return this . moveToBookmark( bookmark); "," } , "," /* "," * 对当前range选中的节点,去掉给定的标签节点,但标签中的内容保留,主要用于处理inline元素 "," * @name removeInlineStyle "," * @grammar range.removeInlineStyle(tagNames) => Range //tagNames 为需要去掉的样式标签名,支持\"b\"或者[\"b\",\"i\",\"u\"] "," * @desc "," * <code type=\"html\">xx[x<span>xxx<em>yyy</em>zz]z</span> => range.removeInlineStyle([\"em\"]) => xx[x<span>xxxyyyzz]z</span></code> "," */ "," removeInlineStyle: function ( tagNames) { "," if ( this . collapsed) return this ; "," tagNames = utils. isArray( tagNames) ? tagNames : [ tagNames]; "," this . shrinkBoundary(). adjustmentBoundary(); "," var start = this . startContainer, end = this . endContainer; "," while ( 1 ) { "," if ( start. nodeType == 1 ) { "," if ( utils. indexOf( tagNames, start. tagName. toLowerCase()) > - 1 ) { "," break ; "," } "," if ( start. tagName. toLowerCase() == 'body' ) { "," start = null ; "," break ; "," } "," } "," start = start. parentNode; "," } "," while ( 1 ) { "," if ( end. nodeType == 1 ) { "," if ( utils. indexOf( tagNames, end. tagName. toLowerCase()) > - 1 ) { "," break ; "," } "," if ( end. tagName. toLowerCase() == 'body' ) { "," end = null ; "," break ; "," } "," } "," end = end. parentNode; "," } "," var bookmark = this . createBookmark(), "," frag, "," tmpRange; "," if ( start) { "," tmpRange = this . cloneRange(). setEndBefore( bookmark. start). setStartBefore( start); "," frag = tmpRange. extractContents(); "," tmpRange. insertNode( frag); "," domUtils. clearEmptySibling( start, true ); "," start. parentNode. insertBefore( bookmark. start, start); "," } "," if ( end) { "," tmpRange = this . cloneRange(). setStartAfter( bookmark. end). setEndAfter( end); "," frag = tmpRange. extractContents(); "," tmpRange. insertNode( frag); "," domUtils. clearEmptySibling( end, false , true ); "," end. parentNode. insertBefore( bookmark. end, end. nextSibling); "," } "," var current = domUtils. getNextDomNode( bookmark. start, false , function ( node) { "," return node. nodeType == 1 ; "," } ), next; "," while ( current && current !== bookmark. end) { "," next = domUtils. getNextDomNode( current, true , function ( node) { "," return node. nodeType == 1 ; "," } ); "," if ( utils. indexOf( tagNames, current. tagName. toLowerCase()) > - 1 ) { "," domUtils. remove( current, true ); "," } "," current = next; "," } "," return this . moveToBookmark( bookmark); "," } , ",""," /** "," * 获取当前选区中的首个自闭合的节点 "," * @method getClosedNode "," * @return { Node | NULL } 如果在当前选区中存在自闭合的节点, 则返回该节点, 否则返回NULL "," * @example "," * ```html "," * <body> "," * <div> "," * <!-- 选区开始 --> "," * <a></a> "," * <span><img></span> "," * <i></i> "," * <!-- 选区结束 --> "," * </div> "," * "," * <script> "," * "," * var node = range.getCloseNode(); "," * "," * //output: IMG "," * console.log( node.tagName ); "," * "," * </script> "," * </body> "," * ``` "," */ "," getClosedNode: function () { "," var node; "," if (! this . collapsed) { "," var range = this . cloneRange(). adjustmentBoundary(). shrinkBoundary(); "," if ( selectOneNode( range)) { "," var child = range. startContainer. childNodes[ range. startOffset]; "," if ( child && child. nodeType == 1 && ( dtd. $empty[ child. tagName] || dtd. $nonChild[ child. tagName])) { "," node = child; "," } "," } "," } "," return node; "," } , ",""," /** "," * 选中当前选区 "," * @method select "," * @return { UE.dom.Range } 返回当前Range对象 "," */ "," select: browser. ie ? function ( noFillData, textRange) { "," var nativeRange; "," if (! this . collapsed) "," this . shrinkBoundary(); "," var node = this . getClosedNode(); "," if ( node && ! textRange) { "," try { "," nativeRange = this . document. body. createControlRange(); "," nativeRange. addElement( node); "," nativeRange. select(); "," } catch ( e) {} "," return this ; "," } "," var bookmark = this . createBookmark(), "," start = bookmark. start, "," end; "," nativeRange = this . document. body. createTextRange(); "," nativeRange. moveToElementText( start); "," nativeRange. moveStart( 'character' , 1 ); "," if (! this . collapsed) { "," var nativeRangeEnd = this . document. body. createTextRange(); "," end = bookmark. end; "," nativeRangeEnd. moveToElementText( end); "," nativeRange. setEndPoint( 'EndToEnd' , nativeRangeEnd); "," } else { "," if (! noFillData && this . startContainer. nodeType != 3 ) { "," //使用<span>|x<span>固定住光标 "," var tmpText = this . document. createTextNode( fillChar), "," tmp = this . document. createElement( 'span' ); "," tmp. appendChild( this . document. createTextNode( fillChar)); "," start. parentNode. insertBefore( tmp, start); "," start. parentNode. insertBefore( tmpText, start); "," //当点b,i,u时,不能清除i上边的b "," removeFillData( this . document, tmpText); "," fillData = tmpText; "," mergeSibling( tmp, 'previousSibling' ); "," mergeSibling( start, 'nextSibling' ); "," nativeRange. moveStart( 'character' , - 1 ); "," nativeRange. collapse( true ); "," } "," } "," this . moveToBookmark( bookmark); "," tmp && domUtils. remove( tmp); "," //IE在隐藏状态下不支持range操作,catch一下 "," try { "," nativeRange. select(); "," } catch ( e) { "," } "," return this ; "," } : function ( notInsertFillData) { "," function checkOffset( rng) { ",""," function check( node, offset, dir) { "," if ( node. nodeType == 3 && node. nodeValue. length < offset) { "," rng[ dir + 'Offset' ] = node. nodeValue. length"," } "," } "," check( rng. startContainer, rng. startOffset, 'start' ); "," check( rng. endContainer, rng. endOffset, 'end' ); "," } "," var win = domUtils. getWindow( this . document), "," sel = win. getSelection(), "," txtNode; "," //FF下关闭自动长高时滚动条在关闭dialog时会跳 "," //ff下如果不body.focus将不能定位闭合光标到编辑器内 "," browser. gecko ? this . document. body. focus() : win. focus(); "," if ( sel) { "," sel. removeAllRanges(); "," // trace:870 chrome/safari后边是br对于闭合得range不能定位 所以去掉了判断 "," // this.startContainer.nodeType != 3 &&! ((child = this.startContainer.childNodes[this.startOffset]) && child.nodeType == 1 && child.tagName == 'BR' "," if ( this . collapsed && ! notInsertFillData) { ","// //opear如果没有节点接着,原生的不能够定位,不能在body的第一级插入空白节点 ","// if (notInsertFillData && browser.opera && !domUtils.isBody(this.startContainer) && this.startContainer.nodeType == 1) { ","// var tmp = this.document.createTextNode(''); ","// this.insertNode(tmp).setStart(tmp, 0).collapse(true); ","// } ","// "," //处理光标落在文本节点的情况 "," //处理以下的情况 "," //<b>|xxxx</b> "," //<b>xxxx</b>|xxxx "," //xxxx<b>|</b> "," var start = this . startContainer, child = start; "," if ( start. nodeType == 1 ) { "," child = start. childNodes[ this . startOffset]; ",""," } "," if ( !( start. nodeType == 3 && this . startOffset) && "," ( child ? "," (! child. previousSibling || child. previousSibling. nodeType != 3 ) "," : "," (! start. lastChild || start. lastChild. nodeType != 3 ) "," ) "," ) { "," txtNode = this . document. createTextNode( fillChar); "," //跟着前边走 "," this . insertNode( txtNode); "," removeFillData( this . document, txtNode); "," mergeSibling( txtNode, 'previousSibling' ); "," mergeSibling( txtNode, 'nextSibling' ); "," fillData = txtNode; "," this . setStart( txtNode, browser. webkit ? 1 : 0 ). collapse( true ); "," } "," } "," var nativeRange = this . document. createRange(); "," if ( this . collapsed && browser. opera && this . startContainer. nodeType == 1 ) { "," var child = this . startContainer. childNodes[ this . startOffset]; "," if (! child) { "," //往前靠拢 "," child = this . startContainer. lastChild; "," if ( child && domUtils. isBr( child)) { "," this . setStartBefore( child). collapse( true ); "," } "," } else { "," //向后靠拢 "," while ( child && domUtils. isBlockElm( child)) { "," if ( child. nodeType == 1 && child. childNodes[ 0 ]) { "," child = child. childNodes[ 0 ] "," } else { "," break ; "," } "," } "," child && this . setStartBefore( child). collapse( true ) "," } ",""," } "," //是createAddress最后一位算的不准,现在这里进行微调 "," checkOffset( this ); "," nativeRange. setStart( this . startContainer, this . startOffset); "," nativeRange. setEnd( this . endContainer, this . endOffset); "," sel. addRange( nativeRange); "," } "," return this ; "," } , ",""," /** "," * 滚动到当前range开始的位置 "," * @method scrollToView "," * @param { Window } win 当前range对象所属的window对象 "," * @return { UE.dom.Range } 当前Range对象 "," */ ",""," /** "," * 滚动到距离当前range开始位置 offset 的位置处 "," * @method scrollToView "," * @param { Window } win 当前range对象所属的window对象 "," * @param { Number } offset 距离range开始位置处的偏移量, 如果为正数, 则向下偏移, 反之, 则向上偏移 "," * @return { UE.dom.Range } 当前Range对象 "," */ "," scrollToView: function ( win, offset) { "," win = win ? window : domUtils. getWindow( this . document); "," var me = this , "," span = me. document. createElement( 'span' ); "," //trace:717 "," span. innerHTML = ' ' ; "," me. cloneRange(). insertNode( span); "," domUtils. scrollToView( span, win, offset); "," domUtils. remove( span); "," return me; "," } , "," /** "," * 判断当前选区内容是否占位符 "," * @method inFillChar "," * @return { Boolean } 如果是占位符返回true,否则返回false "," */ "," inFillChar : function () { "," var start = this . startContainer; "," if ( this . collapsed && start. nodeType == 3 "," && start. nodeValue. replace( new RegExp( '^' + domUtils. fillChar), '' ). length + 1 == start. nodeValue. length"," ) { "," return true ; "," } "," return false ; "," } , ",""," /** "," * 保存 "," * @method createAddress "," * @return { Boolean } 返回开始和结束的位置 "," * @example "," * ```html "," * <body> "," * <p> "," * aaaa "," * <em> "," * <!-- 选区开始 --> "," * bbbb "," * <!-- 选区结束 --> "," * </em> "," * </p> "," * "," * <script> "," * //output: {startAddress:[0,1,0,0],endAddress:[0,1,0,4]} "," * console.log( range.createAddress() ); "," * </script> "," * </body> "," * ``` "," */ "," createAddress : function ( ignoreEnd, ignoreTxt) { "," var addr = {} , me = this ; ",""," function getAddress( isStart) { "," var node = isStart ? me. startContainer : me. endContainer; "," var parents = domUtils. findParents( node, true , function ( node) { return ! domUtils. isBody( node) } ), "," addrs = []; "," for ( var i = 0 , ci; ci = parents[ i++];) { "," addrs. push( domUtils. getNodeIndex( ci, ignoreTxt)); "," } "," var firstIndex = 0 ; ",""," if ( ignoreTxt) { "," if ( node. nodeType == 3 ) { "," var tmpNode = node. previousSibling; "," while ( tmpNode && tmpNode. nodeType == 3 ) { "," firstIndex += tmpNode. nodeValue. replace( fillCharReg, '' ). length; "," tmpNode = tmpNode. previousSibling; "," } "," firstIndex += ( isStart ? me. startOffset : me. endOffset) // - (fillCharReg.test(node.nodeValue) ? 1 : 0 ) "," } else { "," node = node. childNodes[ isStart ? me. startOffset : me. endOffset]; "," if ( node) { "," firstIndex = domUtils. getNodeIndex( node, ignoreTxt); "," } else { "," node = isStart ? me. startContainer : me. endContainer; "," var first = node. firstChild; "," while ( first) { "," if ( domUtils. isFillChar( first)) { "," first = first. nextSibling; "," continue ; "," } "," firstIndex++; "," if ( first. nodeType == 3 ) { "," while ( first && first. nodeType == 3 ) { "," first = first. nextSibling; "," } "," } else { "," first = first. nextSibling; "," } "," } "," } "," } ",""," } else { "," firstIndex = isStart ? domUtils. isFillChar( node) ? 0 : me. startOffset : me. endOffset"," } "," if ( firstIndex < 0 ) { "," firstIndex = 0 ; "," } "," addrs. push( firstIndex); "," return addrs; "," } "," addr. startAddress = getAddress( true ); "," if (! ignoreEnd) { "," addr. endAddress = me. collapsed ? []. concat( addr. startAddress) : getAddress(); "," } "," return addr; "," } , "," /** "," * 保存 "," * @method createAddress "," * @return { Boolean } 返回开始和结束的位置 "," * @example "," * ```html "," * <body> "," * <p> "," * aaaa "," * <em> "," * <!-- 选区开始 --> "," * bbbb "," * <!-- 选区结束 --> "," * </em> "," * </p> "," * "," * <script> "," * var range = editor.selection.getRange(); "," * range.moveToAddress({startAddress:[0,1,0,0],endAddress:[0,1,0,4]}); "," * range.select(); "," * //output: 'bbbb' "," * console.log(editor.selection.getText()); "," * </script> "," * </body> "," * ``` "," */ "," moveToAddress : function ( addr, ignoreEnd) { "," var me = this ; "," function getNode( address, isStart) { "," var tmpNode = me. document. body, "," parentNode, offset; "," for ( var i= 0 , ci, l= address. length; i< l; i++) { "," ci = address[ i]; "," parentNode = tmpNode; "," tmpNode = tmpNode. childNodes[ ci]; "," if (! tmpNode) { "," offset = ci; "," break ; "," } "," } "," if ( isStart) { "," if ( tmpNode) { "," me. setStartBefore( tmpNode) "," } else { "," me. setStart( parentNode, offset) "," } "," } else { "," if ( tmpNode) { "," me. setEndBefore( tmpNode) "," } else { "," me. setEnd( parentNode, offset) "," } "," } "," } "," getNode( addr. startAddress, true ); "," ! ignoreEnd && addr. endAddress && getNode( addr. endAddress); "," return me; "," } , ",""," /** "," * 判断给定的Range对象是否和当前Range对象表示的是同一个选区 "," * @method equals "," * @param { UE.dom.Range } 需要判断的Range对象 "," * @return { Boolean } 如果给定的Range对象与当前Range对象表示的是同一个选区, 则返回true, 否则返回false "," equals : function(rng){ "," for(var p in this){ "," if(this.hasOwnProperty(p)){ "," if(this[p] !== rng[p]) "," return false "," } "," } "," return true; ",""," }, ",""," /** "," * 遍历range内的节点。每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 "," * 作为其参数。 "," * @method traversal "," * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 "," * @return { UE.dom.Range } 当前range对象 "," * @example "," * ```html "," * "," * <body> "," * "," * <!-- 选区开始 --> "," * <span></span> "," * <a></a> "," * <!-- 选区结束 --> "," * </body> "," * "," * <script> "," * "," * //output: <span></span><a></a> "," * console.log( range.cloneContents() ); "," * "," * range.traversal( function ( node ) { "," * "," * if ( node.nodeType === 1 ) { "," * node.className = \"test\"; "," * } "," * "," * } ); "," * "," * //output: <span class=\"test\"></span><a class=\"test\"></a> "," * console.log( range.cloneContents() ); "," * "," * </script> "," * ``` "," */ ",""," /** "," * 遍历range内的节点。 "," * 每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 "," * 作为其参数。 "," * 可以通过参数项 filterFn 来指定一个过滤器, 只有符合该过滤器过滤规则的节点才会触 "," * 发doFn函数的执行 "," * @method traversal "," * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 "," * @param { Function } filterFn 过滤器, 该函数接受当前遍历的节点作为参数, 如果该节点满足过滤 "," * 规则, 请返回true, 该节点会触发doFn, 否则, 请返回false, 则该节点不 "," * 会触发doFn。 "," * @return { UE.dom.Range } 当前range对象 "," * @see UE.dom.Range:traversal(Function) "," * @example "," * ```html "," * "," * <body> "," * "," * <!-- 选区开始 --> "," * <span></span> "," * <a></a> "," * <!-- 选区结束 --> "," * </body> "," * "," * <script> "," * "," * //output: <span></span><a></a> "," * console.log( range.cloneContents() ); "," * "," * range.traversal( function ( node ) { "," * "," * node.className = \"test\"; "," * "," * }, function ( node ) { "," * return node.nodeType === 1; "," * } ); "," * "," * //output: <span class=\"test\"></span><a class=\"test\"></a> "," * console.log( range.cloneContents() ); "," * "," * </script> "," * ``` "," */ "," traversal: function ( doFn, filterFn) { "," if ( this . collapsed) "," return this ; "," var bookmark = this . createBookmark(), "," end = bookmark. end, "," current = domUtils. getNextDomNode( bookmark. start, false , filterFn); "," while ( current && current !== end && ( domUtils. getPosition( current, end) & domUtils. POSITION_PRECEDING)) { "," var tmpNode = domUtils. getNextDomNode( current, false , filterFn); "," doFn( current); "," current = tmpNode; "," } "," return this . moveToBookmark( bookmark); "," } "," } ; ","} )(); "];
+_$jscoverage['core/Range.js'][22]++;
+(function () {
+ _$jscoverage['core/Range.js'][23]++;
+ var guid = 0, fillChar = domUtils.fillChar, fillData;
+ _$jscoverage['core/Range.js'][31]++;
+ function updateCollapse(range) {
+ _$jscoverage['core/Range.js'][32]++;
+ range.collapsed = (range.startContainer && range.endContainer && (range.startContainer === range.endContainer) && (range.startOffset == range.endOffset));
+}
+ _$jscoverage['core/Range.js'][38]++;
+ function selectOneNode(rng) {
+ _$jscoverage['core/Range.js'][39]++;
+ return ((! rng.collapsed) && (rng.startContainer.nodeType == 1) && (rng.startContainer === rng.endContainer) && ((rng.endOffset - rng.startOffset) == 1));
+}
+ _$jscoverage['core/Range.js'][41]++;
+ function setEndPoint(toStart, node, offset, range) {
+ _$jscoverage['core/Range.js'][43]++;
+ if (((node.nodeType == 1) && (dtd.$empty[node.tagName] || dtd.$nonChild[node.tagName]))) {
+ _$jscoverage['core/Range.js'][44]++;
+ offset = (domUtils.getNodeIndex(node) + (toStart? 0: 1));
+ _$jscoverage['core/Range.js'][45]++;
+ node = node.parentNode;
+ }
+ _$jscoverage['core/Range.js'][47]++;
+ if (toStart) {
+ _$jscoverage['core/Range.js'][48]++;
+ range.startContainer = node;
+ _$jscoverage['core/Range.js'][49]++;
+ range.startOffset = offset;
+ _$jscoverage['core/Range.js'][50]++;
+ if ((! range.endContainer)) {
+ _$jscoverage['core/Range.js'][51]++;
+ range.collapse(true);
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][54]++;
+ range.endContainer = node;
+ _$jscoverage['core/Range.js'][55]++;
+ range.endOffset = offset;
+ _$jscoverage['core/Range.js'][56]++;
+ if ((! range.startContainer)) {
+ _$jscoverage['core/Range.js'][57]++;
+ range.collapse(false);
+ }
+ }
+ _$jscoverage['core/Range.js'][60]++;
+ updateCollapse(range);
+ _$jscoverage['core/Range.js'][61]++;
+ return range;
+}
+ _$jscoverage['core/Range.js'][64]++;
+ function execContentsAction(range, action) {
+ _$jscoverage['core/Range.js'][67]++;
+ var start = range.startContainer, end = range.endContainer, startOffset = range.startOffset, endOffset = range.endOffset, doc = range.document, frag = doc.createDocumentFragment(), tmpStart, tmpEnd;
+ _$jscoverage['core/Range.js'][74]++;
+ if ((start.nodeType == 1)) {
+ _$jscoverage['core/Range.js'][75]++;
+ start = (start.childNodes[startOffset] || (tmpStart = start.appendChild(doc.createTextNode(""))));
+ }
+ _$jscoverage['core/Range.js'][77]++;
+ if ((end.nodeType == 1)) {
+ _$jscoverage['core/Range.js'][78]++;
+ end = (end.childNodes[endOffset] || (tmpEnd = end.appendChild(doc.createTextNode(""))));
+ }
+ _$jscoverage['core/Range.js'][80]++;
+ if (((start === end) && (start.nodeType == 3))) {
+ _$jscoverage['core/Range.js'][81]++;
+ frag.appendChild(doc.createTextNode(start.substringData(startOffset, (endOffset - startOffset))));
+ _$jscoverage['core/Range.js'][83]++;
+ if (action) {
+ _$jscoverage['core/Range.js'][84]++;
+ start.deleteData(startOffset, (endOffset - startOffset));
+ _$jscoverage['core/Range.js'][85]++;
+ range.collapse(true);
+ }
+ _$jscoverage['core/Range.js'][87]++;
+ return frag;
+ }
+ _$jscoverage['core/Range.js'][89]++;
+ var current, currentLevel, clone = frag, startParents = domUtils.findParents(start, true), endParents = domUtils.findParents(end, true);
+ _$jscoverage['core/Range.js'][91]++;
+ for (var i = 0; (startParents[i] == endParents[i]);) {
+ _$jscoverage['core/Range.js'][92]++;
+ (i++);
+}
+ _$jscoverage['core/Range.js'][94]++;
+ for (var j = i, si; (si = startParents[j]); (j++)) {
+ _$jscoverage['core/Range.js'][95]++;
+ current = si.nextSibling;
+ _$jscoverage['core/Range.js'][96]++;
+ if ((si == start)) {
+ _$jscoverage['core/Range.js'][97]++;
+ if ((! tmpStart)) {
+ _$jscoverage['core/Range.js'][98]++;
+ if ((range.startContainer.nodeType == 3)) {
+ _$jscoverage['core/Range.js'][99]++;
+ clone.appendChild(doc.createTextNode(start.nodeValue.slice(startOffset)));
+ _$jscoverage['core/Range.js'][101]++;
+ if (action) {
+ _$jscoverage['core/Range.js'][102]++;
+ start.deleteData(startOffset, (start.nodeValue.length - startOffset));
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][105]++;
+ clone.appendChild(((! action)? start.cloneNode(true): start));
+ }
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][109]++;
+ currentLevel = si.cloneNode(false);
+ _$jscoverage['core/Range.js'][110]++;
+ clone.appendChild(currentLevel);
+ }
+ _$jscoverage['core/Range.js'][112]++;
+ while (current) {
+ _$jscoverage['core/Range.js'][113]++;
+ if (((current === end) || (current === endParents[j]))) {
+ _$jscoverage['core/Range.js'][114]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][116]++;
+ si = current.nextSibling;
+ _$jscoverage['core/Range.js'][117]++;
+ clone.appendChild(((! action)? current.cloneNode(true): current));
+ _$jscoverage['core/Range.js'][118]++;
+ current = si;
+}
+ _$jscoverage['core/Range.js'][120]++;
+ clone = currentLevel;
+}
+ _$jscoverage['core/Range.js'][122]++;
+ clone = frag;
+ _$jscoverage['core/Range.js'][123]++;
+ if ((! startParents[i])) {
+ _$jscoverage['core/Range.js'][124]++;
+ clone.appendChild(startParents[(i - 1)].cloneNode(false));
+ _$jscoverage['core/Range.js'][125]++;
+ clone = clone.firstChild;
+ }
+ _$jscoverage['core/Range.js'][127]++;
+ for (var j = i, ei; (ei = endParents[j]); (j++)) {
+ _$jscoverage['core/Range.js'][128]++;
+ current = ei.previousSibling;
+ _$jscoverage['core/Range.js'][129]++;
+ if ((ei == end)) {
+ _$jscoverage['core/Range.js'][130]++;
+ if (((! tmpEnd) && (range.endContainer.nodeType == 3))) {
+ _$jscoverage['core/Range.js'][131]++;
+ clone.appendChild(doc.createTextNode(end.substringData(0, endOffset)));
+ _$jscoverage['core/Range.js'][133]++;
+ if (action) {
+ _$jscoverage['core/Range.js'][134]++;
+ end.deleteData(0, endOffset);
+ }
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][138]++;
+ currentLevel = ei.cloneNode(false);
+ _$jscoverage['core/Range.js'][139]++;
+ clone.appendChild(currentLevel);
+ }
+ _$jscoverage['core/Range.js'][142]++;
+ if (((j != i) || (! startParents[i]))) {
+ _$jscoverage['core/Range.js'][143]++;
+ while (current) {
+ _$jscoverage['core/Range.js'][144]++;
+ if ((current === start)) {
+ _$jscoverage['core/Range.js'][145]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][147]++;
+ ei = current.previousSibling;
+ _$jscoverage['core/Range.js'][148]++;
+ clone.insertBefore(((! action)? current.cloneNode(true): current), clone.firstChild);
+ _$jscoverage['core/Range.js'][149]++;
+ current = ei;
+}
+ }
+ _$jscoverage['core/Range.js'][152]++;
+ clone = currentLevel;
+}
+ _$jscoverage['core/Range.js'][154]++;
+ if (action) {
+ _$jscoverage['core/Range.js'][155]++;
+ range.setStartBefore(((! endParents[i])? endParents[(i - 1)]: ((! startParents[i])? startParents[(i - 1)]: endParents[i]))).collapse(true);
+ }
+ _$jscoverage['core/Range.js'][157]++;
+ (tmpStart && domUtils.remove(tmpStart));
+ _$jscoverage['core/Range.js'][158]++;
+ (tmpEnd && domUtils.remove(tmpEnd));
+ _$jscoverage['core/Range.js'][159]++;
+ return frag;
+}
+ _$jscoverage['core/Range.js'][193]++;
+ var Range = (dom.Range = (function (document) {
+ _$jscoverage['core/Range.js'][194]++;
+ var me = this;
+ _$jscoverage['core/Range.js'][195]++;
+ me.startContainer = (me.startOffset = (me.endContainer = (me.endOffset = null)));
+ _$jscoverage['core/Range.js'][199]++;
+ me.document = document;
+ _$jscoverage['core/Range.js'][200]++;
+ me.collapsed = true;
+}));
+ _$jscoverage['core/Range.js'][208]++;
+ function removeFillData(doc, excludeNode) {
+ _$jscoverage['core/Range.js'][209]++;
+ try {
+ _$jscoverage['core/Range.js'][210]++;
+ if ((fillData && domUtils.inDoc(fillData, doc))) {
+ _$jscoverage['core/Range.js'][211]++;
+ if ((! fillData.nodeValue.replace(fillCharReg, "").length)) {
+ _$jscoverage['core/Range.js'][212]++;
+ var tmpNode = fillData.parentNode;
+ _$jscoverage['core/Range.js'][213]++;
+ domUtils.remove(fillData);
+ _$jscoverage['core/Range.js'][214]++;
+ while ((tmpNode && domUtils.isEmptyInlineElement(tmpNode) && (browser.safari? (! (domUtils.getPosition(tmpNode, excludeNode) & domUtils.POSITION_CONTAINS)): (! tmpNode.contains(excludeNode))))) {
+ _$jscoverage['core/Range.js'][218]++;
+ fillData = tmpNode.parentNode;
+ _$jscoverage['core/Range.js'][219]++;
+ domUtils.remove(tmpNode);
+ _$jscoverage['core/Range.js'][220]++;
+ tmpNode = fillData;
+}
+ }
+ else {
+ _$jscoverage['core/Range.js'][223]++;
+ fillData.nodeValue = fillData.nodeValue.replace(fillCharReg, "");
+ }
+ }
+ }
+ catch (e) {
+ }
+}
+ _$jscoverage['core/Range.js'][235]++;
+ function mergeSibling(node, dir) {
+ _$jscoverage['core/Range.js'][236]++;
+ var tmpNode;
+ _$jscoverage['core/Range.js'][237]++;
+ node = node[dir];
+ _$jscoverage['core/Range.js'][238]++;
+ while ((node && domUtils.isFillChar(node))) {
+ _$jscoverage['core/Range.js'][239]++;
+ tmpNode = node[dir];
+ _$jscoverage['core/Range.js'][240]++;
+ domUtils.remove(node);
+ _$jscoverage['core/Range.js'][241]++;
+ node = tmpNode;
+}
+}
+ _$jscoverage['core/Range.js'][245]++;
+ Range.prototype = {cloneContents: (function () {
+ _$jscoverage['core/Range.js'][263]++;
+ return (this.collapsed? null: execContentsAction(this, 0));
+}), deleteContents: (function () {
+ _$jscoverage['core/Range.js'][294]++;
+ var txt;
+ _$jscoverage['core/Range.js'][295]++;
+ if ((! this.collapsed)) {
+ _$jscoverage['core/Range.js'][296]++;
+ execContentsAction(this, 1);
+ }
+ _$jscoverage['core/Range.js'][298]++;
+ if (browser.webkit) {
+ _$jscoverage['core/Range.js'][299]++;
+ txt = this.startContainer;
+ _$jscoverage['core/Range.js'][300]++;
+ if (((txt.nodeType == 3) && (! txt.nodeValue.length))) {
+ _$jscoverage['core/Range.js'][301]++;
+ this.setStartBefore(txt).collapse(true);
+ _$jscoverage['core/Range.js'][302]++;
+ domUtils.remove(txt);
+ }
+ }
+ _$jscoverage['core/Range.js'][305]++;
+ return this;
+}), extractContents: (function () {
+ _$jscoverage['core/Range.js'][338]++;
+ return (this.collapsed? null: execContentsAction(this, 2));
+}), setStart: (function (node, offset) {
+ _$jscoverage['core/Range.js'][373]++;
+ return setEndPoint(true, node, offset, this);
+}), setEnd: (function (node, offset) {
+ _$jscoverage['core/Range.js'][407]++;
+ return setEndPoint(false, node, offset, this);
+}), setStartAfter: (function (node) {
+ _$jscoverage['core/Range.js'][440]++;
+ return this.setStart(node.parentNode, (domUtils.getNodeIndex(node) + 1));
+}), setStartBefore: (function (node) {
+ _$jscoverage['core/Range.js'][473]++;
+ return this.setStart(node.parentNode, domUtils.getNodeIndex(node));
+}), setEndAfter: (function (node) {
+ _$jscoverage['core/Range.js'][504]++;
+ return this.setEnd(node.parentNode, (domUtils.getNodeIndex(node) + 1));
+}), setEndBefore: (function (node) {
+ _$jscoverage['core/Range.js'][535]++;
+ return this.setEnd(node.parentNode, domUtils.getNodeIndex(node));
+}), setStartAtFirst: (function (node) {
+ _$jscoverage['core/Range.js'][568]++;
+ return this.setStart(node, 0);
+}), setStartAtLast: (function (node) {
+ _$jscoverage['core/Range.js'][602]++;
+ return this.setStart(node, ((node.nodeType == 3)? node.nodeValue.length: node.childNodes.length));
+}), setEndAtFirst: (function (node) {
+ _$jscoverage['core/Range.js'][633]++;
+ return this.setEnd(node, 0);
+}), setEndAtLast: (function (node) {
+ _$jscoverage['core/Range.js'][665]++;
+ return this.setEnd(node, ((node.nodeType == 3)? node.nodeValue.length: node.childNodes.length));
+}), selectNode: (function (node) {
+ _$jscoverage['core/Range.js'][691]++;
+ return this.setStartBefore(node).setEndAfter(node);
+}), selectNodeContents: (function (node) {
+ _$jscoverage['core/Range.js'][720]++;
+ return this.setStart(node, 0).setEndAtLast(node);
+}), cloneRange: (function () {
+ _$jscoverage['core/Range.js'][750]++;
+ var me = this;
+ _$jscoverage['core/Range.js'][751]++;
+ return new Range(me.document).setStart(me.startContainer, me.startOffset).setEnd(me.endContainer, me.endOffset);
+}), collapse: (function (toStart) {
+ _$jscoverage['core/Range.js'][824]++;
+ var me = this;
+ _$jscoverage['core/Range.js'][825]++;
+ if (toStart) {
+ _$jscoverage['core/Range.js'][826]++;
+ me.endContainer = me.startContainer;
+ _$jscoverage['core/Range.js'][827]++;
+ me.endOffset = me.startOffset;
+ }
+ else {
+ _$jscoverage['core/Range.js'][829]++;
+ me.startContainer = me.endContainer;
+ _$jscoverage['core/Range.js'][830]++;
+ me.startOffset = me.endOffset;
+ }
+ _$jscoverage['core/Range.js'][832]++;
+ me.collapsed = true;
+ _$jscoverage['core/Range.js'][833]++;
+ return me;
+}), shrinkBoundary: (function (ignoreEnd) {
+ _$jscoverage['core/Range.js'][880]++;
+ var me = this, child, collapsed = me.collapsed;
+ _$jscoverage['core/Range.js'][882]++;
+ function check(node) {
+ _$jscoverage['core/Range.js'][883]++;
+ return ((node.nodeType == 1) && (! domUtils.isBookmarkNode(node)) && (! dtd.$empty[node.tagName]) && (! dtd.$nonChild[node.tagName]));
+}
+ _$jscoverage['core/Range.js'][885]++;
+ while (((me.startContainer.nodeType == 1) && (child = me.startContainer.childNodes[me.startOffset]) && check(child))) {
+ _$jscoverage['core/Range.js'][888]++;
+ me.setStart(child, 0);
+}
+ _$jscoverage['core/Range.js'][890]++;
+ if (collapsed) {
+ _$jscoverage['core/Range.js'][891]++;
+ return me.collapse(true);
+ }
+ _$jscoverage['core/Range.js'][893]++;
+ if ((! ignoreEnd)) {
+ _$jscoverage['core/Range.js'][894]++;
+ while (((me.endContainer.nodeType == 1) && (me.endOffset > 0) && (child = me.endContainer.childNodes[(me.endOffset - 1)]) && check(child))) {
+ _$jscoverage['core/Range.js'][898]++;
+ me.setEnd(child, child.childNodes.length);
+}
+ }
+ _$jscoverage['core/Range.js'][901]++;
+ return me;
+}), getCommonAncestor: (function (includeSelf, ignoreTextNode) {
+ _$jscoverage['core/Range.js'][1043]++;
+ var me = this, start = me.startContainer, end = me.endContainer;
+ _$jscoverage['core/Range.js'][1046]++;
+ if ((start === end)) {
+ _$jscoverage['core/Range.js'][1047]++;
+ if ((includeSelf && selectOneNode(this))) {
+ _$jscoverage['core/Range.js'][1048]++;
+ start = start.childNodes[me.startOffset];
+ _$jscoverage['core/Range.js'][1049]++;
+ if ((start.nodeType == 1)) {
+ _$jscoverage['core/Range.js'][1050]++;
+ return start;
+ }
+ }
+ _$jscoverage['core/Range.js'][1053]++;
+ return ((ignoreTextNode && (start.nodeType == 3))? start.parentNode: start);
+ }
+ _$jscoverage['core/Range.js'][1055]++;
+ return domUtils.getCommonAncestor(start, end);
+}), trimBoundary: (function (ignoreEnd) {
+ _$jscoverage['core/Range.js'][1132]++;
+ this.txtToElmBoundary();
+ _$jscoverage['core/Range.js'][1133]++;
+ var start = this.startContainer, offset = this.startOffset, collapsed = this.collapsed, end = this.endContainer;
+ _$jscoverage['core/Range.js'][1137]++;
+ if ((start.nodeType == 3)) {
+ _$jscoverage['core/Range.js'][1138]++;
+ if ((offset == 0)) {
+ _$jscoverage['core/Range.js'][1139]++;
+ this.setStartBefore(start);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1141]++;
+ if ((offset >= start.nodeValue.length)) {
+ _$jscoverage['core/Range.js'][1142]++;
+ this.setStartAfter(start);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1144]++;
+ var textNode = domUtils.split(start, offset);
+ _$jscoverage['core/Range.js'][1146]++;
+ if ((start === end)) {
+ _$jscoverage['core/Range.js'][1147]++;
+ this.setEnd(textNode, (this.endOffset - offset));
+ }
+ else {
+ _$jscoverage['core/Range.js'][1148]++;
+ if ((start.parentNode === end)) {
+ _$jscoverage['core/Range.js'][1149]++;
+ this.endOffset += 1;
+ }
+ }
+ _$jscoverage['core/Range.js'][1151]++;
+ this.setStartBefore(textNode);
+ }
+ }
+ _$jscoverage['core/Range.js'][1154]++;
+ if (collapsed) {
+ _$jscoverage['core/Range.js'][1155]++;
+ return this.collapse(true);
+ }
+ }
+ _$jscoverage['core/Range.js'][1158]++;
+ if ((! ignoreEnd)) {
+ _$jscoverage['core/Range.js'][1159]++;
+ offset = this.endOffset;
+ _$jscoverage['core/Range.js'][1160]++;
+ end = this.endContainer;
+ _$jscoverage['core/Range.js'][1161]++;
+ if ((end.nodeType == 3)) {
+ _$jscoverage['core/Range.js'][1162]++;
+ if ((offset == 0)) {
+ _$jscoverage['core/Range.js'][1163]++;
+ this.setEndBefore(end);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1165]++;
+ ((offset < end.nodeValue.length) && domUtils.split(end, offset));
+ _$jscoverage['core/Range.js'][1166]++;
+ this.setEndAfter(end);
+ }
+ }
+ }
+ _$jscoverage['core/Range.js'][1170]++;
+ return this;
+}), txtToElmBoundary: (function (ignoreCollapsed) {
+ _$jscoverage['core/Range.js'][1302]++;
+ function adjust(r, c) {
+ _$jscoverage['core/Range.js'][1303]++;
+ var container = r[(c + "Container")], offset = r[(c + "Offset")];
+ _$jscoverage['core/Range.js'][1305]++;
+ if ((container.nodeType == 3)) {
+ _$jscoverage['core/Range.js'][1306]++;
+ if ((! offset)) {
+ _$jscoverage['core/Range.js'][1307]++;
+ (r[("set" + c.replace(/(\w)/, (function (a) {
+ _$jscoverage['core/Range.js'][1308]++;
+ return a.toUpperCase();
+})) + "Before")])(container);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1310]++;
+ if ((offset >= container.nodeValue.length)) {
+ _$jscoverage['core/Range.js'][1311]++;
+ (r[("set" + c.replace(/(\w)/, (function (a) {
+ _$jscoverage['core/Range.js'][1312]++;
+ return a.toUpperCase();
+})) + "After")])(container);
+ }
+ }
+ }
+}
+ _$jscoverage['core/Range.js'][1318]++;
+ if ((ignoreCollapsed || (! this.collapsed))) {
+ _$jscoverage['core/Range.js'][1319]++;
+ adjust(this, "start");
+ _$jscoverage['core/Range.js'][1320]++;
+ adjust(this, "end");
+ }
+ _$jscoverage['core/Range.js'][1322]++;
+ return this;
+}), insertNode: (function (node) {
+ _$jscoverage['core/Range.js'][1361]++;
+ var first = node, length = 1;
+ _$jscoverage['core/Range.js'][1362]++;
+ if ((node.nodeType == 11)) {
+ _$jscoverage['core/Range.js'][1363]++;
+ first = node.firstChild;
+ _$jscoverage['core/Range.js'][1364]++;
+ length = node.childNodes.length;
+ }
+ _$jscoverage['core/Range.js'][1366]++;
+ this.trimBoundary(true);
+ _$jscoverage['core/Range.js'][1367]++;
+ var start = this.startContainer, offset = this.startOffset;
+ _$jscoverage['core/Range.js'][1369]++;
+ var nextNode = start.childNodes[offset];
+ _$jscoverage['core/Range.js'][1370]++;
+ if (nextNode) {
+ _$jscoverage['core/Range.js'][1371]++;
+ start.insertBefore(node, nextNode);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1373]++;
+ start.appendChild(node);
+ }
+ _$jscoverage['core/Range.js'][1375]++;
+ if ((first.parentNode === this.endContainer)) {
+ _$jscoverage['core/Range.js'][1376]++;
+ this.endOffset = (this.endOffset + length);
+ }
+ _$jscoverage['core/Range.js'][1378]++;
+ return this.setStartBefore(first);
+}), setCursor: (function (toEnd, noFillData) {
+ _$jscoverage['core/Range.js'][1397]++;
+ return this.collapse((! toEnd)).select(noFillData);
+}), createBookmark: (function (serialize, same) {
+ _$jscoverage['core/Range.js'][1410]++;
+ var endNode, startNode = this.document.createElement("span");
+ _$jscoverage['core/Range.js'][1412]++;
+ startNode.style.cssText = "display:none;line-height:0px;";
+ _$jscoverage['core/Range.js'][1413]++;
+ startNode.appendChild(this.document.createTextNode("\u200d"));
+ _$jscoverage['core/Range.js'][1414]++;
+ startNode.id = ("_baidu_bookmark_start_" + (same? "": (guid++)));
+ _$jscoverage['core/Range.js'][1416]++;
+ if ((! this.collapsed)) {
+ _$jscoverage['core/Range.js'][1417]++;
+ endNode = startNode.cloneNode(true);
+ _$jscoverage['core/Range.js'][1418]++;
+ endNode.id = ("_baidu_bookmark_end_" + (same? "": (guid++)));
+ }
+ _$jscoverage['core/Range.js'][1420]++;
+ this.insertNode(startNode);
+ _$jscoverage['core/Range.js'][1421]++;
+ if (endNode) {
+ _$jscoverage['core/Range.js'][1422]++;
+ this.collapse().insertNode(endNode).setEndBefore(endNode);
+ }
+ _$jscoverage['core/Range.js'][1424]++;
+ this.setStartAfter(startNode);
+ _$jscoverage['core/Range.js'][1425]++;
+ return ({start: (serialize? startNode.id: startNode), end: (endNode? (serialize? endNode.id: endNode): null), id: serialize});
+}), moveToBookmark: (function (bookmark) {
+ _$jscoverage['core/Range.js'][1440]++;
+ var start = (bookmark.id? this.document.getElementById(bookmark.start): bookmark.start), end = ((bookmark.end && bookmark.id)? this.document.getElementById(bookmark.end): bookmark.end);
+ _$jscoverage['core/Range.js'][1442]++;
+ this.setStartBefore(start);
+ _$jscoverage['core/Range.js'][1443]++;
+ domUtils.remove(start);
+ _$jscoverage['core/Range.js'][1444]++;
+ if (end) {
+ _$jscoverage['core/Range.js'][1445]++;
+ this.setEndBefore(end);
+ _$jscoverage['core/Range.js'][1446]++;
+ domUtils.remove(end);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1448]++;
+ this.collapse(true);
+ }
+ _$jscoverage['core/Range.js'][1450]++;
+ return this;
+}), enlarge: (function (toBlock, stopFn) {
+ _$jscoverage['core/Range.js'][1511]++;
+ var isBody = domUtils.isBody, pre, node, tmp = this.document.createTextNode("");
+ _$jscoverage['core/Range.js'][1513]++;
+ if (toBlock) {
+ _$jscoverage['core/Range.js'][1514]++;
+ node = this.startContainer;
+ _$jscoverage['core/Range.js'][1515]++;
+ if ((node.nodeType == 1)) {
+ _$jscoverage['core/Range.js'][1516]++;
+ if (node.childNodes[this.startOffset]) {
+ _$jscoverage['core/Range.js'][1517]++;
+ pre = (node = node.childNodes[this.startOffset]);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1519]++;
+ node.appendChild(tmp);
+ _$jscoverage['core/Range.js'][1520]++;
+ pre = (node = tmp);
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][1523]++;
+ pre = node;
+ }
+ _$jscoverage['core/Range.js'][1525]++;
+ while (true) {
+ _$jscoverage['core/Range.js'][1526]++;
+ if (domUtils.isBlockElm(node)) {
+ _$jscoverage['core/Range.js'][1527]++;
+ node = pre;
+ _$jscoverage['core/Range.js'][1528]++;
+ while (((pre = node.previousSibling) && (! domUtils.isBlockElm(pre)))) {
+ _$jscoverage['core/Range.js'][1529]++;
+ node = pre;
+}
+ _$jscoverage['core/Range.js'][1531]++;
+ this.setStartBefore(node);
+ _$jscoverage['core/Range.js'][1532]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][1534]++;
+ pre = node;
+ _$jscoverage['core/Range.js'][1535]++;
+ node = node.parentNode;
+}
+ _$jscoverage['core/Range.js'][1537]++;
+ node = this.endContainer;
+ _$jscoverage['core/Range.js'][1538]++;
+ if ((node.nodeType == 1)) {
+ _$jscoverage['core/Range.js'][1539]++;
+ if ((pre = node.childNodes[this.endOffset])) {
+ _$jscoverage['core/Range.js'][1540]++;
+ node.insertBefore(tmp, pre);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1542]++;
+ node.appendChild(tmp);
+ }
+ _$jscoverage['core/Range.js'][1544]++;
+ pre = (node = tmp);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1546]++;
+ pre = node;
+ }
+ _$jscoverage['core/Range.js'][1548]++;
+ while (true) {
+ _$jscoverage['core/Range.js'][1549]++;
+ if (domUtils.isBlockElm(node)) {
+ _$jscoverage['core/Range.js'][1550]++;
+ node = pre;
+ _$jscoverage['core/Range.js'][1551]++;
+ while (((pre = node.nextSibling) && (! domUtils.isBlockElm(pre)))) {
+ _$jscoverage['core/Range.js'][1552]++;
+ node = pre;
+}
+ _$jscoverage['core/Range.js'][1554]++;
+ this.setEndAfter(node);
+ _$jscoverage['core/Range.js'][1555]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][1557]++;
+ pre = node;
+ _$jscoverage['core/Range.js'][1558]++;
+ node = node.parentNode;
+}
+ _$jscoverage['core/Range.js'][1560]++;
+ if ((tmp.parentNode === this.endContainer)) {
+ _$jscoverage['core/Range.js'][1561]++;
+ (this.endOffset--);
+ }
+ _$jscoverage['core/Range.js'][1563]++;
+ domUtils.remove(tmp);
+ }
+ _$jscoverage['core/Range.js'][1567]++;
+ if ((! this.collapsed)) {
+ _$jscoverage['core/Range.js'][1568]++;
+ while ((this.startOffset == 0)) {
+ _$jscoverage['core/Range.js'][1569]++;
+ if ((stopFn && stopFn(this.startContainer))) {
+ _$jscoverage['core/Range.js'][1570]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][1572]++;
+ if (isBody(this.startContainer)) {
+ _$jscoverage['core/Range.js'][1573]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][1575]++;
+ this.setStartBefore(this.startContainer);
+}
+ _$jscoverage['core/Range.js'][1577]++;
+ while ((this.endOffset == ((this.endContainer.nodeType == 1)? this.endContainer.childNodes.length: this.endContainer.nodeValue.length))) {
+ _$jscoverage['core/Range.js'][1578]++;
+ if ((stopFn && stopFn(this.endContainer))) {
+ _$jscoverage['core/Range.js'][1579]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][1581]++;
+ if (isBody(this.endContainer)) {
+ _$jscoverage['core/Range.js'][1582]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][1584]++;
+ this.setEndAfter(this.endContainer);
+}
+ }
+ _$jscoverage['core/Range.js'][1587]++;
+ return this;
+}), adjustmentBoundary: (function () {
+ _$jscoverage['core/Range.js'][1597]++;
+ if ((! this.collapsed)) {
+ _$jscoverage['core/Range.js'][1598]++;
+ while (((! domUtils.isBody(this.startContainer)) && (this.startOffset == this.startContainer[((this.startContainer.nodeType == 3)? "nodeValue": "childNodes")].length) && this.startContainer[((this.startContainer.nodeType == 3)? "nodeValue": "childNodes")].length)) {
+ _$jscoverage['core/Range.js'][1603]++;
+ this.setStartAfter(this.startContainer);
+}
+ _$jscoverage['core/Range.js'][1605]++;
+ while (((! domUtils.isBody(this.endContainer)) && (! this.endOffset) && this.endContainer[((this.endContainer.nodeType == 3)? "nodeValue": "childNodes")].length)) {
+ _$jscoverage['core/Range.js'][1608]++;
+ this.setEndBefore(this.endContainer);
+}
+ }
+ _$jscoverage['core/Range.js'][1611]++;
+ return this;
+}), applyInlineStyle: (function (tagName, attrs, list) {
+ _$jscoverage['core/Range.js'][1624]++;
+ if (this.collapsed) {
+ _$jscoverage['core/Range.js'][1624]++;
+ return this;
+ }
+ _$jscoverage['core/Range.js'][1625]++;
+ this.trimBoundary().enlarge(false, (function (node) {
+ _$jscoverage['core/Range.js'][1627]++;
+ return ((node.nodeType == 1) && domUtils.isBlockElm(node));
+})).adjustmentBoundary();
+ _$jscoverage['core/Range.js'][1629]++;
+ var bookmark = this.createBookmark(), end = bookmark.end, filterFn = (function (node) {
+ _$jscoverage['core/Range.js'][1632]++;
+ return ((node.nodeType == 1)? (node.tagName.toLowerCase() != "br"): (! domUtils.isWhitespace(node)));
+}), current = domUtils.getNextDomNode(bookmark.start, false, filterFn), node, pre, range = this.cloneRange();
+ _$jscoverage['core/Range.js'][1638]++;
+ while ((current && (domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING))) {
+ _$jscoverage['core/Range.js'][1639]++;
+ if (((current.nodeType == 3) || dtd[tagName][current.tagName])) {
+ _$jscoverage['core/Range.js'][1640]++;
+ range.setStartBefore(current);
+ _$jscoverage['core/Range.js'][1641]++;
+ node = current;
+ _$jscoverage['core/Range.js'][1642]++;
+ while ((node && ((node.nodeType == 3) || dtd[tagName][node.tagName]) && (node !== end))) {
+ _$jscoverage['core/Range.js'][1643]++;
+ pre = node;
+ _$jscoverage['core/Range.js'][1644]++;
+ node = domUtils.getNextDomNode(node, (node.nodeType == 1), null, (function (parent) {
+ _$jscoverage['core/Range.js'][1645]++;
+ return dtd[tagName][parent.tagName];
+}));
+}
+ _$jscoverage['core/Range.js'][1648]++;
+ var frag = range.setEndAfter(pre).extractContents(), elm;
+ _$jscoverage['core/Range.js'][1649]++;
+ if ((list && (list.length > 0))) {
+ _$jscoverage['core/Range.js'][1650]++;
+ var level, top;
+ _$jscoverage['core/Range.js'][1651]++;
+ top = (level = list[0].cloneNode(false));
+ _$jscoverage['core/Range.js'][1652]++;
+ for (var i = 1, ci; (ci = list[(i++)]);) {
+ _$jscoverage['core/Range.js'][1653]++;
+ level.appendChild(ci.cloneNode(false));
+ _$jscoverage['core/Range.js'][1654]++;
+ level = level.firstChild;
+}
+ _$jscoverage['core/Range.js'][1656]++;
+ elm = level;
+ }
+ else {
+ _$jscoverage['core/Range.js'][1658]++;
+ elm = range.document.createElement(tagName);
+ }
+ _$jscoverage['core/Range.js'][1660]++;
+ if (attrs) {
+ _$jscoverage['core/Range.js'][1661]++;
+ domUtils.setAttributes(elm, attrs);
+ }
+ _$jscoverage['core/Range.js'][1663]++;
+ elm.appendChild(frag);
+ _$jscoverage['core/Range.js'][1664]++;
+ range.insertNode((list? top: elm));
+ _$jscoverage['core/Range.js'][1666]++;
+ var aNode;
+ _$jscoverage['core/Range.js'][1667]++;
+ if (((tagName == "span") && attrs.style && /text\-decoration/.test(attrs.style) && (aNode = domUtils.findParentByTagName(elm, "a", true)))) {
+ _$jscoverage['core/Range.js'][1668]++;
+ domUtils.setAttributes(aNode, attrs);
+ _$jscoverage['core/Range.js'][1669]++;
+ domUtils.remove(elm, true);
+ _$jscoverage['core/Range.js'][1670]++;
+ elm = aNode;
+ }
+ else {
+ _$jscoverage['core/Range.js'][1672]++;
+ domUtils.mergeSibling(elm);
+ _$jscoverage['core/Range.js'][1673]++;
+ domUtils.clearEmptySibling(elm);
+ }
+ _$jscoverage['core/Range.js'][1676]++;
+ domUtils.mergeChild(elm, attrs);
+ _$jscoverage['core/Range.js'][1677]++;
+ current = domUtils.getNextDomNode(elm, false, filterFn);
+ _$jscoverage['core/Range.js'][1678]++;
+ domUtils.mergeToParent(elm);
+ _$jscoverage['core/Range.js'][1679]++;
+ if ((node === end)) {
+ _$jscoverage['core/Range.js'][1680]++;
+ break;
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][1683]++;
+ current = domUtils.getNextDomNode(current, true, filterFn);
+ }
+}
+ _$jscoverage['core/Range.js'][1686]++;
+ return this.moveToBookmark(bookmark);
+}), removeInlineStyle: (function (tagNames) {
+ _$jscoverage['core/Range.js'][1696]++;
+ if (this.collapsed) {
+ _$jscoverage['core/Range.js'][1696]++;
+ return this;
+ }
+ _$jscoverage['core/Range.js'][1697]++;
+ tagNames = (utils.isArray(tagNames)? tagNames: [tagNames]);
+ _$jscoverage['core/Range.js'][1698]++;
+ this.shrinkBoundary().adjustmentBoundary();
+ _$jscoverage['core/Range.js'][1699]++;
+ var start = this.startContainer, end = this.endContainer;
+ _$jscoverage['core/Range.js'][1700]++;
+ while (true) {
+ _$jscoverage['core/Range.js'][1701]++;
+ if ((start.nodeType == 1)) {
+ _$jscoverage['core/Range.js'][1702]++;
+ if ((utils.indexOf(tagNames, start.tagName.toLowerCase()) > -1)) {
+ _$jscoverage['core/Range.js'][1703]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][1705]++;
+ if ((start.tagName.toLowerCase() == "body")) {
+ _$jscoverage['core/Range.js'][1706]++;
+ start = null;
+ _$jscoverage['core/Range.js'][1707]++;
+ break;
+ }
+ }
+ _$jscoverage['core/Range.js'][1710]++;
+ start = start.parentNode;
+}
+ _$jscoverage['core/Range.js'][1712]++;
+ while (true) {
+ _$jscoverage['core/Range.js'][1713]++;
+ if ((end.nodeType == 1)) {
+ _$jscoverage['core/Range.js'][1714]++;
+ if ((utils.indexOf(tagNames, end.tagName.toLowerCase()) > -1)) {
+ _$jscoverage['core/Range.js'][1715]++;
+ break;
+ }
+ _$jscoverage['core/Range.js'][1717]++;
+ if ((end.tagName.toLowerCase() == "body")) {
+ _$jscoverage['core/Range.js'][1718]++;
+ end = null;
+ _$jscoverage['core/Range.js'][1719]++;
+ break;
+ }
+ }
+ _$jscoverage['core/Range.js'][1722]++;
+ end = end.parentNode;
+}
+ _$jscoverage['core/Range.js'][1724]++;
+ var bookmark = this.createBookmark(), frag, tmpRange;
+ _$jscoverage['core/Range.js'][1727]++;
+ if (start) {
+ _$jscoverage['core/Range.js'][1728]++;
+ tmpRange = this.cloneRange().setEndBefore(bookmark.start).setStartBefore(start);
+ _$jscoverage['core/Range.js'][1729]++;
+ frag = tmpRange.extractContents();
+ _$jscoverage['core/Range.js'][1730]++;
+ tmpRange.insertNode(frag);
+ _$jscoverage['core/Range.js'][1731]++;
+ domUtils.clearEmptySibling(start, true);
+ _$jscoverage['core/Range.js'][1732]++;
+ start.parentNode.insertBefore(bookmark.start, start);
+ }
+ _$jscoverage['core/Range.js'][1734]++;
+ if (end) {
+ _$jscoverage['core/Range.js'][1735]++;
+ tmpRange = this.cloneRange().setStartAfter(bookmark.end).setEndAfter(end);
+ _$jscoverage['core/Range.js'][1736]++;
+ frag = tmpRange.extractContents();
+ _$jscoverage['core/Range.js'][1737]++;
+ tmpRange.insertNode(frag);
+ _$jscoverage['core/Range.js'][1738]++;
+ domUtils.clearEmptySibling(end, false, true);
+ _$jscoverage['core/Range.js'][1739]++;
+ end.parentNode.insertBefore(bookmark.end, end.nextSibling);
+ }
+ _$jscoverage['core/Range.js'][1741]++;
+ var current = domUtils.getNextDomNode(bookmark.start, false, (function (node) {
+ _$jscoverage['core/Range.js'][1742]++;
+ return (node.nodeType == 1);
+})), next;
+ _$jscoverage['core/Range.js'][1744]++;
+ while ((current && (current !== bookmark.end))) {
+ _$jscoverage['core/Range.js'][1745]++;
+ next = domUtils.getNextDomNode(current, true, (function (node) {
+ _$jscoverage['core/Range.js'][1746]++;
+ return (node.nodeType == 1);
+}));
+ _$jscoverage['core/Range.js'][1748]++;
+ if ((utils.indexOf(tagNames, current.tagName.toLowerCase()) > -1)) {
+ _$jscoverage['core/Range.js'][1749]++;
+ domUtils.remove(current, true);
+ }
+ _$jscoverage['core/Range.js'][1751]++;
+ current = next;
+}
+ _$jscoverage['core/Range.js'][1753]++;
+ return this.moveToBookmark(bookmark);
+}), getClosedNode: (function () {
+ _$jscoverage['core/Range.js'][1783]++;
+ var node;
+ _$jscoverage['core/Range.js'][1784]++;
+ if ((! this.collapsed)) {
+ _$jscoverage['core/Range.js'][1785]++;
+ var range = this.cloneRange().adjustmentBoundary().shrinkBoundary();
+ _$jscoverage['core/Range.js'][1786]++;
+ if (selectOneNode(range)) {
+ _$jscoverage['core/Range.js'][1787]++;
+ var child = range.startContainer.childNodes[range.startOffset];
+ _$jscoverage['core/Range.js'][1788]++;
+ if ((child && (child.nodeType == 1) && (dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName]))) {
+ _$jscoverage['core/Range.js'][1789]++;
+ node = child;
+ }
+ }
+ }
+ _$jscoverage['core/Range.js'][1793]++;
+ return node;
+}), select: (browser.ie? (function (noFillData, textRange) {
+ _$jscoverage['core/Range.js'][1802]++;
+ var nativeRange;
+ _$jscoverage['core/Range.js'][1803]++;
+ if ((! this.collapsed)) {
+ _$jscoverage['core/Range.js'][1804]++;
+ this.shrinkBoundary();
+ }
+ _$jscoverage['core/Range.js'][1805]++;
+ var node = this.getClosedNode();
+ _$jscoverage['core/Range.js'][1806]++;
+ if ((node && (! textRange))) {
+ _$jscoverage['core/Range.js'][1807]++;
+ try {
+ _$jscoverage['core/Range.js'][1808]++;
+ nativeRange = this.document.body.createControlRange();
+ _$jscoverage['core/Range.js'][1809]++;
+ nativeRange.addElement(node);
+ _$jscoverage['core/Range.js'][1810]++;
+ nativeRange.select();
+ }
+ catch (e) {
+ }
+ _$jscoverage['core/Range.js'][1812]++;
+ return this;
+ }
+ _$jscoverage['core/Range.js'][1814]++;
+ var bookmark = this.createBookmark(), start = bookmark.start, end;
+ _$jscoverage['core/Range.js'][1817]++;
+ nativeRange = this.document.body.createTextRange();
+ _$jscoverage['core/Range.js'][1818]++;
+ nativeRange.moveToElementText(start);
+ _$jscoverage['core/Range.js'][1819]++;
+ nativeRange.moveStart("character", 1);
+ _$jscoverage['core/Range.js'][1820]++;
+ if ((! this.collapsed)) {
+ _$jscoverage['core/Range.js'][1821]++;
+ var nativeRangeEnd = this.document.body.createTextRange();
+ _$jscoverage['core/Range.js'][1822]++;
+ end = bookmark.end;
+ _$jscoverage['core/Range.js'][1823]++;
+ nativeRangeEnd.moveToElementText(end);
+ _$jscoverage['core/Range.js'][1824]++;
+ nativeRange.setEndPoint("EndToEnd", nativeRangeEnd);
+ }
+ else {
+ _$jscoverage['core/Range.js'][1826]++;
+ if (((! noFillData) && (this.startContainer.nodeType != 3))) {
+ _$jscoverage['core/Range.js'][1828]++;
+ var tmpText = this.document.createTextNode(fillChar), tmp = this.document.createElement("span");
+ _$jscoverage['core/Range.js'][1830]++;
+ tmp.appendChild(this.document.createTextNode(fillChar));
+ _$jscoverage['core/Range.js'][1831]++;
+ start.parentNode.insertBefore(tmp, start);
+ _$jscoverage['core/Range.js'][1832]++;
+ start.parentNode.insertBefore(tmpText, start);
+ _$jscoverage['core/Range.js'][1834]++;
+ removeFillData(this.document, tmpText);
+ _$jscoverage['core/Range.js'][1835]++;
+ fillData = tmpText;
+ _$jscoverage['core/Range.js'][1836]++;
+ mergeSibling(tmp, "previousSibling");
+ _$jscoverage['core/Range.js'][1837]++;
+ mergeSibling(start, "nextSibling");
+ _$jscoverage['core/Range.js'][1838]++;
+ nativeRange.moveStart("character", -1);
+ _$jscoverage['core/Range.js'][1839]++;
+ nativeRange.collapse(true);
+ }
+ }
+ _$jscoverage['core/Range.js'][1842]++;
+ this.moveToBookmark(bookmark);
+ _$jscoverage['core/Range.js'][1843]++;
+ (tmp && domUtils.remove(tmp));
+ _$jscoverage['core/Range.js'][1845]++;
+ try {
+ _$jscoverage['core/Range.js'][1846]++;
+ nativeRange.select();
+ }
+ catch (e) {
+ }
+ _$jscoverage['core/Range.js'][1849]++;
+ return this;
+}): (function (notInsertFillData) {
+ _$jscoverage['core/Range.js'][1851]++;
+ function checkOffset(rng) {
+ _$jscoverage['core/Range.js'][1853]++;
+ function check(node, offset, dir) {
+ _$jscoverage['core/Range.js'][1854]++;
+ if (((node.nodeType == 3) && (node.nodeValue.length < offset))) {
+ _$jscoverage['core/Range.js'][1855]++;
+ rng[(dir + "Offset")] = node.nodeValue.length;
+ }
+}
+ _$jscoverage['core/Range.js'][1858]++;
+ check(rng.startContainer, rng.startOffset, "start");
+ _$jscoverage['core/Range.js'][1859]++;
+ check(rng.endContainer, rng.endOffset, "end");
+}
+ _$jscoverage['core/Range.js'][1861]++;
+ var win = domUtils.getWindow(this.document), sel = win.getSelection(), txtNode;
+ _$jscoverage['core/Range.js'][1866]++;
+ (browser.gecko? this.document.body.focus(): win.focus());
+ _$jscoverage['core/Range.js'][1867]++;
+ if (sel) {
+ _$jscoverage['core/Range.js'][1868]++;
+ sel.removeAllRanges();
+ _$jscoverage['core/Range.js'][1871]++;
+ if ((this.collapsed && (! notInsertFillData))) {
+ _$jscoverage['core/Range.js'][1883]++;
+ var start = this.startContainer, child = start;
+ _$jscoverage['core/Range.js'][1884]++;
+ if ((start.nodeType == 1)) {
+ _$jscoverage['core/Range.js'][1885]++;
+ child = start.childNodes[this.startOffset];
+ }
+ _$jscoverage['core/Range.js'][1888]++;
+ if (((! ((start.nodeType == 3) && this.startOffset)) && (child? ((! child.previousSibling) || (child.previousSibling.nodeType != 3)): ((! start.lastChild) || (start.lastChild.nodeType != 3))))) {
+ _$jscoverage['core/Range.js'][1895]++;
+ txtNode = this.document.createTextNode(fillChar);
+ _$jscoverage['core/Range.js'][1897]++;
+ this.insertNode(txtNode);
+ _$jscoverage['core/Range.js'][1898]++;
+ removeFillData(this.document, txtNode);
+ _$jscoverage['core/Range.js'][1899]++;
+ mergeSibling(txtNode, "previousSibling");
+ _$jscoverage['core/Range.js'][1900]++;
+ mergeSibling(txtNode, "nextSibling");
+ _$jscoverage['core/Range.js'][1901]++;
+ fillData = txtNode;
+ _$jscoverage['core/Range.js'][1902]++;
+ this.setStart(txtNode, (browser.webkit? 1: 0)).collapse(true);
+ }
+ }
+ _$jscoverage['core/Range.js'][1905]++;
+ var nativeRange = this.document.createRange();
+ _$jscoverage['core/Range.js'][1906]++;
+ if ((this.collapsed && browser.opera && (this.startContainer.nodeType == 1))) {
+ _$jscoverage['core/Range.js'][1907]++;
+ var child = this.startContainer.childNodes[this.startOffset];
+ _$jscoverage['core/Range.js'][1908]++;
+ if ((! child)) {
+ _$jscoverage['core/Range.js'][1910]++;
+ child = this.startContainer.lastChild;
+ _$jscoverage['core/Range.js'][1911]++;
+ if ((child && domUtils.isBr(child))) {
+ _$jscoverage['core/Range.js'][1912]++;
+ this.setStartBefore(child).collapse(true);
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][1916]++;
+ while ((child && domUtils.isBlockElm(child))) {
+ _$jscoverage['core/Range.js'][1917]++;
+ if (((child.nodeType == 1) && child.childNodes[0])) {
+ _$jscoverage['core/Range.js'][1918]++;
+ child = child.childNodes[0];
+ }
+ else {
+ _$jscoverage['core/Range.js'][1920]++;
+ break;
+ }
+}
+ _$jscoverage['core/Range.js'][1923]++;
+ (child && this.setStartBefore(child).collapse(true));
+ }
+ }
+ _$jscoverage['core/Range.js'][1928]++;
+ checkOffset(this);
+ _$jscoverage['core/Range.js'][1929]++;
+ nativeRange.setStart(this.startContainer, this.startOffset);
+ _$jscoverage['core/Range.js'][1930]++;
+ nativeRange.setEnd(this.endContainer, this.endOffset);
+ _$jscoverage['core/Range.js'][1931]++;
+ sel.addRange(nativeRange);
+ }
+ _$jscoverage['core/Range.js'][1933]++;
+ return this;
+})), scrollToView: (function (win, offset) {
+ _$jscoverage['core/Range.js'][1951]++;
+ win = (win? window: domUtils.getWindow(this.document));
+ _$jscoverage['core/Range.js'][1952]++;
+ var me = this, span = me.document.createElement("span");
+ _$jscoverage['core/Range.js'][1955]++;
+ span.innerHTML = " ";
+ _$jscoverage['core/Range.js'][1956]++;
+ me.cloneRange().insertNode(span);
+ _$jscoverage['core/Range.js'][1957]++;
+ domUtils.scrollToView(span, win, offset);
+ _$jscoverage['core/Range.js'][1958]++;
+ domUtils.remove(span);
+ _$jscoverage['core/Range.js'][1959]++;
+ return me;
+}), inFillChar: (function () {
+ _$jscoverage['core/Range.js'][1967]++;
+ var start = this.startContainer;
+ _$jscoverage['core/Range.js'][1968]++;
+ if ((this.collapsed && (start.nodeType == 3) && ((start.nodeValue.replace(new RegExp(("^" + domUtils.fillChar)), "").length + 1) == start.nodeValue.length))) {
+ _$jscoverage['core/Range.js'][1971]++;
+ return true;
+ }
+ _$jscoverage['core/Range.js'][1973]++;
+ return false;
+}), createAddress: (function (ignoreEnd, ignoreTxt) {
+ _$jscoverage['core/Range.js'][2000]++;
+ var addr = {}, me = this;
+ _$jscoverage['core/Range.js'][2002]++;
+ function getAddress(isStart) {
+ _$jscoverage['core/Range.js'][2003]++;
+ var node = (isStart? me.startContainer: me.endContainer);
+ _$jscoverage['core/Range.js'][2004]++;
+ var parents = domUtils.findParents(node, true, (function (node) {
+ _$jscoverage['core/Range.js'][2004]++;
+ return (! domUtils.isBody(node));
+})), addrs = [];
+ _$jscoverage['core/Range.js'][2006]++;
+ for (var i = 0, ci; (ci = parents[(i++)]);) {
+ _$jscoverage['core/Range.js'][2007]++;
+ addrs.push(domUtils.getNodeIndex(ci, ignoreTxt));
+}
+ _$jscoverage['core/Range.js'][2009]++;
+ var firstIndex = 0;
+ _$jscoverage['core/Range.js'][2011]++;
+ if (ignoreTxt) {
+ _$jscoverage['core/Range.js'][2012]++;
+ if ((node.nodeType == 3)) {
+ _$jscoverage['core/Range.js'][2013]++;
+ var tmpNode = node.previousSibling;
+ _$jscoverage['core/Range.js'][2014]++;
+ while ((tmpNode && (tmpNode.nodeType == 3))) {
+ _$jscoverage['core/Range.js'][2015]++;
+ firstIndex += tmpNode.nodeValue.replace(fillCharReg, "").length;
+ _$jscoverage['core/Range.js'][2016]++;
+ tmpNode = tmpNode.previousSibling;
+}
+ _$jscoverage['core/Range.js'][2018]++;
+ firstIndex += (isStart? me.startOffset: me.endOffset);
+ }
+ else {
+ _$jscoverage['core/Range.js'][2020]++;
+ node = node.childNodes[(isStart? me.startOffset: me.endOffset)];
+ _$jscoverage['core/Range.js'][2021]++;
+ if (node) {
+ _$jscoverage['core/Range.js'][2022]++;
+ firstIndex = domUtils.getNodeIndex(node, ignoreTxt);
+ }
+ else {
+ _$jscoverage['core/Range.js'][2024]++;
+ node = (isStart? me.startContainer: me.endContainer);
+ _$jscoverage['core/Range.js'][2025]++;
+ var first = node.firstChild;
+ _$jscoverage['core/Range.js'][2026]++;
+ while (first) {
+ _$jscoverage['core/Range.js'][2027]++;
+ if (domUtils.isFillChar(first)) {
+ _$jscoverage['core/Range.js'][2028]++;
+ first = first.nextSibling;
+ _$jscoverage['core/Range.js'][2029]++;
+ continue;
+ }
+ _$jscoverage['core/Range.js'][2031]++;
+ (firstIndex++);
+ _$jscoverage['core/Range.js'][2032]++;
+ if ((first.nodeType == 3)) {
+ _$jscoverage['core/Range.js'][2033]++;
+ while ((first && (first.nodeType == 3))) {
+ _$jscoverage['core/Range.js'][2034]++;
+ first = first.nextSibling;
+}
+ }
+ else {
+ _$jscoverage['core/Range.js'][2037]++;
+ first = first.nextSibling;
+ }
+}
+ }
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][2044]++;
+ firstIndex = (isStart? (domUtils.isFillChar(node)? 0: me.startOffset): me.endOffset);
+ }
+ _$jscoverage['core/Range.js'][2046]++;
+ if ((firstIndex < 0)) {
+ _$jscoverage['core/Range.js'][2047]++;
+ firstIndex = 0;
+ }
+ _$jscoverage['core/Range.js'][2049]++;
+ addrs.push(firstIndex);
+ _$jscoverage['core/Range.js'][2050]++;
+ return addrs;
+}
+ _$jscoverage['core/Range.js'][2052]++;
+ addr.startAddress = getAddress(true);
+ _$jscoverage['core/Range.js'][2053]++;
+ if ((! ignoreEnd)) {
+ _$jscoverage['core/Range.js'][2054]++;
+ addr.endAddress = (me.collapsed? [].concat(addr.startAddress): getAddress());
+ }
+ _$jscoverage['core/Range.js'][2056]++;
+ return addr;
+}), moveToAddress: (function (addr, ignoreEnd) {
+ _$jscoverage['core/Range.js'][2085]++;
+ var me = this;
+ _$jscoverage['core/Range.js'][2086]++;
+ function getNode(address, isStart) {
+ _$jscoverage['core/Range.js'][2087]++;
+ var tmpNode = me.document.body, parentNode, offset;
+ _$jscoverage['core/Range.js'][2089]++;
+ for (var i = 0, ci, l = address.length; (i < l); (i++)) {
+ _$jscoverage['core/Range.js'][2090]++;
+ ci = address[i];
+ _$jscoverage['core/Range.js'][2091]++;
+ parentNode = tmpNode;
+ _$jscoverage['core/Range.js'][2092]++;
+ tmpNode = tmpNode.childNodes[ci];
+ _$jscoverage['core/Range.js'][2093]++;
+ if ((! tmpNode)) {
+ _$jscoverage['core/Range.js'][2094]++;
+ offset = ci;
+ _$jscoverage['core/Range.js'][2095]++;
+ break;
+ }
+}
+ _$jscoverage['core/Range.js'][2098]++;
+ if (isStart) {
+ _$jscoverage['core/Range.js'][2099]++;
+ if (tmpNode) {
+ _$jscoverage['core/Range.js'][2100]++;
+ me.setStartBefore(tmpNode);
+ }
+ else {
+ _$jscoverage['core/Range.js'][2102]++;
+ me.setStart(parentNode, offset);
+ }
+ }
+ else {
+ _$jscoverage['core/Range.js'][2105]++;
+ if (tmpNode) {
+ _$jscoverage['core/Range.js'][2106]++;
+ me.setEndBefore(tmpNode);
+ }
+ else {
+ _$jscoverage['core/Range.js'][2108]++;
+ me.setEnd(parentNode, offset);
+ }
+ }
+}
+ _$jscoverage['core/Range.js'][2112]++;
+ getNode(addr.startAddress, true);
+ _$jscoverage['core/Range.js'][2113]++;
+ ((! ignoreEnd) && addr.endAddress && getNode(addr.endAddress));
+ _$jscoverage['core/Range.js'][2114]++;
+ return me;
+}), traversal: (function (doFn, filterFn) {
+ _$jscoverage['core/Range.js'][2214]++;
+ if (this.collapsed) {
+ _$jscoverage['core/Range.js'][2215]++;
+ return this;
+ }
+ _$jscoverage['core/Range.js'][2216]++;
+ var bookmark = this.createBookmark(), end = bookmark.end, current = domUtils.getNextDomNode(bookmark.start, false, filterFn);
+ _$jscoverage['core/Range.js'][2219]++;
+ while ((current && (current !== end) && (domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING))) {
+ _$jscoverage['core/Range.js'][2220]++;
+ var tmpNode = domUtils.getNextDomNode(current, false, filterFn);
+ _$jscoverage['core/Range.js'][2221]++;
+ doFn(current);
+ _$jscoverage['core/Range.js'][2222]++;
+ current = tmpNode;
+}
+ _$jscoverage['core/Range.js'][2224]++;
+ return this.moveToBookmark(bookmark);
+})};
+})();
diff --git a/_test/coverage/core/Selection.js b/_test/coverage/core/Selection.js
new file mode 100644
index 000000000..c12cc84f1
--- /dev/null
+++ b/_test/coverage/core/Selection.js
@@ -0,0 +1,606 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/Selection.js']) {
+ _$jscoverage['core/Selection.js'] = [];
+ _$jscoverage['core/Selection.js'][13] = 0;
+ _$jscoverage['core/Selection.js'][15] = 0;
+ _$jscoverage['core/Selection.js'][16] = 0;
+ _$jscoverage['core/Selection.js'][17] = 0;
+ _$jscoverage['core/Selection.js'][18] = 0;
+ _$jscoverage['core/Selection.js'][19] = 0;
+ _$jscoverage['core/Selection.js'][21] = 0;
+ _$jscoverage['core/Selection.js'][22] = 0;
+ _$jscoverage['core/Selection.js'][24] = 0;
+ _$jscoverage['core/Selection.js'][29] = 0;
+ _$jscoverage['core/Selection.js'][30] = 0;
+ _$jscoverage['core/Selection.js'][31] = 0;
+ _$jscoverage['core/Selection.js'][32] = 0;
+ _$jscoverage['core/Selection.js'][33] = 0;
+ _$jscoverage['core/Selection.js'][34] = 0;
+ _$jscoverage['core/Selection.js'][35] = 0;
+ _$jscoverage['core/Selection.js'][36] = 0;
+ _$jscoverage['core/Selection.js'][37] = 0;
+ _$jscoverage['core/Selection.js'][40] = 0;
+ _$jscoverage['core/Selection.js'][43] = 0;
+ _$jscoverage['core/Selection.js'][44] = 0;
+ _$jscoverage['core/Selection.js'][45] = 0;
+ _$jscoverage['core/Selection.js'][46] = 0;
+ _$jscoverage['core/Selection.js'][47] = 0;
+ _$jscoverage['core/Selection.js'][48] = 0;
+ _$jscoverage['core/Selection.js'][49] = 0;
+ _$jscoverage['core/Selection.js'][50] = 0;
+ _$jscoverage['core/Selection.js'][53] = 0;
+ _$jscoverage['core/Selection.js'][54] = 0;
+ _$jscoverage['core/Selection.js'][55] = 0;
+ _$jscoverage['core/Selection.js'][57] = 0;
+ _$jscoverage['core/Selection.js'][59] = 0;
+ _$jscoverage['core/Selection.js'][60] = 0;
+ _$jscoverage['core/Selection.js'][61] = 0;
+ _$jscoverage['core/Selection.js'][62] = 0;
+ _$jscoverage['core/Selection.js'][63] = 0;
+ _$jscoverage['core/Selection.js'][67] = 0;
+ _$jscoverage['core/Selection.js'][68] = 0;
+ _$jscoverage['core/Selection.js'][69] = 0;
+ _$jscoverage['core/Selection.js'][70] = 0;
+ _$jscoverage['core/Selection.js'][71] = 0;
+ _$jscoverage['core/Selection.js'][73] = 0;
+ _$jscoverage['core/Selection.js'][76] = 0;
+ _$jscoverage['core/Selection.js'][85] = 0;
+ _$jscoverage['core/Selection.js'][86] = 0;
+ _$jscoverage['core/Selection.js'][87] = 0;
+ _$jscoverage['core/Selection.js'][89] = 0;
+ _$jscoverage['core/Selection.js'][90] = 0;
+ _$jscoverage['core/Selection.js'][91] = 0;
+ _$jscoverage['core/Selection.js'][92] = 0;
+ _$jscoverage['core/Selection.js'][93] = 0;
+ _$jscoverage['core/Selection.js'][96] = 0;
+ _$jscoverage['core/Selection.js'][104] = 0;
+ _$jscoverage['core/Selection.js'][105] = 0;
+ _$jscoverage['core/Selection.js'][107] = 0;
+ _$jscoverage['core/Selection.js'][108] = 0;
+ _$jscoverage['core/Selection.js'][110] = 0;
+ _$jscoverage['core/Selection.js'][112] = 0;
+ _$jscoverage['core/Selection.js'][113] = 0;
+ _$jscoverage['core/Selection.js'][114] = 0;
+ _$jscoverage['core/Selection.js'][116] = 0;
+ _$jscoverage['core/Selection.js'][119] = 0;
+ _$jscoverage['core/Selection.js'][120] = 0;
+ _$jscoverage['core/Selection.js'][121] = 0;
+ _$jscoverage['core/Selection.js'][122] = 0;
+ _$jscoverage['core/Selection.js'][123] = 0;
+ _$jscoverage['core/Selection.js'][124] = 0;
+ _$jscoverage['core/Selection.js'][125] = 0;
+ _$jscoverage['core/Selection.js'][127] = 0;
+ _$jscoverage['core/Selection.js'][128] = 0;
+ _$jscoverage['core/Selection.js'][129] = 0;
+ _$jscoverage['core/Selection.js'][130] = 0;
+ _$jscoverage['core/Selection.js'][134] = 0;
+ _$jscoverage['core/Selection.js'][137] = 0;
+ _$jscoverage['core/Selection.js'][140] = 0;
+ _$jscoverage['core/Selection.js'][151] = 0;
+ _$jscoverage['core/Selection.js'][152] = 0;
+ _$jscoverage['core/Selection.js'][153] = 0;
+ _$jscoverage['core/Selection.js'][155] = 0;
+ _$jscoverage['core/Selection.js'][168] = 0;
+ _$jscoverage['core/Selection.js'][169] = 0;
+ _$jscoverage['core/Selection.js'][170] = 0;
+ _$jscoverage['core/Selection.js'][171] = 0;
+ _$jscoverage['core/Selection.js'][174] = 0;
+ _$jscoverage['core/Selection.js'][182] = 0;
+ _$jscoverage['core/Selection.js'][183] = 0;
+ _$jscoverage['core/Selection.js'][184] = 0;
+ _$jscoverage['core/Selection.js'][185] = 0;
+ _$jscoverage['core/Selection.js'][198] = 0;
+ _$jscoverage['core/Selection.js'][199] = 0;
+ _$jscoverage['core/Selection.js'][201] = 0;
+ _$jscoverage['core/Selection.js'][202] = 0;
+ _$jscoverage['core/Selection.js'][203] = 0;
+ _$jscoverage['core/Selection.js'][205] = 0;
+ _$jscoverage['core/Selection.js'][212] = 0;
+ _$jscoverage['core/Selection.js'][219] = 0;
+ _$jscoverage['core/Selection.js'][220] = 0;
+ _$jscoverage['core/Selection.js'][222] = 0;
+ _$jscoverage['core/Selection.js'][236] = 0;
+ _$jscoverage['core/Selection.js'][237] = 0;
+ _$jscoverage['core/Selection.js'][238] = 0;
+ _$jscoverage['core/Selection.js'][240] = 0;
+ _$jscoverage['core/Selection.js'][241] = 0;
+ _$jscoverage['core/Selection.js'][242] = 0;
+ _$jscoverage['core/Selection.js'][244] = 0;
+ _$jscoverage['core/Selection.js'][245] = 0;
+ _$jscoverage['core/Selection.js'][247] = 0;
+ _$jscoverage['core/Selection.js'][248] = 0;
+ _$jscoverage['core/Selection.js'][252] = 0;
+ _$jscoverage['core/Selection.js'][253] = 0;
+ _$jscoverage['core/Selection.js'][255] = 0;
+ _$jscoverage['core/Selection.js'][256] = 0;
+ _$jscoverage['core/Selection.js'][257] = 0;
+ _$jscoverage['core/Selection.js'][258] = 0;
+ _$jscoverage['core/Selection.js'][260] = 0;
+ _$jscoverage['core/Selection.js'][261] = 0;
+ _$jscoverage['core/Selection.js'][263] = 0;
+ _$jscoverage['core/Selection.js'][267] = 0;
+ _$jscoverage['core/Selection.js'][270] = 0;
+ _$jscoverage['core/Selection.js'][271] = 0;
+ _$jscoverage['core/Selection.js'][272] = 0;
+ _$jscoverage['core/Selection.js'][273] = 0;
+ _$jscoverage['core/Selection.js'][274] = 0;
+ _$jscoverage['core/Selection.js'][275] = 0;
+ _$jscoverage['core/Selection.js'][276] = 0;
+ _$jscoverage['core/Selection.js'][280] = 0;
+ _$jscoverage['core/Selection.js'][281] = 0;
+ _$jscoverage['core/Selection.js'][283] = 0;
+ _$jscoverage['core/Selection.js'][286] = 0;
+ _$jscoverage['core/Selection.js'][298] = 0;
+ _$jscoverage['core/Selection.js'][299] = 0;
+ _$jscoverage['core/Selection.js'][301] = 0;
+ _$jscoverage['core/Selection.js'][304] = 0;
+ _$jscoverage['core/Selection.js'][305] = 0;
+ _$jscoverage['core/Selection.js'][307] = 0;
+ _$jscoverage['core/Selection.js'][310] = 0;
+ _$jscoverage['core/Selection.js'][311] = 0;
+ _$jscoverage['core/Selection.js'][313] = 0;
+ _$jscoverage['core/Selection.js'][315] = 0;
+ _$jscoverage['core/Selection.js'][316] = 0;
+ _$jscoverage['core/Selection.js'][317] = 0;
+ _$jscoverage['core/Selection.js'][318] = 0;
+ _$jscoverage['core/Selection.js'][319] = 0;
+ _$jscoverage['core/Selection.js'][320] = 0;
+ _$jscoverage['core/Selection.js'][321] = 0;
+ _$jscoverage['core/Selection.js'][322] = 0;
+ _$jscoverage['core/Selection.js'][326] = 0;
+ _$jscoverage['core/Selection.js'][327] = 0;
+ _$jscoverage['core/Selection.js'][328] = 0;
+ _$jscoverage['core/Selection.js'][329] = 0;
+ _$jscoverage['core/Selection.js'][331] = 0;
+ _$jscoverage['core/Selection.js'][332] = 0;
+ _$jscoverage['core/Selection.js'][335] = 0;
+ _$jscoverage['core/Selection.js'][347] = 0;
+ _$jscoverage['core/Selection.js'][348] = 0;
+ _$jscoverage['core/Selection.js'][349] = 0;
+ _$jscoverage['core/Selection.js'][350] = 0;
+ _$jscoverage['core/Selection.js'][352] = 0;
+ _$jscoverage['core/Selection.js'][363] = 0;
+}
+_$jscoverage['core/Selection.js'].source = ["/** "," * 选集 "," * @file "," * @module UE.dom.Selection "," * @since 1.2.6.1 "," */ ","","/** "," * UEditor公用空间,UEditor所有的功能都挂载在该空间下 "," * @module UE "," */ ","","( function () { ",""," function getBoundaryInformation( range, start ) { "," var getIndex = domUtils. getNodeIndex; "," range = range. duplicate(); "," range. collapse( start ); "," var parent = range. parentElement(); "," //如果节点里没有子节点,直接退出 "," if ( ! parent. hasChildNodes() ) { "," return { container: parent, offset: 0 } ; "," } "," var siblings = parent. children, "," child, "," testRange = range. duplicate(), "," startIndex = 0 , endIndex = siblings. length - 1 , index = - 1 , "," distance; "," while ( startIndex <= endIndex ) { "," index = Math. floor( ( startIndex + endIndex) / 2 ); "," child = siblings[ index]; "," testRange. moveToElementText( child ); "," var position = testRange. compareEndPoints( 'StartToStart' , range ); "," if ( position > 0 ) { "," endIndex = index - 1 ; "," } else if ( position < 0 ) { "," startIndex = index + 1 ; "," } else { "," //trace:1043 "," return { container: parent, offset: getIndex( child ) } ; "," } "," } "," if ( index == - 1 ) { "," testRange. moveToElementText( parent ); "," testRange. setEndPoint( 'StartToStart' , range ); "," distance = testRange. text. replace( /(\\r\\n|\\r)/g , ' \\n ' ). length; "," siblings = parent. childNodes; "," if ( ! distance ) { "," child = siblings[ siblings. length - 1 ]; "," return { container: child, offset: child. nodeValue. length} ; "," } ",""," var i = siblings. length; "," while ( distance > 0 ) { "," distance -= siblings[ -- i ]. nodeValue. length; "," } "," return { container: siblings[ i], offset:- distance} ; "," } "," testRange. collapse( position > 0 ); "," testRange. setEndPoint( position > 0 ? 'StartToStart' : 'EndToStart' , range ); "," distance = testRange. text. replace( /(\\r\\n|\\r)/g , ' \\n ' ). length; "," if ( ! distance ) { "," return dtd. $empty[ child. tagName] || dtd. $nonChild[ child. tagName] ? "," { container: parent, offset: getIndex( child ) + ( position > 0 ? 0 : 1 ) } : "," { container: child, offset: position > 0 ? 0 : child. childNodes. length} "," } "," while ( distance > 0 ) { "," try { "," var pre = child; "," child = child[ position > 0 ? 'previousSibling' : 'nextSibling' ]; "," distance -= child. nodeValue. length; "," } catch ( e ) { "," return { container: parent, offset: getIndex( pre ) } ; "," } "," } "," return { container: child, offset: position > 0 ? - distance : child. nodeValue. length + distance} "," } ",""," /* "," * 将ieRange转换为Range对象 "," * @param {Range} ieRange ieRange对象 "," * @param {Range} range Range对象 "," * @return {Range} range 返回转换后的Range对象 "," */ "," function transformIERangeToRange( ieRange, range ) { "," if ( ieRange. item ) { "," range. selectNode( ieRange. item( 0 ) ); "," } else { "," var bi = getBoundaryInformation( ieRange, true ); "," range. setStart( bi. container, bi. offset ); "," if ( ieRange. compareEndPoints( 'StartToEnd' , ieRange ) != 0 ) { "," bi = getBoundaryInformation( ieRange, false ); "," range. setEnd( bi. container, bi. offset ); "," } "," } "," return range; "," } ",""," /* "," * 获得ieRange "," * @param {Selection} sel Selection对象 "," * @return {ieRange} 得到ieRange "," */ "," function _getIERange( sel ) { "," var ieRange; "," //ie下有可能报错 "," try { "," ieRange = sel. getNative(). createRange(); "," } catch ( e ) { "," return null ; "," } "," var el = ieRange. item ? ieRange. item( 0 ) : ieRange. parentElement(); "," if ( ( el. ownerDocument || el ) === sel. document ) { "," return ieRange; "," } "," return null ; "," } ",""," var Selection = dom. Selection = function ( doc ) { "," var me = this , iframe; "," me. document = doc; "," if ( ie ) { "," iframe = domUtils. getWindow( doc ). frameElement; "," domUtils. on( iframe, 'beforedeactivate' , function () { "," me. _bakIERange = me. getIERange(); "," } ); "," domUtils. on( iframe, 'activate' , function () { "," try { "," if ( ! _getIERange( me ) && me. _bakIERange ) { "," me. _bakIERange. select(); "," } "," } catch ( ex ) { "," } "," me. _bakIERange = null ; "," } ); "," } "," iframe = doc = null ; "," } ; ",""," Selection. prototype = { "," /** "," * 获取原生seleciton对象 "," * @method getNative "," * @return { Object } 获得selection对象 "," * @example "," * ```javascript "," * editor.selection.getNative(); "," * ``` "," */ "," getNative: function () { "," var doc = this . document; "," try { "," return ! doc ? null : ie && browser. ie < 9 ? doc. selection : domUtils. getWindow( doc ). getSelection(); "," } catch ( e ) { "," return null ; "," } "," } , "," /** "," * 获得ieRange "," * @method getIERange "," * @return { Object } 返回ie原生的Range "," * @example "," * ```javascript "," * editor.selection.getIERange(); "," * ``` "," */ "," getIERange: function () { "," var ieRange = _getIERange( this ); "," if ( ! ieRange ) { "," if ( this . _bakIERange ) { "," return this . _bakIERange; "," } "," } "," return ieRange; "," } , ",""," /** "," * 缓存当前选区的range和选区的开始节点 "," * @method cache "," */ "," cache: function () { "," this . clear(); "," this . _cachedRange = this . getRange(); "," this . _cachedStartElement = this . getStart(); "," this . _cachedStartElementPath = this . getStartElementPath(); "," } , ",""," /** "," * 获取选区开始位置的父节点到body "," * @method getStartElementPath "," * @return { Array } 返回父节点集合 "," * @example "," * ```javascript "," * editor.selection.getStartElementPath(); "," * ``` "," */ "," getStartElementPath: function () { "," if ( this . _cachedStartElementPath ) { "," return this . _cachedStartElementPath; "," } "," var start = this . getStart(); "," if ( start ) { "," return domUtils. findParents( start, true , null , true ) "," } "," return []; "," } , "," /** "," * 清空缓存 "," * @method clear "," */ "," clear: function () { "," this . _cachedStartElementPath = this . _cachedRange = this . _cachedStartElement = null ; "," } , "," /** "," * 编辑器是否得到了选区 "," * @method isFocus "," */ "," isFocus: function () { "," try { "," return browser. ie && _getIERange( this ) || ! browser. ie && this . getNative(). rangeCount ? true : false ; "," } catch ( e ) { "," return false ; "," } ",""," } , "," /** "," * 获取选区对应的Range "," * @method getRange "," * @return { Object } 得到Range对象 "," * @example "," * ```javascript "," * editor.selection.getRange(); "," * ``` "," */ "," getRange: function () { "," var me = this ; "," function optimze( range ) { "," var child = me. document. body. firstChild, "," collapsed = range. collapsed; "," while ( child && child. firstChild ) { "," range. setStart( child, 0 ); "," child = child. firstChild; "," } "," if ( ! range. startContainer ) { "," range. setStart( me. document. body, 0 ) "," } "," if ( collapsed ) { "," range. collapse( true ); "," } "," } ",""," if ( me. _cachedRange != null ) { "," return this . _cachedRange; "," } "," var range = new baidu. editor. dom. Range( me. document ); "," if ( ie && browser. ie < 9 ) { "," var nativeRange = me. getIERange(); "," if ( nativeRange ) { "," //备份的_bakIERange可能已经实效了,dom树发生了变化比如从源码模式切回来,所以try一下,实效就放到body开始位置 "," try { "," transformIERangeToRange( nativeRange, range ); "," } catch ( e) { "," optimze( range ); "," } ",""," } else { "," optimze( range ); "," } "," } else { "," var sel = me. getNative(); "," if ( sel && sel. rangeCount ) { "," var firstRange = sel. getRangeAt( 0 ); "," var lastRange = sel. getRangeAt( sel. rangeCount - 1 ); "," range. setStart( firstRange. startContainer, firstRange. startOffset ). setEnd( lastRange. endContainer, lastRange. endOffset ); "," if ( range. collapsed && domUtils. isBody( range. startContainer ) && ! range. startOffset ) { "," optimze( range ); "," } "," } else { "," //trace:1734 有可能已经不在dom树上了,标识的节点 "," if ( this . _bakRange && domUtils. inDoc( this . _bakRange. startContainer, this . document ) ) { "," return this . _bakRange; "," } "," optimze( range ); "," } "," } "," return this . _bakRange = range; "," } , "," /** "," * 获取开始元素,用于状态反射 "," * @method getStart "," * @return { Element } 获得开始元素 "," * @example "," * ```javascript "," * editor.selection.getStart(); "," * ``` "," */ "," getStart: function () { "," if ( this . _cachedStartElement ) { "," return this . _cachedStartElement; "," } "," var range = ie ? this . getIERange() : this . getRange(), "," tmpRange, "," start, tmp, parent; "," if ( ie ) { "," if ( ! range ) { "," //todo 给第一个值可能会有问题 "," return this . document. body. firstChild; "," } "," //control元素 "," if ( range. item ) { "," return range. item( 0 ); "," } "," tmpRange = range. duplicate(); "," //修正ie下<b>x</b>[xx] 闭合后 <b>x|</b>xx "," tmpRange. text. length > 0 && tmpRange. moveStart( 'character' , 1 ); "," tmpRange. collapse( 1 ); "," start = tmpRange. parentElement(); "," parent = tmp = range. parentElement(); "," while ( tmp = tmp. parentNode ) { "," if ( tmp == start ) { "," start = parent; "," break ; "," } "," } "," } else { "," range. shrinkBoundary(); "," start = range. startContainer; "," if ( start. nodeType == 1 && start. hasChildNodes() ) { "," start = start. childNodes[ Math. min( start. childNodes. length - 1 , range. startOffset )]; "," } "," if ( start. nodeType == 3 ) { "," return start. parentNode; "," } "," } "," return start; "," } , "," /** "," * 得到选区中的文本 "," * @method getText "," * @return { String } 选区中包含的文本 "," * @example "," * ```javascript "," * editor.selection.getText(); "," * ``` "," */ "," getText: function () { "," var nativeSel, nativeRange; "," if ( this . isFocus() && ( nativeSel = this . getNative()) ) { "," nativeRange = browser. ie ? nativeSel. createRange() : nativeSel. getRangeAt( 0 ); "," return browser. ie ? nativeRange. text : nativeRange. toString(); "," } "," return '' ; "," } , "," /** "," * 清除选区 "," * @method clearRange "," * @example "," * ```javascript "," * editor.selection.clearRange(); "," * ``` "," */ "," clearRange : function () { "," this . getNative()[ browser. ie ? 'empty' : 'removeAllRanges' ](); "," } "," } ; ","} )(); "];
+_$jscoverage['core/Selection.js'][13]++;
+(function () {
+ _$jscoverage['core/Selection.js'][15]++;
+ function getBoundaryInformation(range, start) {
+ _$jscoverage['core/Selection.js'][16]++;
+ var getIndex = domUtils.getNodeIndex;
+ _$jscoverage['core/Selection.js'][17]++;
+ range = range.duplicate();
+ _$jscoverage['core/Selection.js'][18]++;
+ range.collapse(start);
+ _$jscoverage['core/Selection.js'][19]++;
+ var parent = range.parentElement();
+ _$jscoverage['core/Selection.js'][21]++;
+ if ((! parent.hasChildNodes())) {
+ _$jscoverage['core/Selection.js'][22]++;
+ return ({container: parent, offset: 0});
+ }
+ _$jscoverage['core/Selection.js'][24]++;
+ var siblings = parent.children, child, testRange = range.duplicate(), startIndex = 0, endIndex = (siblings.length - 1), index = -1, distance;
+ _$jscoverage['core/Selection.js'][29]++;
+ while ((startIndex <= endIndex)) {
+ _$jscoverage['core/Selection.js'][30]++;
+ index = Math.floor(((startIndex + endIndex) / 2));
+ _$jscoverage['core/Selection.js'][31]++;
+ child = siblings[index];
+ _$jscoverage['core/Selection.js'][32]++;
+ testRange.moveToElementText(child);
+ _$jscoverage['core/Selection.js'][33]++;
+ var position = testRange.compareEndPoints("StartToStart", range);
+ _$jscoverage['core/Selection.js'][34]++;
+ if ((position > 0)) {
+ _$jscoverage['core/Selection.js'][35]++;
+ endIndex = (index - 1);
+ }
+ else {
+ _$jscoverage['core/Selection.js'][36]++;
+ if ((position < 0)) {
+ _$jscoverage['core/Selection.js'][37]++;
+ startIndex = (index + 1);
+ }
+ else {
+ _$jscoverage['core/Selection.js'][40]++;
+ return ({container: parent, offset: getIndex(child)});
+ }
+ }
+}
+ _$jscoverage['core/Selection.js'][43]++;
+ if ((index == -1)) {
+ _$jscoverage['core/Selection.js'][44]++;
+ testRange.moveToElementText(parent);
+ _$jscoverage['core/Selection.js'][45]++;
+ testRange.setEndPoint("StartToStart", range);
+ _$jscoverage['core/Selection.js'][46]++;
+ distance = testRange.text.replace(/(\r\n|\r)/g, "\n").length;
+ _$jscoverage['core/Selection.js'][47]++;
+ siblings = parent.childNodes;
+ _$jscoverage['core/Selection.js'][48]++;
+ if ((! distance)) {
+ _$jscoverage['core/Selection.js'][49]++;
+ child = siblings[(siblings.length - 1)];
+ _$jscoverage['core/Selection.js'][50]++;
+ return ({container: child, offset: child.nodeValue.length});
+ }
+ _$jscoverage['core/Selection.js'][53]++;
+ var i = siblings.length;
+ _$jscoverage['core/Selection.js'][54]++;
+ while ((distance > 0)) {
+ _$jscoverage['core/Selection.js'][55]++;
+ distance -= siblings[(--i)].nodeValue.length;
+}
+ _$jscoverage['core/Selection.js'][57]++;
+ return ({container: siblings[i], offset: (- distance)});
+ }
+ _$jscoverage['core/Selection.js'][59]++;
+ testRange.collapse((position > 0));
+ _$jscoverage['core/Selection.js'][60]++;
+ testRange.setEndPoint(((position > 0)? "StartToStart": "EndToStart"), range);
+ _$jscoverage['core/Selection.js'][61]++;
+ distance = testRange.text.replace(/(\r\n|\r)/g, "\n").length;
+ _$jscoverage['core/Selection.js'][62]++;
+ if ((! distance)) {
+ _$jscoverage['core/Selection.js'][63]++;
+ return ((dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName])? {container: parent, offset: (getIndex(child) + ((position > 0)? 0: 1))}: {container: child, offset: ((position > 0)? 0: child.childNodes.length)});
+ }
+ _$jscoverage['core/Selection.js'][67]++;
+ while ((distance > 0)) {
+ _$jscoverage['core/Selection.js'][68]++;
+ try {
+ _$jscoverage['core/Selection.js'][69]++;
+ var pre = child;
+ _$jscoverage['core/Selection.js'][70]++;
+ child = child[((position > 0)? "previousSibling": "nextSibling")];
+ _$jscoverage['core/Selection.js'][71]++;
+ distance -= child.nodeValue.length;
+ }
+ catch (e) {
+ _$jscoverage['core/Selection.js'][73]++;
+ return ({container: parent, offset: getIndex(pre)});
+ }
+}
+ _$jscoverage['core/Selection.js'][76]++;
+ return ({container: child, offset: ((position > 0)? (- distance): (child.nodeValue.length + distance))});
+}
+ _$jscoverage['core/Selection.js'][85]++;
+ function transformIERangeToRange(ieRange, range) {
+ _$jscoverage['core/Selection.js'][86]++;
+ if (ieRange.item) {
+ _$jscoverage['core/Selection.js'][87]++;
+ range.selectNode(ieRange.item(0));
+ }
+ else {
+ _$jscoverage['core/Selection.js'][89]++;
+ var bi = getBoundaryInformation(ieRange, true);
+ _$jscoverage['core/Selection.js'][90]++;
+ range.setStart(bi.container, bi.offset);
+ _$jscoverage['core/Selection.js'][91]++;
+ if ((ieRange.compareEndPoints("StartToEnd", ieRange) != 0)) {
+ _$jscoverage['core/Selection.js'][92]++;
+ bi = getBoundaryInformation(ieRange, false);
+ _$jscoverage['core/Selection.js'][93]++;
+ range.setEnd(bi.container, bi.offset);
+ }
+ }
+ _$jscoverage['core/Selection.js'][96]++;
+ return range;
+}
+ _$jscoverage['core/Selection.js'][104]++;
+ function _getIERange(sel) {
+ _$jscoverage['core/Selection.js'][105]++;
+ var ieRange;
+ _$jscoverage['core/Selection.js'][107]++;
+ try {
+ _$jscoverage['core/Selection.js'][108]++;
+ ieRange = sel.getNative().createRange();
+ }
+ catch (e) {
+ _$jscoverage['core/Selection.js'][110]++;
+ return null;
+ }
+ _$jscoverage['core/Selection.js'][112]++;
+ var el = (ieRange.item? ieRange.item(0): ieRange.parentElement());
+ _$jscoverage['core/Selection.js'][113]++;
+ if (((el.ownerDocument || el) === sel.document)) {
+ _$jscoverage['core/Selection.js'][114]++;
+ return ieRange;
+ }
+ _$jscoverage['core/Selection.js'][116]++;
+ return null;
+}
+ _$jscoverage['core/Selection.js'][119]++;
+ var Selection = (dom.Selection = (function (doc) {
+ _$jscoverage['core/Selection.js'][120]++;
+ var me = this, iframe;
+ _$jscoverage['core/Selection.js'][121]++;
+ me.document = doc;
+ _$jscoverage['core/Selection.js'][122]++;
+ if (ie) {
+ _$jscoverage['core/Selection.js'][123]++;
+ iframe = domUtils.getWindow(doc).frameElement;
+ _$jscoverage['core/Selection.js'][124]++;
+ domUtils.on(iframe, "beforedeactivate", (function () {
+ _$jscoverage['core/Selection.js'][125]++;
+ me._bakIERange = me.getIERange();
+}));
+ _$jscoverage['core/Selection.js'][127]++;
+ domUtils.on(iframe, "activate", (function () {
+ _$jscoverage['core/Selection.js'][128]++;
+ try {
+ _$jscoverage['core/Selection.js'][129]++;
+ if (((! _getIERange(me)) && me._bakIERange)) {
+ _$jscoverage['core/Selection.js'][130]++;
+ me._bakIERange.select();
+ }
+ }
+ catch (ex) {
+ }
+ _$jscoverage['core/Selection.js'][134]++;
+ me._bakIERange = null;
+}));
+ }
+ _$jscoverage['core/Selection.js'][137]++;
+ iframe = (doc = null);
+}));
+ _$jscoverage['core/Selection.js'][140]++;
+ Selection.prototype = {getNative: (function () {
+ _$jscoverage['core/Selection.js'][151]++;
+ var doc = this.document;
+ _$jscoverage['core/Selection.js'][152]++;
+ try {
+ _$jscoverage['core/Selection.js'][153]++;
+ return ((! doc)? null: ((ie && (browser.ie < 9))? doc.selection: domUtils.getWindow(doc).getSelection()));
+ }
+ catch (e) {
+ _$jscoverage['core/Selection.js'][155]++;
+ return null;
+ }
+}), getIERange: (function () {
+ _$jscoverage['core/Selection.js'][168]++;
+ var ieRange = _getIERange(this);
+ _$jscoverage['core/Selection.js'][169]++;
+ if ((! ieRange)) {
+ _$jscoverage['core/Selection.js'][170]++;
+ if (this._bakIERange) {
+ _$jscoverage['core/Selection.js'][171]++;
+ return this._bakIERange;
+ }
+ }
+ _$jscoverage['core/Selection.js'][174]++;
+ return ieRange;
+}), cache: (function () {
+ _$jscoverage['core/Selection.js'][182]++;
+ this.clear();
+ _$jscoverage['core/Selection.js'][183]++;
+ this._cachedRange = this.getRange();
+ _$jscoverage['core/Selection.js'][184]++;
+ this._cachedStartElement = this.getStart();
+ _$jscoverage['core/Selection.js'][185]++;
+ this._cachedStartElementPath = this.getStartElementPath();
+}), getStartElementPath: (function () {
+ _$jscoverage['core/Selection.js'][198]++;
+ if (this._cachedStartElementPath) {
+ _$jscoverage['core/Selection.js'][199]++;
+ return this._cachedStartElementPath;
+ }
+ _$jscoverage['core/Selection.js'][201]++;
+ var start = this.getStart();
+ _$jscoverage['core/Selection.js'][202]++;
+ if (start) {
+ _$jscoverage['core/Selection.js'][203]++;
+ return domUtils.findParents(start, true, null, true);
+ }
+ _$jscoverage['core/Selection.js'][205]++;
+ return [];
+}), clear: (function () {
+ _$jscoverage['core/Selection.js'][212]++;
+ this._cachedStartElementPath = (this._cachedRange = (this._cachedStartElement = null));
+}), isFocus: (function () {
+ _$jscoverage['core/Selection.js'][219]++;
+ try {
+ _$jscoverage['core/Selection.js'][220]++;
+ return (((browser.ie && _getIERange(this)) || ((! browser.ie) && this.getNative().rangeCount))? true: false);
+ }
+ catch (e) {
+ _$jscoverage['core/Selection.js'][222]++;
+ return false;
+ }
+}), getRange: (function () {
+ _$jscoverage['core/Selection.js'][236]++;
+ var me = this;
+ _$jscoverage['core/Selection.js'][237]++;
+ function optimze(range) {
+ _$jscoverage['core/Selection.js'][238]++;
+ var child = me.document.body.firstChild, collapsed = range.collapsed;
+ _$jscoverage['core/Selection.js'][240]++;
+ while ((child && child.firstChild)) {
+ _$jscoverage['core/Selection.js'][241]++;
+ range.setStart(child, 0);
+ _$jscoverage['core/Selection.js'][242]++;
+ child = child.firstChild;
+}
+ _$jscoverage['core/Selection.js'][244]++;
+ if ((! range.startContainer)) {
+ _$jscoverage['core/Selection.js'][245]++;
+ range.setStart(me.document.body, 0);
+ }
+ _$jscoverage['core/Selection.js'][247]++;
+ if (collapsed) {
+ _$jscoverage['core/Selection.js'][248]++;
+ range.collapse(true);
+ }
+}
+ _$jscoverage['core/Selection.js'][252]++;
+ if ((me._cachedRange != null)) {
+ _$jscoverage['core/Selection.js'][253]++;
+ return this._cachedRange;
+ }
+ _$jscoverage['core/Selection.js'][255]++;
+ var range = new (baidu.editor.dom.Range)(me.document);
+ _$jscoverage['core/Selection.js'][256]++;
+ if ((ie && (browser.ie < 9))) {
+ _$jscoverage['core/Selection.js'][257]++;
+ var nativeRange = me.getIERange();
+ _$jscoverage['core/Selection.js'][258]++;
+ if (nativeRange) {
+ _$jscoverage['core/Selection.js'][260]++;
+ try {
+ _$jscoverage['core/Selection.js'][261]++;
+ transformIERangeToRange(nativeRange, range);
+ }
+ catch (e) {
+ _$jscoverage['core/Selection.js'][263]++;
+ optimze(range);
+ }
+ }
+ else {
+ _$jscoverage['core/Selection.js'][267]++;
+ optimze(range);
+ }
+ }
+ else {
+ _$jscoverage['core/Selection.js'][270]++;
+ var sel = me.getNative();
+ _$jscoverage['core/Selection.js'][271]++;
+ if ((sel && sel.rangeCount)) {
+ _$jscoverage['core/Selection.js'][272]++;
+ var firstRange = sel.getRangeAt(0);
+ _$jscoverage['core/Selection.js'][273]++;
+ var lastRange = sel.getRangeAt((sel.rangeCount - 1));
+ _$jscoverage['core/Selection.js'][274]++;
+ range.setStart(firstRange.startContainer, firstRange.startOffset).setEnd(lastRange.endContainer, lastRange.endOffset);
+ _$jscoverage['core/Selection.js'][275]++;
+ if ((range.collapsed && domUtils.isBody(range.startContainer) && (! range.startOffset))) {
+ _$jscoverage['core/Selection.js'][276]++;
+ optimze(range);
+ }
+ }
+ else {
+ _$jscoverage['core/Selection.js'][280]++;
+ if ((this._bakRange && domUtils.inDoc(this._bakRange.startContainer, this.document))) {
+ _$jscoverage['core/Selection.js'][281]++;
+ return this._bakRange;
+ }
+ _$jscoverage['core/Selection.js'][283]++;
+ optimze(range);
+ }
+ }
+ _$jscoverage['core/Selection.js'][286]++;
+ return (this._bakRange = range);
+}), getStart: (function () {
+ _$jscoverage['core/Selection.js'][298]++;
+ if (this._cachedStartElement) {
+ _$jscoverage['core/Selection.js'][299]++;
+ return this._cachedStartElement;
+ }
+ _$jscoverage['core/Selection.js'][301]++;
+ var range = (ie? this.getIERange(): this.getRange()), tmpRange, start, tmp, parent;
+ _$jscoverage['core/Selection.js'][304]++;
+ if (ie) {
+ _$jscoverage['core/Selection.js'][305]++;
+ if ((! range)) {
+ _$jscoverage['core/Selection.js'][307]++;
+ return this.document.body.firstChild;
+ }
+ _$jscoverage['core/Selection.js'][310]++;
+ if (range.item) {
+ _$jscoverage['core/Selection.js'][311]++;
+ return range.item(0);
+ }
+ _$jscoverage['core/Selection.js'][313]++;
+ tmpRange = range.duplicate();
+ _$jscoverage['core/Selection.js'][315]++;
+ ((tmpRange.text.length > 0) && tmpRange.moveStart("character", 1));
+ _$jscoverage['core/Selection.js'][316]++;
+ tmpRange.collapse(1);
+ _$jscoverage['core/Selection.js'][317]++;
+ start = tmpRange.parentElement();
+ _$jscoverage['core/Selection.js'][318]++;
+ parent = (tmp = range.parentElement());
+ _$jscoverage['core/Selection.js'][319]++;
+ while ((tmp = tmp.parentNode)) {
+ _$jscoverage['core/Selection.js'][320]++;
+ if ((tmp == start)) {
+ _$jscoverage['core/Selection.js'][321]++;
+ start = parent;
+ _$jscoverage['core/Selection.js'][322]++;
+ break;
+ }
+}
+ }
+ else {
+ _$jscoverage['core/Selection.js'][326]++;
+ range.shrinkBoundary();
+ _$jscoverage['core/Selection.js'][327]++;
+ start = range.startContainer;
+ _$jscoverage['core/Selection.js'][328]++;
+ if (((start.nodeType == 1) && start.hasChildNodes())) {
+ _$jscoverage['core/Selection.js'][329]++;
+ start = start.childNodes[Math.min((start.childNodes.length - 1), range.startOffset)];
+ }
+ _$jscoverage['core/Selection.js'][331]++;
+ if ((start.nodeType == 3)) {
+ _$jscoverage['core/Selection.js'][332]++;
+ return start.parentNode;
+ }
+ }
+ _$jscoverage['core/Selection.js'][335]++;
+ return start;
+}), getText: (function () {
+ _$jscoverage['core/Selection.js'][347]++;
+ var nativeSel, nativeRange;
+ _$jscoverage['core/Selection.js'][348]++;
+ if ((this.isFocus() && (nativeSel = this.getNative()))) {
+ _$jscoverage['core/Selection.js'][349]++;
+ nativeRange = (browser.ie? nativeSel.createRange(): nativeSel.getRangeAt(0));
+ _$jscoverage['core/Selection.js'][350]++;
+ return (browser.ie? nativeRange.text: nativeRange.toString());
+ }
+ _$jscoverage['core/Selection.js'][352]++;
+ return "";
+}), clearRange: (function () {
+ _$jscoverage['core/Selection.js'][363]++;
+ (this.getNative()[(browser.ie? "empty": "removeAllRanges")])();
+})};
+})();
diff --git a/_test/coverage/core/ajax.js b/_test/coverage/core/ajax.js
new file mode 100644
index 000000000..ef9d21189
--- /dev/null
+++ b/_test/coverage/core/ajax.js
@@ -0,0 +1,203 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/ajax.js']) {
+ _$jscoverage['core/ajax.js'] = [];
+ _$jscoverage['core/ajax.js'][11] = 0;
+ _$jscoverage['core/ajax.js'][14] = 0;
+ _$jscoverage['core/ajax.js'][15] = 0;
+ _$jscoverage['core/ajax.js'][16] = 0;
+ _$jscoverage['core/ajax.js'][17] = 0;
+ _$jscoverage['core/ajax.js'][19] = 0;
+ _$jscoverage['core/ajax.js'][20] = 0;
+ _$jscoverage['core/ajax.js'][21] = 0;
+ _$jscoverage['core/ajax.js'][25] = 0;
+ _$jscoverage['core/ajax.js'][32] = 0;
+ _$jscoverage['core/ajax.js'][33] = 0;
+ _$jscoverage['core/ajax.js'][34] = 0;
+ _$jscoverage['core/ajax.js'][36] = 0;
+ _$jscoverage['core/ajax.js'][38] = 0;
+ _$jscoverage['core/ajax.js'][39] = 0;
+ _$jscoverage['core/ajax.js'][42] = 0;
+ _$jscoverage['core/ajax.js'][47] = 0;
+ _$jscoverage['core/ajax.js'][106] = 0;
+ _$jscoverage['core/ajax.js'][121] = 0;
+ _$jscoverage['core/ajax.js'][122] = 0;
+ _$jscoverage['core/ajax.js'][123] = 0;
+ _$jscoverage['core/ajax.js'][125] = 0;
+ _$jscoverage['core/ajax.js'][126] = 0;
+ _$jscoverage['core/ajax.js'][128] = 0;
+ _$jscoverage['core/ajax.js'][130] = 0;
+ _$jscoverage['core/ajax.js'][131] = 0;
+ _$jscoverage['core/ajax.js'][134] = 0;
+ _$jscoverage['core/ajax.js'][135] = 0;
+ _$jscoverage['core/ajax.js'][136] = 0;
+ _$jscoverage['core/ajax.js'][137] = 0;
+ _$jscoverage['core/ajax.js'][138] = 0;
+ _$jscoverage['core/ajax.js'][142] = 0;
+ _$jscoverage['core/ajax.js'][143] = 0;
+ _$jscoverage['core/ajax.js'][144] = 0;
+ _$jscoverage['core/ajax.js'][145] = 0;
+ _$jscoverage['core/ajax.js'][146] = 0;
+ _$jscoverage['core/ajax.js'][147] = 0;
+ _$jscoverage['core/ajax.js'][148] = 0;
+ _$jscoverage['core/ajax.js'][150] = 0;
+ _$jscoverage['core/ajax.js'][154] = 0;
+ _$jscoverage['core/ajax.js'][155] = 0;
+ _$jscoverage['core/ajax.js'][156] = 0;
+ _$jscoverage['core/ajax.js'][158] = 0;
+}
+_$jscoverage['core/ajax.js'].source = ["/** "," * @file "," * @module UE.ajax "," * @since 1.2.6.1 "," */ ","","/** "," * 提供对ajax请求的支持 "," * @module UE.ajax "," */ ","UE. ajax = function () { ",""," //创建一个ajaxRequest对象 "," var fnStr = 'XMLHttpRequest()' ; "," try { "," new ActiveXObject( \"Msxml2.XMLHTTP\" ); "," fnStr = 'ActiveXObject( \\' Msxml2.XMLHTTP \\' )' ; "," } catch ( e) { "," try { "," new ActiveXObject( \"Microsoft.XMLHTTP\" ); "," fnStr = 'ActiveXObject( \\' Microsoft.XMLHTTP \\' )' "," } catch ( e) { "," } "," } "," var creatAjaxRequest = new Function( 'return new ' + fnStr); ","",""," /* "," * 将json参数转化成适合ajax提交的参数列表 "," * @param json "," */ "," function json2str( json) { "," var strArr = []; "," for ( var i in json) { "," //忽略默认的几个参数 "," if ( i== \"method\" || i== \"timeout\" || i== \"async\" ) continue ; "," //传递过来的对象和函数不在提交之列 "," if (!(( typeof json[ i]). toLowerCase() == \"function\" || ( typeof json[ i]). toLowerCase() == \"object\" )) { "," strArr. push( encodeURIComponent( i) + \"=\" + encodeURIComponent( json[ i]) ); "," } "," } "," return strArr. join( \"&\" ); ",""," } ","",""," return { "," /** "," * 根据给定的参数项,向指定的url发起一个ajax请求。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 "," * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调 "," * @method request "," * @param { URLString } url ajax请求的url地址 "," * @param { KeyValueMap } ajaxOptions ajax请求选项的键值对,支持的选项如下: "," * @example "," * ```javascript "," * //向sayhello.php发起一个异步的Ajax GET请求, 请求超时时间为10s, 请求完成后执行相应的回调。 "," * UE.ajax.requeset( 'sayhello.php', { "," * "," * //请求方法。可选值: 'GET', 'POST',默认值是'POST' "," * method: 'GET', "," * "," * //超时时间。 默认为5000, 单位是ms "," * timeout: 10000, "," * "," * //是否是异步请求。 true为异步请求, false为同步请求 "," * async: true, "," * "," * //请求携带的数据。如果请求为GET请求, data会经过stringify后附加到请求url之后。 "," * data: { "," * name: 'ueditor' "," * }, "," * "," * //请求成功后的回调, 该回调接受当前的XMLHttpRequest对象作为参数。 "," * onsuccess: function ( xhr ) { "," * console.log( xhr.responseText ); "," * }, "," * "," * //请求失败或者超时后的回调。 "," * onerror: function ( xhr ) { "," * alert( 'Ajax请求失败' ); "," * } "," * "," * } ); "," * ``` "," */ ",""," /** "," * 根据给定的参数项发起一个ajax请求, 参数项里必须包含一个url地址。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 "," * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调。 "," * @method request "," * @warning 如果在参数项里未提供一个key为“url”的地址值,则该请求将直接退出。 "," * @param { KeyValueMap } ajaxOptions ajax请求选项的键值对,支持的选项如下: "," * @example "," * ```javascript "," * "," * //向sayhello.php发起一个异步的Ajax POST请求, 请求超时时间为5s, 请求完成后不执行任何回调。 "," * UE.ajax.requeset( 'sayhello.php', { "," * "," * //请求的地址, 该项是必须的。 "," * url: 'sayhello.php' "," * "," * } ); "," * ``` "," */ ","\t\trequest: function ( url, ajaxOptions) { "," var ajaxRequest = creatAjaxRequest(), "," //是否超时 "," timeIsOut = false , "," //默认参数 "," defaultAjaxOptions = { "," method: \"POST\" , "," timeout: 5000 , "," async: true , "," data: {} , //需要传递对象的话只能覆盖 "," onsuccess: function () { "," } , "," onerror: function () { "," } "," } ; ","","\t\t\tif ( typeof url === \"object\" ) { ","\t\t\t\tajaxOptions = url; ","\t\t\t\turl = ajaxOptions. url; ","\t\t\t} ","\t\t\tif (! ajaxRequest || ! url) return ; ","\t\t\tvar ajaxOpts = ajaxOptions ? utils. extend( defaultAjaxOptions, ajaxOptions) : defaultAjaxOptions; ","","\t\t\tvar submitStr = json2str( ajaxOpts); // { name:\"Jim\",city:\"Beijing\" } --> \"name=Jim&city=Beijing\" ","\t\t\t//如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 ","\t\t\tif (! utils. isEmptyObject( ajaxOpts. data)) { "," submitStr += ( submitStr? \"&\" : \"\" ) + json2str( ajaxOpts. data); ","\t\t\t} "," //超时检测 "," var timerID = setTimeout( function () { "," if ( ajaxRequest. readyState != 4 ) { "," timeIsOut = true ; "," ajaxRequest. abort(); "," clearTimeout( timerID); "," } "," } , ajaxOpts. timeout); ","","\t\t\tvar method = ajaxOpts. method. toUpperCase(); "," var str = url + ( url. indexOf( \"?\" )==- 1 ? \"?\" : \"&\" ) + ( method== \"POST\" ? \"\" : submitStr+ \"&noCache=\" + + new Date); ","\t\t\tajaxRequest. open( method, str, ajaxOpts. async); ","\t\t\tajaxRequest. onreadystatechange = function () { ","\t\t\t\tif ( ajaxRequest. readyState == 4 ) { ","\t\t\t\t\tif (! timeIsOut && ajaxRequest. status == 200 ) { ","\t\t\t\t\t\tajaxOpts. onsuccess( ajaxRequest); ","\t\t\t\t\t} else { ","\t\t\t\t\t\tajaxOpts. onerror( ajaxRequest); ","\t\t\t\t\t} ","\t\t\t\t} ","\t\t\t} ; ","\t\t\tif ( method == \"POST\" ) { ","\t\t\t\tajaxRequest. setRequestHeader( 'Content-Type' , 'application/x-www-form-urlencoded' ); ","\t\t\t\tajaxRequest. send( submitStr); ","\t\t\t} else { ","\t\t\t\tajaxRequest. send( null ); ","\t\t\t} ","\t\t} ","\t} ; ","","","} (); "];
+_$jscoverage['core/ajax.js'][11]++;
+UE.ajax = (function () {
+ _$jscoverage['core/ajax.js'][14]++;
+ var fnStr = "XMLHttpRequest()";
+ _$jscoverage['core/ajax.js'][15]++;
+ try {
+ _$jscoverage['core/ajax.js'][16]++;
+ new ActiveXObject("Msxml2.XMLHTTP");
+ _$jscoverage['core/ajax.js'][17]++;
+ fnStr = "ActiveXObject('Msxml2.XMLHTTP')";
+ }
+ catch (e) {
+ _$jscoverage['core/ajax.js'][19]++;
+ try {
+ _$jscoverage['core/ajax.js'][20]++;
+ new ActiveXObject("Microsoft.XMLHTTP");
+ _$jscoverage['core/ajax.js'][21]++;
+ fnStr = "ActiveXObject('Microsoft.XMLHTTP')";
+ }
+ catch (e) {
+ }
+ }
+ _$jscoverage['core/ajax.js'][25]++;
+ var creatAjaxRequest = new Function(("return new " + fnStr));
+ _$jscoverage['core/ajax.js'][32]++;
+ function json2str(json) {
+ _$jscoverage['core/ajax.js'][33]++;
+ var strArr = [];
+ _$jscoverage['core/ajax.js'][34]++;
+ for (var i in json) {
+ _$jscoverage['core/ajax.js'][36]++;
+ if (((i == "method") || (i == "timeout") || (i == "async"))) {
+ _$jscoverage['core/ajax.js'][36]++;
+ continue;
+ }
+ _$jscoverage['core/ajax.js'][38]++;
+ if ((! (((typeof json[i]).toLowerCase() == "function") || ((typeof json[i]).toLowerCase() == "object")))) {
+ _$jscoverage['core/ajax.js'][39]++;
+ strArr.push((encodeURIComponent(i) + "=" + encodeURIComponent(json[i])));
+ }
+}
+ _$jscoverage['core/ajax.js'][42]++;
+ return strArr.join("&");
+}
+ _$jscoverage['core/ajax.js'][47]++;
+ return ({request: (function (url, ajaxOptions) {
+ _$jscoverage['core/ajax.js'][106]++;
+ var ajaxRequest = creatAjaxRequest(), timeIsOut = false, defaultAjaxOptions = {method: "POST", timeout: 5000, async: true, data: {}, onsuccess: (function () {
+}), onerror: (function () {
+})};
+ _$jscoverage['core/ajax.js'][121]++;
+ if (((typeof url) === "object")) {
+ _$jscoverage['core/ajax.js'][122]++;
+ ajaxOptions = url;
+ _$jscoverage['core/ajax.js'][123]++;
+ url = ajaxOptions.url;
+ }
+ _$jscoverage['core/ajax.js'][125]++;
+ if (((! ajaxRequest) || (! url))) {
+ _$jscoverage['core/ajax.js'][125]++;
+ return;
+ }
+ _$jscoverage['core/ajax.js'][126]++;
+ var ajaxOpts = (ajaxOptions? utils.extend(defaultAjaxOptions, ajaxOptions): defaultAjaxOptions);
+ _$jscoverage['core/ajax.js'][128]++;
+ var submitStr = json2str(ajaxOpts);
+ _$jscoverage['core/ajax.js'][130]++;
+ if ((! utils.isEmptyObject(ajaxOpts.data))) {
+ _$jscoverage['core/ajax.js'][131]++;
+ submitStr += ((submitStr? "&": "") + json2str(ajaxOpts.data));
+ }
+ _$jscoverage['core/ajax.js'][134]++;
+ var timerID = setTimeout((function () {
+ _$jscoverage['core/ajax.js'][135]++;
+ if ((ajaxRequest.readyState != 4)) {
+ _$jscoverage['core/ajax.js'][136]++;
+ timeIsOut = true;
+ _$jscoverage['core/ajax.js'][137]++;
+ ajaxRequest.abort();
+ _$jscoverage['core/ajax.js'][138]++;
+ clearTimeout(timerID);
+ }
+}), ajaxOpts.timeout);
+ _$jscoverage['core/ajax.js'][142]++;
+ var method = ajaxOpts.method.toUpperCase();
+ _$jscoverage['core/ajax.js'][143]++;
+ var str = (url + ((url.indexOf("?") == -1)? "?": "&") + ((method == "POST")? "": (submitStr + "&noCache=" + (+ new Date()))));
+ _$jscoverage['core/ajax.js'][144]++;
+ ajaxRequest.open(method, str, ajaxOpts.async);
+ _$jscoverage['core/ajax.js'][145]++;
+ ajaxRequest.onreadystatechange = (function () {
+ _$jscoverage['core/ajax.js'][146]++;
+ if ((ajaxRequest.readyState == 4)) {
+ _$jscoverage['core/ajax.js'][147]++;
+ if (((! timeIsOut) && (ajaxRequest.status == 200))) {
+ _$jscoverage['core/ajax.js'][148]++;
+ ajaxOpts.onsuccess(ajaxRequest);
+ }
+ else {
+ _$jscoverage['core/ajax.js'][150]++;
+ ajaxOpts.onerror(ajaxRequest);
+ }
+ }
+});
+ _$jscoverage['core/ajax.js'][154]++;
+ if ((method == "POST")) {
+ _$jscoverage['core/ajax.js'][155]++;
+ ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ _$jscoverage['core/ajax.js'][156]++;
+ ajaxRequest.send(submitStr);
+ }
+ else {
+ _$jscoverage['core/ajax.js'][158]++;
+ ajaxRequest.send(null);
+ }
+})});
+})();
diff --git a/_test/coverage/core/browser.js b/_test/coverage/core/browser.js
new file mode 100644
index 000000000..368582eb5
--- /dev/null
+++ b/_test/coverage/core/browser.js
@@ -0,0 +1,135 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/browser.js']) {
+ _$jscoverage['core/browser.js'] = [];
+ _$jscoverage['core/browser.js'][13] = 0;
+ _$jscoverage['core/browser.js'][14] = 0;
+ _$jscoverage['core/browser.js'][83] = 0;
+ _$jscoverage['core/browser.js'][85] = 0;
+ _$jscoverage['core/browser.js'][88] = 0;
+ _$jscoverage['core/browser.js'][89] = 0;
+ _$jscoverage['core/browser.js'][100] = 0;
+ _$jscoverage['core/browser.js'][112] = 0;
+ _$jscoverage['core/browser.js'][124] = 0;
+ _$jscoverage['core/browser.js'][136] = 0;
+ _$jscoverage['core/browser.js'][149] = 0;
+ _$jscoverage['core/browser.js'][154] = 0;
+ _$jscoverage['core/browser.js'][155] = 0;
+ _$jscoverage['core/browser.js'][156] = 0;
+ _$jscoverage['core/browser.js'][158] = 0;
+ _$jscoverage['core/browser.js'][159] = 0;
+ _$jscoverage['core/browser.js'][173] = 0;
+ _$jscoverage['core/browser.js'][174] = 0;
+ _$jscoverage['core/browser.js'][187] = 0;
+ _$jscoverage['core/browser.js'][188] = 0;
+ _$jscoverage['core/browser.js'][193] = 0;
+ _$jscoverage['core/browser.js'][194] = 0;
+ _$jscoverage['core/browser.js'][197] = 0;
+ _$jscoverage['core/browser.js'][198] = 0;
+ _$jscoverage['core/browser.js'][213] = 0;
+ _$jscoverage['core/browser.js'][224] = 0;
+ _$jscoverage['core/browser.js'][232] = 0;
+ _$jscoverage['core/browser.js'][235] = 0;
+}
+_$jscoverage['core/browser.js'].source = ["/** "," * 浏览器判断模块 "," * @file "," * @module UE.browser "," * @since 1.2.6.1 "," */ ","","/** "," * 提供浏览器检测的模块 "," * @unfile "," * @module UE.browser "," */ ","var browser = UE. browser = function () { "," var agent = navigator. userAgent. toLowerCase(), "," opera = window. opera, "," browser = { ",""," /** "," * @property {boolean} ie 检测当前浏览器是否为IE "," * @example "," * ```javascript "," * if ( UE.browser.ie ) { "," * console.log( '当前浏览器是IE' ); "," * } "," * ``` "," */ "," ie\t\t: !! window. ActiveXObject, ",""," /** "," * @property {boolean} opera 检测当前浏览器是否为Opera "," * @example "," * ```javascript "," * if ( UE.browser.opera ) { "," * console.log( '当前浏览器是Opera' ); "," * } "," * ``` "," */ "," opera\t: ( !! opera && opera. version ), ",""," /** "," * @property {boolean} webkit 检测当前浏览器是否是webkit内核的浏览器 "," * @example "," * ```javascript "," * if ( UE.browser.webkit ) { "," * console.log( '当前浏览器是webkit内核浏览器' ); "," * } "," * ``` "," */ "," webkit\t: ( agent. indexOf( ' applewebkit/' ) > - 1 ), ",""," /** "," * @property {boolean} mac 检测当前浏览器是否是运行在mac平台下 "," * @example "," * ```javascript "," * if ( UE.browser.mac ) { "," * console.log( '当前浏览器运行在mac平台下' ); "," * } "," * ``` "," */ "," mac\t: ( agent. indexOf( 'macintosh' ) > - 1 ), ",""," /** "," * @property {boolean} quirks 检测当前浏览器是否处于“怪异模式”下 "," * @example "," * ```javascript "," * if ( UE.browser.quirks ) { "," * console.log( '当前浏览器运行处于“怪异模式”' ); "," * } "," * ``` "," */ "," quirks : ( document. compatMode == 'BackCompat' ) "," } ; ",""," /** "," * @property {boolean} gecko 检测当前浏览器内核是否是gecko内核 "," * @example "," * ```javascript "," * if ( UE.browser.gecko ) { "," * console.log( '当前浏览器内核是gecko内核' ); "," * } "," * ``` "," */ "," browser. gecko =( navigator. product == 'Gecko' && ! browser. webkit && ! browser. opera ); ",""," var version = 0 ; ",""," // Internet Explorer 6.0+ "," if ( browser. ie ) { "," version = parseFloat( agent. match( /msie (\\d+)/ )[ 1 ] ); "," /** "," * @property { boolean } ie9Compat 检测浏览器模式是否为 IE9 兼容模式 "," * @warning 如果浏览器不是IE, 则该值为undefined "," * @example "," * ```javascript "," * if ( UE.browser.ie9Compat ) { "," * console.log( '当前浏览器运行在IE9兼容模式下' ); "," * } "," * ``` "," */ "," browser. ie9Compat = document. documentMode == 9 ; ",""," /** "," * @property { boolean } ie8 检测浏览器是否是IE8浏览器 "," * @warning 如果浏览器不是IE, 则该值为undefined "," * @example "," * ```javascript "," * if ( UE.browser.ie8 ) { "," * console.log( '当前浏览器是IE8浏览器' ); "," * } "," * ``` "," */ "," browser. ie8 = !! document. documentMode; ",""," /** "," * @property { boolean } ie8Compat 检测浏览器模式是否为 IE8 兼容模式 "," * @warning 如果浏览器不是IE, 则该值为undefined "," * @example "," * ```javascript "," * if ( UE.browser.ie8Compat ) { "," * console.log( '当前浏览器运行在IE8兼容模式下' ); "," * } "," * ``` "," */ "," browser. ie8Compat = document. documentMode == 8 ; ",""," /** "," * @property { boolean } ie7Compat 检测浏览器模式是否为 IE7 兼容模式 "," * @warning 如果浏览器不是IE, 则该值为undefined "," * @example "," * ```javascript "," * if ( UE.browser.ie7Compat ) { "," * console.log( '当前浏览器运行在IE7兼容模式下' ); "," * } "," * ``` "," */ "," browser. ie7Compat = ( ( version == 7 && ! document. documentMode ) "," || document. documentMode == 7 ); ",""," /** "," * @property { boolean } ie6Compat 检测浏览器模式是否为 IE6 模式 或者怪异模式 "," * @warning 如果浏览器不是IE, 则该值为undefined "," * @example "," * ```javascript "," * if ( UE.browser.ie6Compat ) { "," * console.log( '当前浏览器运行在IE6模式或者怪异模式下' ); "," * } "," * ``` "," */ "," browser. ie6Compat = ( version < 7 || browser. quirks ); ",""," } ",""," // Gecko. "," if ( browser. gecko ) { "," var geckoRelease = agent. match( /rv:([\\d\\.]+)/ ); "," if ( geckoRelease ) "," { "," geckoRelease = geckoRelease[ 1 ]. split( '.' ); "," version = geckoRelease[ 0 ] * 10000 + ( geckoRelease[ 1 ] || 0 ) * 100 + ( geckoRelease[ 2 ] || 0 ) * 1 ; "," } "," } ",""," /** "," * @property { Number } chrome 检测当前浏览器是否为Chrome, 如果是,则返回Chrome的大版本号 "," * @warning 如果浏览器不是chrome, 则该值为undefined "," * @example "," * ```javascript "," * if ( UE.browser.chrome ) { "," * console.log( '当前浏览器是Chrome' ); "," * } "," * ``` "," */ "," if ( /chrome\\/(\\d+\\.\\d)/i . test( agent)) { "," browser. chrome = + RegExp[ ' \\x 241' ]; "," } ",""," /** "," * @property { Number } safari 检测当前浏览器是否为Safari, 如果是,则返回Safari的大版本号 "," * @warning 如果浏览器不是safari, 则该值为undefined "," * @example "," * ```javascript "," * if ( UE.browser.safari ) { "," * console.log( '当前浏览器是Safari' ); "," * } "," * ``` "," */ "," if ( /(\\d+\\.\\d)?(?:\\.\\d)?\\s+safari\\/?(\\d+\\.\\d+)?/i . test( agent) && ! /chrome/i . test( agent)) { "," \tbrowser. safari = + ( RegExp[ ' \\x 241' ] || RegExp[ ' \\x 242' ]); "," } ","",""," // Opera 9.50+ "," if ( browser. opera ) "," version = parseFloat( opera. version() ); ",""," // WebKit 522+ (Safari 3+) "," if ( browser. webkit ) "," version = parseFloat( agent. match( / applewebkit\\/(\\d+)/ )[ 1 ] ); ",""," /** "," * @property { Number } version 检测当前浏览器版本号 "," * @remind "," * <ul> "," * <li>IE系列返回值为5,6,7,8,9,10等</li> "," * <li>gecko系列会返回10900,158900等</li> "," * <li>webkit系列会返回其build号 (如 522等)</li> "," * </ul> "," * @example "," * ```javascript "," * console.log( '当前浏览器版本号是: ' + UE.browser.version ); "," * ``` "," */ "," browser. version = version; ",""," /** "," * @property { boolean } isCompatible 检测当前浏览器是否能够与UEditor良好兼容 "," * @example "," * ```javascript "," * if ( UE.browser.isCompatible ) { "," * console.log( '浏览器与UEditor能够良好兼容' ); "," * } "," * ``` "," */ "," browser. isCompatible = "," ! browser. mobile && ( "," ( browser. ie && version >= 6 ) || "," ( browser. gecko && version >= 10801 ) || "," ( browser. opera && version >= 9.5 ) || "," ( browser. air && version >= 1 ) || "," ( browser. webkit && version >= 522 ) || "," false ); "," return browser; ","} (); ","//快捷方式 ","var ie = browser. ie, "," webkit = browser. webkit, "," gecko = browser. gecko, "," opera = browser. opera; "];
+_$jscoverage['core/browser.js'][13]++;
+var browser = (UE.browser = (function () {
+ _$jscoverage['core/browser.js'][14]++;
+ var agent = navigator.userAgent.toLowerCase(), opera = window.opera, browser = {ie: (! (! window.ActiveXObject)), opera: ((! (! opera)) && opera.version), webkit: (agent.indexOf(" applewebkit/") > -1), mac: (agent.indexOf("macintosh") > -1), quirks: (document.compatMode == "BackCompat")};
+ _$jscoverage['core/browser.js'][83]++;
+ browser.gecko = ((navigator.product == "Gecko") && (! browser.webkit) && (! browser.opera));
+ _$jscoverage['core/browser.js'][85]++;
+ var version = 0;
+ _$jscoverage['core/browser.js'][88]++;
+ if (browser.ie) {
+ _$jscoverage['core/browser.js'][89]++;
+ version = parseFloat(agent.match(/msie (\d+)/)[1]);
+ _$jscoverage['core/browser.js'][100]++;
+ browser.ie9Compat = (document.documentMode == 9);
+ _$jscoverage['core/browser.js'][112]++;
+ browser.ie8 = (! (! document.documentMode));
+ _$jscoverage['core/browser.js'][124]++;
+ browser.ie8Compat = (document.documentMode == 8);
+ _$jscoverage['core/browser.js'][136]++;
+ browser.ie7Compat = (((version == 7) && (! document.documentMode)) || (document.documentMode == 7));
+ _$jscoverage['core/browser.js'][149]++;
+ browser.ie6Compat = ((version < 7) || browser.quirks);
+ }
+ _$jscoverage['core/browser.js'][154]++;
+ if (browser.gecko) {
+ _$jscoverage['core/browser.js'][155]++;
+ var geckoRelease = agent.match(/rv:([\d\.]+)/);
+ _$jscoverage['core/browser.js'][156]++;
+ if (geckoRelease) {
+ _$jscoverage['core/browser.js'][158]++;
+ geckoRelease = geckoRelease[1].split(".");
+ _$jscoverage['core/browser.js'][159]++;
+ version = ((geckoRelease[0] * 10000) + ((geckoRelease[1] || 0) * 100) + ((geckoRelease[2] || 0) * 1));
+ }
+ }
+ _$jscoverage['core/browser.js'][173]++;
+ if (/chrome\/(\d+\.\d)/i.test(agent)) {
+ _$jscoverage['core/browser.js'][174]++;
+ browser.chrome = (+ RegExp.$1);
+ }
+ _$jscoverage['core/browser.js'][187]++;
+ if ((/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && (! /chrome/i.test(agent)))) {
+ _$jscoverage['core/browser.js'][188]++;
+ browser.safari = (+ (RegExp.$1 || RegExp.$2));
+ }
+ _$jscoverage['core/browser.js'][193]++;
+ if (browser.opera) {
+ _$jscoverage['core/browser.js'][194]++;
+ version = parseFloat(opera.version());
+ }
+ _$jscoverage['core/browser.js'][197]++;
+ if (browser.webkit) {
+ _$jscoverage['core/browser.js'][198]++;
+ version = parseFloat(agent.match(/ applewebkit\/(\d+)/)[1]);
+ }
+ _$jscoverage['core/browser.js'][213]++;
+ browser.version = version;
+ _$jscoverage['core/browser.js'][224]++;
+ browser.isCompatible = ((! browser.mobile) && ((browser.ie && (version >= 6)) || (browser.gecko && (version >= 10801)) || (browser.opera && (version >= 9.5)) || (browser.air && (version >= 1)) || (browser.webkit && (version >= 522)) || false));
+ _$jscoverage['core/browser.js'][232]++;
+ return browser;
+})());
+_$jscoverage['core/browser.js'][235]++;
+var ie = browser.ie, webkit = browser.webkit, gecko = browser.gecko, opera = browser.opera;
diff --git a/_test/coverage/core/domUtils.js b/_test/coverage/core/domUtils.js
new file mode 100644
index 000000000..12f26b157
--- /dev/null
+++ b/_test/coverage/core/domUtils.js
@@ -0,0 +1,1846 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/domUtils.js']) {
+ _$jscoverage['core/domUtils.js'] = [];
+ _$jscoverage['core/domUtils.js'][15] = 0;
+ _$jscoverage['core/domUtils.js'][16] = 0;
+ _$jscoverage['core/domUtils.js'][18] = 0;
+ _$jscoverage['core/domUtils.js'][19] = 0;
+ _$jscoverage['core/domUtils.js'][20] = 0;
+ _$jscoverage['core/domUtils.js'][21] = 0;
+ _$jscoverage['core/domUtils.js'][23] = 0;
+ _$jscoverage['core/domUtils.js'][25] = 0;
+ _$jscoverage['core/domUtils.js'][26] = 0;
+ _$jscoverage['core/domUtils.js'][28] = 0;
+ _$jscoverage['core/domUtils.js'][30] = 0;
+ _$jscoverage['core/domUtils.js'][53] = 0;
+ _$jscoverage['core/domUtils.js'][120] = 0;
+ _$jscoverage['core/domUtils.js'][122] = 0;
+ _$jscoverage['core/domUtils.js'][124] = 0;
+ _$jscoverage['core/domUtils.js'][127] = 0;
+ _$jscoverage['core/domUtils.js'][128] = 0;
+ _$jscoverage['core/domUtils.js'][130] = 0;
+ _$jscoverage['core/domUtils.js'][132] = 0;
+ _$jscoverage['core/domUtils.js'][134] = 0;
+ _$jscoverage['core/domUtils.js'][136] = 0;
+ _$jscoverage['core/domUtils.js'][137] = 0;
+ _$jscoverage['core/domUtils.js'][139] = 0;
+ _$jscoverage['core/domUtils.js'][141] = 0;
+ _$jscoverage['core/domUtils.js'][143] = 0;
+ _$jscoverage['core/domUtils.js'][145] = 0;
+ _$jscoverage['core/domUtils.js'][146] = 0;
+ _$jscoverage['core/domUtils.js'][147] = 0;
+ _$jscoverage['core/domUtils.js'][149] = 0;
+ _$jscoverage['core/domUtils.js'][151] = 0;
+ _$jscoverage['core/domUtils.js'][152] = 0;
+ _$jscoverage['core/domUtils.js'][154] = 0;
+ _$jscoverage['core/domUtils.js'][155] = 0;
+ _$jscoverage['core/domUtils.js'][156] = 0;
+ _$jscoverage['core/domUtils.js'][157] = 0;
+ _$jscoverage['core/domUtils.js'][159] = 0;
+ _$jscoverage['core/domUtils.js'][163] = 0;
+ _$jscoverage['core/domUtils.js'][181] = 0;
+ _$jscoverage['core/domUtils.js'][183] = 0;
+ _$jscoverage['core/domUtils.js'][184] = 0;
+ _$jscoverage['core/domUtils.js'][185] = 0;
+ _$jscoverage['core/domUtils.js'][186] = 0;
+ _$jscoverage['core/domUtils.js'][188] = 0;
+ _$jscoverage['core/domUtils.js'][190] = 0;
+ _$jscoverage['core/domUtils.js'][192] = 0;
+ _$jscoverage['core/domUtils.js'][217] = 0;
+ _$jscoverage['core/domUtils.js'][279] = 0;
+ _$jscoverage['core/domUtils.js'][280] = 0;
+ _$jscoverage['core/domUtils.js'][281] = 0;
+ _$jscoverage['core/domUtils.js'][282] = 0;
+ _$jscoverage['core/domUtils.js'][283] = 0;
+ _$jscoverage['core/domUtils.js'][285] = 0;
+ _$jscoverage['core/domUtils.js'][288] = 0;
+ _$jscoverage['core/domUtils.js'][350] = 0;
+ _$jscoverage['core/domUtils.js'][351] = 0;
+ _$jscoverage['core/domUtils.js'][352] = 0;
+ _$jscoverage['core/domUtils.js'][365] = 0;
+ _$jscoverage['core/domUtils.js'][366] = 0;
+ _$jscoverage['core/domUtils.js'][367] = 0;
+ _$jscoverage['core/domUtils.js'][369] = 0;
+ _$jscoverage['core/domUtils.js'][380] = 0;
+ _$jscoverage['core/domUtils.js'][420] = 0;
+ _$jscoverage['core/domUtils.js'][422] = 0;
+ _$jscoverage['core/domUtils.js'][423] = 0;
+ _$jscoverage['core/domUtils.js'][424] = 0;
+ _$jscoverage['core/domUtils.js'][425] = 0;
+ _$jscoverage['core/domUtils.js'][428] = 0;
+ _$jscoverage['core/domUtils.js'][430] = 0;
+ _$jscoverage['core/domUtils.js'][437] = 0;
+ _$jscoverage['core/domUtils.js'][456] = 0;
+ _$jscoverage['core/domUtils.js'][471] = 0;
+ _$jscoverage['core/domUtils.js'][472] = 0;
+ _$jscoverage['core/domUtils.js'][490] = 0;
+ _$jscoverage['core/domUtils.js'][491] = 0;
+ _$jscoverage['core/domUtils.js'][492] = 0;
+ _$jscoverage['core/domUtils.js'][493] = 0;
+ _$jscoverage['core/domUtils.js'][494] = 0;
+ _$jscoverage['core/domUtils.js'][495] = 0;
+ _$jscoverage['core/domUtils.js'][497] = 0;
+ _$jscoverage['core/domUtils.js'][499] = 0;
+ _$jscoverage['core/domUtils.js'][500] = 0;
+ _$jscoverage['core/domUtils.js'][501] = 0;
+ _$jscoverage['core/domUtils.js'][502] = 0;
+ _$jscoverage['core/domUtils.js'][503] = 0;
+ _$jscoverage['core/domUtils.js'][505] = 0;
+ _$jscoverage['core/domUtils.js'][506] = 0;
+ _$jscoverage['core/domUtils.js'][507] = 0;
+ _$jscoverage['core/domUtils.js'][509] = 0;
+ _$jscoverage['core/domUtils.js'][523] = 0;
+ _$jscoverage['core/domUtils.js'][524] = 0;
+ _$jscoverage['core/domUtils.js'][525] = 0;
+ _$jscoverage['core/domUtils.js'][528] = 0;
+ _$jscoverage['core/domUtils.js'][529] = 0;
+ _$jscoverage['core/domUtils.js'][530] = 0;
+ _$jscoverage['core/domUtils.js'][533] = 0;
+ _$jscoverage['core/domUtils.js'][534] = 0;
+ _$jscoverage['core/domUtils.js'][554] = 0;
+ _$jscoverage['core/domUtils.js'][555] = 0;
+ _$jscoverage['core/domUtils.js'][556] = 0;
+ _$jscoverage['core/domUtils.js'][557] = 0;
+ _$jscoverage['core/domUtils.js'][559] = 0;
+ _$jscoverage['core/domUtils.js'][561] = 0;
+ _$jscoverage['core/domUtils.js'][562] = 0;
+ _$jscoverage['core/domUtils.js'][563] = 0;
+ _$jscoverage['core/domUtils.js'][564] = 0;
+ _$jscoverage['core/domUtils.js'][566] = 0;
+ _$jscoverage['core/domUtils.js'][586] = 0;
+ _$jscoverage['core/domUtils.js'][604] = 0;
+ _$jscoverage['core/domUtils.js'][605] = 0;
+ _$jscoverage['core/domUtils.js'][606] = 0;
+ _$jscoverage['core/domUtils.js'][607] = 0;
+ _$jscoverage['core/domUtils.js'][608] = 0;
+ _$jscoverage['core/domUtils.js'][610] = 0;
+ _$jscoverage['core/domUtils.js'][641] = 0;
+ _$jscoverage['core/domUtils.js'][643] = 0;
+ _$jscoverage['core/domUtils.js'][644] = 0;
+ _$jscoverage['core/domUtils.js'][645] = 0;
+ _$jscoverage['core/domUtils.js'][646] = 0;
+ _$jscoverage['core/domUtils.js'][648] = 0;
+ _$jscoverage['core/domUtils.js'][649] = 0;
+ _$jscoverage['core/domUtils.js'][653] = 0;
+ _$jscoverage['core/domUtils.js'][654] = 0;
+ _$jscoverage['core/domUtils.js'][655] = 0;
+ _$jscoverage['core/domUtils.js'][656] = 0;
+ _$jscoverage['core/domUtils.js'][658] = 0;
+ _$jscoverage['core/domUtils.js'][659] = 0;
+ _$jscoverage['core/domUtils.js'][660] = 0;
+ _$jscoverage['core/domUtils.js'][665] = 0;
+ _$jscoverage['core/domUtils.js'][669] = 0;
+ _$jscoverage['core/domUtils.js'][700] = 0;
+ _$jscoverage['core/domUtils.js'][702] = 0;
+ _$jscoverage['core/domUtils.js'][703] = 0;
+ _$jscoverage['core/domUtils.js'][704] = 0;
+ _$jscoverage['core/domUtils.js'][705] = 0;
+ _$jscoverage['core/domUtils.js'][707] = 0;
+ _$jscoverage['core/domUtils.js'][708] = 0;
+ _$jscoverage['core/domUtils.js'][709] = 0;
+ _$jscoverage['core/domUtils.js'][711] = 0;
+ _$jscoverage['core/domUtils.js'][712] = 0;
+ _$jscoverage['core/domUtils.js'][713] = 0;
+ _$jscoverage['core/domUtils.js'][714] = 0;
+ _$jscoverage['core/domUtils.js'][716] = 0;
+ _$jscoverage['core/domUtils.js'][749] = 0;
+ _$jscoverage['core/domUtils.js'][750] = 0;
+ _$jscoverage['core/domUtils.js'][752] = 0;
+ _$jscoverage['core/domUtils.js'][754] = 0;
+ _$jscoverage['core/domUtils.js'][755] = 0;
+ _$jscoverage['core/domUtils.js'][757] = 0;
+ _$jscoverage['core/domUtils.js'][758] = 0;
+ _$jscoverage['core/domUtils.js'][759] = 0;
+ _$jscoverage['core/domUtils.js'][760] = 0;
+ _$jscoverage['core/domUtils.js'][761] = 0;
+ _$jscoverage['core/domUtils.js'][763] = 0;
+ _$jscoverage['core/domUtils.js'][764] = 0;
+ _$jscoverage['core/domUtils.js'][766] = 0;
+ _$jscoverage['core/domUtils.js'][769] = 0;
+ _$jscoverage['core/domUtils.js'][770] = 0;
+ _$jscoverage['core/domUtils.js'][771] = 0;
+ _$jscoverage['core/domUtils.js'][772] = 0;
+ _$jscoverage['core/domUtils.js'][774] = 0;
+ _$jscoverage['core/domUtils.js'][777] = 0;
+ _$jscoverage['core/domUtils.js'][779] = 0;
+ _$jscoverage['core/domUtils.js'][780] = 0;
+ _$jscoverage['core/domUtils.js'][784] = 0;
+ _$jscoverage['core/domUtils.js'][785] = 0;
+ _$jscoverage['core/domUtils.js'][786] = 0;
+ _$jscoverage['core/domUtils.js'][787] = 0;
+ _$jscoverage['core/domUtils.js'][790] = 0;
+ _$jscoverage['core/domUtils.js'][791] = 0;
+ _$jscoverage['core/domUtils.js'][794] = 0;
+ _$jscoverage['core/domUtils.js'][824] = 0;
+ _$jscoverage['core/domUtils.js'][826] = 0;
+ _$jscoverage['core/domUtils.js'][827] = 0;
+ _$jscoverage['core/domUtils.js'][828] = 0;
+ _$jscoverage['core/domUtils.js'][829] = 0;
+ _$jscoverage['core/domUtils.js'][830] = 0;
+ _$jscoverage['core/domUtils.js'][831] = 0;
+ _$jscoverage['core/domUtils.js'][832] = 0;
+ _$jscoverage['core/domUtils.js'][833] = 0;
+ _$jscoverage['core/domUtils.js'][835] = 0;
+ _$jscoverage['core/domUtils.js'][836] = 0;
+ _$jscoverage['core/domUtils.js'][839] = 0;
+ _$jscoverage['core/domUtils.js'][841] = 0;
+ _$jscoverage['core/domUtils.js'][842] = 0;
+ _$jscoverage['core/domUtils.js'][844] = 0;
+ _$jscoverage['core/domUtils.js'][845] = 0;
+ _$jscoverage['core/domUtils.js'][846] = 0;
+ _$jscoverage['core/domUtils.js'][847] = 0;
+ _$jscoverage['core/domUtils.js'][849] = 0;
+ _$jscoverage['core/domUtils.js'][850] = 0;
+ _$jscoverage['core/domUtils.js'][851] = 0;
+ _$jscoverage['core/domUtils.js'][854] = 0;
+ _$jscoverage['core/domUtils.js'][885] = 0;
+ _$jscoverage['core/domUtils.js'][900] = 0;
+ _$jscoverage['core/domUtils.js'][913] = 0;
+ _$jscoverage['core/domUtils.js'][918] = 0;
+ _$jscoverage['core/domUtils.js'][919] = 0;
+ _$jscoverage['core/domUtils.js'][920] = 0;
+ _$jscoverage['core/domUtils.js'][921] = 0;
+ _$jscoverage['core/domUtils.js'][922] = 0;
+ _$jscoverage['core/domUtils.js'][923] = 0;
+ _$jscoverage['core/domUtils.js'][924] = 0;
+ _$jscoverage['core/domUtils.js'][925] = 0;
+ _$jscoverage['core/domUtils.js'][926] = 0;
+ _$jscoverage['core/domUtils.js'][928] = 0;
+ _$jscoverage['core/domUtils.js'][929] = 0;
+ _$jscoverage['core/domUtils.js'][931] = 0;
+ _$jscoverage['core/domUtils.js'][932] = 0;
+ _$jscoverage['core/domUtils.js'][934] = 0;
+ _$jscoverage['core/domUtils.js'][935] = 0;
+ _$jscoverage['core/domUtils.js'][937] = 0;
+ _$jscoverage['core/domUtils.js'][939] = 0;
+ _$jscoverage['core/domUtils.js'][940] = 0;
+ _$jscoverage['core/domUtils.js'][941] = 0;
+ _$jscoverage['core/domUtils.js'][942] = 0;
+ _$jscoverage['core/domUtils.js'][943] = 0;
+ _$jscoverage['core/domUtils.js'][944] = 0;
+ _$jscoverage['core/domUtils.js'][958] = 0;
+ _$jscoverage['core/domUtils.js'][959] = 0;
+ _$jscoverage['core/domUtils.js'][961] = 0;
+ _$jscoverage['core/domUtils.js'][962] = 0;
+ _$jscoverage['core/domUtils.js'][964] = 0;
+ _$jscoverage['core/domUtils.js'][965] = 0;
+ _$jscoverage['core/domUtils.js'][967] = 0;
+ _$jscoverage['core/domUtils.js'][970] = 0;
+ _$jscoverage['core/domUtils.js'][972] = 0;
+ _$jscoverage['core/domUtils.js'][974] = 0;
+ _$jscoverage['core/domUtils.js'][1000] = 0;
+ _$jscoverage['core/domUtils.js'][1001] = 0;
+ _$jscoverage['core/domUtils.js'][1002] = 0;
+ _$jscoverage['core/domUtils.js'][1003] = 0;
+ _$jscoverage['core/domUtils.js'][1006] = 0;
+ _$jscoverage['core/domUtils.js'][1007] = 0;
+ _$jscoverage['core/domUtils.js'][1019] = 0;
+ _$jscoverage['core/domUtils.js'][1020] = 0;
+ _$jscoverage['core/domUtils.js'][1021] = 0;
+ _$jscoverage['core/domUtils.js'][1022] = 0;
+ _$jscoverage['core/domUtils.js'][1025] = 0;
+ _$jscoverage['core/domUtils.js'][1026] = 0;
+ _$jscoverage['core/domUtils.js'][1027] = 0;
+ _$jscoverage['core/domUtils.js'][1028] = 0;
+ _$jscoverage['core/domUtils.js'][1029] = 0;
+ _$jscoverage['core/domUtils.js'][1030] = 0;
+ _$jscoverage['core/domUtils.js'][1031] = 0;
+ _$jscoverage['core/domUtils.js'][1034] = 0;
+ _$jscoverage['core/domUtils.js'][1035] = 0;
+ _$jscoverage['core/domUtils.js'][1036] = 0;
+ _$jscoverage['core/domUtils.js'][1037] = 0;
+ _$jscoverage['core/domUtils.js'][1038] = 0;
+ _$jscoverage['core/domUtils.js'][1039] = 0;
+ _$jscoverage['core/domUtils.js'][1040] = 0;
+ _$jscoverage['core/domUtils.js'][1044] = 0;
+ _$jscoverage['core/domUtils.js'][1045] = 0;
+ _$jscoverage['core/domUtils.js'][1047] = 0;
+ _$jscoverage['core/domUtils.js'][1049] = 0;
+ _$jscoverage['core/domUtils.js'][1050] = 0;
+ _$jscoverage['core/domUtils.js'][1061] = 0;
+ _$jscoverage['core/domUtils.js'][1062] = 0;
+ _$jscoverage['core/domUtils.js'][1063] = 0;
+ _$jscoverage['core/domUtils.js'][1065] = 0;
+ _$jscoverage['core/domUtils.js'][1066] = 0;
+ _$jscoverage['core/domUtils.js'][1067] = 0;
+ _$jscoverage['core/domUtils.js'][1068] = 0;
+ _$jscoverage['core/domUtils.js'][1069] = 0;
+ _$jscoverage['core/domUtils.js'][1070] = 0;
+ _$jscoverage['core/domUtils.js'][1071] = 0;
+ _$jscoverage['core/domUtils.js'][1075] = 0;
+ _$jscoverage['core/domUtils.js'][1106] = 0;
+ _$jscoverage['core/domUtils.js'][1107] = 0;
+ _$jscoverage['core/domUtils.js'][1108] = 0;
+ _$jscoverage['core/domUtils.js'][1109] = 0;
+ _$jscoverage['core/domUtils.js'][1111] = 0;
+ _$jscoverage['core/domUtils.js'][1113] = 0;
+ _$jscoverage['core/domUtils.js'][1114] = 0;
+ _$jscoverage['core/domUtils.js'][1115] = 0;
+ _$jscoverage['core/domUtils.js'][1116] = 0;
+ _$jscoverage['core/domUtils.js'][1118] = 0;
+ _$jscoverage['core/domUtils.js'][1120] = 0;
+ _$jscoverage['core/domUtils.js'][1121] = 0;
+ _$jscoverage['core/domUtils.js'][1125] = 0;
+ _$jscoverage['core/domUtils.js'][1126] = 0;
+ _$jscoverage['core/domUtils.js'][1127] = 0;
+ _$jscoverage['core/domUtils.js'][1130] = 0;
+ _$jscoverage['core/domUtils.js'][1189] = 0;
+ _$jscoverage['core/domUtils.js'][1190] = 0;
+ _$jscoverage['core/domUtils.js'][1191] = 0;
+ _$jscoverage['core/domUtils.js'][1192] = 0;
+ _$jscoverage['core/domUtils.js'][1193] = 0;
+ _$jscoverage['core/domUtils.js'][1194] = 0;
+ _$jscoverage['core/domUtils.js'][1196] = 0;
+ _$jscoverage['core/domUtils.js'][1199] = 0;
+ _$jscoverage['core/domUtils.js'][1202] = 0;
+ _$jscoverage['core/domUtils.js'][1203] = 0;
+ _$jscoverage['core/domUtils.js'][1218] = 0;
+ _$jscoverage['core/domUtils.js'][1219] = 0;
+ _$jscoverage['core/domUtils.js'][1221] = 0;
+ _$jscoverage['core/domUtils.js'][1222] = 0;
+ _$jscoverage['core/domUtils.js'][1224] = 0;
+ _$jscoverage['core/domUtils.js'][1225] = 0;
+ _$jscoverage['core/domUtils.js'][1226] = 0;
+ _$jscoverage['core/domUtils.js'][1227] = 0;
+ _$jscoverage['core/domUtils.js'][1232] = 0;
+ _$jscoverage['core/domUtils.js'][1234] = 0;
+ _$jscoverage['core/domUtils.js'][1235] = 0;
+ _$jscoverage['core/domUtils.js'][1239] = 0;
+ _$jscoverage['core/domUtils.js'][1286] = 0;
+ _$jscoverage['core/domUtils.js'][1287] = 0;
+ _$jscoverage['core/domUtils.js'][1288] = 0;
+ _$jscoverage['core/domUtils.js'][1289] = 0;
+ _$jscoverage['core/domUtils.js'][1291] = 0;
+ _$jscoverage['core/domUtils.js'][1292] = 0;
+ _$jscoverage['core/domUtils.js'][1294] = 0;
+ _$jscoverage['core/domUtils.js'][1295] = 0;
+ _$jscoverage['core/domUtils.js'][1297] = 0;
+ _$jscoverage['core/domUtils.js'][1323] = 0;
+ _$jscoverage['core/domUtils.js'][1349] = 0;
+ _$jscoverage['core/domUtils.js'][1350] = 0;
+ _$jscoverage['core/domUtils.js'][1351] = 0;
+ _$jscoverage['core/domUtils.js'][1352] = 0;
+ _$jscoverage['core/domUtils.js'][1355] = 0;
+ _$jscoverage['core/domUtils.js'][1356] = 0;
+ _$jscoverage['core/domUtils.js'][1358] = 0;
+ _$jscoverage['core/domUtils.js'][1359] = 0;
+ _$jscoverage['core/domUtils.js'][1361] = 0;
+ _$jscoverage['core/domUtils.js'][1362] = 0;
+ _$jscoverage['core/domUtils.js'][1364] = 0;
+ _$jscoverage['core/domUtils.js'][1365] = 0;
+ _$jscoverage['core/domUtils.js'][1367] = 0;
+ _$jscoverage['core/domUtils.js'][1371] = 0;
+ _$jscoverage['core/domUtils.js'][1398] = 0;
+ _$jscoverage['core/domUtils.js'][1400] = 0;
+ _$jscoverage['core/domUtils.js'][1401] = 0;
+ _$jscoverage['core/domUtils.js'][1404] = 0;
+ _$jscoverage['core/domUtils.js'][1405] = 0;
+ _$jscoverage['core/domUtils.js'][1408] = 0;
+ _$jscoverage['core/domUtils.js'][1410] = 0;
+ _$jscoverage['core/domUtils.js'][1411] = 0;
+ _$jscoverage['core/domUtils.js'][1412] = 0;
+ _$jscoverage['core/domUtils.js'][1413] = 0;
+ _$jscoverage['core/domUtils.js'][1414] = 0;
+ _$jscoverage['core/domUtils.js'][1415] = 0;
+ _$jscoverage['core/domUtils.js'][1416] = 0;
+ _$jscoverage['core/domUtils.js'][1417] = 0;
+ _$jscoverage['core/domUtils.js'][1419] = 0;
+ _$jscoverage['core/domUtils.js'][1420] = 0;
+ _$jscoverage['core/domUtils.js'][1425] = 0;
+ _$jscoverage['core/domUtils.js'][1427] = 0;
+ _$jscoverage['core/domUtils.js'][1471] = 0;
+ _$jscoverage['core/domUtils.js'][1473] = 0;
+ _$jscoverage['core/domUtils.js'][1474] = 0;
+ _$jscoverage['core/domUtils.js'][1476] = 0;
+ _$jscoverage['core/domUtils.js'][1477] = 0;
+ _$jscoverage['core/domUtils.js'][1478] = 0;
+ _$jscoverage['core/domUtils.js'][1480] = 0;
+ _$jscoverage['core/domUtils.js'][1528] = 0;
+ _$jscoverage['core/domUtils.js'][1529] = 0;
+ _$jscoverage['core/domUtils.js'][1530] = 0;
+ _$jscoverage['core/domUtils.js'][1531] = 0;
+ _$jscoverage['core/domUtils.js'][1532] = 0;
+ _$jscoverage['core/domUtils.js'][1581] = 0;
+ _$jscoverage['core/domUtils.js'][1582] = 0;
+ _$jscoverage['core/domUtils.js'][1584] = 0;
+ _$jscoverage['core/domUtils.js'][1585] = 0;
+ _$jscoverage['core/domUtils.js'][1586] = 0;
+ _$jscoverage['core/domUtils.js'][1587] = 0;
+ _$jscoverage['core/domUtils.js'][1590] = 0;
+ _$jscoverage['core/domUtils.js'][1603] = 0;
+ _$jscoverage['core/domUtils.js'][1628] = 0;
+ _$jscoverage['core/domUtils.js'][1630] = 0;
+ _$jscoverage['core/domUtils.js'][1631] = 0;
+ _$jscoverage['core/domUtils.js'][1633] = 0;
+ _$jscoverage['core/domUtils.js'][1635] = 0;
+ _$jscoverage['core/domUtils.js'][1636] = 0;
+ _$jscoverage['core/domUtils.js'][1638] = 0;
+ _$jscoverage['core/domUtils.js'][1643] = 0;
+ _$jscoverage['core/domUtils.js'][1644] = 0;
+ _$jscoverage['core/domUtils.js'][1673] = 0;
+ _$jscoverage['core/domUtils.js'][1674] = 0;
+ _$jscoverage['core/domUtils.js'][1703] = 0;
+ _$jscoverage['core/domUtils.js'][1704] = 0;
+ _$jscoverage['core/domUtils.js'][1705] = 0;
+ _$jscoverage['core/domUtils.js'][1735] = 0;
+ _$jscoverage['core/domUtils.js'][1736] = 0;
+ _$jscoverage['core/domUtils.js'][1737] = 0;
+ _$jscoverage['core/domUtils.js'][1747] = 0;
+ _$jscoverage['core/domUtils.js'][1748] = 0;
+ _$jscoverage['core/domUtils.js'][1750] = 0;
+ _$jscoverage['core/domUtils.js'][1798] = 0;
+ _$jscoverage['core/domUtils.js'][1799] = 0;
+ _$jscoverage['core/domUtils.js'][1800] = 0;
+ _$jscoverage['core/domUtils.js'][1802] = 0;
+ _$jscoverage['core/domUtils.js'][1803] = 0;
+ _$jscoverage['core/domUtils.js'][1804] = 0;
+ _$jscoverage['core/domUtils.js'][1806] = 0;
+ _$jscoverage['core/domUtils.js'][1808] = 0;
+ _$jscoverage['core/domUtils.js'][1822] = 0;
+ _$jscoverage['core/domUtils.js'][1823] = 0;
+ _$jscoverage['core/domUtils.js'][1839] = 0;
+ _$jscoverage['core/domUtils.js'][1840] = 0;
+ _$jscoverage['core/domUtils.js'][1841] = 0;
+ _$jscoverage['core/domUtils.js'][1853] = 0;
+ _$jscoverage['core/domUtils.js'][1854] = 0;
+ _$jscoverage['core/domUtils.js'][1856] = 0;
+ _$jscoverage['core/domUtils.js'][1862] = 0;
+ _$jscoverage['core/domUtils.js'][1863] = 0;
+ _$jscoverage['core/domUtils.js'][1869] = 0;
+ _$jscoverage['core/domUtils.js'][1870] = 0;
+ _$jscoverage['core/domUtils.js'][1876] = 0;
+ _$jscoverage['core/domUtils.js'][1877] = 0;
+ _$jscoverage['core/domUtils.js'][1878] = 0;
+ _$jscoverage['core/domUtils.js'][1879] = 0;
+ _$jscoverage['core/domUtils.js'][1880] = 0;
+ _$jscoverage['core/domUtils.js'][1882] = 0;
+ _$jscoverage['core/domUtils.js'][1883] = 0;
+ _$jscoverage['core/domUtils.js'][1894] = 0;
+ _$jscoverage['core/domUtils.js'][1905] = 0;
+ _$jscoverage['core/domUtils.js'][1910] = 0;
+ _$jscoverage['core/domUtils.js'][1914] = 0;
+ _$jscoverage['core/domUtils.js'][1915] = 0;
+ _$jscoverage['core/domUtils.js'][1916] = 0;
+ _$jscoverage['core/domUtils.js'][1917] = 0;
+ _$jscoverage['core/domUtils.js'][1918] = 0;
+ _$jscoverage['core/domUtils.js'][1919] = 0;
+ _$jscoverage['core/domUtils.js'][1922] = 0;
+ _$jscoverage['core/domUtils.js'][1923] = 0;
+ _$jscoverage['core/domUtils.js'][1924] = 0;
+ _$jscoverage['core/domUtils.js'][1927] = 0;
+ _$jscoverage['core/domUtils.js'][1928] = 0;
+ _$jscoverage['core/domUtils.js'][1929] = 0;
+ _$jscoverage['core/domUtils.js'][1931] = 0;
+ _$jscoverage['core/domUtils.js'][1932] = 0;
+ _$jscoverage['core/domUtils.js'][1933] = 0;
+ _$jscoverage['core/domUtils.js'][1935] = 0;
+ _$jscoverage['core/domUtils.js'][1936] = 0;
+ _$jscoverage['core/domUtils.js'][1938] = 0;
+ _$jscoverage['core/domUtils.js'][1939] = 0;
+ _$jscoverage['core/domUtils.js'][1940] = 0;
+ _$jscoverage['core/domUtils.js'][1941] = 0;
+ _$jscoverage['core/domUtils.js'][1942] = 0;
+ _$jscoverage['core/domUtils.js'][1944] = 0;
+ _$jscoverage['core/domUtils.js'][1946] = 0;
+ _$jscoverage['core/domUtils.js'][1947] = 0;
+ _$jscoverage['core/domUtils.js'][1949] = 0;
+ _$jscoverage['core/domUtils.js'][1950] = 0;
+ _$jscoverage['core/domUtils.js'][1951] = 0;
+ _$jscoverage['core/domUtils.js'][1953] = 0;
+ _$jscoverage['core/domUtils.js'][1954] = 0;
+ _$jscoverage['core/domUtils.js'][1956] = 0;
+ _$jscoverage['core/domUtils.js'][1960] = 0;
+ _$jscoverage['core/domUtils.js'][1987] = 0;
+ _$jscoverage['core/domUtils.js'][1988] = 0;
+ _$jscoverage['core/domUtils.js'][1989] = 0;
+ _$jscoverage['core/domUtils.js'][1990] = 0;
+ _$jscoverage['core/domUtils.js'][1991] = 0;
+ _$jscoverage['core/domUtils.js'][1993] = 0;
+ _$jscoverage['core/domUtils.js'][1994] = 0;
+ _$jscoverage['core/domUtils.js'][1995] = 0;
+ _$jscoverage['core/domUtils.js'][1998] = 0;
+ _$jscoverage['core/domUtils.js'][2028] = 0;
+ _$jscoverage['core/domUtils.js'][2029] = 0;
+ _$jscoverage['core/domUtils.js'][2030] = 0;
+ _$jscoverage['core/domUtils.js'][2031] = 0;
+ _$jscoverage['core/domUtils.js'][2032] = 0;
+ _$jscoverage['core/domUtils.js'][2033] = 0;
+ _$jscoverage['core/domUtils.js'][2034] = 0;
+ _$jscoverage['core/domUtils.js'][2036] = 0;
+ _$jscoverage['core/domUtils.js'][2037] = 0;
+ _$jscoverage['core/domUtils.js'][2065] = 0;
+ _$jscoverage['core/domUtils.js'][2066] = 0;
+ _$jscoverage['core/domUtils.js'][2067] = 0;
+ _$jscoverage['core/domUtils.js'][2133] = 0;
+ _$jscoverage['core/domUtils.js'][2134] = 0;
+ _$jscoverage['core/domUtils.js'][2135] = 0;
+ _$jscoverage['core/domUtils.js'][2137] = 0;
+ _$jscoverage['core/domUtils.js'][2163] = 0;
+ _$jscoverage['core/domUtils.js'][2174] = 0;
+ _$jscoverage['core/domUtils.js'][2196] = 0;
+ _$jscoverage['core/domUtils.js'][2266] = 0;
+ _$jscoverage['core/domUtils.js'][2267] = 0;
+ _$jscoverage['core/domUtils.js'][2268] = 0;
+ _$jscoverage['core/domUtils.js'][2269] = 0;
+ _$jscoverage['core/domUtils.js'][2270] = 0;
+ _$jscoverage['core/domUtils.js'][2273] = 0;
+ _$jscoverage['core/domUtils.js'][2274] = 0;
+ _$jscoverage['core/domUtils.js'][2276] = 0;
+ _$jscoverage['core/domUtils.js'][2280] = 0;
+ _$jscoverage['core/domUtils.js'][2281] = 0;
+ _$jscoverage['core/domUtils.js'][2282] = 0;
+ _$jscoverage['core/domUtils.js'][2284] = 0;
+ _$jscoverage['core/domUtils.js'][2285] = 0;
+ _$jscoverage['core/domUtils.js'][2287] = 0;
+ _$jscoverage['core/domUtils.js'][2288] = 0;
+ _$jscoverage['core/domUtils.js'][2289] = 0;
+ _$jscoverage['core/domUtils.js'][2290] = 0;
+ _$jscoverage['core/domUtils.js'][2291] = 0;
+ _$jscoverage['core/domUtils.js'][2293] = 0;
+ _$jscoverage['core/domUtils.js'][2296] = 0;
+ _$jscoverage['core/domUtils.js'][2297] = 0;
+ _$jscoverage['core/domUtils.js'][2298] = 0;
+ _$jscoverage['core/domUtils.js'][2299] = 0;
+ _$jscoverage['core/domUtils.js'][2300] = 0;
+ _$jscoverage['core/domUtils.js'][2301] = 0;
+ _$jscoverage['core/domUtils.js'][2304] = 0;
+ _$jscoverage['core/domUtils.js'][2307] = 0;
+}
+_$jscoverage['core/domUtils.js'].source = ["/** "," * Dom操作工具包 "," * @file "," * @module UE.dom.domUtils "," * @since 1.2.6.1 "," */ ","","/** "," * Dom操作工具包 "," * @unfile "," * @module UE.dom.domUtils "," */ ","","//getNode(node, 'firstChild', 'nextSibling', startFromChild, filterFn, guard); ","function getNode( node, start, ltr, startFromChild, fn, guard ) { "," var tmpNode = startFromChild && node[ start], "," parent; "," ! tmpNode && ( tmpNode = node[ ltr]); "," while (! tmpNode && ( parent = ( parent || node). parentNode)) { "," if ( parent. tagName == 'BODY' || guard && ! guard( parent)) { "," return null ; "," } "," tmpNode = parent[ ltr]; "," } "," if ( tmpNode && fn && ! fn( tmpNode)) { "," return getNode( tmpNode, start, ltr, false , fn); "," } "," return tmpNode; ","} ","var attrFix = ie && browser. version < 9 ? { "," tabindex: \"tabIndex\" , "," readonly: \"readOnly\" , "," \"for\" : \"htmlFor\" , "," \"class\" : \"className\" , "," maxlength: \"maxLength\" , "," cellspacing: \"cellSpacing\" , "," cellpadding: \"cellPadding\" , "," rowspan: \"rowSpan\" , "," colspan: \"colSpan\" , "," usemap: \"useMap\" , "," frameborder: \"frameBorder\" "," } : { "," tabindex: \"tabIndex\" , "," readonly: \"readOnly\" "," } , "," styleBlock = utils. listToMap([ "," '-webkit-box' , '-moz-box' , 'block' , "," 'list-item' , 'table' , 'table-row-group' , "," 'table-header-group' , 'table-footer-group' , "," 'table-row' , 'table-column-group' , 'table-column' , "," 'table-cell' , 'table-caption' "," ]); ","var domUtils = dom. domUtils = { "," //节点常量 "," NODE_ELEMENT: 1 , "," NODE_DOCUMENT: 9 , "," NODE_TEXT: 3 , "," NODE_COMMENT: 8 , "," NODE_DOCUMENT_FRAGMENT: 11 , ",""," //位置关系 "," POSITION_IDENTICAL: 0 , "," POSITION_DISCONNECTED: 1 , "," POSITION_FOLLOWING: 2 , "," POSITION_PRECEDING: 4 , "," POSITION_IS_CONTAINED: 8 , "," POSITION_CONTAINS: 16 , "," //ie6使用其他的会有一段空白出现 "," fillChar: ie && browser. version == '6' ? ' \\u feff' : ' \\u 200B' , "," //-------------------------Node部分-------------------------------- "," keys: { "," /*Backspace*/ 8 : 1 , /*Delete*/ 46 : 1 , "," /*Shift*/ 16 : 1 , /*Ctrl*/ 17 : 1 , /*Alt*/ 18 : 1 , "," 37 : 1 , 38 : 1 , 39 : 1 , 40 : 1 , "," 13 : 1 /*enter*/ "," } , "," /** "," * 获取节点A相对于节点B的位置关系 "," * @method getPosition "," * @param { Node } nodeA 需要查询位置关系的节点A "," * @param { Node } nodeB 需要查询位置关系的节点B "," * @return { Number } 节点A与节点B的关系 "," * @example "," * ```javascript "," * //output: 20 "," * var position = UE.dom.domUtils.getPosition( document.documentElement, document.body ); "," * "," * switch ( position ) { "," * "," * case 0: "," * console.log('元素相同'); "," * break; "," * case 1: "," * console.log('两个节点在不同的文档中'); "," * break; "," * case 2: "," * console.log('节点A在节点B之后'); "," * break; "," * case 4; "," * console.log('节点A在节点B之前'); "," * break; "," * case 8: "," * console.log('节点A被节点B包含'); "," * break; "," * case 10: "," * console.log('节点A被节点B包含且节点A在节点B之后'); "," * break; "," * case 16: "," * console.log('节点A包含节点B'); "," * break; "," * case 20: "," * console.log('节点A包含节点B且节点A在节点B之前'); "," * break; "," * "," * } "," * ``` "," */ "," getPosition: function ( nodeA, nodeB) { "," // 如果两个节点是同一个节点 "," if ( nodeA === nodeB) { "," // domUtils.POSITION_IDENTICAL "," return 0 ; "," } "," var node, "," parentsA = [ nodeA], "," parentsB = [ nodeB]; "," node = nodeA; "," while ( node = node. parentNode) { "," // 如果nodeB是nodeA的祖先节点 "," if ( node === nodeB) { "," // domUtils.POSITION_IS_CONTAINED + domUtils.POSITION_FOLLOWING "," return 10 ; "," } "," parentsA. push( node); "," } "," node = nodeB; "," while ( node = node. parentNode) { "," // 如果nodeA是nodeB的祖先节点 "," if ( node === nodeA) { "," // domUtils.POSITION_CONTAINS + domUtils.POSITION_PRECEDING "," return 20 ; "," } "," parentsB. push( node); "," } "," parentsA. reverse(); "," parentsB. reverse(); "," if ( parentsA[ 0 ] !== parentsB[ 0 ]) { "," // domUtils.POSITION_DISCONNECTED "," return 1 ; "," } "," var i = - 1 ; "," while ( i++, parentsA[ i] === parentsB[ i]) { "," } "," nodeA = parentsA[ i]; "," nodeB = parentsB[ i]; "," while ( nodeA = nodeA. nextSibling) { "," if ( nodeA === nodeB) { "," // domUtils.POSITION_PRECEDING "," return 4 "," } "," } "," // domUtils.POSITION_FOLLOWING "," return 2 ; "," } , ",""," /** "," * 检测节点node在父节点中的索引位置 "," * @method getNodeIndex "," * @param { Node } node 需要检测的节点对象 "," * @return { Number } 该节点在父节点中的位置 "," */ ",""," /** "," * 检测节点node在父节点中的索引位置, 根据给定的mergeTextNode参数决定是否要合并多个连续的文本节点为一个节点 "," * @method getNodeIndex "," * @param { Node } node 需要检测的节点对象 "," * @param { Boolean } ignoreTextNode 是否忽略文本节点 "," * @return { Number } 该节点在父节点中的位置 "," */ "," getNodeIndex: function ( node, ignoreTextNode) { "," var preNode = node, "," i = 0 ; "," while ( preNode = preNode. previousSibling) { "," if ( ignoreTextNode && preNode. nodeType == 3 ) { "," if ( preNode. nodeType != preNode. nextSibling. nodeType ) { "," i++; "," } "," continue ; "," } "," i++; "," } "," return i; "," } , ",""," /** "," * 检测节点node是否在给定doc的树上,实质上是检测该节点是否在给定的dom树上 "," * @method inDoc "," * @param { Node } node 需要检测的节点对象 "," * @param { DomDocument } doc 需要检测的document对象 "," * @return { Boolean } 该节点node是否在给定的document的dom树上 "," * @example "," * ```javascript "," * "," * var node = document.createElement(\"div\"); "," * "," * //output: false "," * console.log( UE.do.domUtils.inDoc( node, document ) ); "," * "," * document.body.appendChild( node ); "," * "," * //output: true "," * console.log( UE.do.domUtils.inDoc( node, document ) ); "," * "," * ``` "," */ "," inDoc: function ( node, doc) { "," return domUtils. getPosition( node, doc) == 10 ; "," } , ",""," /** "," * 根据给定的过滤规则filterFn, 查找符合该过滤规则的node节点的祖先节点, "," * 查找的过程中不包含自身节点。 "," * @method findParent "," * @param { Node } node 需要查找的节点 "," * @param { Function } filterFn 自定义的过滤方法。 "," * @warning 查找的终点是到body节点为止 "," * @remind 自定义的过滤方法filterFn接受一个Node对象作为参数, 该对象代表当前执行检测的祖先节点。 如果该 "," * 节点满足过滤条件, 则要求返回true, 这时将直接返回该节点作为findParent()的结果, 否则, 请返回false。 "," * @return { Node | Null } 如果找到符合过滤条件的节点, 就返回该节点, 否则返回NULL "," * @example "," * ```javascript "," * var filterNode = UE.dom.domUtils.findParent( document.body.firstChild, function ( node ) { "," * "," * //由于查找的终点是body节点, 所以永远也不会匹配当前过滤器的条件, 即这里永远会返回false "," * return node.tagName === \"HTML\"; "," * "," * } ); "," * "," * //output: true "," * console.log( filterNode === null ); "," * ``` "," */ ",""," /** "," * 根据给定的过滤规则filterFn, 查找符合该过滤规则的node节点的祖先节点, "," * 查找的过程中根据includeSelf的值决定是否包含自身节点。 "," * @method findParent "," * @param { Node } node 需要查找的节点 "," * @param { Function } filterFn 自定义的过滤方法。 "," * @param { Boolean } includeSelf 查找过程是否包含自身 "," * @warning 查找的终点是到body节点为止 "," * @remind 自定义的过滤方法filterFn接受一个Node对象作为参数, 该对象代表当前执行检测的祖先节点。 如果该 "," * 节点满足过滤条件, 则要求返回true, 这时将直接返回该节点作为findParent()的结果, 否则, 请返回false。 "," * @remind 如果includeSelf为true, 则过滤器第一次执行时的参数会是节点本身。 "," * 反之, 过滤器第一次执行时的参数将是该节点的父节点。 "," * @return { Node | Null } 如果找到符合过滤条件的节点, 就返回该节点, 否则返回NULL "," * @example "," * ```html "," * <body> "," * "," * <div id=\"test\"> "," * </div> "," * "," * <script type=\"text/javascript\"> "," * "," * //output: DIV, BODY "," * var filterNode = UE.dom.domUtils.findParent( document.getElementById( \"test\" ), function ( node ) { "," * "," * console.log( node.tagName ); "," * return false; "," * "," * }, true ); "," * "," * </script> "," * </body> "," * ``` "," */ "," findParent: function ( node, filterFn, includeSelf) { "," if ( node && ! domUtils. isBody( node)) { "," node = includeSelf ? node : node. parentNode; "," while ( node) { "," if (! filterFn || filterFn( node) || domUtils. isBody( node)) { "," return filterFn && ! filterFn( node) && domUtils. isBody( node) ? null : node; "," } "," node = node. parentNode; "," } "," } "," return null ; "," } , ",""," /** "," * 查找node的节点名为tagName的祖先节点, 查找过程中不包含node节点自身 "," * @method findParentByTagName "," * @param { Node } node 需要查找的节点对象 "," * @param { Array } tagNames 需要查找的父节点的名称数组 "," * @warning 查找的终点是到body节点为止 "," * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL "," * @example "," * ```javascript "," * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName(\"div\")[0], [ \"BODY\" ] ); "," * //output: BODY "," * console.log( node.tagName ); "," * ``` "," */ ",""," /** "," * 查找node的节点名为tagName的祖先节点, 查找过程中根据includeSelf的值决定是否包含node节点自身 "," * @method findParentByTagName "," * @param { Node } node 需要查找的节点对象 "," * @param { Array } tagNames 需要查找的父节点的名称数组 "," * @param { Boolean } includeSelf 查找过程是否包含node节点自身 "," * @warning 查找的终点是到body节点为止 "," * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL "," * @example "," * ```javascript "," * var queryTarget = document.getElementsByTagName(\"div\")[0]; "," * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ \"DIV\" ], true ); "," * //output: true "," * console.log( queryTarget === node ); "," * ``` "," */ ",""," /** "," * 查找node的节点名为tagName的祖先节点,并且该祖先节点不满足excludeFn过滤器的过滤要求, "," * 查找过程中根据includeSelf的值决定是否包含node节点自身, "," * @method findParentByTagName "," * @param { Node } node 需要查找的节点对象 "," * @param { Array } tagNames 需要查找的父节点的名称数组 "," * @param { Boolean } includeSelf 查找过程是否包含node节点自身 "," * @param { Function } excludeFn 查找过程中应用的过滤器, 如果该过滤器对给定的节点返回true, "," * 则该节点将被排除在查询结果之外。 "," * @remind 查找过滤器excludeFn要求对不应该被匹配的节点应该返回true "," * @warning 查找的终点是到body节点为止 "," * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL "," * @example "," * ```javascript "," * var queryTarget = document.getElementsByTagName(\"div\")[0]; "," * "," * //需要查找的节点和过滤器的过滤条件刚好冲突, 执行结果将永远为NULL "," * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ \"DIV\" ], false, function ( node ) { "," * "," * return node.tagName.toLowerCase() === 'div'; "," * "," * } ); "," * //output: true "," * console.log( queryTarget === null ); "," * ``` "," */ "," findParentByTagName: function ( node, tagNames, includeSelf, excludeFn) { "," tagNames = utils. listToMap( utils. isArray( tagNames) ? tagNames : [ tagNames]); "," return domUtils. findParent( node, function ( node) { "," return tagNames[ node. tagName] && !( excludeFn && excludeFn( node)); "," } , includeSelf); "," } , ",""," /* "," * 查找节点node的祖先节点集合 "," * @name findParents "," * @grammar UE.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身 "," * @grammar UE.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身 "," * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取 "," * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个 "," */ "," findParents: function ( node, includeSelf, filterFn, closerFirst) { "," var parents = includeSelf && ( filterFn && filterFn( node) || ! filterFn ) ? [ node] : []; "," while ( node = domUtils. findParent( node, filterFn)) { "," parents. push( node); "," } "," return closerFirst ? parents : parents. reverse(); "," } , ",""," /** "," * 在节点node后面插入新节点newNode "," * @method insertAfter "," * @param { Node } node 目标节点 "," * @param { Node } newNode 新插入的节点, 该节点将置于目标节点之后 "," * @return { Node } 新插入的节点 "," */ "," insertAfter: function ( node, newNode) { "," return node. parentNode. insertBefore( newNode, node. nextSibling); "," } , ",""," /** "," * 删除节点node及其下属的所有节点 "," * @method remove "," * @param { Node } node 需要删除的节点对象 "," * @return { Node } 返回刚删除的节点对象 "," * @example "," * ```html "," * <div id=\"test\"> "," * <div id=\"child\">你好</div> "," * </div> "," * <script> "," * UE.dom.domUtils.remove( document.body, false ); "," * //output: false "," * console.log( document.getElementById( \"child\" ) !== null ); "," * </script> "," * ``` "," */ ",""," /** "," * 删除节点node,并根据keepChildren的值决定是否保留子节点 "," * @method remove "," * @param { Node } node 需要删除的节点对象 "," * @param { Boolean } keepChildren 是否需要保留子节点 "," * @return { Node } 返回刚删除的节点对象 "," * @example "," * ```html "," * <div id=\"test\"> "," * <div id=\"child\">你好</div> "," * </div> "," * <script> "," * UE.dom.domUtils.remove( document.body, true ); "," * //output: true "," * console.log( document.getElementById( \"child\" ) !== null ); "," * </script> "," * ``` "," */ "," remove: function ( node, keepChildren) { "," var parent = node. parentNode, "," child; "," if ( parent) { "," if ( keepChildren && node. hasChildNodes()) { "," while ( child = node. firstChild) { "," parent. insertBefore( child, node); "," } "," } "," parent. removeChild( node); "," } "," return node; "," } , ",""," /* "," * 取得node节点在dom树上的下一个节点,即多叉树遍历 "," */ "," getNextNode: function ( node, startFromChild, filterFn, guard) { "," return getNode( node, 'firstChild' , 'nextSibling' , startFromChild, filterFn, guard); "," } , ",""," /** "," * 检测节点node是否属是UEditor定义的bookmark节点 "," * @method isBookmarkNode "," * @param { Node } node 需要检测的节点对象 "," * @return { Boolean } 是否是bookmark节点 "," * @example "," * ```html "," * <span id=\"_baidu_bookmark_1\"></span> "," * <script> "," * var bookmarkNode = document.getElementById(\"_baidu_bookmark_1\"); "," * //output: true "," * console.log( UE.dom.domUtils.isBookmarkNode( bookmarkNode ) ); "," * </script> "," * ``` "," */ "," isBookmarkNode: function ( node) { "," return node. nodeType == 1 && node. id && /^_baidu_bookmark_/i . test( node. id); "," } , ",""," /** "," * 获取节点node所属的window对象 "," * @method getWindow "," * @param { Node } node 节点对象 "," * @return { Window } 当前节点所属的window对象 "," * @example "," * ```javascript "," * //output: true "," * console.log( UE.dom.domUtils.getWindow( document.body ) === window ); "," * ``` "," */ "," getWindow: function ( node) { "," var doc = node. ownerDocument || node; "," return doc. defaultView || doc. parentWindow; "," } , ",""," /** "," * 获取离nodeA与nodeB最近的公共的祖先节点 "," * @method getCommonAncestor "," * @param { Node } nodeA 第一个节点 "," * @param { Node } nodeB 第二个节点 "," * @remind 如果给定的两个节点是同一个节点, 将直接返回该节点。 "," * @return { Node | NULL } 如果未找到公共节点, 返回NULL, 否则返回最近的公共祖先节点。 "," * @example "," * ```javascript "," * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild ); "," * //output: true "," * console.log( commonAncestor.tagName.toLowerCase() === 'body' ); "," * ``` "," */ "," getCommonAncestor: function ( nodeA, nodeB) { "," if ( nodeA === nodeB) "," return nodeA; "," var parentsA = [ nodeA] , parentsB = [ nodeB], parent = nodeA, i = - 1 ; "," while ( parent = parent. parentNode) { "," if ( parent === nodeB) { "," return parent; "," } "," parentsA. push( parent); "," } "," parent = nodeB; "," while ( parent = parent. parentNode) { "," if ( parent === nodeA) "," return parent; "," parentsB. push( parent); "," } "," parentsA. reverse(); "," parentsB. reverse(); "," while ( i++, parentsA[ i] === parentsB[ i]) { "," } "," return i == 0 ? null : parentsA[ i - 1 ]; ",""," } , ",""," /* "," * 清除node节点左右兄弟为空的inline节点 "," * @name clearEmptySibling "," * @grammar UE.dom.domUtils.clearEmptySibling(node) "," * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext) //ignoreNext指定是否忽略右边空节点 "," * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre) //ignorePre指定是否忽略左边空节点 "," * @example "," * <b></b><i></i>xxxx<b>bb</b> --> xxxx<b>bb</b> "," */ "," clearEmptySibling: function ( node, ignoreNext, ignorePre) { "," function clear( next, dir) { "," var tmpNode; "," while ( next && ! domUtils. isBookmarkNode( next) && ( domUtils. isEmptyInlineElement( next) "," //这里不能把空格算进来会吧空格干掉,出现文字间的空格丢掉了 "," || ! new RegExp( '[^ \\t\\n\\r ' + domUtils. fillChar + ']' ). test( next. nodeValue) )) { "," tmpNode = next[ dir]; "," domUtils. remove( next); "," next = tmpNode; "," } "," } "," ! ignoreNext && clear( node. nextSibling, 'nextSibling' ); "," ! ignorePre && clear( node. previousSibling, 'previousSibling' ); "," } , ",""," /** "," * 将一个文本节点textNode拆分成两个文本节点,offset指定拆分位置 "," * @method split "," * @param { Node } textNode 需要拆分的文本节点对象 "," * @param { int } offset 需要拆分的位置, 位置计算从0开始 "," * @return { Node } 拆分后形成的新节点 "," * @example "," * ```html "," * <div id=\"test\">abcdef</div> "," * <script> "," * var newNode = UE.dom.domUtils.split( document.getElementById( \"test\" ), 3 ); "," * //output: def "," * console.log( newNode.nodeValue ); "," * </script> "," * ``` "," */ "," split: function ( node, offset) { "," var doc = node. ownerDocument; "," if ( browser. ie && offset == node. nodeValue. length) { "," var next = doc. createTextNode( '' ); "," return domUtils. insertAfter( node, next); "," } "," var retval = node. splitText( offset); "," //ie8下splitText不会跟新childNodes,我们手动触发他的更新 "," if ( browser. ie8) { "," var tmpNode = doc. createTextNode( '' ); "," domUtils. insertAfter( retval, tmpNode); "," domUtils. remove( tmpNode); "," } "," return retval; "," } , ",""," /** "," * 检测文本节点textNode是否为空节点(包括空格、换行、占位符等字符) "," * @method isWhitespace "," * @param { Node } node 需要检测的节点对象 "," * @return { Boolean } 检测的节点是否为空 "," * @example "," * ```html "," * <div id=\"test\"> "," * "," * </div> "," * <script> "," * //output: true "," * console.log( UE.dom.domUtils.isWhitespace( document.getElementById(\"test\").firstChild ) ); "," * </script> "," * ``` "," */ "," isWhitespace: function ( node) { "," return ! new RegExp( '[^ \\t\\n\\r ' + domUtils. fillChar + ']' ). test( node. nodeValue); "," } , ",""," /** "," * 获取元素element相对于viewport的位置坐标 "," * @method getXY "," * @param { Node } element 需要计算位置的节点对象 "," * @return { KeyValueMap } 返回形如{x:left,y:top}的一个key-value映射对象, 其中键x代表水平偏移距离, "," * y代表垂直偏移距离。 "," * "," * @example "," * ```javascript "," * var location = UE.dom.domUtils.getXY( document.getElementById(\"test\") ); "," * //output: test的坐标为: 12, 24 "," * console.log( 'test的坐标为: ', location.x, ',', location.y ); "," * ``` "," */ "," getXY: function ( element) { "," var x = 0 , y = 0 ; "," while ( element. offsetParent) { "," y += element. offsetTop; "," x += element. offsetLeft; "," element = element. offsetParent; "," } "," return { 'x' : x, 'y' : y} ; "," } , ",""," /** "," * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 "," * @method on "," * @param { Node } element 需要绑定事件的节点对象 "," * @param { String } type 绑定的事件类型 "," * @param { Function } handler 事件处理器 "," * @example "," * ```javascript "," * UE.dom.domUtils.on(document.body,\"click\",function(e){ "," * //e为事件对象,this为被点击元素对戏那个 "," * }); "," * ``` "," */ ",""," /** "," * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 "," * @method on "," * @param { Node } element 需要绑定事件的节点对象 "," * @param { Array } type 绑定的事件类型数组 "," * @param { Function } handler 事件处理器 "," * @example "," * ```javascript "," * UE.dom.domUtils.on(document.body,[\"click\",\"mousedown\"],function(evt){ "," * //evt为事件对象,this为被点击元素对象 "," * }); "," * ``` "," */ "," on: function ( element, type, handler) { "," var types = utils. isArray( type) ? type : [ type], "," k = types. length; "," if ( k) while ( k--) { "," type = types[ k]; "," if ( element. addEventListener) { "," element. addEventListener( type, handler, false ); "," } else { "," if (! handler. _d) { "," handler. _d = { "," els : [] "," } ; "," } "," var key = type + handler. toString(), index = utils. indexOf( handler. _d. els, element); "," if (! handler. _d[ key] || index == - 1 ) { "," if ( index == - 1 ) { "," handler. _d. els. push( element); "," } "," if (! handler. _d[ key]) { "," handler. _d[ key] = function ( evt) { "," return handler. call( evt. srcElement, evt || window. event); "," } ; "," } ","",""," element. attachEvent( 'on' + type, handler. _d[ key]); "," } "," } "," } "," element = null ; "," } , ",""," /** "," * 解除DOM事件绑定 "," * @method un "," * @param { Node } element 需要解除事件绑定的节点对象 "," * @param { String } type 需要接触绑定的事件类型 "," * @param { Function } handler 对应的事件处理器 "," * @example "," * ```javascript "," * UE.dom.domUtils.un(document.body,\"click\",function(evt){ "," * //evt为事件对象,this为被点击元素对象 "," * }); "," * ``` "," */ ",""," /** "," * 解除DOM事件绑定 "," * @method un "," * @param { Node } element 需要解除事件绑定的节点对象 "," * @param { Array } type 需要接触绑定的事件类型数组 "," * @param { Function } handler 对应的事件处理器 "," * @example "," * ```javascript "," * UE.dom.domUtils.un(document.body, [\"click\",\"mousedown\"],function(evt){ "," * //evt为事件对象,this为被点击元素对象 "," * }); "," * ``` "," */ "," un: function ( element, type, handler) { "," var types = utils. isArray( type) ? type : [ type], "," k = types. length; "," if ( k) while ( k--) { "," type = types[ k]; "," if ( element. removeEventListener) { "," element. removeEventListener( type, handler, false ); "," } else { "," var key = type + handler. toString(); "," try { "," element. detachEvent( 'on' + type, handler. _d ? handler. _d[ key] : handler); "," } catch ( e) {} "," if ( handler. _d && handler. _d[ key]) { "," var index = utils. indexOf( handler. _d. els, element); "," if ( index!=- 1 ) { "," handler. _d. els. splice( index, 1 ); "," } "," handler. _d. els. length == 0 && delete handler. _d[ key]; "," } "," } "," } "," } , ",""," /** "," * 比较节点nodeA与节点nodeB是否具有相同的标签名、属性名以及属性值 "," * @method isSameElement "," * @param { Node } nodeA 需要比较的节点 "," * @param { Node } nodeB 需要比较的节点 "," * @return { Boolean } 两个节点是否具有相同的标签名、属性名以及属性值 "," * @example "," * ```html "," * <span style=\"font-size:12px\">ssss</span> "," * <span style=\"font-size:12px\">bbbbb</span> "," * <span style=\"font-size:13px\">ssss</span> "," * <span style=\"font-size:14px\">bbbbb</span> "," * "," * <script> "," * "," * var nodes = document.getElementsByTagName( \"span\" ); "," * "," * //output: true "," * console.log( UE.dom.domUtils.isSameElement( nodes[0], nodes[1] ) ); "," * "," * //output: false "," * console.log( UE.dom.domUtils.isSameElement( nodes[2], nodes[3] ) ); "," * "," * </script> "," * ``` "," */ "," isSameElement: function ( nodeA, nodeB) { "," if ( nodeA. tagName != nodeB. tagName) { "," return false ; "," } "," var thisAttrs = nodeA. attributes, "," otherAttrs = nodeB. attributes; "," if (! ie && thisAttrs. length != otherAttrs. length) { "," return false ; "," } "," var attrA, attrB, al = 0 , bl = 0 ; "," for ( var i = 0 ; attrA = thisAttrs[ i++];) { "," if ( attrA. nodeName == 'style' ) { "," if ( attrA. specified) { "," al++; "," } "," if ( domUtils. isSameStyle( nodeA, nodeB)) { "," continue ; "," } else { "," return false ; "," } "," } "," if ( ie) { "," if ( attrA. specified) { "," al++; "," attrB = otherAttrs. getNamedItem( attrA. nodeName); "," } else { "," continue ; "," } "," } else { "," attrB = nodeB. attributes[ attrA. nodeName]; "," } "," if (! attrB. specified || attrA. nodeValue != attrB. nodeValue) { "," return false ; "," } "," } "," // 有可能attrB的属性包含了attrA的属性之外还有自己的属性 "," if ( ie) { "," for ( i = 0 ; attrB = otherAttrs[ i++];) { "," if ( attrB. specified) { "," bl++; "," } "," } "," if ( al != bl) { "," return false ; "," } "," } "," return true ; "," } , ",""," /** "," * 判断节点nodeA与节点nodeB的元素的style属性是否一致 "," * @method isSameStyle "," * @param { Node } nodeA 需要比较的节点 "," * @param { Node } nodeB 需要比较的节点 "," * @return { Boolean } 两个节点是否具有相同的style属性值 "," * @example "," * ```html "," * <span style=\"font-size:12px\">ssss</span> "," * <span style=\"font-size:12px\">bbbbb</span> "," * <span style=\"font-size:13px\">ssss</span> "," * <span style=\"font-size:14px\">bbbbb</span> "," * "," * <script> "," * "," * var nodes = document.getElementsByTagName( \"span\" ); "," * "," * //output: true "," * console.log( UE.dom.domUtils.isSameElement( nodes[0], nodes[1] ) ); "," * "," * //output: false "," * console.log( UE.dom.domUtils.isSameElement( nodes[2], nodes[3] ) ); "," * "," * </script> "," * ``` "," */ "," isSameStyle: function ( nodeA, nodeB) { "," var styleA = nodeA. style. cssText. replace( /( ?; ?)/g , ';' ). replace( /( ?: ?)/g , ':' ), "," styleB = nodeB. style. cssText. replace( /( ?; ?)/g , ';' ). replace( /( ?: ?)/g , ':' ); "," if ( browser. opera) { "," styleA = nodeA. style; "," styleB = nodeB. style; "," if ( styleA. length != styleB. length) "," return false ; "," for ( var p in styleA) { "," if ( /^(\\d+|csstext)$/i . test( p)) { "," continue ; "," } "," if ( styleA[ p] != styleB[ p]) { "," return false ; "," } "," } "," return true ; "," } "," if (! styleA || ! styleB) { "," return styleA == styleB; "," } "," styleA = styleA. split( ';' ); "," styleB = styleB. split( ';' ); "," if ( styleA. length != styleB. length) { "," return false ; "," } "," for ( var i = 0 , ci; ci = styleA[ i++];) { "," if ( utils. indexOf( styleB, ci) == - 1 ) { "," return false ; "," } "," } "," return true ; "," } , ",""," /** "," * 检查节点node是否为block元素 "," * @method isBlockElm "," * @param { Node } node 需要检测的节点对象 "," * @return { Boolean } 是否是block元素节点 "," * @warning 该方法的判断规则如下: 如果该元素原本是block元素, 则不论该元素当前的css样式是什么都会返回true; "," * 否则,检测该元素的css样式, 如果该元素当前是block元素, 则返回true。 其余情况下都返回false。 "," * @example "," * ```html "," * <span id=\"test1\" style=\"display: block\"></span> "," * <span id=\"test2\"></span> "," * <div id=\"test3\" style=\"display: inline\"></div> "," * "," * <script> "," * "," * //output: true "," * console.log( UE.dom.domUtils.isBlockEle( document.getElementById(\"test1\") ) ); "," * "," * //output: false "," * console.log( UE.dom.domUtils.isBlockEle( document.getElementById(\"test2\") ) ); "," * "," * //output: true "," * console.log( UE.dom.domUtils.isBlockEle( document.getElementById(\"test3\") ) ); "," * "," * </script> "," * ``` "," */ "," isBlockElm: function ( node) { "," return node. nodeType == 1 && ( dtd. $block[ node. tagName] || styleBlock[ domUtils. getComputedStyle( node, 'display' )]) && ! dtd. $nonChild[ node. tagName]; "," } , ",""," /** "," * 检测node节点是否为body节点 "," * @method isBody "," * @param { Element } node 需要检测的dom元素 "," * @return { Boolean } 给定的元素是否是body元素 "," * @example "," * ```javascript "," * //output: true "," * console.log( UE.dom.domUtils.isBody( document.body ) ); "," * ``` "," */ "," isBody: function ( node) { "," return node && node. nodeType == 1 && node. tagName. toLowerCase() == 'body' ; "," } , ",""," /* "," * 以node节点为中心,将该节点的指定祖先节点parent拆分成2块 "," * @name breakParent "," * @grammar UE.dom.domUtils.breakParent(node,parent) => node "," * @desc "," * <code type=\"html\"><b>ooo</b>是node节点 "," * <p>xxxx<b>ooo</b>xxx</p> ==> <p>xxx</p><b>ooo</b><p>xxx</p> "," * <p>xxxxx<span>xxxx<b>ooo</b>xxxxxx</span></p> => <p>xxxxx<span>xxxx</span></p><b>ooo</b><p><span>xxxxxx</span></p></code> "," */ "," breakParent: function ( node, parent) { "," var tmpNode, "," parentClone = node, "," clone = node, "," leftNodes, "," rightNodes; "," do { "," parentClone = parentClone. parentNode; "," if ( leftNodes) { "," tmpNode = parentClone. cloneNode( false ); "," tmpNode. appendChild( leftNodes); "," leftNodes = tmpNode; "," tmpNode = parentClone. cloneNode( false ); "," tmpNode. appendChild( rightNodes); "," rightNodes = tmpNode; "," } else { "," leftNodes = parentClone. cloneNode( false ); "," rightNodes = leftNodes. cloneNode( false ); "," } "," while ( tmpNode = clone. previousSibling) { "," leftNodes. insertBefore( tmpNode, leftNodes. firstChild); "," } "," while ( tmpNode = clone. nextSibling) { "," rightNodes. appendChild( tmpNode); "," } "," clone = parentClone; "," } while ( parent !== parentClone); "," tmpNode = parent. parentNode; "," tmpNode. insertBefore( leftNodes, parent); "," tmpNode. insertBefore( rightNodes, parent); "," tmpNode. insertBefore( node, rightNodes); "," domUtils. remove( parent); "," return node; "," } , ",""," /* "," * 检查节点node是否是空inline节点 "," * @name isEmptyInlineElement "," * @grammar UE.dom.domUtils.isEmptyInlineElement(node) => 1|0 "," * @example "," * <b><i></i></b> => 1 "," * <b><i></i><u></u></b> => 1 "," * <b></b> => 1 "," * <b>xx<i></i></b> => 0 "," */ "," isEmptyInlineElement: function ( node) { "," if ( node. nodeType != 1 || ! dtd. $removeEmpty[ node. tagName ]) { "," return 0 ; "," } "," node = node. firstChild; "," while ( node) { "," //如果是创建的bookmark就跳过 "," if ( domUtils. isBookmarkNode( node)) { "," return 0 ; "," } "," if ( node. nodeType == 1 && ! domUtils. isEmptyInlineElement( node) || "," node. nodeType == 3 && ! domUtils. isWhitespace( node) "," ) { "," return 0 ; "," } "," node = node. nextSibling; "," } "," return 1 ; ",""," } , ",""," /** "," * 删除node节点下首尾两端的空白文本子节点 "," * @method trimWhiteTextNode "," * @param { Element } node 需要执行删除操作的元素对象 "," * @example "," * ```html "," * <div id=\"test\"> "," * <div></div> "," * </div> "," * "," * <script> "," * var testNode = document.getElementById(\"test\"); "," * //output: 3 "," * console.log(testNode.childNodes.length); "," * "," * UE.dom.domUtils.trimWhiteTextNode( testNode ); "," * //output: 1 "," * console.log(testNode.childNodes.length); "," * </script> "," * ``` "," */ "," trimWhiteTextNode: function ( node) { "," function remove( dir) { "," var child; "," while (( child = node[ dir]) && child. nodeType == 3 && domUtils. isWhitespace( child)) { "," node. removeChild( child); "," } "," } "," remove( 'firstChild' ); "," remove( 'lastChild' ); "," } , ",""," /* "," * 合并node节点下相同的子节点 "," * @method mergeChild "," * @example "," * <p><span style=\"font-size:12px;\">xx<span style=\"font-size:12px;\">aa</span>xx</span></p> "," * ==> UE.dom.domUtils.mergeChild(node,'span') "," * <p><span style=\"font-size:12px;\">xxaaxx</span></p> "," */ "," mergeChild: function ( node, tagName, attrs) { "," var list = domUtils. getElementsByTagName( node, node. tagName. toLowerCase()); "," for ( var i = 0 , ci; ci = list[ i++];) { "," if (! ci. parentNode || domUtils. isBookmarkNode( ci)) { "," continue ; "," } "," //span单独处理 "," if ( ci. tagName. toLowerCase() == 'span' ) { "," if ( node === ci. parentNode) { "," domUtils. trimWhiteTextNode( node); "," if ( node. childNodes. length == 1 ) { "," node. style. cssText = ci. style. cssText + \";\" + node. style. cssText; "," domUtils. remove( ci, true ); "," continue ; "," } "," } "," ci. style. cssText = node. style. cssText + ';' + ci. style. cssText; "," if ( attrs) { "," var style = attrs. style; "," if ( style) { "," style = style. split( ';' ); "," for ( var j = 0 , s; s = style[ j++];) { "," ci. style[ utils. cssStyleToDomStyle( s. split( ':' )[ 0 ])] = s. split( ':' )[ 1 ]; "," } "," } "," } "," if ( domUtils. isSameStyle( ci, node)) { "," domUtils. remove( ci, true ); "," } "," continue ; "," } "," if ( domUtils. isSameElement( node, ci)) { "," domUtils. remove( ci, true ); "," } "," } "," } , ",""," /* "," * 原生方法getElementsByTagName的封装 "," * @name getElementsByTagName "," * @grammar UE.dom.domUtils.getElementsByTagName(node,tagName) => Array //节点集合数组 "," */ "," getElementsByTagName: function ( node, name, filter) { "," if ( filter && utils. isString( filter)) { "," var className = filter; "," filter = function ( node) { return domUtils. hasClass( node, className) } "," } "," name = utils. trim( name). replace( /[ ]{2,}/g , ' ' ). split( ' ' ); "," var arr = []; "," for ( var n = 0 , ni; ni= name[ n++];) { "," var list = node. getElementsByTagName( ni); "," for ( var i = 0 , ci; ci = list[ i++];) { "," if (! filter || filter( ci)) "," arr. push( ci); "," } "," } ",""," return arr; "," } , ",""," /** "," * 将节点node提取到父节点上 "," * @method mergeToParent "," * @param { Element } node 需要提取的元素对象 "," * @example "," * ```html "," * <div id=\"parent\"> "," * <div id=\"sub\"> "," * <span id=\"child\"></span> "," * </div> "," * </div> "," * "," * <script> "," * "," * var child = document.getElementById( \"child\" ); "," * "," * //output: sub "," * console.log( child.parentNode.id ); "," * "," * UE.dom.domUtils.mergeToParent( child ); "," * "," * //output: parent "," * console.log( child.parentNode.id ); "," * "," * </script> "," * ``` "," */ "," mergeToParent: function ( node) { "," var parent = node. parentNode; "," while ( parent && dtd. $removeEmpty[ parent. tagName]) { "," if ( parent. tagName == node. tagName || parent. tagName == 'A' ) { //针对a标签单独处理 "," domUtils. trimWhiteTextNode( parent); "," //span需要特殊处理 不处理这样的情况 <span stlye=\"color:#fff\">xxx<span style=\"color:#ccc\">xxx</span>xxx</span> "," if ( parent. tagName == 'SPAN' && ! domUtils. isSameStyle( parent, node) "," || ( parent. tagName == 'A' && node. tagName == 'SPAN' )) { "," if ( parent. childNodes. length > 1 || parent !== node. parentNode) { "," node. style. cssText = parent. style. cssText + \";\" + node. style. cssText; "," parent = parent. parentNode; "," continue ; "," } else { "," parent. style. cssText += \";\" + node. style. cssText; "," //trace:952 a标签要保持下划线 "," if ( parent. tagName == 'A' ) { "," parent. style. textDecoration = 'underline' ; "," } "," } "," } "," if ( parent. tagName != 'A' ) { "," parent === node. parentNode && domUtils. remove( node, true ); "," break ; "," } "," } "," parent = parent. parentNode; "," } "," } , ",""," /** "," * 合并节点node的左右兄弟节点 "," * @method mergeSibling "," * @param { Element } node 需要合并的目标节点 "," * @example "," * ```html "," * <b>xxxx</b><b id=\"test\">ooo</b><b>xxxx</b> "," * "," * <script> "," * var demoNode = document.getElementById(\"test\"); "," * UE.dom.domUtils.mergeSibling( demoNode ); "," * //output: xxxxoooxxxx "," * console.log( demoNode.innerHTML ); "," * </script> "," * ``` "," */ ",""," /** "," * 合并节点node的左右兄弟节点, 可以根据给定的条件选择是否忽略合并左节点。 "," * @method mergeSibling "," * @param { Element } node 需要合并的目标节点 "," * @param { Boolean } ignorePre 是否忽略合并左节点 "," * @example "," * ```html "," * <b>xxxx</b><b id=\"test\">ooo</b><b>xxxx</b> "," * "," * <script> "," * var demoNode = document.getElementById(\"test\"); "," * UE.dom.domUtils.mergeSibling( demoNode, true ); "," * //output: oooxxxx "," * console.log( demoNode.innerHTML ); "," * </script> "," * ``` "," */ ",""," /** "," * 合并节点node的左右兄弟节点,可以根据给定的条件选择是否忽略合并左右节点。 "," * @method mergeSibling "," * @param { Element } node 需要合并的目标节点 "," * @param { Boolean } ignorePre 是否忽略合并左节点 "," * @param { Boolean } ignoreNext 是否忽略合并右节点 "," * @remind 如果同时忽略左右节点, 则该操作什么也不会做 "," * @example "," * ```html "," * <b>xxxx</b><b id=\"test\">ooo</b><b>xxxx</b> "," * "," * <script> "," * var demoNode = document.getElementById(\"test\"); "," * UE.dom.domUtils.mergeSibling( demoNode, false, true ); "," * //output: xxxxooo "," * console.log( demoNode.innerHTML ); "," * </script> "," * ``` "," */ "," mergeSibling: function ( node, ignorePre, ignoreNext) { "," function merge( rtl, start, node) { "," var next; "," if (( next = node[ rtl]) && ! domUtils. isBookmarkNode( next) && next. nodeType == 1 && domUtils. isSameElement( node, next)) { "," while ( next. firstChild) { "," if ( start == 'firstChild' ) { "," node. insertBefore( next. lastChild, node. firstChild); "," } else { "," node. appendChild( next. firstChild); "," } "," } "," domUtils. remove( next); "," } "," } "," ! ignorePre && merge( 'previousSibling' , 'firstChild' , node); "," ! ignoreNext && merge( 'nextSibling' , 'lastChild' , node); "," } , ",""," /** "," * 设置节点node及其子节点不会被选中 "," * @method unSelectable "," * @param { Element } node 需要执行操作的dom元素 "," * @remind 执行该操作后的节点, 将不能被鼠标选中 "," * @example "," * ```javascript "," * UE.dom.domUtils.unSelectable( document.body ); "," * ``` "," */ "," unSelectable: ie || browser. opera ? function ( node) { "," //for ie9 "," node. onselectstart = function () { "," return false ; "," } ; "," node. onclick = node. onkeyup = node. onkeydown = function () { "," return false ; "," } ; "," node. unselectable = 'on' ; "," node. setAttribute( \"unselectable\" , \"on\" ); "," for ( var i = 0 , ci; ci = node. all[ i++];) { "," switch ( ci. tagName. toLowerCase()) { "," case 'iframe' : "," case 'textarea' : "," case 'input' : "," case 'select' : "," break ; "," default : "," ci. unselectable = 'on' ; "," node. setAttribute( \"unselectable\" , \"on\" ); "," } "," } "," } : function ( node) { "," node. style. MozUserSelect = "," node. style. webkitUserSelect = "," node. style. KhtmlUserSelect = 'none' ; "," } , ",""," /** "," * 删除节点node上的指定属性名称的属性 "," * @method removeAttributes "," * @param { String } attrNames 可以是空格隔开的多个属性名称,该操作将会依次删除相应的属性 "," * @example "," * ```html "," * <div id=\"wrap\"> "," * <span style=\"font-size:14px;\" id=\"test\" name=\"followMe\">xxxxx</span> "," * </div> "," * "," * <script> "," * "," * UE.dom.domUtils.removeAttributes( document.getElementById( \"test\" ), \"id name\" ); "," * "," * //output: <span style=\"font-size:14px;\">xxxxx</span> "," * console.log( document.getElementById(\"wrap\").innerHTML ); "," * "," * </script> "," * ``` "," */ ",""," /** "," * 删除节点node上的指定属性名称的属性 "," * @method removeAttributes "," * @param { Array } attrNames 需要删除的属性名数组 "," * @example "," * ```html "," * <div id=\"wrap\"> "," * <span style=\"font-size:14px;\" id=\"test\" name=\"followMe\">xxxxx</span> "," * </div> "," * "," * <script> "," * "," * UE.dom.domUtils.removeAttributes( document.getElementById( \"test\" ), [\"id\", \"name\"] ); "," * "," * //output: <span style=\"font-size:14px;\">xxxxx</span> "," * console.log( document.getElementById(\"wrap\").innerHTML ); "," * "," * </script> "," * ``` "," */ "," removeAttributes: function ( node, attrNames) { "," attrNames = utils. isArray( attrNames) ? attrNames : utils. trim( attrNames). replace( /[ ]{2,}/g , ' ' ). split( ' ' ); "," for ( var i = 0 , ci; ci = attrNames[ i++];) { "," ci = attrFix[ ci] || ci; "," switch ( ci) { "," case 'className' : "," node[ ci] = '' ; "," break ; "," case 'style' : "," node. style. cssText = '' ; "," ! browser. ie && node. removeAttributeNode( node. getAttributeNode( 'style' )) "," } "," node. removeAttribute( ci); "," } "," } , ",""," /** "," * 在doc下创建一个标签名为tag,属性为attrs的元素 "," * @method createElement "," * @param { DomDocument } doc 新创建的元素属于该document节点创建 "," * @param { String } tagName 需要创建的元素的标签名 "," * @param { KeyValueMap } attrs 新创建的元素的属性key-value集合 "," * @return { Element } 新创建的元素对象 "," * @example "," * ```javascript "," * var ele = UE.dom.domUtils.createElement( document, 'div', { "," * id: 'test' "," * } ); "," * "," * //output: DIV "," * console.log( ele.tagName ); "," * "," * //output: test "," * console.log( ele.id ); "," * "," * ``` "," */ "," createElement: function ( doc, tag, attrs) { "," return domUtils. setAttributes( doc. createElement( tag), attrs) "," } , ",""," /** "," * 为节点node添加属性attrs,attrs为属性键值对 "," * @method setAttributes "," * @param { Element } node 需要设置属性的元素对象 "," * @param { KeyValueMap } attrs 需要设置的属性名-值对 "," * @return { Element } 设置属性的元素对象 "," * @example "," * ```html "," * <span id=\"test\"></span> "," * "," * <script> "," * "," * var testNode = UE.dom.domUtils.setAttributes( document.getElementById( \"test\" ), { "," * id: 'demo' "," * } ); "," * "," * //output: demo "," * console.log( testNode.id ); "," * "," * </script> "," * "," */ "," setAttributes: function ( node, attrs) { "," for ( var attr in attrs) { "," if ( attrs. hasOwnProperty( attr)) { "," var value = attrs[ attr]; "," switch ( attr) { "," case 'class' : "," //ie下要这样赋值,setAttribute不起作用 "," node. className = value; "," break ; "," case 'style' : "," node. style. cssText = node. style. cssText + \";\" + value; "," break ; "," case 'innerHTML' : "," node[ attr] = value; "," break ; "," case 'value' : "," node. value = value; "," break ; "," default : "," node. setAttribute( attrFix[ attr] || attr, value); "," } "," } "," } "," return node; "," } , ",""," /** "," * 获取元素element经过计算后的样式值 "," * @method getComputedStyle "," * @param { Element } element 需要获取样式的元素对象 "," * @param { String } styleName 需要获取的样式名 "," * @return { String } 获取到的样式值 "," * @example "," * ```html "," * <style type=\"text/css\"> "," * #test { "," * font-size: 15px; "," * } "," * </style> "," * "," * <span id=\"test\"></span> "," * "," * <script> "," * //output: 15px "," * console.log( UE.dom.domUtils.getComputedStyle( document.getElementById( \"test\" ), 'font-size' ) ); "," * </script> "," * ``` "," */ "," getComputedStyle: function ( element, styleName) { "," //一下的属性单独处理 "," var pros = 'width height top left' ; ",""," if ( pros. indexOf( styleName) > - 1 ) { "," return element[ 'offset' + styleName. replace( /^\\w/ , function ( s) { return s. toUpperCase() } )] + 'px' ; "," } "," //忽略文本节点 "," if ( element. nodeType == 3 ) { "," element = element. parentNode; "," } "," //ie下font-size若body下定义了font-size,则从currentStyle里会取到这个font-size. 取不到实际值,故此修改. "," if ( browser. ie && browser. version < 9 && styleName == 'font-size' && ! element. style. fontSize && "," ! dtd. $empty[ element. tagName] && ! dtd. $nonChild[ element. tagName]) { "," var span = element. ownerDocument. createElement( 'span' ); "," span. style. cssText = 'padding:0;border:0;font-family:simsun;' ; "," span. innerHTML = '.' ; "," element. appendChild( span); "," var result = span. offsetHeight; "," element. removeChild( span); "," span = null ; "," return result + 'px' ; "," } "," try { "," var value = domUtils. getStyle( element, styleName) || "," ( window. getComputedStyle ? domUtils. getWindow( element). getComputedStyle( element, '' ). getPropertyValue( styleName) : "," ( element. currentStyle || element. style )[ utils. cssStyleToDomStyle( styleName)]); ",""," } catch ( e) { "," return \"\" ; "," } "," return utils. transUnitToPx( utils. fixColor( styleName, value)); "," } , "," /** "," * 删除元素element指定的className "," * @method removeClasses "," * @param { Element } ele 需要删除class的元素节点 "," * @param { String } classNames 需要删除的className, 多个className之间以空格分开 "," * @example "," * ```html "," * <span id=\"test\" class=\"test1 test2 test3\">xxx</span> "," * "," * <script> "," * "," * var testNode = document.getElementById( \"test\" ); "," * UE.dom.domUtils.removeClasses( testNode, \"test1 test2\" ); "," * "," * //output: test3 "," * console.log( testNode.className ); "," * "," * </script> "," * ``` "," */ ",""," /** "," * 删除元素element指定的className "," * @method removeClasses "," * @param { Element } ele 需要删除class的元素节点 "," * @param { Array } classNames 需要删除的className数组 "," * @example "," * ```html "," * <span id=\"test\" class=\"test1 test2 test3\">xxx</span> "," * "," * <script> "," * "," * var testNode = document.getElementById( \"test\" ); "," * UE.dom.domUtils.removeClasses( testNode, [\"test1\", \"test2\"] ); "," * "," * //output: test3 "," * console.log( testNode.className ); "," * "," * </script> "," * ``` "," */ "," removeClasses: function ( elm, classNames) { "," classNames = utils. isArray( classNames) ? classNames : "," utils. trim( classNames). replace( /[ ]{2,}/g , ' ' ). split( ' ' ); "," for ( var i = 0 , ci, cls = elm. className; ci= classNames[ i++];) { "," cls = cls. replace( new RegExp( ' \\\\ b' + ci + ' \\\\ b' ), '' ) "," } "," cls = utils. trim( cls). replace( /[ ]{2,}/g , ' ' ); "," if ( cls) { "," elm. className = cls; "," } else { "," domUtils. removeAttributes( elm,[ 'class' ]); "," } "," } , ",""," /** "," * 给元素element添加className "," * @method addClass "," * @param { Node } ele 需要增加className的元素 "," * @param { String } classNames 需要添加的className, 多个className之间以空格分割 "," * @remind 相同的类名不会被重复添加 "," * @example "," * ```html "," * <span id=\"test\" class=\"cls1 cls2\"></span> "," * "," * <script> "," * var testNode = document.getElementById(\"test\"); "," * "," * UE.dom.domUtils.addClass( testNode, \"cls2 cls3 cls4\" ); "," * "," * //output: cl1 cls2 cls3 cls4 "," * console.log( testNode.className ); "," * "," * <script> "," * ``` "," */ ",""," /** "," * 给元素element添加className "," * @method addClass "," * @param { Node } ele 需要增加className的元素 "," * @param { Array } classNames 需要添加的className的数组 "," * @remind 相同的类名不会被重复添加 "," * @example "," * ```html "," * <span id=\"test\" class=\"cls1 cls2\"></span> "," * "," * <script> "," * var testNode = document.getElementById(\"test\"); "," * "," * UE.dom.domUtils.addClass( testNode, [\"cls2\", \"cls3\", \"cls4\"] ); "," * "," * //output: cl1 cls2 cls3 cls4 "," * console.log( testNode.className ); "," * "," * <script> "," * ``` "," */ "," addClass: function ( elm, classNames) { "," if (! elm) return ; "," classNames = utils. trim( classNames). replace( /[ ]{2,}/g , ' ' ). split( ' ' ); "," for ( var i = 0 , ci, cls = elm. className; ci= classNames[ i++];) { "," if (! new RegExp( ' \\\\ b' + ci + ' \\\\ b' ). test( cls)) { "," elm. className += ' ' + ci; "," } "," } "," } , ",""," /** "," * 判断元素element是否包含给定的样式类名className "," * @method hasClass "," * @param { Node } ele 需要检测的元素 "," * @param { String } classNames 需要检测的className, 多个className之间用空格分割 "," * @return { Boolean } 元素是否包含所有给定的className "," * @example "," * ```html "," * <span id=\"test1\" class=\"cls1 cls2\"></span> "," * "," * <script> "," * var test1 = document.getElementById(\"test1\"); "," * "," * //output: false "," * console.log( UE.dom.domUtils.hasClass( test1, \"cls2 cls1 cls3\" ) ); "," * "," * //output: true "," * console.log( UE.dom.domUtils.hasClass( test1, \"cls2 cls1\" ) ); "," * </script> "," * ``` "," */ ",""," /** "," * 判断元素element是否包含给定的样式类名className "," * @method hasClass "," * @param { Node } ele 需要检测的元素 "," * @param { Array } classNames 需要检测的className数组 "," * @return { Boolean } 元素是否包含所有给定的className "," * @example "," * ```html "," * <span id=\"test1\" class=\"cls1 cls2\"></span> "," * "," * <script> "," * var test1 = document.getElementById(\"test1\"); "," * "," * //output: false "," * console.log( UE.dom.domUtils.hasClass( test1, [ \"cls2\", \"cls1\", \"cls3\" ] ) ); "," * "," * //output: true "," * console.log( UE.dom.domUtils.hasClass( test1, [ \"cls2\", \"cls1\" ]) ); "," * </script> "," * ``` "," */ "," hasClass: function ( element, className) { "," if ( utils. isRegExp( className)) { "," return className. test( element. className) "," } "," className = utils. trim( className). replace( /[ ]{2,}/g , ' ' ). split( ' ' ); "," for ( var i = 0 , ci, cls = element. className; ci= className[ i++];) { "," if (! new RegExp( ' \\\\ b' + ci + ' \\\\ b' , 'i' ). test( cls)) { "," return false ; "," } "," } "," return i - 1 == className. length; "," } , ",""," /** "," * 阻止事件默认行为 "," * @method preventDefault "," * @param { Event } evt 需要阻止默认行为的事件对象 "," * @example "," * ```javascript "," * UE.dom.domUtils.preventDefault( evt ); "," * ``` "," */ "," preventDefault: function ( evt) { "," evt. preventDefault ? evt. preventDefault() : ( evt. returnValue = false ); "," } , ",""," /** "," * 删除元素element指定的样式 "," * @method removeStyle "," * @param { Element } element 需要删除样式的元素 "," * @param { String } styleName 需要删除的样式名 "," * @example "," * ```html "," * <span id=\"test\" style=\"color: red; background: blue;\"></span> "," * "," * <script> "," * "," * var testNode = document.getElementById(\"test\"); "," * "," * UE.dom.domUtils.removeStyle( testNode, 'color' ); "," * "," * //output: background: blue; "," * console.log( testNode.style.cssText ); "," * "," * </script> "," * ``` "," */ "," removeStyle: function ( element, name) { "," if ( browser. ie ) { "," //针对color先单独处理一下 "," if ( name == 'color' ) { "," name = '(^|;)' + name; "," } "," element. style. cssText = element. style. cssText. replace( new RegExp( name + '[^:]*:[^;]+;?' , 'ig' ), '' ) "," } else { "," if ( element. style. removeProperty) { "," element. style. removeProperty ( name); "," } else { "," element. style. removeAttribute ( utils. cssStyleToDomStyle( name)); "," } "," } ","",""," if (! element. style. cssText) { "," domUtils. removeAttributes( element, [ 'style' ]); "," } "," } , ",""," /** "," * 获取元素element的style属性的指定值 "," * @method getStyle "," * @param { Element } element 需要获取属性值的元素 "," * @param { String } styleName 需要获取的style的名称 "," * @warning 该方法仅获取元素style属性中所标明的值 "," * @return { String } 该元素包含指定的style属性值 "," * @example "," * ```html "," * <div id=\"test\" style=\"color: red;\"></div> "," * "," * <script> "," * "," * var testNode = document.getElementById( \"test\" ); "," * "," * //output: red "," * console.log( UE.dom.domUtils.getStyle( testNode, \"color\" ) ); "," * "," * //output: \"\" "," * console.log( UE.dom.domUtils.getStyle( testNode, \"background\" ) ); "," * "," * </script> "," * ``` "," */ "," getStyle: function ( element, name) { "," var value = element. style[ utils. cssStyleToDomStyle( name) ]; "," return utils. fixColor( name, value); "," } , ","",""," /** "," * 为元素element设置样式属性值 "," * @method setStyle "," * @param { Element } element 需要设置样式的元素 "," * @param { String } styleName 样式名 "," * @param { String } styleValue 样式值 "," * @example "," * ```html "," * <div id=\"test\"></div> "," * "," * <script> "," * "," * var testNode = document.getElementById( \"test\" ); "," * "," * //output: \"\" "," * console.log( testNode.style.color ); "," * "," * UE.dom.domUtils.setStyle( testNode, 'color', 'red' ); "," * //output: \"red\" "," * console.log( testNode.style.color ); "," * "," * </script> "," * ``` "," */ "," setStyle: function ( element, name, value) { "," element. style[ utils. cssStyleToDomStyle( name)] = value; "," if (! utils. trim( element. style. cssText)) { "," this . removeAttributes( element, 'style' ) "," } "," } , ",""," /** "," * 为元素element设置多个样式属性值 "," * @method setStyles "," * @param { Element } element 需要设置样式的元素 "," * @param { KeyValueMap } styles 样式名值对 "," * @example "," * ```html "," * <div id=\"test\"></div> "," * "," * <script> "," * "," * var testNode = document.getElementById( \"test\" ); "," * "," * //output: \"\" "," * console.log( testNode.style.color ); "," * "," * UE.dom.domUtils.setStyles( testNode, { "," * 'color': 'red' "," * } ); "," * //output: \"red\" "," * console.log( testNode.style.color ); "," * "," * </script> "," * ``` "," */ "," setStyles: function ( element, styles) { "," for ( var name in styles) { "," if ( styles. hasOwnProperty( name)) { "," domUtils. setStyle( element, name, styles[ name]); "," } "," } "," } , ",""," /** "," * 删除_moz_dirty属性 "," * @method removeDirtyAttr "," */ "," removeDirtyAttr: function ( node) { "," for ( var i = 0 , ci, nodes = node. getElementsByTagName( '*' ); ci = nodes[ i++];) { "," ci. removeAttribute( '_moz_dirty' ); "," } "," node. removeAttribute( '_moz_dirty' ); "," } , ",""," /** "," * 获取子节点的数量 "," * @method getChildCount "," * @param { Element } node 需要检测的元素 "," * @return { Number } 给定的node元素的子节点数量 "," * @example "," * ```html "," * <div id=\"test\"> "," * <span></span> "," * </div> "," * "," * <script> "," * "," * //output: 3 "," * console.log( UE.dom.domUtils.getChildCount( document.getElementById(\"test\") ) ); "," * "," * </script> "," * ``` "," */ ",""," /** "," * 根据给定的过滤规则, 获取符合条件的子节点的数量 "," * @method getChildCount "," * @param { Element } node 需要检测的元素 "," * @param { Function } fn 过滤器, 要求对符合条件的子节点返回true, 反之则要求返回false "," * @return { Number } 符合过滤条件的node元素的子节点数量 "," * @example "," * ```html "," * <div id=\"test\"> "," * <span></span> "," * </div> "," * "," * <script> "," * "," * //output: 1 "," * console.log( UE.dom.domUtils.getChildCount( document.getElementById(\"test\"), function ( node ) { "," * "," * return node.nodeType === 1; "," * "," * } ) ); "," * "," * </script> "," * ``` "," */ "," getChildCount: function ( node, fn) { "," var count = 0 , first = node. firstChild; "," fn = fn || function () { "," return 1 ; "," } ; "," while ( first) { "," if ( fn( first)) { "," count++; "," } "," first = first. nextSibling; "," } "," return count; "," } , ",""," /** "," * 判断给定节点是否为空节点 "," * @method isEmptyNode "," * @param { Node } node 需要检测的节点对象 "," * @return { Boolean } 节点是否为空 "," * @example "," * ```javascript "," * UE.dom.domUtils.isEmptyNode( document.body ); "," * ``` "," */ "," isEmptyNode: function ( node) { "," return ! node. firstChild || domUtils. getChildCount( node, function ( node) { "," return ! domUtils. isBr( node) && ! domUtils. isBookmarkNode( node) && ! domUtils. isWhitespace( node) "," } ) == 0 "," } , ",""," /** "," * 清空给定节点所有的className "," * @method clearSelectedArr "," * @param { Array } nodes 需要清空className的节点的数组集合 "," * @example "," * ```javascript "," * "," * UE.dom.domUtils.clearSelectedArr( [ document.body, document.body.firstChild ] ); "," * "," * ``` "," */ "," clearSelectedArr: function ( nodes) { "," var node; "," while ( node = nodes. pop()) { "," domUtils. removeAttributes( node, [ 'class' ]); "," } "," } , ",""," /** "," * 将显示区域滚动到指定节点的位置 "," * @method scrollToView "," * @param {Node} node 节点 "," * @param {window} win window对象 "," * @param {Number} offsetTop 距离上方的偏移量 "," */ "," scrollToView: function ( node, win, offsetTop) { "," var getViewPaneSize = function () { "," var doc = win. document, "," mode = doc. compatMode == 'CSS1Compat' ; "," return { "," width:( mode ? doc. documentElement. clientWidth : doc. body. clientWidth ) || 0 , "," height:( mode ? doc. documentElement. clientHeight : doc. body. clientHeight ) || 0 "," } ; "," } , "," getScrollPosition = function ( win) { "," if ( 'pageXOffset' in win) { "," return { "," x: win. pageXOffset || 0 , "," y: win. pageYOffset || 0 "," } ; "," } "," else { "," var doc = win. document; "," return { "," x: doc. documentElement. scrollLeft || doc. body. scrollLeft || 0 , "," y: doc. documentElement. scrollTop || doc. body. scrollTop || 0 "," } ; "," } "," } ; "," var winHeight = getViewPaneSize(). height, offset = winHeight * - 1 + offsetTop; "," offset += ( node. offsetHeight || 0 ); "," var elementPosition = domUtils. getXY( node); "," offset += elementPosition. y; "," var currentScroll = getScrollPosition( win). y; "," // offset += 50; "," if ( offset > currentScroll || offset < currentScroll - winHeight) { "," win. scrollTo( 0 , offset + ( offset < 0 ? - 20 : 20 )); "," } "," } , ",""," /** "," * 判断给定节点是否为br "," * @method isBr "," * @param { Node } node 需要判断的节点对象 "," * @return { Boolean } 给定的节点是否是br节点 "," */ "," isBr: function ( node) { "," return node. nodeType == 1 && node. tagName == 'BR' ; "," } , ",""," /** "," * 判断给定的节点是否是一个“填充”节点 "," * @method isFillChar "," * @param { Node } node 需要判断的节点 "," * @param { Boolean } isInStart 是否从节点内容的开始位置匹配 "," * @returns { Boolean } 节点是否是填充节点 "," */ "," isFillChar: function ( node, isInStart) { "," return node. nodeType == 3 && ! node. nodeValue. replace( new RegExp(( isInStart ? '^' : '' ) + domUtils. fillChar), '' ). length"," } , ","",""," isStartInblock: function ( range) { "," var tmpRange = range. cloneRange(), "," flag = 0 , "," start = tmpRange. startContainer, "," tmp; "," if ( start. nodeType == 1 && start. childNodes[ tmpRange. startOffset]) { "," start = start. childNodes[ tmpRange. startOffset]; "," var pre = start. previousSibling; "," while ( pre && domUtils. isFillChar( pre)) { "," start = pre; "," pre = pre. previousSibling; "," } "," } "," if ( this . isFillChar( start, true ) && tmpRange. startOffset == 1 ) { "," tmpRange. setStartBefore( start); "," start = tmpRange. startContainer; "," } ",""," while ( start && domUtils. isFillChar( start)) { "," tmp = start; "," start = start. previousSibling"," } "," if ( tmp) { "," tmpRange. setStartBefore( tmp); "," start = tmpRange. startContainer; "," } "," if ( start. nodeType == 1 && domUtils. isEmptyNode( start) && tmpRange. startOffset == 1 ) { "," tmpRange. setStart( start, 0 ). collapse( true ); "," } "," while (! tmpRange. startOffset) { "," start = tmpRange. startContainer; "," if ( domUtils. isBlockElm( start) || domUtils. isBody( start)) { "," flag = 1 ; "," break ; "," } "," var pre = tmpRange. startContainer. previousSibling, "," tmpNode; "," if (! pre) { "," tmpRange. setStartBefore( tmpRange. startContainer); "," } else { "," while ( pre && domUtils. isFillChar( pre)) { "," tmpNode = pre; "," pre = pre. previousSibling; "," } "," if ( tmpNode) { "," tmpRange. setStartBefore( tmpNode); "," } else { "," tmpRange. setStartBefore( tmpRange. startContainer); "," } "," } "," } "," return flag && ! domUtils. isBody( tmpRange. startContainer) ? 1 : 0 ; "," } , ",""," /** "," * 判断给定的元素是否是一个空元素 "," * @method isEmptyBlock "," * @param { Element } node 需要判断的元素 "," * @return { Boolean } 是否是空元素 "," * @example "," * ```html "," * <div id=\"test\"></div> "," * "," * <script> "," * //output: true "," * console.log( UE.dom.domUtils.isEmptyBlock( document.getElementById(\"test\") ) ); "," * </script> "," * ``` "," */ ",""," /** "," * 根据指定的判断规则判断给定的元素是否是一个空元素 "," * @method isEmptyBlock "," * @param { Element } node 需要判断的元素 "," * @param { RegExp } reg 对内容执行判断的正则表达式对象 "," * @return { Boolean } 是否是空元素 "," */ "," isEmptyBlock: function ( node, reg) { "," if ( node. nodeType != 1 ) "," return 0 ; "," reg = reg || new RegExp( '[ \\t\\r\\n ' + domUtils. fillChar + ']' , 'g' ); "," if ( node[ browser. ie ? 'innerText' : 'textContent' ]. replace( reg, '' ). length > 0 ) { "," return 0 ; "," } "," for ( var n in dtd. $isNotEmpty) { "," if ( node. getElementsByTagName( n). length) { "," return 0 ; "," } "," } "," return 1 ; "," } , ",""," /** "," * 移动元素使得该元素的位置移动指定的偏移量的距离 "," * @method setViewportOffset "," * @param { Element } element 需要设置偏移量的元素 "," * @param { KeyValueMap } offset 偏移量, 形如{ left: 100, top: 50 }的一个键值对, 表示该元素将在 "," * 现有的位置上向水平方向偏移offset.left的距离, 在竖直方向上偏移 "," * offset.top的距离 "," * @example "," * ```html "," * <div id=\"test\" style=\"top: 100px; left: 50px; position: absolute;\"></div> "," * "," * <script> "," * "," * var testNode = document.getElementById(\"test\"); "," * "," * UE.dom.domUtils.setViewportOffset( testNode, { "," * left: 200, "," * top: 50 "," * } ); "," * "," * //output: top: 300px; left: 100px; position: absolute; "," * console.log( testNode.style.cssText ); "," * "," * </script> "," * ``` "," */ "," setViewportOffset: function ( element, offset) { "," var left = parseInt( element. style. left) | 0 ; "," var top = parseInt( element. style. top) | 0 ; "," var rect = element. getBoundingClientRect(); "," var offsetLeft = offset. left - rect. left; "," var offsetTop = offset. top - rect. top; "," if ( offsetLeft) { "," element. style. left = left + offsetLeft + 'px' ; "," } "," if ( offsetTop) { "," element. style. top = top + offsetTop + 'px' ; "," } "," } , ",""," /** "," * 用“填充字符”填充节点 "," * @method fillNode "," * @param { DomDocument } doc 填充的节点所在的docment对象 "," * @param { Node } node 需要填充的节点对象 "," * @example "," * ```html "," * <div id=\"test\"></div> "," * "," * <script> "," * var testNode = document.getElementById(\"test\"); "," * "," * //output: 0 "," * console.log( testNode.childNodes.length ); "," * "," * UE.dom.domUtils.fillNode( document, testNode ); "," * "," * //output: 1 "," * console.log( testNode.childNodes.length ); "," * "," * </script> "," * ``` "," */ "," fillNode: function ( doc, node) { "," var tmpNode = browser. ie ? doc. createTextNode( domUtils. fillChar) : doc. createElement( 'br' ); "," node. innerHTML = '' ; "," node. appendChild( tmpNode); "," } , ",""," /** "," * 把节点src的所有子节点追加到另一个节点tag上去 "," * @method moveChild "," * @param { Node } src 源节点, 该节点下的所有子节点将被移除 "," * @param { Node } tag 目标节点, 从源节点移除的子节点将被追加到该节点下 "," * @example "," * ```html "," * <div id=\"test1\"> "," * <span></span> "," * </div> "," * <div id=\"test2\"> "," * <div></div> "," * </div> "," * "," * <script> "," * "," * var test1 = document.getElementById(\"test1\"), "," * test2 = document.getElementById(\"test2\"); "," * "," * UE.dom.domUtils.moveChild( test1, test2 ); "," * "," * //output: \"\"(空字符串) "," * console.log( test1.innerHTML ); "," * "," * //output: \"<div></div><span></span>\" "," * console.log( test2.innerHTML ); "," * "," * </script> "," * ``` "," */ ",""," /** "," * 把节点src的所有子节点移动到另一个节点tag上去, 可以通过dir参数控制附加的行为是“追加”还是“插入顶部” "," * @method moveChild "," * @param { Node } src 源节点, 该节点下的所有子节点将被移除 "," * @param { Node } tag 目标节点, 从源节点移除的子节点将被附加到该节点下 "," * @param { Boolean } dir 附加方式, 如果为true, 则附加进去的节点将被放到目标节点的顶部, 反之,则放到末尾 "," * @example "," * ```html "," * <div id=\"test1\"> "," * <span></span> "," * </div> "," * <div id=\"test2\"> "," * <div></div> "," * </div> "," * "," * <script> "," * "," * var test1 = document.getElementById(\"test1\"), "," * test2 = document.getElementById(\"test2\"); "," * "," * UE.dom.domUtils.moveChild( test1, test2, true ); "," * "," * //output: \"\"(空字符串) "," * console.log( test1.innerHTML ); "," * "," * //output: \"<span></span><div></div>\" "," * console.log( test2.innerHTML ); "," * "," * </script> "," * ``` "," */ "," moveChild: function ( src, tag, dir) { "," while ( src. firstChild) { "," if ( dir && tag. firstChild) { "," tag. insertBefore( src. lastChild, tag. firstChild); "," } else { "," tag. appendChild( src. firstChild); "," } "," } "," } , ",""," /** "," * 判断节点的标签上是否不存在任何属性 "," * @method hasNoAttributes "," * @param { Node } node 需要检测的节点对象 "," * @return { Boolean } 节点是否不包含任何属性 "," * @example "," * ```html "," * <div id=\"test\"><span>xxxx</span></div> "," * "," * <script> "," * "," * //output: false "," * console.log( UE.dom.domUtils.hasNoAttributes( document.getElementById(\"test\") ) ); "," * "," * //output: true "," * console.log( UE.dom.domUtils.hasNoAttributes( document.getElementById(\"test\").firstChild ) ); "," * "," * </script> "," * ``` "," */ "," hasNoAttributes: function ( node) { "," return browser. ie ? /^<\\w+\\s*?>/ . test( node. outerHTML) : node. attributes. length == 0 ; "," } , ",""," /** "," * 检测节点是否是UEditor所使用的辅助节点 "," * @method isCustomeNode "," * @param { Node } node 需要检测的节点 "," * @remind 辅助节点是指编辑器要完成工作临时添加的节点, 在输出的时候将会从编辑器内移除, 不会影响最终的结果。 "," * @return { Boolean } 给定的节点是否是一个辅助节点 "," */ "," isCustomeNode: function ( node) { "," return node. nodeType == 1 && node. getAttribute( '_ue_custom_node_' ); "," } , ",""," /** "," * 检测节点的标签是否是给定的标签 "," * @method isTagNode "," * @param { Node } node 需要检测的节点对象 "," * @param { String } tagName 标签 "," * @return { Boolean } 节点的标签是否是给定的标签 "," * @example "," * ```html "," * <div id=\"test\"></div> "," * "," * <script> "," * "," * //output: true "," * console.log( UE.dom.domUtils.isTagNode( document.getElementById(\"test\"), \"div\" ) ); "," * "," * </script> "," * ``` "," */ "," isTagNode: function ( node, tagName) { "," return node. nodeType == 1 && new RegExp( '^' + node. tagName + '$' , 'i' ). test( tagName) "," } , ",""," /** "," * 给定一个节点数组,在通过指定的过滤器过滤后, 获取其中满足过滤条件的第一个节点 "," * @method filterNodeList "," * @param { Array } nodeList 需要过滤的节点数组 "," * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false "," * @return { Node | NULL } 如果找到符合过滤条件的节点, 则返回该节点, 否则返回NULL "," * @example "," * ```javascript "," * var divNodes = document.getElementsByTagName(\"div\"); "," * divNodes = [].slice.call( divNodes, 0 ); "," * "," * //output: null "," * console.log( UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { "," * return node.tagName.toLowerCase() !== 'div'; "," * } ) ); "," * ``` "," */ ",""," /** "," * 给定一个节点数组nodeList和一组标签名tagNames, 获取其中能够匹配标签名的节点集合中的第一个节点 "," * @method filterNodeList "," * @param { Array } nodeList 需要过滤的节点数组 "," * @param { String } tagNames 需要匹配的标签名, 多个标签名之间用空格分割 "," * @return { Node | NULL } 如果找到标签名匹配的节点, 则返回该节点, 否则返回NULL "," * @example "," * ```javascript "," * var divNodes = document.getElementsByTagName(\"div\"); "," * divNodes = [].slice.call( divNodes, 0 ); "," * "," * //output: null "," * console.log( UE.dom.domUtils.filterNodeList( divNodes, 'a span' ) ); "," * ``` "," */ ",""," /** "," * 给定一个节点数组,在通过指定的过滤器过滤后, 如果参数forAll为true, 则会返回所有满足过滤 "," * 条件的节点集合, 否则, 返回满足条件的节点集合中的第一个节点 "," * @method filterNodeList "," * @param { Array } nodeList 需要过滤的节点数组 "," * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false "," * @param { Boolean } forAll 是否返回整个节点数组, 如果该参数为false, 则返回节点集合中的第一个节点 "," * @return { Array | Node | NULL } 如果找到符合过滤条件的节点, 则根据参数forAll的值决定返回满足 "," * 过滤条件的节点数组或第一个节点, 否则返回NULL "," * @example "," * ```javascript "," * var divNodes = document.getElementsByTagName(\"div\"); "," * divNodes = [].slice.call( divNodes, 0 ); "," * "," * //output: 3(假定有3个div) "," * console.log( divNodes.length ); "," * "," * var nodes = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { "," * return node.tagName.toLowerCase() === 'div'; "," * }, true ); "," * "," * //output: 3 "," * console.log( nodes.length ); "," * "," * var node = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { "," * return node.tagName.toLowerCase() === 'div'; "," * }, false ); "," * "," * //output: div "," * console.log( node.nodeName ); "," * ``` "," */ "," filterNodeList : function ( nodelist, filter, forAll) { "," var results = []; "," if (! utils . isFunction( filter)) { "," var str = filter; "," filter = function ( n) { "," return utils. indexOf( utils. isArray( str) ? str: str. split( ' ' ), n. tagName. toLowerCase()) != - 1 "," } ; "," } "," utils. each( nodelist, function ( n) { "," filter( n) && results. push( n) "," } ); "," return results. length == 0 ? null : results. length == 1 || ! forAll ? results[ 0 ] : results"," } , ",""," isInNodeEndBoundary : function ( rng, node) { "," var start = rng. startContainer; "," if ( start. nodeType == 3 && rng. startOffset != start. nodeValue. length) { "," return 0 ; "," } "," if ( start. nodeType == 1 && rng. startOffset != start. childNodes. length) { "," return 0 ; "," } "," while ( start !== node) { "," if ( start. nextSibling) { "," return 0 "," } ; "," start = start. parentNode; "," } "," return 1 ; "," } , "," isBoundaryNode : function ( node, dir) { "," var tmp; "," while (! domUtils. isBody( node)) { "," tmp = node; "," node = node. parentNode; "," if ( tmp !== node[ dir]) { "," return false ; "," } "," } "," return true ; "," } ","} ; ","var fillCharReg = new RegExp( domUtils. fillChar, 'g' ); "];
+_$jscoverage['core/domUtils.js'][15]++;
+function getNode(node, start, ltr, startFromChild, fn, guard) {
+ _$jscoverage['core/domUtils.js'][16]++;
+ var tmpNode = (startFromChild && node[start]), parent;
+ _$jscoverage['core/domUtils.js'][18]++;
+ ((! tmpNode) && (tmpNode = node[ltr]));
+ _$jscoverage['core/domUtils.js'][19]++;
+ while (((! tmpNode) && (parent = (parent || node).parentNode))) {
+ _$jscoverage['core/domUtils.js'][20]++;
+ if (((parent.tagName == "BODY") || (guard && (! guard(parent))))) {
+ _$jscoverage['core/domUtils.js'][21]++;
+ return null;
+ }
+ _$jscoverage['core/domUtils.js'][23]++;
+ tmpNode = parent[ltr];
+}
+ _$jscoverage['core/domUtils.js'][25]++;
+ if ((tmpNode && fn && (! fn(tmpNode)))) {
+ _$jscoverage['core/domUtils.js'][26]++;
+ return getNode(tmpNode, start, ltr, false, fn);
+ }
+ _$jscoverage['core/domUtils.js'][28]++;
+ return tmpNode;
+}
+_$jscoverage['core/domUtils.js'][30]++;
+var attrFix = ((ie && (browser.version < 9))? {tabindex: "tabIndex", readonly: "readOnly", "for": "htmlFor", "class": "className", maxlength: "maxLength", cellspacing: "cellSpacing", cellpadding: "cellPadding", rowspan: "rowSpan", colspan: "colSpan", usemap: "useMap", frameborder: "frameBorder"}: {tabindex: "tabIndex", readonly: "readOnly"}), styleBlock = utils.listToMap(["-webkit-box", "-moz-box", "block", "list-item", "table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption"]);
+_$jscoverage['core/domUtils.js'][53]++;
+var domUtils = (dom.domUtils = {NODE_ELEMENT: 1, NODE_DOCUMENT: 9, NODE_TEXT: 3, NODE_COMMENT: 8, NODE_DOCUMENT_FRAGMENT: 11, POSITION_IDENTICAL: 0, POSITION_DISCONNECTED: 1, POSITION_FOLLOWING: 2, POSITION_PRECEDING: 4, POSITION_IS_CONTAINED: 8, POSITION_CONTAINS: 16, fillChar: ((ie && (browser.version == "6"))? "\ufeff": "\u200b"), keys: {8: 1, 46: 1, 16: 1, 17: 1, 18: 1, 37: 1, 38: 1, 39: 1, 40: 1, 13: 1}, getPosition: (function (nodeA, nodeB) {
+ _$jscoverage['core/domUtils.js'][120]++;
+ if ((nodeA === nodeB)) {
+ _$jscoverage['core/domUtils.js'][122]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][124]++;
+ var node, parentsA = [nodeA], parentsB = [nodeB];
+ _$jscoverage['core/domUtils.js'][127]++;
+ node = nodeA;
+ _$jscoverage['core/domUtils.js'][128]++;
+ while ((node = node.parentNode)) {
+ _$jscoverage['core/domUtils.js'][130]++;
+ if ((node === nodeB)) {
+ _$jscoverage['core/domUtils.js'][132]++;
+ return 10;
+ }
+ _$jscoverage['core/domUtils.js'][134]++;
+ parentsA.push(node);
+}
+ _$jscoverage['core/domUtils.js'][136]++;
+ node = nodeB;
+ _$jscoverage['core/domUtils.js'][137]++;
+ while ((node = node.parentNode)) {
+ _$jscoverage['core/domUtils.js'][139]++;
+ if ((node === nodeA)) {
+ _$jscoverage['core/domUtils.js'][141]++;
+ return 20;
+ }
+ _$jscoverage['core/domUtils.js'][143]++;
+ parentsB.push(node);
+}
+ _$jscoverage['core/domUtils.js'][145]++;
+ parentsA.reverse();
+ _$jscoverage['core/domUtils.js'][146]++;
+ parentsB.reverse();
+ _$jscoverage['core/domUtils.js'][147]++;
+ if ((parentsA[0] !== parentsB[0])) {
+ _$jscoverage['core/domUtils.js'][149]++;
+ return 1;
+ }
+ _$jscoverage['core/domUtils.js'][151]++;
+ var i = -1;
+ _$jscoverage['core/domUtils.js'][152]++;
+ while (((i++), (parentsA[i] === parentsB[i]))) {
+}
+ _$jscoverage['core/domUtils.js'][154]++;
+ nodeA = parentsA[i];
+ _$jscoverage['core/domUtils.js'][155]++;
+ nodeB = parentsB[i];
+ _$jscoverage['core/domUtils.js'][156]++;
+ while ((nodeA = nodeA.nextSibling)) {
+ _$jscoverage['core/domUtils.js'][157]++;
+ if ((nodeA === nodeB)) {
+ _$jscoverage['core/domUtils.js'][159]++;
+ return 4;
+ }
+}
+ _$jscoverage['core/domUtils.js'][163]++;
+ return 2;
+}), getNodeIndex: (function (node, ignoreTextNode) {
+ _$jscoverage['core/domUtils.js'][181]++;
+ var preNode = node, i = 0;
+ _$jscoverage['core/domUtils.js'][183]++;
+ while ((preNode = preNode.previousSibling)) {
+ _$jscoverage['core/domUtils.js'][184]++;
+ if ((ignoreTextNode && (preNode.nodeType == 3))) {
+ _$jscoverage['core/domUtils.js'][185]++;
+ if ((preNode.nodeType != preNode.nextSibling.nodeType)) {
+ _$jscoverage['core/domUtils.js'][186]++;
+ (i++);
+ }
+ _$jscoverage['core/domUtils.js'][188]++;
+ continue;
+ }
+ _$jscoverage['core/domUtils.js'][190]++;
+ (i++);
+}
+ _$jscoverage['core/domUtils.js'][192]++;
+ return i;
+}), inDoc: (function (node, doc) {
+ _$jscoverage['core/domUtils.js'][217]++;
+ return (domUtils.getPosition(node, doc) == 10);
+}), findParent: (function (node, filterFn, includeSelf) {
+ _$jscoverage['core/domUtils.js'][279]++;
+ if ((node && (! domUtils.isBody(node)))) {
+ _$jscoverage['core/domUtils.js'][280]++;
+ node = (includeSelf? node: node.parentNode);
+ _$jscoverage['core/domUtils.js'][281]++;
+ while (node) {
+ _$jscoverage['core/domUtils.js'][282]++;
+ if (((! filterFn) || filterFn(node) || domUtils.isBody(node))) {
+ _$jscoverage['core/domUtils.js'][283]++;
+ return ((filterFn && (! filterFn(node)) && domUtils.isBody(node))? null: node);
+ }
+ _$jscoverage['core/domUtils.js'][285]++;
+ node = node.parentNode;
+}
+ }
+ _$jscoverage['core/domUtils.js'][288]++;
+ return null;
+}), findParentByTagName: (function (node, tagNames, includeSelf, excludeFn) {
+ _$jscoverage['core/domUtils.js'][350]++;
+ tagNames = utils.listToMap((utils.isArray(tagNames)? tagNames: [tagNames]));
+ _$jscoverage['core/domUtils.js'][351]++;
+ return domUtils.findParent(node, (function (node) {
+ _$jscoverage['core/domUtils.js'][352]++;
+ return (tagNames[node.tagName] && (! (excludeFn && excludeFn(node))));
+}), includeSelf);
+}), findParents: (function (node, includeSelf, filterFn, closerFirst) {
+ _$jscoverage['core/domUtils.js'][365]++;
+ var parents = ((includeSelf && ((filterFn && filterFn(node)) || (! filterFn)))? [node]: []);
+ _$jscoverage['core/domUtils.js'][366]++;
+ while ((node = domUtils.findParent(node, filterFn))) {
+ _$jscoverage['core/domUtils.js'][367]++;
+ parents.push(node);
+}
+ _$jscoverage['core/domUtils.js'][369]++;
+ return (closerFirst? parents: parents.reverse());
+}), insertAfter: (function (node, newNode) {
+ _$jscoverage['core/domUtils.js'][380]++;
+ return node.parentNode.insertBefore(newNode, node.nextSibling);
+}), remove: (function (node, keepChildren) {
+ _$jscoverage['core/domUtils.js'][420]++;
+ var parent = node.parentNode, child;
+ _$jscoverage['core/domUtils.js'][422]++;
+ if (parent) {
+ _$jscoverage['core/domUtils.js'][423]++;
+ if ((keepChildren && node.hasChildNodes())) {
+ _$jscoverage['core/domUtils.js'][424]++;
+ while ((child = node.firstChild)) {
+ _$jscoverage['core/domUtils.js'][425]++;
+ parent.insertBefore(child, node);
+}
+ }
+ _$jscoverage['core/domUtils.js'][428]++;
+ parent.removeChild(node);
+ }
+ _$jscoverage['core/domUtils.js'][430]++;
+ return node;
+}), getNextNode: (function (node, startFromChild, filterFn, guard) {
+ _$jscoverage['core/domUtils.js'][437]++;
+ return getNode(node, "firstChild", "nextSibling", startFromChild, filterFn, guard);
+}), isBookmarkNode: (function (node) {
+ _$jscoverage['core/domUtils.js'][456]++;
+ return ((node.nodeType == 1) && node.id && /^_baidu_bookmark_/i.test(node.id));
+}), getWindow: (function (node) {
+ _$jscoverage['core/domUtils.js'][471]++;
+ var doc = (node.ownerDocument || node);
+ _$jscoverage['core/domUtils.js'][472]++;
+ return (doc.defaultView || doc.parentWindow);
+}), getCommonAncestor: (function (nodeA, nodeB) {
+ _$jscoverage['core/domUtils.js'][490]++;
+ if ((nodeA === nodeB)) {
+ _$jscoverage['core/domUtils.js'][491]++;
+ return nodeA;
+ }
+ _$jscoverage['core/domUtils.js'][492]++;
+ var parentsA = [nodeA], parentsB = [nodeB], parent = nodeA, i = -1;
+ _$jscoverage['core/domUtils.js'][493]++;
+ while ((parent = parent.parentNode)) {
+ _$jscoverage['core/domUtils.js'][494]++;
+ if ((parent === nodeB)) {
+ _$jscoverage['core/domUtils.js'][495]++;
+ return parent;
+ }
+ _$jscoverage['core/domUtils.js'][497]++;
+ parentsA.push(parent);
+}
+ _$jscoverage['core/domUtils.js'][499]++;
+ parent = nodeB;
+ _$jscoverage['core/domUtils.js'][500]++;
+ while ((parent = parent.parentNode)) {
+ _$jscoverage['core/domUtils.js'][501]++;
+ if ((parent === nodeA)) {
+ _$jscoverage['core/domUtils.js'][502]++;
+ return parent;
+ }
+ _$jscoverage['core/domUtils.js'][503]++;
+ parentsB.push(parent);
+}
+ _$jscoverage['core/domUtils.js'][505]++;
+ parentsA.reverse();
+ _$jscoverage['core/domUtils.js'][506]++;
+ parentsB.reverse();
+ _$jscoverage['core/domUtils.js'][507]++;
+ while (((i++), (parentsA[i] === parentsB[i]))) {
+}
+ _$jscoverage['core/domUtils.js'][509]++;
+ return ((i == 0)? null: parentsA[(i - 1)]);
+}), clearEmptySibling: (function (node, ignoreNext, ignorePre) {
+ _$jscoverage['core/domUtils.js'][523]++;
+ function clear(next, dir) {
+ _$jscoverage['core/domUtils.js'][524]++;
+ var tmpNode;
+ _$jscoverage['core/domUtils.js'][525]++;
+ while ((next && (! domUtils.isBookmarkNode(next)) && (domUtils.isEmptyInlineElement(next) || (! new RegExp(("[^\t\n\r" + domUtils.fillChar + "]")).test(next.nodeValue))))) {
+ _$jscoverage['core/domUtils.js'][528]++;
+ tmpNode = next[dir];
+ _$jscoverage['core/domUtils.js'][529]++;
+ domUtils.remove(next);
+ _$jscoverage['core/domUtils.js'][530]++;
+ next = tmpNode;
+}
+}
+ _$jscoverage['core/domUtils.js'][533]++;
+ ((! ignoreNext) && clear(node.nextSibling, "nextSibling"));
+ _$jscoverage['core/domUtils.js'][534]++;
+ ((! ignorePre) && clear(node.previousSibling, "previousSibling"));
+}), split: (function (node, offset) {
+ _$jscoverage['core/domUtils.js'][554]++;
+ var doc = node.ownerDocument;
+ _$jscoverage['core/domUtils.js'][555]++;
+ if ((browser.ie && (offset == node.nodeValue.length))) {
+ _$jscoverage['core/domUtils.js'][556]++;
+ var next = doc.createTextNode("");
+ _$jscoverage['core/domUtils.js'][557]++;
+ return domUtils.insertAfter(node, next);
+ }
+ _$jscoverage['core/domUtils.js'][559]++;
+ var retval = node.splitText(offset);
+ _$jscoverage['core/domUtils.js'][561]++;
+ if (browser.ie8) {
+ _$jscoverage['core/domUtils.js'][562]++;
+ var tmpNode = doc.createTextNode("");
+ _$jscoverage['core/domUtils.js'][563]++;
+ domUtils.insertAfter(retval, tmpNode);
+ _$jscoverage['core/domUtils.js'][564]++;
+ domUtils.remove(tmpNode);
+ }
+ _$jscoverage['core/domUtils.js'][566]++;
+ return retval;
+}), isWhitespace: (function (node) {
+ _$jscoverage['core/domUtils.js'][586]++;
+ return (! new RegExp(("[^ \t\n\r" + domUtils.fillChar + "]")).test(node.nodeValue));
+}), getXY: (function (element) {
+ _$jscoverage['core/domUtils.js'][604]++;
+ var x = 0, y = 0;
+ _$jscoverage['core/domUtils.js'][605]++;
+ while (element.offsetParent) {
+ _$jscoverage['core/domUtils.js'][606]++;
+ y += element.offsetTop;
+ _$jscoverage['core/domUtils.js'][607]++;
+ x += element.offsetLeft;
+ _$jscoverage['core/domUtils.js'][608]++;
+ element = element.offsetParent;
+}
+ _$jscoverage['core/domUtils.js'][610]++;
+ return ({"x": x, "y": y});
+}), on: (function (element, type, handler) {
+ _$jscoverage['core/domUtils.js'][641]++;
+ var types = (utils.isArray(type)? type: [type]), k = types.length;
+ _$jscoverage['core/domUtils.js'][643]++;
+ if (k) {
+ _$jscoverage['core/domUtils.js'][643]++;
+ while ((k--)) {
+ _$jscoverage['core/domUtils.js'][644]++;
+ type = types[k];
+ _$jscoverage['core/domUtils.js'][645]++;
+ if (element.addEventListener) {
+ _$jscoverage['core/domUtils.js'][646]++;
+ element.addEventListener(type, handler, false);
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][648]++;
+ if ((! handler._d)) {
+ _$jscoverage['core/domUtils.js'][649]++;
+ handler._d = {els: []};
+ }
+ _$jscoverage['core/domUtils.js'][653]++;
+ var key = (type + handler.toString()), index = utils.indexOf(handler._d.els, element);
+ _$jscoverage['core/domUtils.js'][654]++;
+ if (((! handler._d[key]) || (index == -1))) {
+ _$jscoverage['core/domUtils.js'][655]++;
+ if ((index == -1)) {
+ _$jscoverage['core/domUtils.js'][656]++;
+ handler._d.els.push(element);
+ }
+ _$jscoverage['core/domUtils.js'][658]++;
+ if ((! handler._d[key])) {
+ _$jscoverage['core/domUtils.js'][659]++;
+ handler._d[key] = (function (evt) {
+ _$jscoverage['core/domUtils.js'][660]++;
+ return handler.call(evt.srcElement, (evt || window.event));
+});
+ }
+ _$jscoverage['core/domUtils.js'][665]++;
+ element.attachEvent(("on" + type), handler._d[key]);
+ }
+ }
+}
+ }
+ _$jscoverage['core/domUtils.js'][669]++;
+ element = null;
+}), un: (function (element, type, handler) {
+ _$jscoverage['core/domUtils.js'][700]++;
+ var types = (utils.isArray(type)? type: [type]), k = types.length;
+ _$jscoverage['core/domUtils.js'][702]++;
+ if (k) {
+ _$jscoverage['core/domUtils.js'][702]++;
+ while ((k--)) {
+ _$jscoverage['core/domUtils.js'][703]++;
+ type = types[k];
+ _$jscoverage['core/domUtils.js'][704]++;
+ if (element.removeEventListener) {
+ _$jscoverage['core/domUtils.js'][705]++;
+ element.removeEventListener(type, handler, false);
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][707]++;
+ var key = (type + handler.toString());
+ _$jscoverage['core/domUtils.js'][708]++;
+ try {
+ _$jscoverage['core/domUtils.js'][709]++;
+ element.detachEvent(("on" + type), (handler._d? handler._d[key]: handler));
+ }
+ catch (e) {
+ }
+ _$jscoverage['core/domUtils.js'][711]++;
+ if ((handler._d && handler._d[key])) {
+ _$jscoverage['core/domUtils.js'][712]++;
+ var index = utils.indexOf(handler._d.els, element);
+ _$jscoverage['core/domUtils.js'][713]++;
+ if ((index != -1)) {
+ _$jscoverage['core/domUtils.js'][714]++;
+ handler._d.els.splice(index, 1);
+ }
+ _$jscoverage['core/domUtils.js'][716]++;
+ ((handler._d.els.length == 0) && (delete handler._d[key]));
+ }
+ }
+}
+ }
+}), isSameElement: (function (nodeA, nodeB) {
+ _$jscoverage['core/domUtils.js'][749]++;
+ if ((nodeA.tagName != nodeB.tagName)) {
+ _$jscoverage['core/domUtils.js'][750]++;
+ return false;
+ }
+ _$jscoverage['core/domUtils.js'][752]++;
+ var thisAttrs = nodeA.attributes, otherAttrs = nodeB.attributes;
+ _$jscoverage['core/domUtils.js'][754]++;
+ if (((! ie) && (thisAttrs.length != otherAttrs.length))) {
+ _$jscoverage['core/domUtils.js'][755]++;
+ return false;
+ }
+ _$jscoverage['core/domUtils.js'][757]++;
+ var attrA, attrB, al = 0, bl = 0;
+ _$jscoverage['core/domUtils.js'][758]++;
+ for (var i = 0; (attrA = thisAttrs[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][759]++;
+ if ((attrA.nodeName == "style")) {
+ _$jscoverage['core/domUtils.js'][760]++;
+ if (attrA.specified) {
+ _$jscoverage['core/domUtils.js'][761]++;
+ (al++);
+ }
+ _$jscoverage['core/domUtils.js'][763]++;
+ if (domUtils.isSameStyle(nodeA, nodeB)) {
+ _$jscoverage['core/domUtils.js'][764]++;
+ continue;
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][766]++;
+ return false;
+ }
+ }
+ _$jscoverage['core/domUtils.js'][769]++;
+ if (ie) {
+ _$jscoverage['core/domUtils.js'][770]++;
+ if (attrA.specified) {
+ _$jscoverage['core/domUtils.js'][771]++;
+ (al++);
+ _$jscoverage['core/domUtils.js'][772]++;
+ attrB = otherAttrs.getNamedItem(attrA.nodeName);
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][774]++;
+ continue;
+ }
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][777]++;
+ attrB = nodeB.attributes[attrA.nodeName];
+ }
+ _$jscoverage['core/domUtils.js'][779]++;
+ if (((! attrB.specified) || (attrA.nodeValue != attrB.nodeValue))) {
+ _$jscoverage['core/domUtils.js'][780]++;
+ return false;
+ }
+}
+ _$jscoverage['core/domUtils.js'][784]++;
+ if (ie) {
+ _$jscoverage['core/domUtils.js'][785]++;
+ for (i = 0; (attrB = otherAttrs[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][786]++;
+ if (attrB.specified) {
+ _$jscoverage['core/domUtils.js'][787]++;
+ (bl++);
+ }
+}
+ _$jscoverage['core/domUtils.js'][790]++;
+ if ((al != bl)) {
+ _$jscoverage['core/domUtils.js'][791]++;
+ return false;
+ }
+ }
+ _$jscoverage['core/domUtils.js'][794]++;
+ return true;
+}), isSameStyle: (function (nodeA, nodeB) {
+ _$jscoverage['core/domUtils.js'][824]++;
+ var styleA = nodeA.style.cssText.replace(/( ?; ?)/g, ";").replace(/( ?: ?)/g, ":"), styleB = nodeB.style.cssText.replace(/( ?; ?)/g, ";").replace(/( ?: ?)/g, ":");
+ _$jscoverage['core/domUtils.js'][826]++;
+ if (browser.opera) {
+ _$jscoverage['core/domUtils.js'][827]++;
+ styleA = nodeA.style;
+ _$jscoverage['core/domUtils.js'][828]++;
+ styleB = nodeB.style;
+ _$jscoverage['core/domUtils.js'][829]++;
+ if ((styleA.length != styleB.length)) {
+ _$jscoverage['core/domUtils.js'][830]++;
+ return false;
+ }
+ _$jscoverage['core/domUtils.js'][831]++;
+ for (var p in styleA) {
+ _$jscoverage['core/domUtils.js'][832]++;
+ if (/^(\d+|csstext)$/i.test(p)) {
+ _$jscoverage['core/domUtils.js'][833]++;
+ continue;
+ }
+ _$jscoverage['core/domUtils.js'][835]++;
+ if ((styleA[p] != styleB[p])) {
+ _$jscoverage['core/domUtils.js'][836]++;
+ return false;
+ }
+}
+ _$jscoverage['core/domUtils.js'][839]++;
+ return true;
+ }
+ _$jscoverage['core/domUtils.js'][841]++;
+ if (((! styleA) || (! styleB))) {
+ _$jscoverage['core/domUtils.js'][842]++;
+ return (styleA == styleB);
+ }
+ _$jscoverage['core/domUtils.js'][844]++;
+ styleA = styleA.split(";");
+ _$jscoverage['core/domUtils.js'][845]++;
+ styleB = styleB.split(";");
+ _$jscoverage['core/domUtils.js'][846]++;
+ if ((styleA.length != styleB.length)) {
+ _$jscoverage['core/domUtils.js'][847]++;
+ return false;
+ }
+ _$jscoverage['core/domUtils.js'][849]++;
+ for (var i = 0, ci; (ci = styleA[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][850]++;
+ if ((utils.indexOf(styleB, ci) == -1)) {
+ _$jscoverage['core/domUtils.js'][851]++;
+ return false;
+ }
+}
+ _$jscoverage['core/domUtils.js'][854]++;
+ return true;
+}), isBlockElm: (function (node) {
+ _$jscoverage['core/domUtils.js'][885]++;
+ return ((node.nodeType == 1) && (dtd.$block[node.tagName] || styleBlock[domUtils.getComputedStyle(node, "display")]) && (! dtd.$nonChild[node.tagName]));
+}), isBody: (function (node) {
+ _$jscoverage['core/domUtils.js'][900]++;
+ return (node && (node.nodeType == 1) && (node.tagName.toLowerCase() == "body"));
+}), breakParent: (function (node, parent) {
+ _$jscoverage['core/domUtils.js'][913]++;
+ var tmpNode, parentClone = node, clone = node, leftNodes, rightNodes;
+ _$jscoverage['core/domUtils.js'][918]++;
+ do {
+ _$jscoverage['core/domUtils.js'][919]++;
+ parentClone = parentClone.parentNode;
+ _$jscoverage['core/domUtils.js'][920]++;
+ if (leftNodes) {
+ _$jscoverage['core/domUtils.js'][921]++;
+ tmpNode = parentClone.cloneNode(false);
+ _$jscoverage['core/domUtils.js'][922]++;
+ tmpNode.appendChild(leftNodes);
+ _$jscoverage['core/domUtils.js'][923]++;
+ leftNodes = tmpNode;
+ _$jscoverage['core/domUtils.js'][924]++;
+ tmpNode = parentClone.cloneNode(false);
+ _$jscoverage['core/domUtils.js'][925]++;
+ tmpNode.appendChild(rightNodes);
+ _$jscoverage['core/domUtils.js'][926]++;
+ rightNodes = tmpNode;
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][928]++;
+ leftNodes = parentClone.cloneNode(false);
+ _$jscoverage['core/domUtils.js'][929]++;
+ rightNodes = leftNodes.cloneNode(false);
+ }
+ _$jscoverage['core/domUtils.js'][931]++;
+ while ((tmpNode = clone.previousSibling)) {
+ _$jscoverage['core/domUtils.js'][932]++;
+ leftNodes.insertBefore(tmpNode, leftNodes.firstChild);
+}
+ _$jscoverage['core/domUtils.js'][934]++;
+ while ((tmpNode = clone.nextSibling)) {
+ _$jscoverage['core/domUtils.js'][935]++;
+ rightNodes.appendChild(tmpNode);
+}
+ _$jscoverage['core/domUtils.js'][937]++;
+ clone = parentClone;
+}
+ while ((parent !== parentClone));
+ _$jscoverage['core/domUtils.js'][939]++;
+ tmpNode = parent.parentNode;
+ _$jscoverage['core/domUtils.js'][940]++;
+ tmpNode.insertBefore(leftNodes, parent);
+ _$jscoverage['core/domUtils.js'][941]++;
+ tmpNode.insertBefore(rightNodes, parent);
+ _$jscoverage['core/domUtils.js'][942]++;
+ tmpNode.insertBefore(node, rightNodes);
+ _$jscoverage['core/domUtils.js'][943]++;
+ domUtils.remove(parent);
+ _$jscoverage['core/domUtils.js'][944]++;
+ return node;
+}), isEmptyInlineElement: (function (node) {
+ _$jscoverage['core/domUtils.js'][958]++;
+ if (((node.nodeType != 1) || (! dtd.$removeEmpty[node.tagName]))) {
+ _$jscoverage['core/domUtils.js'][959]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][961]++;
+ node = node.firstChild;
+ _$jscoverage['core/domUtils.js'][962]++;
+ while (node) {
+ _$jscoverage['core/domUtils.js'][964]++;
+ if (domUtils.isBookmarkNode(node)) {
+ _$jscoverage['core/domUtils.js'][965]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][967]++;
+ if ((((node.nodeType == 1) && (! domUtils.isEmptyInlineElement(node))) || ((node.nodeType == 3) && (! domUtils.isWhitespace(node))))) {
+ _$jscoverage['core/domUtils.js'][970]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][972]++;
+ node = node.nextSibling;
+}
+ _$jscoverage['core/domUtils.js'][974]++;
+ return 1;
+}), trimWhiteTextNode: (function (node) {
+ _$jscoverage['core/domUtils.js'][1000]++;
+ function remove(dir) {
+ _$jscoverage['core/domUtils.js'][1001]++;
+ var child;
+ _$jscoverage['core/domUtils.js'][1002]++;
+ while (((child = node[dir]) && (child.nodeType == 3) && domUtils.isWhitespace(child))) {
+ _$jscoverage['core/domUtils.js'][1003]++;
+ node.removeChild(child);
+}
+}
+ _$jscoverage['core/domUtils.js'][1006]++;
+ remove("firstChild");
+ _$jscoverage['core/domUtils.js'][1007]++;
+ remove("lastChild");
+}), mergeChild: (function (node, tagName, attrs) {
+ _$jscoverage['core/domUtils.js'][1019]++;
+ var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase());
+ _$jscoverage['core/domUtils.js'][1020]++;
+ for (var i = 0, ci; (ci = list[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][1021]++;
+ if (((! ci.parentNode) || domUtils.isBookmarkNode(ci))) {
+ _$jscoverage['core/domUtils.js'][1022]++;
+ continue;
+ }
+ _$jscoverage['core/domUtils.js'][1025]++;
+ if ((ci.tagName.toLowerCase() == "span")) {
+ _$jscoverage['core/domUtils.js'][1026]++;
+ if ((node === ci.parentNode)) {
+ _$jscoverage['core/domUtils.js'][1027]++;
+ domUtils.trimWhiteTextNode(node);
+ _$jscoverage['core/domUtils.js'][1028]++;
+ if ((node.childNodes.length == 1)) {
+ _$jscoverage['core/domUtils.js'][1029]++;
+ node.style.cssText = (ci.style.cssText + ";" + node.style.cssText);
+ _$jscoverage['core/domUtils.js'][1030]++;
+ domUtils.remove(ci, true);
+ _$jscoverage['core/domUtils.js'][1031]++;
+ continue;
+ }
+ }
+ _$jscoverage['core/domUtils.js'][1034]++;
+ ci.style.cssText = (node.style.cssText + ";" + ci.style.cssText);
+ _$jscoverage['core/domUtils.js'][1035]++;
+ if (attrs) {
+ _$jscoverage['core/domUtils.js'][1036]++;
+ var style = attrs.style;
+ _$jscoverage['core/domUtils.js'][1037]++;
+ if (style) {
+ _$jscoverage['core/domUtils.js'][1038]++;
+ style = style.split(";");
+ _$jscoverage['core/domUtils.js'][1039]++;
+ for (var j = 0, s; (s = style[(j++)]);) {
+ _$jscoverage['core/domUtils.js'][1040]++;
+ ci.style[utils.cssStyleToDomStyle(s.split(":")[0])] = s.split(":")[1];
+}
+ }
+ }
+ _$jscoverage['core/domUtils.js'][1044]++;
+ if (domUtils.isSameStyle(ci, node)) {
+ _$jscoverage['core/domUtils.js'][1045]++;
+ domUtils.remove(ci, true);
+ }
+ _$jscoverage['core/domUtils.js'][1047]++;
+ continue;
+ }
+ _$jscoverage['core/domUtils.js'][1049]++;
+ if (domUtils.isSameElement(node, ci)) {
+ _$jscoverage['core/domUtils.js'][1050]++;
+ domUtils.remove(ci, true);
+ }
+}
+}), getElementsByTagName: (function (node, name, filter) {
+ _$jscoverage['core/domUtils.js'][1061]++;
+ if ((filter && utils.isString(filter))) {
+ _$jscoverage['core/domUtils.js'][1062]++;
+ var className = filter;
+ _$jscoverage['core/domUtils.js'][1063]++;
+ filter = (function (node) {
+ _$jscoverage['core/domUtils.js'][1063]++;
+ return domUtils.hasClass(node, className);
+});
+ }
+ _$jscoverage['core/domUtils.js'][1065]++;
+ name = utils.trim(name).replace(/[ ]{2,}/g, " ").split(" ");
+ _$jscoverage['core/domUtils.js'][1066]++;
+ var arr = [];
+ _$jscoverage['core/domUtils.js'][1067]++;
+ for (var n = 0, ni; (ni = name[(n++)]);) {
+ _$jscoverage['core/domUtils.js'][1068]++;
+ var list = node.getElementsByTagName(ni);
+ _$jscoverage['core/domUtils.js'][1069]++;
+ for (var i = 0, ci; (ci = list[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][1070]++;
+ if (((! filter) || filter(ci))) {
+ _$jscoverage['core/domUtils.js'][1071]++;
+ arr.push(ci);
+ }
+}
+}
+ _$jscoverage['core/domUtils.js'][1075]++;
+ return arr;
+}), mergeToParent: (function (node) {
+ _$jscoverage['core/domUtils.js'][1106]++;
+ var parent = node.parentNode;
+ _$jscoverage['core/domUtils.js'][1107]++;
+ while ((parent && dtd.$removeEmpty[parent.tagName])) {
+ _$jscoverage['core/domUtils.js'][1108]++;
+ if (((parent.tagName == node.tagName) || (parent.tagName == "A"))) {
+ _$jscoverage['core/domUtils.js'][1109]++;
+ domUtils.trimWhiteTextNode(parent);
+ _$jscoverage['core/domUtils.js'][1111]++;
+ if ((((parent.tagName == "SPAN") && (! domUtils.isSameStyle(parent, node))) || ((parent.tagName == "A") && (node.tagName == "SPAN")))) {
+ _$jscoverage['core/domUtils.js'][1113]++;
+ if (((parent.childNodes.length > 1) || (parent !== node.parentNode))) {
+ _$jscoverage['core/domUtils.js'][1114]++;
+ node.style.cssText = (parent.style.cssText + ";" + node.style.cssText);
+ _$jscoverage['core/domUtils.js'][1115]++;
+ parent = parent.parentNode;
+ _$jscoverage['core/domUtils.js'][1116]++;
+ continue;
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][1118]++;
+ parent.style.cssText += (";" + node.style.cssText);
+ _$jscoverage['core/domUtils.js'][1120]++;
+ if ((parent.tagName == "A")) {
+ _$jscoverage['core/domUtils.js'][1121]++;
+ parent.style.textDecoration = "underline";
+ }
+ }
+ }
+ _$jscoverage['core/domUtils.js'][1125]++;
+ if ((parent.tagName != "A")) {
+ _$jscoverage['core/domUtils.js'][1126]++;
+ ((parent === node.parentNode) && domUtils.remove(node, true));
+ _$jscoverage['core/domUtils.js'][1127]++;
+ break;
+ }
+ }
+ _$jscoverage['core/domUtils.js'][1130]++;
+ parent = parent.parentNode;
+}
+}), mergeSibling: (function (node, ignorePre, ignoreNext) {
+ _$jscoverage['core/domUtils.js'][1189]++;
+ function merge(rtl, start, node) {
+ _$jscoverage['core/domUtils.js'][1190]++;
+ var next;
+ _$jscoverage['core/domUtils.js'][1191]++;
+ if (((next = node[rtl]) && (! domUtils.isBookmarkNode(next)) && (next.nodeType == 1) && domUtils.isSameElement(node, next))) {
+ _$jscoverage['core/domUtils.js'][1192]++;
+ while (next.firstChild) {
+ _$jscoverage['core/domUtils.js'][1193]++;
+ if ((start == "firstChild")) {
+ _$jscoverage['core/domUtils.js'][1194]++;
+ node.insertBefore(next.lastChild, node.firstChild);
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][1196]++;
+ node.appendChild(next.firstChild);
+ }
+}
+ _$jscoverage['core/domUtils.js'][1199]++;
+ domUtils.remove(next);
+ }
+}
+ _$jscoverage['core/domUtils.js'][1202]++;
+ ((! ignorePre) && merge("previousSibling", "firstChild", node));
+ _$jscoverage['core/domUtils.js'][1203]++;
+ ((! ignoreNext) && merge("nextSibling", "lastChild", node));
+}), unSelectable: ((ie || browser.opera)? (function (node) {
+ _$jscoverage['core/domUtils.js'][1218]++;
+ node.onselectstart = (function () {
+ _$jscoverage['core/domUtils.js'][1219]++;
+ return false;
+});
+ _$jscoverage['core/domUtils.js'][1221]++;
+ node.onclick = (node.onkeyup = (node.onkeydown = (function () {
+ _$jscoverage['core/domUtils.js'][1222]++;
+ return false;
+})));
+ _$jscoverage['core/domUtils.js'][1224]++;
+ node.unselectable = "on";
+ _$jscoverage['core/domUtils.js'][1225]++;
+ node.setAttribute("unselectable", "on");
+ _$jscoverage['core/domUtils.js'][1226]++;
+ for (var i = 0, ci; (ci = node.all[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][1227]++;
+ switch (ci.tagName.toLowerCase()) {
+ case "iframe":
+ case "textarea":
+ case "input":
+ case "select":
+ _$jscoverage['core/domUtils.js'][1232]++;
+ break;
+ default:
+ _$jscoverage['core/domUtils.js'][1234]++;
+ ci.unselectable = "on";
+ _$jscoverage['core/domUtils.js'][1235]++;
+ node.setAttribute("unselectable", "on");
+ }
+}
+}): (function (node) {
+ _$jscoverage['core/domUtils.js'][1239]++;
+ node.style.MozUserSelect = (node.style.webkitUserSelect = (node.style.KhtmlUserSelect = "none"));
+})), removeAttributes: (function (node, attrNames) {
+ _$jscoverage['core/domUtils.js'][1286]++;
+ attrNames = (utils.isArray(attrNames)? attrNames: utils.trim(attrNames).replace(/[ ]{2,}/g, " ").split(" "));
+ _$jscoverage['core/domUtils.js'][1287]++;
+ for (var i = 0, ci; (ci = attrNames[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][1288]++;
+ ci = (attrFix[ci] || ci);
+ _$jscoverage['core/domUtils.js'][1289]++;
+ switch (ci) {
+ case "className":
+ _$jscoverage['core/domUtils.js'][1291]++;
+ node[ci] = "";
+ _$jscoverage['core/domUtils.js'][1292]++;
+ break;
+ case "style":
+ _$jscoverage['core/domUtils.js'][1294]++;
+ node.style.cssText = "";
+ _$jscoverage['core/domUtils.js'][1295]++;
+ ((! browser.ie) && node.removeAttributeNode(node.getAttributeNode("style")));
+ }
+ _$jscoverage['core/domUtils.js'][1297]++;
+ node.removeAttribute(ci);
+}
+}), createElement: (function (doc, tag, attrs) {
+ _$jscoverage['core/domUtils.js'][1323]++;
+ return domUtils.setAttributes(doc.createElement(tag), attrs);
+}), setAttributes: (function (node, attrs) {
+ _$jscoverage['core/domUtils.js'][1349]++;
+ for (var attr in attrs) {
+ _$jscoverage['core/domUtils.js'][1350]++;
+ if (attrs.hasOwnProperty(attr)) {
+ _$jscoverage['core/domUtils.js'][1351]++;
+ var value = attrs[attr];
+ _$jscoverage['core/domUtils.js'][1352]++;
+ switch (attr) {
+ case "class":
+ _$jscoverage['core/domUtils.js'][1355]++;
+ node.className = value;
+ _$jscoverage['core/domUtils.js'][1356]++;
+ break;
+ case "style":
+ _$jscoverage['core/domUtils.js'][1358]++;
+ node.style.cssText = (node.style.cssText + ";" + value);
+ _$jscoverage['core/domUtils.js'][1359]++;
+ break;
+ case "innerHTML":
+ _$jscoverage['core/domUtils.js'][1361]++;
+ node[attr] = value;
+ _$jscoverage['core/domUtils.js'][1362]++;
+ break;
+ case "value":
+ _$jscoverage['core/domUtils.js'][1364]++;
+ node.value = value;
+ _$jscoverage['core/domUtils.js'][1365]++;
+ break;
+ default:
+ _$jscoverage['core/domUtils.js'][1367]++;
+ node.setAttribute((attrFix[attr] || attr), value);
+ }
+ }
+}
+ _$jscoverage['core/domUtils.js'][1371]++;
+ return node;
+}), getComputedStyle: (function (element, styleName) {
+ _$jscoverage['core/domUtils.js'][1398]++;
+ var pros = "width height top left";
+ _$jscoverage['core/domUtils.js'][1400]++;
+ if ((pros.indexOf(styleName) > -1)) {
+ _$jscoverage['core/domUtils.js'][1401]++;
+ return (element[("offset" + styleName.replace(/^\w/, (function (s) {
+ _$jscoverage['core/domUtils.js'][1401]++;
+ return s.toUpperCase();
+})))] + "px");
+ }
+ _$jscoverage['core/domUtils.js'][1404]++;
+ if ((element.nodeType == 3)) {
+ _$jscoverage['core/domUtils.js'][1405]++;
+ element = element.parentNode;
+ }
+ _$jscoverage['core/domUtils.js'][1408]++;
+ if ((browser.ie && (browser.version < 9) && (styleName == "font-size") && (! element.style.fontSize) && (! dtd.$empty[element.tagName]) && (! dtd.$nonChild[element.tagName]))) {
+ _$jscoverage['core/domUtils.js'][1410]++;
+ var span = element.ownerDocument.createElement("span");
+ _$jscoverage['core/domUtils.js'][1411]++;
+ span.style.cssText = "padding:0;border:0;font-family:simsun;";
+ _$jscoverage['core/domUtils.js'][1412]++;
+ span.innerHTML = ".";
+ _$jscoverage['core/domUtils.js'][1413]++;
+ element.appendChild(span);
+ _$jscoverage['core/domUtils.js'][1414]++;
+ var result = span.offsetHeight;
+ _$jscoverage['core/domUtils.js'][1415]++;
+ element.removeChild(span);
+ _$jscoverage['core/domUtils.js'][1416]++;
+ span = null;
+ _$jscoverage['core/domUtils.js'][1417]++;
+ return (result + "px");
+ }
+ _$jscoverage['core/domUtils.js'][1419]++;
+ try {
+ _$jscoverage['core/domUtils.js'][1420]++;
+ var value = (domUtils.getStyle(element, styleName) || (window.getComputedStyle? domUtils.getWindow(element).getComputedStyle(element, "").getPropertyValue(styleName): (element.currentStyle || element.style)[utils.cssStyleToDomStyle(styleName)]));
+ }
+ catch (e) {
+ _$jscoverage['core/domUtils.js'][1425]++;
+ return "";
+ }
+ _$jscoverage['core/domUtils.js'][1427]++;
+ return utils.transUnitToPx(utils.fixColor(styleName, value));
+}), removeClasses: (function (elm, classNames) {
+ _$jscoverage['core/domUtils.js'][1471]++;
+ classNames = (utils.isArray(classNames)? classNames: utils.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "));
+ _$jscoverage['core/domUtils.js'][1473]++;
+ for (var i = 0, ci, cls = elm.className; (ci = classNames[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][1474]++;
+ cls = cls.replace(new RegExp(("\\b" + ci + "\\b")), "");
+}
+ _$jscoverage['core/domUtils.js'][1476]++;
+ cls = utils.trim(cls).replace(/[ ]{2,}/g, " ");
+ _$jscoverage['core/domUtils.js'][1477]++;
+ if (cls) {
+ _$jscoverage['core/domUtils.js'][1478]++;
+ elm.className = cls;
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][1480]++;
+ domUtils.removeAttributes(elm, ["class"]);
+ }
+}), addClass: (function (elm, classNames) {
+ _$jscoverage['core/domUtils.js'][1528]++;
+ if ((! elm)) {
+ _$jscoverage['core/domUtils.js'][1528]++;
+ return;
+ }
+ _$jscoverage['core/domUtils.js'][1529]++;
+ classNames = utils.trim(classNames).replace(/[ ]{2,}/g, " ").split(" ");
+ _$jscoverage['core/domUtils.js'][1530]++;
+ for (var i = 0, ci, cls = elm.className; (ci = classNames[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][1531]++;
+ if ((! new RegExp(("\\b" + ci + "\\b")).test(cls))) {
+ _$jscoverage['core/domUtils.js'][1532]++;
+ elm.className += (" " + ci);
+ }
+}
+}), hasClass: (function (element, className) {
+ _$jscoverage['core/domUtils.js'][1581]++;
+ if (utils.isRegExp(className)) {
+ _$jscoverage['core/domUtils.js'][1582]++;
+ return className.test(element.className);
+ }
+ _$jscoverage['core/domUtils.js'][1584]++;
+ className = utils.trim(className).replace(/[ ]{2,}/g, " ").split(" ");
+ _$jscoverage['core/domUtils.js'][1585]++;
+ for (var i = 0, ci, cls = element.className; (ci = className[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][1586]++;
+ if ((! new RegExp(("\\b" + ci + "\\b"), "i").test(cls))) {
+ _$jscoverage['core/domUtils.js'][1587]++;
+ return false;
+ }
+}
+ _$jscoverage['core/domUtils.js'][1590]++;
+ return ((i - 1) == className.length);
+}), preventDefault: (function (evt) {
+ _$jscoverage['core/domUtils.js'][1603]++;
+ (evt.preventDefault? evt.preventDefault(): (evt.returnValue = false));
+}), removeStyle: (function (element, name) {
+ _$jscoverage['core/domUtils.js'][1628]++;
+ if (browser.ie) {
+ _$jscoverage['core/domUtils.js'][1630]++;
+ if ((name == "color")) {
+ _$jscoverage['core/domUtils.js'][1631]++;
+ name = ("(^|;)" + name);
+ }
+ _$jscoverage['core/domUtils.js'][1633]++;
+ element.style.cssText = element.style.cssText.replace(new RegExp((name + "[^:]*:[^;]+;?"), "ig"), "");
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][1635]++;
+ if (element.style.removeProperty) {
+ _$jscoverage['core/domUtils.js'][1636]++;
+ element.style.removeProperty(name);
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][1638]++;
+ element.style.removeAttribute(utils.cssStyleToDomStyle(name));
+ }
+ }
+ _$jscoverage['core/domUtils.js'][1643]++;
+ if ((! element.style.cssText)) {
+ _$jscoverage['core/domUtils.js'][1644]++;
+ domUtils.removeAttributes(element, ["style"]);
+ }
+}), getStyle: (function (element, name) {
+ _$jscoverage['core/domUtils.js'][1673]++;
+ var value = element.style[utils.cssStyleToDomStyle(name)];
+ _$jscoverage['core/domUtils.js'][1674]++;
+ return utils.fixColor(name, value);
+}), setStyle: (function (element, name, value) {
+ _$jscoverage['core/domUtils.js'][1703]++;
+ element.style[utils.cssStyleToDomStyle(name)] = value;
+ _$jscoverage['core/domUtils.js'][1704]++;
+ if ((! utils.trim(element.style.cssText))) {
+ _$jscoverage['core/domUtils.js'][1705]++;
+ this.removeAttributes(element, "style");
+ }
+}), setStyles: (function (element, styles) {
+ _$jscoverage['core/domUtils.js'][1735]++;
+ for (var name in styles) {
+ _$jscoverage['core/domUtils.js'][1736]++;
+ if (styles.hasOwnProperty(name)) {
+ _$jscoverage['core/domUtils.js'][1737]++;
+ domUtils.setStyle(element, name, styles[name]);
+ }
+}
+}), removeDirtyAttr: (function (node) {
+ _$jscoverage['core/domUtils.js'][1747]++;
+ for (var i = 0, ci, nodes = node.getElementsByTagName("*"); (ci = nodes[(i++)]);) {
+ _$jscoverage['core/domUtils.js'][1748]++;
+ ci.removeAttribute("_moz_dirty");
+}
+ _$jscoverage['core/domUtils.js'][1750]++;
+ node.removeAttribute("_moz_dirty");
+}), getChildCount: (function (node, fn) {
+ _$jscoverage['core/domUtils.js'][1798]++;
+ var count = 0, first = node.firstChild;
+ _$jscoverage['core/domUtils.js'][1799]++;
+ fn = (fn || (function () {
+ _$jscoverage['core/domUtils.js'][1800]++;
+ return 1;
+}));
+ _$jscoverage['core/domUtils.js'][1802]++;
+ while (first) {
+ _$jscoverage['core/domUtils.js'][1803]++;
+ if (fn(first)) {
+ _$jscoverage['core/domUtils.js'][1804]++;
+ (count++);
+ }
+ _$jscoverage['core/domUtils.js'][1806]++;
+ first = first.nextSibling;
+}
+ _$jscoverage['core/domUtils.js'][1808]++;
+ return count;
+}), isEmptyNode: (function (node) {
+ _$jscoverage['core/domUtils.js'][1822]++;
+ return ((! node.firstChild) || (domUtils.getChildCount(node, (function (node) {
+ _$jscoverage['core/domUtils.js'][1823]++;
+ return ((! domUtils.isBr(node)) && (! domUtils.isBookmarkNode(node)) && (! domUtils.isWhitespace(node)));
+})) == 0));
+}), clearSelectedArr: (function (nodes) {
+ _$jscoverage['core/domUtils.js'][1839]++;
+ var node;
+ _$jscoverage['core/domUtils.js'][1840]++;
+ while ((node = nodes.pop())) {
+ _$jscoverage['core/domUtils.js'][1841]++;
+ domUtils.removeAttributes(node, ["class"]);
+}
+}), scrollToView: (function (node, win, offsetTop) {
+ _$jscoverage['core/domUtils.js'][1853]++;
+ var getViewPaneSize = (function () {
+ _$jscoverage['core/domUtils.js'][1854]++;
+ var doc = win.document, mode = (doc.compatMode == "CSS1Compat");
+ _$jscoverage['core/domUtils.js'][1856]++;
+ return ({width: ((mode? doc.documentElement.clientWidth: doc.body.clientWidth) || 0), height: ((mode? doc.documentElement.clientHeight: doc.body.clientHeight) || 0)});
+}), getScrollPosition = (function (win) {
+ _$jscoverage['core/domUtils.js'][1862]++;
+ if (("pageXOffset" in win)) {
+ _$jscoverage['core/domUtils.js'][1863]++;
+ return ({x: (win.pageXOffset || 0), y: (win.pageYOffset || 0)});
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][1869]++;
+ var doc = win.document;
+ _$jscoverage['core/domUtils.js'][1870]++;
+ return ({x: (doc.documentElement.scrollLeft || doc.body.scrollLeft || 0), y: (doc.documentElement.scrollTop || doc.body.scrollTop || 0)});
+ }
+});
+ _$jscoverage['core/domUtils.js'][1876]++;
+ var winHeight = getViewPaneSize().height, offset = ((winHeight * -1) + offsetTop);
+ _$jscoverage['core/domUtils.js'][1877]++;
+ offset += (node.offsetHeight || 0);
+ _$jscoverage['core/domUtils.js'][1878]++;
+ var elementPosition = domUtils.getXY(node);
+ _$jscoverage['core/domUtils.js'][1879]++;
+ offset += elementPosition.y;
+ _$jscoverage['core/domUtils.js'][1880]++;
+ var currentScroll = getScrollPosition(win).y;
+ _$jscoverage['core/domUtils.js'][1882]++;
+ if (((offset > currentScroll) || (offset < (currentScroll - winHeight)))) {
+ _$jscoverage['core/domUtils.js'][1883]++;
+ win.scrollTo(0, (offset + ((offset < 0)? -20: 20)));
+ }
+}), isBr: (function (node) {
+ _$jscoverage['core/domUtils.js'][1894]++;
+ return ((node.nodeType == 1) && (node.tagName == "BR"));
+}), isFillChar: (function (node, isInStart) {
+ _$jscoverage['core/domUtils.js'][1905]++;
+ return ((node.nodeType == 3) && (! node.nodeValue.replace(new RegExp(((isInStart? "^": "") + domUtils.fillChar)), "").length));
+}), isStartInblock: (function (range) {
+ _$jscoverage['core/domUtils.js'][1910]++;
+ var tmpRange = range.cloneRange(), flag = 0, start = tmpRange.startContainer, tmp;
+ _$jscoverage['core/domUtils.js'][1914]++;
+ if (((start.nodeType == 1) && start.childNodes[tmpRange.startOffset])) {
+ _$jscoverage['core/domUtils.js'][1915]++;
+ start = start.childNodes[tmpRange.startOffset];
+ _$jscoverage['core/domUtils.js'][1916]++;
+ var pre = start.previousSibling;
+ _$jscoverage['core/domUtils.js'][1917]++;
+ while ((pre && domUtils.isFillChar(pre))) {
+ _$jscoverage['core/domUtils.js'][1918]++;
+ start = pre;
+ _$jscoverage['core/domUtils.js'][1919]++;
+ pre = pre.previousSibling;
+}
+ }
+ _$jscoverage['core/domUtils.js'][1922]++;
+ if ((this.isFillChar(start, true) && (tmpRange.startOffset == 1))) {
+ _$jscoverage['core/domUtils.js'][1923]++;
+ tmpRange.setStartBefore(start);
+ _$jscoverage['core/domUtils.js'][1924]++;
+ start = tmpRange.startContainer;
+ }
+ _$jscoverage['core/domUtils.js'][1927]++;
+ while ((start && domUtils.isFillChar(start))) {
+ _$jscoverage['core/domUtils.js'][1928]++;
+ tmp = start;
+ _$jscoverage['core/domUtils.js'][1929]++;
+ start = start.previousSibling;
+}
+ _$jscoverage['core/domUtils.js'][1931]++;
+ if (tmp) {
+ _$jscoverage['core/domUtils.js'][1932]++;
+ tmpRange.setStartBefore(tmp);
+ _$jscoverage['core/domUtils.js'][1933]++;
+ start = tmpRange.startContainer;
+ }
+ _$jscoverage['core/domUtils.js'][1935]++;
+ if (((start.nodeType == 1) && domUtils.isEmptyNode(start) && (tmpRange.startOffset == 1))) {
+ _$jscoverage['core/domUtils.js'][1936]++;
+ tmpRange.setStart(start, 0).collapse(true);
+ }
+ _$jscoverage['core/domUtils.js'][1938]++;
+ while ((! tmpRange.startOffset)) {
+ _$jscoverage['core/domUtils.js'][1939]++;
+ start = tmpRange.startContainer;
+ _$jscoverage['core/domUtils.js'][1940]++;
+ if ((domUtils.isBlockElm(start) || domUtils.isBody(start))) {
+ _$jscoverage['core/domUtils.js'][1941]++;
+ flag = 1;
+ _$jscoverage['core/domUtils.js'][1942]++;
+ break;
+ }
+ _$jscoverage['core/domUtils.js'][1944]++;
+ var pre = tmpRange.startContainer.previousSibling, tmpNode;
+ _$jscoverage['core/domUtils.js'][1946]++;
+ if ((! pre)) {
+ _$jscoverage['core/domUtils.js'][1947]++;
+ tmpRange.setStartBefore(tmpRange.startContainer);
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][1949]++;
+ while ((pre && domUtils.isFillChar(pre))) {
+ _$jscoverage['core/domUtils.js'][1950]++;
+ tmpNode = pre;
+ _$jscoverage['core/domUtils.js'][1951]++;
+ pre = pre.previousSibling;
+}
+ _$jscoverage['core/domUtils.js'][1953]++;
+ if (tmpNode) {
+ _$jscoverage['core/domUtils.js'][1954]++;
+ tmpRange.setStartBefore(tmpNode);
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][1956]++;
+ tmpRange.setStartBefore(tmpRange.startContainer);
+ }
+ }
+}
+ _$jscoverage['core/domUtils.js'][1960]++;
+ return ((flag && (! domUtils.isBody(tmpRange.startContainer)))? 1: 0);
+}), isEmptyBlock: (function (node, reg) {
+ _$jscoverage['core/domUtils.js'][1987]++;
+ if ((node.nodeType != 1)) {
+ _$jscoverage['core/domUtils.js'][1988]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][1989]++;
+ reg = (reg || new RegExp(("[ \t\r\n" + domUtils.fillChar + "]"), "g"));
+ _$jscoverage['core/domUtils.js'][1990]++;
+ if ((node[(browser.ie? "innerText": "textContent")].replace(reg, "").length > 0)) {
+ _$jscoverage['core/domUtils.js'][1991]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][1993]++;
+ for (var n in dtd.$isNotEmpty) {
+ _$jscoverage['core/domUtils.js'][1994]++;
+ if (node.getElementsByTagName(n).length) {
+ _$jscoverage['core/domUtils.js'][1995]++;
+ return 0;
+ }
+}
+ _$jscoverage['core/domUtils.js'][1998]++;
+ return 1;
+}), setViewportOffset: (function (element, offset) {
+ _$jscoverage['core/domUtils.js'][2028]++;
+ var left = (parseInt(element.style.left) | 0);
+ _$jscoverage['core/domUtils.js'][2029]++;
+ var top = (parseInt(element.style.top) | 0);
+ _$jscoverage['core/domUtils.js'][2030]++;
+ var rect = element.getBoundingClientRect();
+ _$jscoverage['core/domUtils.js'][2031]++;
+ var offsetLeft = (offset.left - rect.left);
+ _$jscoverage['core/domUtils.js'][2032]++;
+ var offsetTop = (offset.top - rect.top);
+ _$jscoverage['core/domUtils.js'][2033]++;
+ if (offsetLeft) {
+ _$jscoverage['core/domUtils.js'][2034]++;
+ element.style.left = (left + offsetLeft + "px");
+ }
+ _$jscoverage['core/domUtils.js'][2036]++;
+ if (offsetTop) {
+ _$jscoverage['core/domUtils.js'][2037]++;
+ element.style.top = (top + offsetTop + "px");
+ }
+}), fillNode: (function (doc, node) {
+ _$jscoverage['core/domUtils.js'][2065]++;
+ var tmpNode = (browser.ie? doc.createTextNode(domUtils.fillChar): doc.createElement("br"));
+ _$jscoverage['core/domUtils.js'][2066]++;
+ node.innerHTML = "";
+ _$jscoverage['core/domUtils.js'][2067]++;
+ node.appendChild(tmpNode);
+}), moveChild: (function (src, tag, dir) {
+ _$jscoverage['core/domUtils.js'][2133]++;
+ while (src.firstChild) {
+ _$jscoverage['core/domUtils.js'][2134]++;
+ if ((dir && tag.firstChild)) {
+ _$jscoverage['core/domUtils.js'][2135]++;
+ tag.insertBefore(src.lastChild, tag.firstChild);
+ }
+ else {
+ _$jscoverage['core/domUtils.js'][2137]++;
+ tag.appendChild(src.firstChild);
+ }
+}
+}), hasNoAttributes: (function (node) {
+ _$jscoverage['core/domUtils.js'][2163]++;
+ return (browser.ie? /^<\w+\s*?>/.test(node.outerHTML): (node.attributes.length == 0));
+}), isCustomeNode: (function (node) {
+ _$jscoverage['core/domUtils.js'][2174]++;
+ return ((node.nodeType == 1) && node.getAttribute("_ue_custom_node_"));
+}), isTagNode: (function (node, tagName) {
+ _$jscoverage['core/domUtils.js'][2196]++;
+ return ((node.nodeType == 1) && new RegExp(("^" + node.tagName + "$"), "i").test(tagName));
+}), filterNodeList: (function (nodelist, filter, forAll) {
+ _$jscoverage['core/domUtils.js'][2266]++;
+ var results = [];
+ _$jscoverage['core/domUtils.js'][2267]++;
+ if ((! utils.isFunction(filter))) {
+ _$jscoverage['core/domUtils.js'][2268]++;
+ var str = filter;
+ _$jscoverage['core/domUtils.js'][2269]++;
+ filter = (function (n) {
+ _$jscoverage['core/domUtils.js'][2270]++;
+ return (utils.indexOf((utils.isArray(str)? str: str.split(" ")), n.tagName.toLowerCase()) != -1);
+});
+ }
+ _$jscoverage['core/domUtils.js'][2273]++;
+ utils.each(nodelist, (function (n) {
+ _$jscoverage['core/domUtils.js'][2274]++;
+ (filter(n) && results.push(n));
+}));
+ _$jscoverage['core/domUtils.js'][2276]++;
+ return ((results.length == 0)? null: (((results.length == 1) || (! forAll))? results[0]: results));
+}), isInNodeEndBoundary: (function (rng, node) {
+ _$jscoverage['core/domUtils.js'][2280]++;
+ var start = rng.startContainer;
+ _$jscoverage['core/domUtils.js'][2281]++;
+ if (((start.nodeType == 3) && (rng.startOffset != start.nodeValue.length))) {
+ _$jscoverage['core/domUtils.js'][2282]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][2284]++;
+ if (((start.nodeType == 1) && (rng.startOffset != start.childNodes.length))) {
+ _$jscoverage['core/domUtils.js'][2285]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][2287]++;
+ while ((start !== node)) {
+ _$jscoverage['core/domUtils.js'][2288]++;
+ if (start.nextSibling) {
+ _$jscoverage['core/domUtils.js'][2289]++;
+ return 0;
+ }
+ _$jscoverage['core/domUtils.js'][2290]++;
+ ;
+ _$jscoverage['core/domUtils.js'][2291]++;
+ start = start.parentNode;
+}
+ _$jscoverage['core/domUtils.js'][2293]++;
+ return 1;
+}), isBoundaryNode: (function (node, dir) {
+ _$jscoverage['core/domUtils.js'][2296]++;
+ var tmp;
+ _$jscoverage['core/domUtils.js'][2297]++;
+ while ((! domUtils.isBody(node))) {
+ _$jscoverage['core/domUtils.js'][2298]++;
+ tmp = node;
+ _$jscoverage['core/domUtils.js'][2299]++;
+ node = node.parentNode;
+ _$jscoverage['core/domUtils.js'][2300]++;
+ if ((tmp !== node[dir])) {
+ _$jscoverage['core/domUtils.js'][2301]++;
+ return false;
+ }
+}
+ _$jscoverage['core/domUtils.js'][2304]++;
+ return true;
+})});
+_$jscoverage['core/domUtils.js'][2307]++;
+var fillCharReg = new RegExp(domUtils.fillChar, "g");
diff --git a/_test/coverage/core/dtd.js b/_test/coverage/core/dtd.js
new file mode 100644
index 000000000..866a73c3f
--- /dev/null
+++ b/_test/coverage/core/dtd.js
@@ -0,0 +1,73 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/dtd.js']) {
+ _$jscoverage['core/dtd.js'] = [];
+ _$jscoverage['core/dtd.js'][9] = 0;
+ _$jscoverage['core/dtd.js'][10] = 0;
+ _$jscoverage['core/dtd.js'][11] = 0;
+ _$jscoverage['core/dtd.js'][12] = 0;
+ _$jscoverage['core/dtd.js'][14] = 0;
+ _$jscoverage['core/dtd.js'][16] = 0;
+ _$jscoverage['core/dtd.js'][17] = 0;
+ _$jscoverage['core/dtd.js'][41] = 0;
+ _$jscoverage['core/dtd.js'][45] = 0;
+}
+_$jscoverage['core/dtd.js'].source = ["///import editor.js ","///import core/dom/dom.js ","///import core/utils.js ","/* "," * dtd html语义化的体现类 "," * @constructor "," * @namespace dtd "," */ ","var dtd = dom. dtd = ( function () { "," function _( s ) { "," for ( var k in s) { "," s[ k. toUpperCase()] = s[ k]; "," } "," return s; "," } "," var X = utils. extend2; "," var A = _( { isindex: 1 , fieldset: 1 } ), "," B = _( { input: 1 , button: 1 , select: 1 , textarea: 1 , label: 1 } ), "," C = X( _( { a: 1 } ), B ), "," D = X( { iframe: 1 } , C ), "," E = _( { hr: 1 , ul: 1 , menu: 1 , div: 1 , blockquote: 1 , noscript: 1 , table: 1 , center: 1 , address: 1 , dir: 1 , pre: 1 , h5: 1 , dl: 1 , h4: 1 , noframes: 1 , h6: 1 , ol: 1 , h1: 1 , h3: 1 , h2: 1 } ), "," F = _( { ins: 1 , del: 1 , script: 1 , style: 1 } ), "," G = X( _( { b: 1 , acronym: 1 , bdo: 1 , 'var' : 1 , '#' : 1 , abbr: 1 , code: 1 , br: 1 , i: 1 , cite: 1 , kbd: 1 , u: 1 , strike: 1 , s: 1 , tt: 1 , strong: 1 , q: 1 , samp: 1 , em: 1 , dfn: 1 , span: 1 } ), F ), "," H = X( _( { sub: 1 , img: 1 , embed: 1 , object: 1 , sup: 1 , basefont: 1 , map: 1 , applet: 1 , font: 1 , big: 1 , small: 1 } ), G ), "," I = X( _( { p: 1 } ), H ), "," J = X( _( { iframe: 1 } ), H, B ), "," K = _( { img: 1 , embed: 1 , noscript: 1 , br: 1 , kbd: 1 , center: 1 , button: 1 , basefont: 1 , h5: 1 , h4: 1 , samp: 1 , h6: 1 , ol: 1 , h1: 1 , h3: 1 , h2: 1 , form: 1 , font: 1 , '#' : 1 , select: 1 , menu: 1 , ins: 1 , abbr: 1 , label: 1 , code: 1 , table: 1 , script: 1 , cite: 1 , input: 1 , iframe: 1 , strong: 1 , textarea: 1 , noframes: 1 , big: 1 , small: 1 , span: 1 , hr: 1 , sub: 1 , bdo: 1 , 'var' : 1 , div: 1 , object: 1 , sup: 1 , strike: 1 , dir: 1 , map: 1 , dl: 1 , applet: 1 , del: 1 , isindex: 1 , fieldset: 1 , ul: 1 , b: 1 , acronym: 1 , a: 1 , blockquote: 1 , i: 1 , u: 1 , s: 1 , tt: 1 , address: 1 , q: 1 , pre: 1 , p: 1 , em: 1 , dfn: 1 } ), ",""," L = X( _( { a: 0 } ), J ), //a不能被切开,所以把他 "," M = _( { tr: 1 } ), "," N = _( { '#' : 1 } ), "," O = X( _( { param: 1 } ), K ), "," P = X( _( { form: 1 } ), A, D, E, I ), "," Q = _( { li: 1 , ol: 1 , ul: 1 } ), "," R = _( { style: 1 , script: 1 } ), "," S = _( { base: 1 , link: 1 , meta: 1 , title: 1 } ), "," T = X( S, R ), "," U = _( { head: 1 , body: 1 } ), "," V = _( { html: 1 } ); ",""," var block = _( { address: 1 , blockquote: 1 , center: 1 , dir: 1 , div: 1 , dl: 1 , fieldset: 1 , form: 1 , h1: 1 , h2: 1 , h3: 1 , h4: 1 , h5: 1 , h6: 1 , hr: 1 , isindex: 1 , menu: 1 , noframes: 1 , ol: 1 , p: 1 , pre: 1 , table: 1 , ul: 1 } ), ",""," empty = _( { area: 1 , base: 1 , basefont: 1 , br: 1 , col: 1 , command: 1 , dialog: 1 , embed: 1 , hr: 1 , img: 1 , input: 1 , isindex: 1 , keygen: 1 , link: 1 , meta: 1 , param: 1 , source: 1 , track: 1 , wbr: 1 } ); ",""," return _( { ",""," // $ 表示自定的属性 ",""," // body外的元素列表. "," $nonBodyContent: X( V, U, S ), ",""," //块结构元素列表 "," $block : block, ",""," //内联元素列表 "," $inline : L, ",""," $inlineWithA : X( _( { a: 1 } ), L), ",""," $body : X( _( { script: 1 , style: 1 } ), block ), ",""," $cdata : _( { script: 1 , style: 1 } ), ",""," //自闭和元素 "," $empty : empty, ",""," //不是自闭合,但不能让range选中里边 "," $nonChild : _( { iframe: 1 , textarea: 1 } ), "," //列表元素列表 "," $listItem : _( { dd: 1 , dt: 1 , li: 1 } ), ",""," //列表根元素列表 "," $list: _( { ul: 1 , ol: 1 , dl: 1 } ), ",""," //不能认为是空的元素 "," $isNotEmpty : _( { table: 1 , ul: 1 , ol: 1 , dl: 1 , iframe: 1 , area: 1 , base: 1 , col: 1 , hr: 1 , img: 1 , embed: 1 , input: 1 , link: 1 , meta: 1 , param: 1 , h1: 1 , h2: 1 , h3: 1 , h4: 1 , h5: 1 , h6: 1 } ), ",""," //如果没有子节点就可以删除的元素列表,像span,a "," $removeEmpty : _( { a: 1 , abbr: 1 , acronym: 1 , address: 1 , b: 1 , bdo: 1 , big: 1 , cite: 1 , code: 1 , del: 1 , dfn: 1 , em: 1 , font: 1 , i: 1 , ins: 1 , label: 1 , kbd: 1 , q: 1 , s: 1 , samp: 1 , small: 1 , span: 1 , strike: 1 , strong: 1 , sub: 1 , sup: 1 , tt: 1 , u: 1 , 'var' : 1 } ), ",""," $removeEmptyBlock : _( { 'p' : 1 , 'div' : 1 } ), ",""," //在table元素里的元素列表 "," $tableContent : _( { caption: 1 , col: 1 , colgroup: 1 , tbody: 1 , td: 1 , tfoot: 1 , th: 1 , thead: 1 , tr: 1 , table: 1 } ), "," //不转换的标签 "," $notTransContent : _( { pre: 1 , script: 1 , style: 1 , textarea: 1 } ), "," html: U, "," head: T, "," style: N, "," script: N, "," body: P, "," base: {} , "," link: {} , "," meta: {} , "," title: N, "," col : {} , "," tr : _( { td: 1 , th: 1 } ), "," img : {} , "," embed: {} , "," colgroup : _( { thead: 1 , col: 1 , tbody: 1 , tr: 1 , tfoot: 1 } ), "," noscript : P, "," td : P, "," br : {} , "," th : P, "," center : P, "," kbd : L, "," button : X( I, E ), "," basefont : {} , "," h5 : L, "," h4 : L, "," samp : L, "," h6 : L, "," ol : Q, "," h1 : L, "," h3 : L, "," option : N, "," h2 : L, "," form : X( A, D, E, I ), "," select : _( { optgroup: 1 , option: 1 } ), "," font : L, "," ins : L, "," menu : Q, "," abbr : L, "," label : L, "," table : _( { thead: 1 , col: 1 , tbody: 1 , tr: 1 , colgroup: 1 , caption: 1 , tfoot: 1 } ), "," code : L, "," tfoot : M, "," cite : L, "," li : P, "," input : {} , "," iframe : P, "," strong : L, "," textarea : N, "," noframes : P, "," big : L, "," small : L, "," //trace: "," span : _( { '#' : 1 , br: 1 , b: 1 , strong: 1 , u: 1 , i: 1 , em: 1 , sub: 1 , sup: 1 , strike: 1 , span: 1 } ), "," hr : L, "," dt : L, "," sub : L, "," optgroup : _( { option: 1 } ), "," param : {} , "," bdo : L, "," 'var' : L, "," div : P, "," object : O, "," sup : L, "," dd : P, "," strike : L, "," area : {} , "," dir : Q, "," map : X( _( { area: 1 , form: 1 , p: 1 } ), A, F, E ), "," applet : O, "," dl : _( { dt: 1 , dd: 1 } ), "," del : L, "," isindex : {} , "," fieldset : X( _( { legend: 1 } ), K ), "," thead : M, "," ul : Q, "," acronym : L, "," b : L, "," a : X( _( { a: 1 } ), J ), "," blockquote : X( _( { td: 1 , tr: 1 , tbody: 1 , li: 1 } ), P), "," caption : L, "," i : L, "," u : L, "," tbody : M, "," s : L, "," address : X( D, I ), "," tt : L, "," legend : L, "," q : L, "," pre : X( G, C ), "," p : X( _( { 'a' : 1 } ), L), "," em : L, "," dfn : L"," } ); ","} )(); "];
+_$jscoverage['core/dtd.js'][9]++;
+var dtd = (dom.dtd = (function () {
+ _$jscoverage['core/dtd.js'][10]++;
+ function _(s) {
+ _$jscoverage['core/dtd.js'][11]++;
+ for (var k in s) {
+ _$jscoverage['core/dtd.js'][12]++;
+ s[k.toUpperCase()] = s[k];
+}
+ _$jscoverage['core/dtd.js'][14]++;
+ return s;
+}
+ _$jscoverage['core/dtd.js'][16]++;
+ var X = utils.extend2;
+ _$jscoverage['core/dtd.js'][17]++;
+ var A = _({isindex: 1, fieldset: 1}), B = _({input: 1, button: 1, select: 1, textarea: 1, label: 1}), C = X(_({a: 1}), B), D = X({iframe: 1}, C), E = _({hr: 1, ul: 1, menu: 1, div: 1, blockquote: 1, noscript: 1, table: 1, center: 1, address: 1, dir: 1, pre: 1, h5: 1, dl: 1, h4: 1, noframes: 1, h6: 1, ol: 1, h1: 1, h3: 1, h2: 1}), F = _({ins: 1, del: 1, script: 1, style: 1}), G = X(_({b: 1, acronym: 1, bdo: 1, "var": 1, "#": 1, abbr: 1, code: 1, br: 1, i: 1, cite: 1, kbd: 1, u: 1, strike: 1, s: 1, tt: 1, strong: 1, q: 1, samp: 1, em: 1, dfn: 1, span: 1}), F), H = X(_({sub: 1, img: 1, embed: 1, object: 1, sup: 1, basefont: 1, map: 1, applet: 1, font: 1, big: 1, small: 1}), G), I = X(_({p: 1}), H), J = X(_({iframe: 1}), H, B), K = _({img: 1, embed: 1, noscript: 1, br: 1, kbd: 1, center: 1, button: 1, basefont: 1, h5: 1, h4: 1, samp: 1, h6: 1, ol: 1, h1: 1, h3: 1, h2: 1, form: 1, font: 1, "#": 1, select: 1, menu: 1, ins: 1, abbr: 1, label: 1, code: 1, table: 1, script: 1, cite: 1, input: 1, iframe: 1, strong: 1, textarea: 1, noframes: 1, big: 1, small: 1, span: 1, hr: 1, sub: 1, bdo: 1, "var": 1, div: 1, object: 1, sup: 1, strike: 1, dir: 1, map: 1, dl: 1, applet: 1, del: 1, isindex: 1, fieldset: 1, ul: 1, b: 1, acronym: 1, a: 1, blockquote: 1, i: 1, u: 1, s: 1, tt: 1, address: 1, q: 1, pre: 1, p: 1, em: 1, dfn: 1}), L = X(_({a: 0}), J), M = _({tr: 1}), N = _({"#": 1}), O = X(_({param: 1}), K), P = X(_({form: 1}), A, D, E, I), Q = _({li: 1, ol: 1, ul: 1}), R = _({style: 1, script: 1}), S = _({base: 1, link: 1, meta: 1, title: 1}), T = X(S, R), U = _({head: 1, body: 1}), V = _({html: 1});
+ _$jscoverage['core/dtd.js'][41]++;
+ var block = _({address: 1, blockquote: 1, center: 1, dir: 1, div: 1, dl: 1, fieldset: 1, form: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, hr: 1, isindex: 1, menu: 1, noframes: 1, ol: 1, p: 1, pre: 1, table: 1, ul: 1}), empty = _({area: 1, base: 1, basefont: 1, br: 1, col: 1, command: 1, dialog: 1, embed: 1, hr: 1, img: 1, input: 1, isindex: 1, keygen: 1, link: 1, meta: 1, param: 1, source: 1, track: 1, wbr: 1});
+ _$jscoverage['core/dtd.js'][45]++;
+ return _({$nonBodyContent: X(V, U, S), $block: block, $inline: L, $inlineWithA: X(_({a: 1}), L), $body: X(_({script: 1, style: 1}), block), $cdata: _({script: 1, style: 1}), $empty: empty, $nonChild: _({iframe: 1, textarea: 1}), $listItem: _({dd: 1, dt: 1, li: 1}), $list: _({ul: 1, ol: 1, dl: 1}), $isNotEmpty: _({table: 1, ul: 1, ol: 1, dl: 1, iframe: 1, area: 1, base: 1, col: 1, hr: 1, img: 1, embed: 1, input: 1, link: 1, meta: 1, param: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1}), $removeEmpty: _({a: 1, abbr: 1, acronym: 1, address: 1, b: 1, bdo: 1, big: 1, cite: 1, code: 1, del: 1, dfn: 1, em: 1, font: 1, i: 1, ins: 1, label: 1, kbd: 1, q: 1, s: 1, samp: 1, small: 1, span: 1, strike: 1, strong: 1, sub: 1, sup: 1, tt: 1, u: 1, "var": 1}), $removeEmptyBlock: _({"p": 1, "div": 1}), $tableContent: _({caption: 1, col: 1, colgroup: 1, tbody: 1, td: 1, tfoot: 1, th: 1, thead: 1, tr: 1, table: 1}), $notTransContent: _({pre: 1, script: 1, style: 1, textarea: 1}), html: U, head: T, style: N, script: N, body: P, base: {}, link: {}, meta: {}, title: N, col: {}, tr: _({td: 1, th: 1}), img: {}, embed: {}, colgroup: _({thead: 1, col: 1, tbody: 1, tr: 1, tfoot: 1}), noscript: P, td: P, br: {}, th: P, center: P, kbd: L, button: X(I, E), basefont: {}, h5: L, h4: L, samp: L, h6: L, ol: Q, h1: L, h3: L, option: N, h2: L, form: X(A, D, E, I), select: _({optgroup: 1, option: 1}), font: L, ins: L, menu: Q, abbr: L, label: L, table: _({thead: 1, col: 1, tbody: 1, tr: 1, colgroup: 1, caption: 1, tfoot: 1}), code: L, tfoot: M, cite: L, li: P, input: {}, iframe: P, strong: L, textarea: N, noframes: P, big: L, small: L, span: _({"#": 1, br: 1, b: 1, strong: 1, u: 1, i: 1, em: 1, sub: 1, sup: 1, strike: 1, span: 1}), hr: L, dt: L, sub: L, optgroup: _({option: 1}), param: {}, bdo: L, "var": L, div: P, object: O, sup: L, dd: P, strike: L, area: {}, dir: Q, map: X(_({area: 1, form: 1, p: 1}), A, F, E), applet: O, dl: _({dt: 1, dd: 1}), del: L, isindex: {}, fieldset: X(_({legend: 1}), K), thead: M, ul: Q, acronym: L, b: L, a: X(_({a: 1}), J), blockquote: X(_({td: 1, tr: 1, tbody: 1, li: 1}), P), caption: L, i: L, u: L, tbody: M, s: L, address: X(D, I), tt: L, legend: L, q: L, pre: X(G, C), p: X(_({"a": 1}), L), em: L, dfn: L});
+})());
diff --git a/_test/coverage/core/filternode.js b/_test/coverage/core/filternode.js
new file mode 100644
index 000000000..5b17d9ac6
--- /dev/null
+++ b/_test/coverage/core/filternode.js
@@ -0,0 +1,275 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/filternode.js']) {
+ _$jscoverage['core/filternode.js'] = [];
+ _$jscoverage['core/filternode.js'][24] = 0;
+ _$jscoverage['core/filternode.js'][25] = 0;
+ _$jscoverage['core/filternode.js'][26] = 0;
+ _$jscoverage['core/filternode.js'][28] = 0;
+ _$jscoverage['core/filternode.js'][30] = 0;
+ _$jscoverage['core/filternode.js'][31] = 0;
+ _$jscoverage['core/filternode.js'][32] = 0;
+ _$jscoverage['core/filternode.js'][33] = 0;
+ _$jscoverage['core/filternode.js'][34] = 0;
+ _$jscoverage['core/filternode.js'][35] = 0;
+ _$jscoverage['core/filternode.js'][37] = 0;
+ _$jscoverage['core/filternode.js'][38] = 0;
+ _$jscoverage['core/filternode.js'][39] = 0;
+ _$jscoverage['core/filternode.js'][40] = 0;
+ _$jscoverage['core/filternode.js'][41] = 0;
+ _$jscoverage['core/filternode.js'][42] = 0;
+ _$jscoverage['core/filternode.js'][43] = 0;
+ _$jscoverage['core/filternode.js'][48] = 0;
+ _$jscoverage['core/filternode.js'][49] = 0;
+ _$jscoverage['core/filternode.js'][50] = 0;
+ _$jscoverage['core/filternode.js'][51] = 0;
+ _$jscoverage['core/filternode.js'][58] = 0;
+ _$jscoverage['core/filternode.js'][59] = 0;
+ _$jscoverage['core/filternode.js'][60] = 0;
+ _$jscoverage['core/filternode.js'][61] = 0;
+ _$jscoverage['core/filternode.js'][62] = 0;
+ _$jscoverage['core/filternode.js'][64] = 0;
+ _$jscoverage['core/filternode.js'][65] = 0;
+ _$jscoverage['core/filternode.js'][66] = 0;
+ _$jscoverage['core/filternode.js'][67] = 0;
+ _$jscoverage['core/filternode.js'][68] = 0;
+ _$jscoverage['core/filternode.js'][69] = 0;
+ _$jscoverage['core/filternode.js'][72] = 0;
+ _$jscoverage['core/filternode.js'][74] = 0;
+ _$jscoverage['core/filternode.js'][75] = 0;
+ _$jscoverage['core/filternode.js'][79] = 0;
+ _$jscoverage['core/filternode.js'][81] = 0;
+ _$jscoverage['core/filternode.js'][82] = 0;
+ _$jscoverage['core/filternode.js'][83] = 0;
+ _$jscoverage['core/filternode.js'][84] = 0;
+ _$jscoverage['core/filternode.js'][85] = 0;
+ _$jscoverage['core/filternode.js'][92] = 0;
+ _$jscoverage['core/filternode.js'][93] = 0;
+ _$jscoverage['core/filternode.js'][95] = 0;
+ _$jscoverage['core/filternode.js'][97] = 0;
+ _$jscoverage['core/filternode.js'][98] = 0;
+ _$jscoverage['core/filternode.js'][99] = 0;
+ _$jscoverage['core/filternode.js'][100] = 0;
+ _$jscoverage['core/filternode.js'][101] = 0;
+ _$jscoverage['core/filternode.js'][106] = 0;
+ _$jscoverage['core/filternode.js'][108] = 0;
+ _$jscoverage['core/filternode.js'][112] = 0;
+ _$jscoverage['core/filternode.js'][113] = 0;
+ _$jscoverage['core/filternode.js'][114] = 0;
+ _$jscoverage['core/filternode.js'][116] = 0;
+ _$jscoverage['core/filternode.js'][117] = 0;
+ _$jscoverage['core/filternode.js'][118] = 0;
+ _$jscoverage['core/filternode.js'][119] = 0;
+ _$jscoverage['core/filternode.js'][122] = 0;
+ _$jscoverage['core/filternode.js'][123] = 0;
+ _$jscoverage['core/filternode.js'][124] = 0;
+ _$jscoverage['core/filternode.js'][125] = 0;
+ _$jscoverage['core/filternode.js'][128] = 0;
+}
+_$jscoverage['core/filternode.js'].source = ["/** "," * UE过滤节点的静态方法 "," * @file "," */ ","","/** "," * UEditor公用空间,UEditor所有的功能都挂载在该空间下 "," * @module UE "," */ ","","","/** "," * 根据传入节点和过滤规则过滤相应节点 "," * @module UE "," * @since 1.2.6.1 "," * @method filterNode "," * @param { Object } root 指定root节点 "," * @param { Object } rules 过滤规则json对象 "," * @example "," * ```javascript "," * UE.filterNode(root,editor.options.filterRules); "," * ``` "," */ ","var filterNode = UE. filterNode = function () { "," function filterNode( node, rules) { "," switch ( node. type) { "," case 'text' : "," break ; "," case 'element' : "," var val; "," if ( val = rules[ node. tagName]) { "," if ( val === '-' ) { "," node. parentNode. removeChild( node) "," } else if ( utils. isFunction( val)) { "," var parentNode = node. parentNode, "," index = node. getIndex(); "," val( node); "," if ( node. parentNode) { "," if ( node. children) { "," for ( var i = 0 , ci; ci= node. children[ i];) { "," filterNode( ci, rules); "," if ( ci. parentNode) { "," i++; "," } "," } "," } "," } else { "," for ( var i = index, ci; ci= parentNode. children[ i];) { "," filterNode( ci, rules); "," if ( ci. parentNode) { "," i++; "," } "," } "," } ","",""," } else { "," var attrs = val[ '$' ]; "," if ( attrs && node. attrs) { "," var tmpAttrs = {} , tmpVal; "," for ( var a in attrs) { "," tmpVal = node. getAttr( a); "," //todo 只先对style单独处理 "," if ( a == 'style' && utils. isArray( attrs[ a])) { "," var tmpCssStyle = []; "," utils. each( attrs[ a], function ( v) { "," var tmp; "," if ( tmp = node. getStyle( v)) { "," tmpCssStyle. push( v + ':' + tmp); "," } "," } ); "," tmpVal = tmpCssStyle. join( ';' ) "," } "," if ( tmpVal) { "," tmpAttrs[ a] = tmpVal; "," } ",""," } "," node. attrs = tmpAttrs; "," } "," if ( node. children) { "," for ( var i = 0 , ci; ci= node. children[ i];) { "," filterNode( ci, rules); "," if ( ci. parentNode) { "," i++; "," } "," } "," } "," } "," } else { "," //如果不在名单里扣出子节点并删除该节点,cdata除外 "," if ( dtd. $cdata[ node. tagName]) { "," node. parentNode. removeChild( node) "," } else { "," var parentNode = node. parentNode, "," index = node. getIndex(); "," node. parentNode. removeChild( node, true ); "," for ( var i = index, ci; ci= parentNode. children[ i];) { "," filterNode( ci, rules); "," if ( ci. parentNode) { "," i++; "," } "," } "," } "," } "," break ; "," case 'comment' : "," node. parentNode. removeChild( node) "," } ",""," } "," return function ( root, rules) { "," if ( utils. isEmptyObject( rules)) { "," return root; "," } "," var val; "," if ( val = rules[ '-' ]) { "," utils. each( val. split( ' ' ), function ( k) { "," rules[ k] = '-' "," } ) "," } "," for ( var i= 0 , ci; ci= root. children[ i];) { "," filterNode( ci, rules); "," if ( ci. parentNode) { "," i++; "," } "," } "," return root; "," } ","} (); "];
+_$jscoverage['core/filternode.js'][24]++;
+var filterNode = (UE.filterNode = (function () {
+ _$jscoverage['core/filternode.js'][25]++;
+ function filterNode(node, rules) {
+ _$jscoverage['core/filternode.js'][26]++;
+ switch (node.type) {
+ case "text":
+ _$jscoverage['core/filternode.js'][28]++;
+ break;
+ case "element":
+ _$jscoverage['core/filternode.js'][30]++;
+ var val;
+ _$jscoverage['core/filternode.js'][31]++;
+ if ((val = rules[node.tagName])) {
+ _$jscoverage['core/filternode.js'][32]++;
+ if ((val === "-")) {
+ _$jscoverage['core/filternode.js'][33]++;
+ node.parentNode.removeChild(node);
+ }
+ else {
+ _$jscoverage['core/filternode.js'][34]++;
+ if (utils.isFunction(val)) {
+ _$jscoverage['core/filternode.js'][35]++;
+ var parentNode = node.parentNode, index = node.getIndex();
+ _$jscoverage['core/filternode.js'][37]++;
+ val(node);
+ _$jscoverage['core/filternode.js'][38]++;
+ if (node.parentNode) {
+ _$jscoverage['core/filternode.js'][39]++;
+ if (node.children) {
+ _$jscoverage['core/filternode.js'][40]++;
+ for (var i = 0, ci; (ci = node.children[i]);) {
+ _$jscoverage['core/filternode.js'][41]++;
+ filterNode(ci, rules);
+ _$jscoverage['core/filternode.js'][42]++;
+ if (ci.parentNode) {
+ _$jscoverage['core/filternode.js'][43]++;
+ (i++);
+ }
+}
+ }
+ }
+ else {
+ _$jscoverage['core/filternode.js'][48]++;
+ for (var i = index, ci = ci; (ci = parentNode.children[i]);) {
+ _$jscoverage['core/filternode.js'][49]++;
+ filterNode(ci, rules);
+ _$jscoverage['core/filternode.js'][50]++;
+ if (ci.parentNode) {
+ _$jscoverage['core/filternode.js'][51]++;
+ (i++);
+ }
+}
+ }
+ }
+ else {
+ _$jscoverage['core/filternode.js'][58]++;
+ var attrs = val.$;
+ _$jscoverage['core/filternode.js'][59]++;
+ if ((attrs && node.attrs)) {
+ _$jscoverage['core/filternode.js'][60]++;
+ var tmpAttrs = {}, tmpVal;
+ _$jscoverage['core/filternode.js'][61]++;
+ for (var a in attrs) {
+ _$jscoverage['core/filternode.js'][62]++;
+ tmpVal = node.getAttr(a);
+ _$jscoverage['core/filternode.js'][64]++;
+ if (((a == "style") && utils.isArray(attrs[a]))) {
+ _$jscoverage['core/filternode.js'][65]++;
+ var tmpCssStyle = [];
+ _$jscoverage['core/filternode.js'][66]++;
+ utils.each(attrs[a], (function (v) {
+ _$jscoverage['core/filternode.js'][67]++;
+ var tmp;
+ _$jscoverage['core/filternode.js'][68]++;
+ if ((tmp = node.getStyle(v))) {
+ _$jscoverage['core/filternode.js'][69]++;
+ tmpCssStyle.push((v + ":" + tmp));
+ }
+}));
+ _$jscoverage['core/filternode.js'][72]++;
+ tmpVal = tmpCssStyle.join(";");
+ }
+ _$jscoverage['core/filternode.js'][74]++;
+ if (tmpVal) {
+ _$jscoverage['core/filternode.js'][75]++;
+ tmpAttrs[a] = tmpVal;
+ }
+}
+ _$jscoverage['core/filternode.js'][79]++;
+ node.attrs = tmpAttrs;
+ }
+ _$jscoverage['core/filternode.js'][81]++;
+ if (node.children) {
+ _$jscoverage['core/filternode.js'][82]++;
+ for (var i = 0, ci = ci; (ci = node.children[i]);) {
+ _$jscoverage['core/filternode.js'][83]++;
+ filterNode(ci, rules);
+ _$jscoverage['core/filternode.js'][84]++;
+ if (ci.parentNode) {
+ _$jscoverage['core/filternode.js'][85]++;
+ (i++);
+ }
+}
+ }
+ }
+ }
+ }
+ else {
+ _$jscoverage['core/filternode.js'][92]++;
+ if (dtd.$cdata[node.tagName]) {
+ _$jscoverage['core/filternode.js'][93]++;
+ node.parentNode.removeChild(node);
+ }
+ else {
+ _$jscoverage['core/filternode.js'][95]++;
+ var parentNode = node.parentNode, index = node.getIndex();
+ _$jscoverage['core/filternode.js'][97]++;
+ node.parentNode.removeChild(node, true);
+ _$jscoverage['core/filternode.js'][98]++;
+ for (var i = index, ci = ci; (ci = parentNode.children[i]);) {
+ _$jscoverage['core/filternode.js'][99]++;
+ filterNode(ci, rules);
+ _$jscoverage['core/filternode.js'][100]++;
+ if (ci.parentNode) {
+ _$jscoverage['core/filternode.js'][101]++;
+ (i++);
+ }
+}
+ }
+ }
+ _$jscoverage['core/filternode.js'][106]++;
+ break;
+ case "comment":
+ _$jscoverage['core/filternode.js'][108]++;
+ node.parentNode.removeChild(node);
+ }
+}
+ _$jscoverage['core/filternode.js'][112]++;
+ return (function (root, rules) {
+ _$jscoverage['core/filternode.js'][113]++;
+ if (utils.isEmptyObject(rules)) {
+ _$jscoverage['core/filternode.js'][114]++;
+ return root;
+ }
+ _$jscoverage['core/filternode.js'][116]++;
+ var val;
+ _$jscoverage['core/filternode.js'][117]++;
+ if ((val = rules["-"])) {
+ _$jscoverage['core/filternode.js'][118]++;
+ utils.each(val.split(" "), (function (k) {
+ _$jscoverage['core/filternode.js'][119]++;
+ rules[k] = "-";
+}));
+ }
+ _$jscoverage['core/filternode.js'][122]++;
+ for (var i = 0, ci; (ci = root.children[i]);) {
+ _$jscoverage['core/filternode.js'][123]++;
+ filterNode(ci, rules);
+ _$jscoverage['core/filternode.js'][124]++;
+ if (ci.parentNode) {
+ _$jscoverage['core/filternode.js'][125]++;
+ (i++);
+ }
+}
+ _$jscoverage['core/filternode.js'][128]++;
+ return root;
+});
+})());
diff --git a/_test/coverage/core/filterword.js b/_test/coverage/core/filterword.js
new file mode 100644
index 000000000..44e9086c6
--- /dev/null
+++ b/_test/coverage/core/filterword.js
@@ -0,0 +1,266 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/filterword.js']) {
+ _$jscoverage['core/filterword.js'] = [];
+ _$jscoverage['core/filterword.js'][23] = 0;
+ _$jscoverage['core/filterword.js'][26] = 0;
+ _$jscoverage['core/filterword.js'][27] = 0;
+ _$jscoverage['core/filterword.js'][30] = 0;
+ _$jscoverage['core/filterword.js'][31] = 0;
+ _$jscoverage['core/filterword.js'][32] = 0;
+ _$jscoverage['core/filterword.js'][34] = 0;
+ _$jscoverage['core/filterword.js'][37] = 0;
+ _$jscoverage['core/filterword.js'][38] = 0;
+ _$jscoverage['core/filterword.js'][43] = 0;
+ _$jscoverage['core/filterword.js'][44] = 0;
+ _$jscoverage['core/filterword.js'][46] = 0;
+ _$jscoverage['core/filterword.js'][47] = 0;
+ _$jscoverage['core/filterword.js'][50] = 0;
+ _$jscoverage['core/filterword.js'][52] = 0;
+ _$jscoverage['core/filterword.js'][64] = 0;
+ _$jscoverage['core/filterword.js'][70] = 0;
+ _$jscoverage['core/filterword.js'][76] = 0;
+ _$jscoverage['core/filterword.js'][78] = 0;
+ _$jscoverage['core/filterword.js'][81] = 0;
+ _$jscoverage['core/filterword.js'][82] = 0;
+ _$jscoverage['core/filterword.js'][83] = 0;
+ _$jscoverage['core/filterword.js'][84] = 0;
+ _$jscoverage['core/filterword.js'][88] = 0;
+ _$jscoverage['core/filterword.js'][91] = 0;
+ _$jscoverage['core/filterword.js'][108] = 0;
+ _$jscoverage['core/filterword.js'][109] = 0;
+ _$jscoverage['core/filterword.js'][110] = 0;
+ _$jscoverage['core/filterword.js'][112] = 0;
+ _$jscoverage['core/filterword.js'][113] = 0;
+ _$jscoverage['core/filterword.js'][116] = 0;
+ _$jscoverage['core/filterword.js'][117] = 0;
+ _$jscoverage['core/filterword.js'][121] = 0;
+ _$jscoverage['core/filterword.js'][122] = 0;
+ _$jscoverage['core/filterword.js'][126] = 0;
+ _$jscoverage['core/filterword.js'][127] = 0;
+ _$jscoverage['core/filterword.js'][130] = 0;
+ _$jscoverage['core/filterword.js'][131] = 0;
+ _$jscoverage['core/filterword.js'][134] = 0;
+ _$jscoverage['core/filterword.js'][135] = 0;
+ _$jscoverage['core/filterword.js'][138] = 0;
+ _$jscoverage['core/filterword.js'][139] = 0;
+ _$jscoverage['core/filterword.js'][142] = 0;
+ _$jscoverage['core/filterword.js'][143] = 0;
+ _$jscoverage['core/filterword.js'][145] = 0;
+ _$jscoverage['core/filterword.js'][147] = 0;
+ _$jscoverage['core/filterword.js'][148] = 0;
+ _$jscoverage['core/filterword.js'][150] = 0;
+ _$jscoverage['core/filterword.js'][152] = 0;
+ _$jscoverage['core/filterword.js'][154] = 0;
+ _$jscoverage['core/filterword.js'][155] = 0;
+ _$jscoverage['core/filterword.js'][160] = 0;
+ _$jscoverage['core/filterword.js'][164] = 0;
+ _$jscoverage['core/filterword.js'][167] = 0;
+ _$jscoverage['core/filterword.js'][170] = 0;
+ _$jscoverage['core/filterword.js'][173] = 0;
+ _$jscoverage['core/filterword.js'][178] = 0;
+ _$jscoverage['core/filterword.js'][179] = 0;
+}
+_$jscoverage['core/filterword.js'].source = ["/** "," * UE过滤word的静态方法 "," * @file "," */ ","","/** "," * UEditor公用空间,UEditor所有的功能都挂载在该空间下 "," * @module UE "," */ ","","","/** "," * 根据传入html字符串过滤word "," * @module UE "," * @since 1.2.6.1 "," * @method filterWord "," * @param { String } html html字符串 "," * @example "," * ```javascript "," * UE.filterWord(html); "," * ``` "," */ ","var filterWord = UE. filterWord = function () { ",""," //是否是word过来的内容 "," function isWordDocument( str ) { "," return /(class=\"?Mso|style=\"[^\"]*\\bmso\\-|w:WordDocument|<v:)/ig . test( str ); "," } "," //去掉小数 "," function transUnit( v ) { "," v = v. replace( /[\\d.]+\\w+/g , function ( m ) { "," return utils. transUnitToPx( m); "," } ); "," return v; "," } ",""," function filterPasteWord( str ) { "," return str. replace( /[\\t\\r\\n]+/g , \"\" ) "," . replace( /<!--[\\s\\S]*?-->/ig , \"\" ) "," //转换图片 "," . replace( /<v:shape [^>]*>[\\s\\S]*?.<\\/v:shape>/gi , function ( str) { "," //opera能自己解析出image所这里直接返回空 "," if ( browser. opera) { "," return '' ; "," } "," try { "," var width = str. match( /width:([ \\d.]*p[tx])/i )[ 1 ], "," height = str. match( /height:([ \\d.]*p[tx])/i )[ 1 ], "," src = str. match( /src=\\s*\"([^\"]*)\"/i )[ 1 ]; "," return '<img width=\"' + transUnit( width) + '\" height=\"' + transUnit( height) + '\" src=\"' + src + '\" />' ; "," } catch ( e) { "," return '' ; "," } "," } ) "," //针对wps添加的多余标签处理 "," . replace( /<\\/?div[^>]*>/g , '' ) "," //去掉多余的属性 "," . replace( /v:\\w+=([\"']?)[^'\"]+\\1/g , '' ) "," . replace( /<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|xml|meta|link|style|\\w+:\\w+)(?=[\\s\\/>]))[^>]*>/gi , \"\" ) "," . replace( /<p [^>]*class=\"?MsoHeading\"?[^>]*>(.*?)<\\/p>/gi , \"<p><strong>$1</strong></p>\" ) "," //去掉多余的属性 "," . replace( /\\s+(class|lang|align)\\s*=\\s*(['\"]?)([\\w-]+)\\2/ig , function ( str, name, marks, val) { "," //保留list的标示 "," return name == 'class' && val == 'MsoListParagraph' ? str : '' "," } ) "," //清除多余的font/span不能匹配 有可能是空格 "," . replace( /<(font|span)[^>]*>\\s*<\\/\\1>/gi , '' ) "," //处理style的问题 "," . replace( /(<[a-z][^>]*)\\sstyle=([\"'])([^\\2]*?)\\2/gi , function ( str, tag, tmp, style ) { "," var n = [], "," s = style. replace( /^\\s+|\\s+$/ , '' ) "," . replace( /'/g , ' \\' ' ) "," . replace( /"/gi , \"'\" ) "," . split( /;\\s*/g ); ",""," for ( var i = 0 , v; v = s[ i]; i++ ) { ",""," var name, value, "," parts = v. split( \":\" ); ",""," if ( parts. length == 2 ) { "," name = parts[ 0 ]. toLowerCase(); "," value = parts[ 1 ]. toLowerCase(); "," if ( /^(background)\\w*/ . test( name) && value. replace( /(initial|\\s)/g , '' ). length == 0 "," || "," /^(margin)\\w*/ . test( name) && /^0\\w+$/ . test( value) "," ) { "," continue ; "," } ",""," switch ( name ) { "," case \"mso-padding-alt\" : "," case \"mso-padding-top-alt\" : "," case \"mso-padding-right-alt\" : "," case \"mso-padding-bottom-alt\" : "," case \"mso-padding-left-alt\" : "," case \"mso-margin-alt\" : "," case \"mso-margin-top-alt\" : "," case \"mso-margin-right-alt\" : "," case \"mso-margin-bottom-alt\" : "," case \"mso-margin-left-alt\" : "," //ie下会出现挤到一起的情况 "," //case \"mso-table-layout-alt\": "," case \"mso-height\" : "," case \"mso-width\" : "," case \"mso-vertical-align-alt\" : "," //trace:1819 ff下会解析出padding在table上 "," if (! /<table/ . test( tag)) "," n[ i] = name. replace( /^mso-|-alt$/g , \"\" ) + \":\" + transUnit( value ); "," continue ; "," case \"horiz-align\" : "," n[ i] = \"text-align:\" + value; "," continue ; ",""," case \"vert-align\" : "," n[ i] = \"vertical-align:\" + value; "," continue ; ",""," case \"font-color\" : "," case \"mso-foreground\" : "," n[ i] = \"color:\" + value; "," continue ; ",""," case \"mso-background\" : "," case \"mso-highlight\" : "," n[ i] = \"background:\" + value; "," continue ; ",""," case \"mso-default-height\" : "," n[ i] = \"min-height:\" + transUnit( value ); "," continue ; ",""," case \"mso-default-width\" : "," n[ i] = \"min-width:\" + transUnit( value ); "," continue ; ",""," case \"mso-padding-between-alt\" : "," n[ i] = \"border-collapse:separate;border-spacing:\" + transUnit( value ); "," continue ; ",""," case \"text-line-through\" : "," if ( ( value == \"single\" ) || ( value == \"double\" ) ) { "," n[ i] = \"text-decoration:line-through\" ; "," } "," continue ; "," case \"mso-zero-height\" : "," if ( value == \"yes\" ) { "," n[ i] = \"display:none\" ; "," } "," continue ; "," case 'background' : "," break ; "," case 'margin' : "," if ( ! /[1-9]/ . test( value ) ) { "," continue ; "," } ",""," } ",""," if ( /^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?:decor|trans)|top-bar|version|vnd|word-break)/ . test( name ) "," || "," /text\\-indent|padding|margin/ . test( name) && /\\-[\\d.]+/ . test( value) "," ) { "," continue ; "," } ",""," n[ i] = name + \":\" + parts[ 1 ]; "," } "," } "," return tag + ( n. length ? ' style=\"' + n. join( ';' ). replace( /;{2,}/g , ';' ) + '\"' : '' ); "," } ) "," . replace( /[\\d.]+(cm|pt)/g , function ( str) { "," return utils. transUnitToPx( str) "," } ) ",""," } ",""," return function ( html ) { "," return ( isWordDocument( html ) ? filterPasteWord( html ) : html); "," } ; ","} (); "];
+_$jscoverage['core/filterword.js'][23]++;
+var filterWord = (UE.filterWord = (function () {
+ _$jscoverage['core/filterword.js'][26]++;
+ function isWordDocument(str) {
+ _$jscoverage['core/filterword.js'][27]++;
+ return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|/gi, "").replace(/]*>[\s\S]*?.<\/v:shape>/gi, (function (str) {
+ _$jscoverage['core/filterword.js'][43]++;
+ if (browser.opera) {
+ _$jscoverage['core/filterword.js'][44]++;
+ return "";
+ }
+ _$jscoverage['core/filterword.js'][46]++;
+ try {
+ _$jscoverage['core/filterword.js'][47]++;
+ var width = str.match(/width:([ \d.]*p[tx])/i)[1], height = str.match(/height:([ \d.]*p[tx])/i)[1], src = str.match(/src=\s*"([^"]*)"/i)[1];
+ _$jscoverage['core/filterword.js'][50]++;
+ return (" ");
+ }
+ catch (e) {
+ _$jscoverage['core/filterword.js'][52]++;
+ return "";
+ }
+})).replace(/<\/?div[^>]*>/g, "").replace(/v:\w+=(["']?)[^'"]+\1/g, "").replace(/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi, "").replace(/]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "
$1
").replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi, (function (str, name, marks, val) {
+ _$jscoverage['core/filterword.js'][64]++;
+ return (((name == "class") && (val == "MsoListParagraph"))? str: "");
+})).replace(/<(font|span)[^>]*>\s*<\/\1>/gi, "").replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, (function (str, tag, tmp, style) {
+ _$jscoverage['core/filterword.js'][70]++;
+ var n = [], s = style.replace(/^\s+|\s+$/, "").replace(/'/g, "'").replace(/"/gi, "'").split(/;\s*/g);
+ _$jscoverage['core/filterword.js'][76]++;
+ for (var i = 0, v; (v = s[i]); (i++)) {
+ _$jscoverage['core/filterword.js'][78]++;
+ var name, value, parts = v.split(":");
+ _$jscoverage['core/filterword.js'][81]++;
+ if ((parts.length == 2)) {
+ _$jscoverage['core/filterword.js'][82]++;
+ name = parts[0].toLowerCase();
+ _$jscoverage['core/filterword.js'][83]++;
+ value = parts[1].toLowerCase();
+ _$jscoverage['core/filterword.js'][84]++;
+ if (((/^(background)\w*/.test(name) && (value.replace(/(initial|\s)/g, "").length == 0)) || (/^(margin)\w*/.test(name) && /^0\w+$/.test(value)))) {
+ _$jscoverage['core/filterword.js'][88]++;
+ continue;
+ }
+ _$jscoverage['core/filterword.js'][91]++;
+ switch (name) {
+ case "mso-padding-alt":
+ case "mso-padding-top-alt":
+ case "mso-padding-right-alt":
+ case "mso-padding-bottom-alt":
+ case "mso-padding-left-alt":
+ case "mso-margin-alt":
+ case "mso-margin-top-alt":
+ case "mso-margin-right-alt":
+ case "mso-margin-bottom-alt":
+ case "mso-margin-left-alt":
+ case "mso-height":
+ case "mso-width":
+ case "mso-vertical-align-alt":
+ _$jscoverage['core/filterword.js'][108]++;
+ if ((! //**"," * html字符串转换成uNode节点 "," * @file "," * @module UE "," * @since 1.2.6.1 "," */ ","","/** "," * UEditor公用空间,UEditor所有的功能都挂载在该空间下 "," * @unfile "," * @module UE "," */ ","","/** "," * html字符串转换成uNode节点的静态方法 "," * @method htmlparser "," * @param { String } htmlstr 要转换的html代码 "," * @param { Boolean } ignoreBlank 若设置为true,转换的时候忽略\\n\\r\\t等空白字符 "," * @example "," * ```javascript "," * var root = UE.htmlparser('<p><b>htmlparser</b></p>', true); "," * ``` "," */ ","","var htmlparser = UE. htmlparser = function ( htmlstr, ignoreBlank) { "," var re_tag = /<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s\\/>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'<>])*)\\/?>))/g , "," re_attr = /([\\w\\-:.]+)(?:(?:\\s*=\\s*(?:(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s>]+)))|(?=\\s|$))/g ; ",""," //ie下取得的html可能会有\\n存在,要去掉,在处理replace(/[\\t\\r\\n]*/g,'');代码高量的\\n不能去除 "," var allowEmptyTags = { "," b: 1 , code: 1 , i: 1 , u: 1 , strike: 1 , s: 1 , tt: 1 , strong: 1 , q: 1 , samp: 1 , em: 1 , span: 1 , "," sub: 1 , img: 1 , sup: 1 , font: 1 , big: 1 , small: 1 , iframe: 1 , a: 1 , br: 1 , pre: 1 "," } ; "," htmlstr = htmlstr. replace( new RegExp( domUtils. fillChar, 'g' ), '' ); "," if (! ignoreBlank) { "," htmlstr = htmlstr. replace( new RegExp( '[ \\\\ r \\\\ t \\\\ n' +( ignoreBlank? '' : ' ' )+ ']*< \\/ ?( \\\\ w+) \\\\ s*(?:[^>]*)>[ \\\\ r \\\\ t \\\\ n' +( ignoreBlank? '' : ' ' )+ ']*' , 'g' ), function ( a, b) { "," //br暂时单独处理 "," if ( b && allowEmptyTags[ b. toLowerCase()]) { "," return a. replace( /(^[\\n\\r]+)|([\\n\\r]+$)/g , '' ); "," } "," return a. replace( new RegExp( '^[ \\\\ r \\\\ n' +( ignoreBlank? '' : ' ' )+ ']+' ), '' ). replace( new RegExp( '[ \\\\ r \\\\ n' +( ignoreBlank? '' : ' ' )+ ']+$' ), '' ); "," } ); "," } ","",""," var uNode = UE. uNode, "," needParentNode = { "," 'td' : 'tr' , "," 'tr' :[ 'tbody' , 'thead' , 'tfoot' ], "," 'tbody' : 'table' , "," 'th' : 'tr' , "," 'thead' : 'table' , "," 'tfoot' : 'table' , "," 'caption' : 'table' , "," 'li' :[ 'ul' , 'ol' ], "," 'dt' : 'dl' , "," 'dd' : 'dl' , "," 'option' : 'select' "," } , "," needChild = { "," 'ol' : 'li' , "," 'ul' : 'li' "," } ; ",""," function text( parent, data) { ",""," if ( needChild[ parent. tagName]) { "," var tmpNode = uNode. createElement( needChild[ parent. tagName]); "," parent. appendChild( tmpNode); "," tmpNode. appendChild( uNode. createText( data)); "," parent = tmpNode; "," } else { ",""," parent. appendChild( uNode. createText( data)); "," } "," } ",""," function element( parent, tagName, htmlattr) { "," var needParentTag; "," if ( needParentTag = needParentNode[ tagName]) { "," var tmpParent = parent, hasParent; "," while ( tmpParent. type != 'root' ) { "," if ( utils. isArray( needParentTag) ? utils. indexOf( needParentTag, tmpParent. tagName) != - 1 : needParentTag == tmpParent. tagName) { "," parent = tmpParent; "," hasParent = true ; "," break ; "," } "," tmpParent = tmpParent. parentNode; "," } "," if (! hasParent) { "," parent = element( parent, utils. isArray( needParentTag) ? needParentTag[ 0 ] : needParentTag) "," } "," } "," //按dtd处理嵌套 ","// if(parent.type != 'root' && !dtd[parent.tagName][tagName]) ","// parent = parent.parentNode; "," var elm = new uNode( { "," parentNode: parent, "," type: 'element' , "," tagName: tagName. toLowerCase(), "," //是自闭合的处理一下 "," children: dtd. $empty[ tagName] ? null : [] "," } ); "," //如果属性存在,处理属性 "," if ( htmlattr) { "," var attrs = {} , match; "," while ( match = re_attr. exec( htmlattr)) { "," attrs[ match[ 1 ]. toLowerCase()] = utils. unhtml( match[ 2 ] || match[ 3 ] || match[ 4 ]) "," } "," elm. attrs = attrs; "," } ",""," parent. children. push( elm); "," //如果是自闭合节点返回父亲节点 "," return dtd. $empty[ tagName] ? parent : elm"," } ",""," function comment( parent, data) { "," parent. children. push( new uNode( { "," type: 'comment' , "," data: data, "," parentNode: parent"," } )); "," } ",""," var match, currentIndex = 0 , nextIndex = 0 ; "," //设置根节点 "," var root = new uNode( { "," type: 'root' , "," children:[] "," } ); "," var currentParent = root; "," while ( match = re_tag. exec( htmlstr)) { "," currentIndex = match. index; "," try { "," if ( currentIndex > nextIndex) { "," //text node "," text( currentParent, htmlstr. slice( nextIndex, currentIndex)); "," } "," if ( match[ 3 ]) { "," //start tag "," currentParent = element( currentParent, match[ 3 ]. toLowerCase(), match[ 4 ]); ",""," } else if ( match[ 1 ]) { "," if ( currentParent. type != 'root' ) { "," var tmpParent = currentParent; "," while ( currentParent. type == 'element' && currentParent. tagName != match[ 1 ]. toLowerCase()) { "," currentParent = currentParent. parentNode; "," if ( currentParent. type == 'root' ) { "," currentParent = tmpParent; "," throw 'break' "," } "," } "," //end tag "," currentParent = currentParent. parentNode; "," } ",""," } else if ( match[ 2 ]) { "," //comment "," comment( currentParent, match[ 2 ]) "," } "," } catch ( e) {} ",""," nextIndex = re_tag. lastIndex; ",""," } "," //如果结束是文本,就有可能丢掉,所以这里手动判断一下 "," //例如 <li>sdfsdfsdf<li>sdfsdfsdfsdf "," if ( nextIndex < htmlstr. length) { "," text( currentParent, htmlstr. slice( nextIndex)); "," } "," return root; ","} ; "];
+_$jscoverage['core/htmlparser.js'][25]++;
+var htmlparser = (UE.htmlparser = (function (htmlstr, ignoreBlank) {
+ _$jscoverage['core/htmlparser.js'][26]++;
+ var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g, re_attr = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g;
+ _$jscoverage['core/htmlparser.js'][30]++;
+ var allowEmptyTags = {b: 1, code: 1, i: 1, u: 1, strike: 1, s: 1, tt: 1, strong: 1, q: 1, samp: 1, em: 1, span: 1, sub: 1, img: 1, sup: 1, font: 1, big: 1, small: 1, iframe: 1, a: 1, br: 1, pre: 1};
+ _$jscoverage['core/htmlparser.js'][34]++;
+ htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, "g"), "");
+ _$jscoverage['core/htmlparser.js'][35]++;
+ if ((! ignoreBlank)) {
+ _$jscoverage['core/htmlparser.js'][36]++;
+ htmlstr = htmlstr.replace(new RegExp(("[\\r\\t\\n" + (ignoreBlank? "": " ") + "]*?(\\w+)\\s*(?:[^>]*)>[\\r\\t\\n" + (ignoreBlank? "": " ") + "]*"), "g"), (function (a, b) {
+ _$jscoverage['core/htmlparser.js'][38]++;
+ if ((b && allowEmptyTags[b.toLowerCase()])) {
+ _$jscoverage['core/htmlparser.js'][39]++;
+ return a.replace(/(^[\n\r]+)|([\n\r]+$)/g, "");
+ }
+ _$jscoverage['core/htmlparser.js'][41]++;
+ return a.replace(new RegExp(("^[\\r\\n" + (ignoreBlank? "": " ") + "]+")), "").replace(new RegExp(("[\\r\\n" + (ignoreBlank? "": " ") + "]+$")), "");
+}));
+ }
+ _$jscoverage['core/htmlparser.js'][46]++;
+ var uNode = UE.uNode, needParentNode = {"td": "tr", "tr": ["tbody", "thead", "tfoot"], "tbody": "table", "th": "tr", "thead": "table", "tfoot": "table", "caption": "table", "li": ["ul", "ol"], "dt": "dl", "dd": "dl", "option": "select"}, needChild = {"ol": "li", "ul": "li"};
+ _$jscoverage['core/htmlparser.js'][65]++;
+ function text(parent, data) {
+ _$jscoverage['core/htmlparser.js'][67]++;
+ if (needChild[parent.tagName]) {
+ _$jscoverage['core/htmlparser.js'][68]++;
+ var tmpNode = uNode.createElement(needChild[parent.tagName]);
+ _$jscoverage['core/htmlparser.js'][69]++;
+ parent.appendChild(tmpNode);
+ _$jscoverage['core/htmlparser.js'][70]++;
+ tmpNode.appendChild(uNode.createText(data));
+ _$jscoverage['core/htmlparser.js'][71]++;
+ parent = tmpNode;
+ }
+ else {
+ _$jscoverage['core/htmlparser.js'][74]++;
+ parent.appendChild(uNode.createText(data));
+ }
+}
+ _$jscoverage['core/htmlparser.js'][78]++;
+ function element(parent, tagName, htmlattr) {
+ _$jscoverage['core/htmlparser.js'][79]++;
+ var needParentTag;
+ _$jscoverage['core/htmlparser.js'][80]++;
+ if ((needParentTag = needParentNode[tagName])) {
+ _$jscoverage['core/htmlparser.js'][81]++;
+ var tmpParent = parent, hasParent;
+ _$jscoverage['core/htmlparser.js'][82]++;
+ while ((tmpParent.type != "root")) {
+ _$jscoverage['core/htmlparser.js'][83]++;
+ if ((utils.isArray(needParentTag)? (utils.indexOf(needParentTag, tmpParent.tagName) != -1): (needParentTag == tmpParent.tagName))) {
+ _$jscoverage['core/htmlparser.js'][84]++;
+ parent = tmpParent;
+ _$jscoverage['core/htmlparser.js'][85]++;
+ hasParent = true;
+ _$jscoverage['core/htmlparser.js'][86]++;
+ break;
+ }
+ _$jscoverage['core/htmlparser.js'][88]++;
+ tmpParent = tmpParent.parentNode;
+}
+ _$jscoverage['core/htmlparser.js'][90]++;
+ if ((! hasParent)) {
+ _$jscoverage['core/htmlparser.js'][91]++;
+ parent = element(parent, (utils.isArray(needParentTag)? needParentTag[0]: needParentTag));
+ }
+ }
+ _$jscoverage['core/htmlparser.js'][97]++;
+ var elm = new uNode({parentNode: parent, type: "element", tagName: tagName.toLowerCase(), children: (dtd.$empty[tagName]? null: [])});
+ _$jscoverage['core/htmlparser.js'][105]++;
+ if (htmlattr) {
+ _$jscoverage['core/htmlparser.js'][106]++;
+ var attrs = {}, match;
+ _$jscoverage['core/htmlparser.js'][107]++;
+ while ((match = re_attr.exec(htmlattr))) {
+ _$jscoverage['core/htmlparser.js'][108]++;
+ attrs[match[1].toLowerCase()] = utils.unhtml((match[2] || match[3] || match[4]));
+}
+ _$jscoverage['core/htmlparser.js'][110]++;
+ elm.attrs = attrs;
+ }
+ _$jscoverage['core/htmlparser.js'][113]++;
+ parent.children.push(elm);
+ _$jscoverage['core/htmlparser.js'][115]++;
+ return (dtd.$empty[tagName]? parent: elm);
+}
+ _$jscoverage['core/htmlparser.js'][118]++;
+ function comment(parent, data) {
+ _$jscoverage['core/htmlparser.js'][119]++;
+ parent.children.push(new uNode({type: "comment", data: data, parentNode: parent}));
+}
+ _$jscoverage['core/htmlparser.js'][126]++;
+ var match, currentIndex = 0, nextIndex = 0;
+ _$jscoverage['core/htmlparser.js'][128]++;
+ var root = new uNode({type: "root", children: []});
+ _$jscoverage['core/htmlparser.js'][132]++;
+ var currentParent = root;
+ _$jscoverage['core/htmlparser.js'][133]++;
+ while ((match = re_tag.exec(htmlstr))) {
+ _$jscoverage['core/htmlparser.js'][134]++;
+ currentIndex = match.index;
+ _$jscoverage['core/htmlparser.js'][135]++;
+ try {
+ _$jscoverage['core/htmlparser.js'][136]++;
+ if ((currentIndex > nextIndex)) {
+ _$jscoverage['core/htmlparser.js'][138]++;
+ text(currentParent, htmlstr.slice(nextIndex, currentIndex));
+ }
+ _$jscoverage['core/htmlparser.js'][140]++;
+ if (match[3]) {
+ _$jscoverage['core/htmlparser.js'][142]++;
+ currentParent = element(currentParent, match[3].toLowerCase(), match[4]);
+ }
+ else {
+ _$jscoverage['core/htmlparser.js'][144]++;
+ if (match[1]) {
+ _$jscoverage['core/htmlparser.js'][145]++;
+ if ((currentParent.type != "root")) {
+ _$jscoverage['core/htmlparser.js'][146]++;
+ var tmpParent = currentParent;
+ _$jscoverage['core/htmlparser.js'][147]++;
+ while (((currentParent.type == "element") && (currentParent.tagName != match[1].toLowerCase()))) {
+ _$jscoverage['core/htmlparser.js'][148]++;
+ currentParent = currentParent.parentNode;
+ _$jscoverage['core/htmlparser.js'][149]++;
+ if ((currentParent.type == "root")) {
+ _$jscoverage['core/htmlparser.js'][150]++;
+ currentParent = tmpParent;
+ _$jscoverage['core/htmlparser.js'][151]++;
+ throw "break";
+ }
+}
+ _$jscoverage['core/htmlparser.js'][155]++;
+ currentParent = currentParent.parentNode;
+ }
+ }
+ else {
+ _$jscoverage['core/htmlparser.js'][158]++;
+ if (match[2]) {
+ _$jscoverage['core/htmlparser.js'][160]++;
+ comment(currentParent, match[2]);
+ }
+ }
+ }
+ }
+ catch (e) {
+ }
+ _$jscoverage['core/htmlparser.js'][164]++;
+ nextIndex = re_tag.lastIndex;
+}
+ _$jscoverage['core/htmlparser.js'][169]++;
+ if ((nextIndex < htmlstr.length)) {
+ _$jscoverage['core/htmlparser.js'][170]++;
+ text(currentParent, htmlstr.slice(nextIndex));
+ }
+ _$jscoverage['core/htmlparser.js'][172]++;
+ return root;
+}));
diff --git a/_test/coverage/core/node.js b/_test/coverage/core/node.js
new file mode 100644
index 000000000..3c76035f0
--- /dev/null
+++ b/_test/coverage/core/node.js
@@ -0,0 +1,874 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/node.js']) {
+ _$jscoverage['core/node.js'] = [];
+ _$jscoverage['core/node.js'][15] = 0;
+ _$jscoverage['core/node.js'][37] = 0;
+ _$jscoverage['core/node.js'][38] = 0;
+ _$jscoverage['core/node.js'][39] = 0;
+ _$jscoverage['core/node.js'][40] = 0;
+ _$jscoverage['core/node.js'][41] = 0;
+ _$jscoverage['core/node.js'][42] = 0;
+ _$jscoverage['core/node.js'][43] = 0;
+ _$jscoverage['core/node.js'][45] = 0;
+ _$jscoverage['core/node.js'][48] = 0;
+ _$jscoverage['core/node.js'][49] = 0;
+ _$jscoverage['core/node.js'][50] = 0;
+ _$jscoverage['core/node.js'][53] = 0;
+ _$jscoverage['core/node.js'][55] = 0;
+ _$jscoverage['core/node.js'][56] = 0;
+ _$jscoverage['core/node.js'][62] = 0;
+ _$jscoverage['core/node.js'][63] = 0;
+ _$jscoverage['core/node.js'][64] = 0;
+ _$jscoverage['core/node.js'][66] = 0;
+ _$jscoverage['core/node.js'][73] = 0;
+ _$jscoverage['core/node.js'][74] = 0;
+ _$jscoverage['core/node.js'][79] = 0;
+ _$jscoverage['core/node.js'][80] = 0;
+ _$jscoverage['core/node.js'][82] = 0;
+ _$jscoverage['core/node.js'][84] = 0;
+ _$jscoverage['core/node.js'][85] = 0;
+ _$jscoverage['core/node.js'][86] = 0;
+ _$jscoverage['core/node.js'][88] = 0;
+ _$jscoverage['core/node.js'][90] = 0;
+ _$jscoverage['core/node.js'][92] = 0;
+ _$jscoverage['core/node.js'][93] = 0;
+ _$jscoverage['core/node.js'][95] = 0;
+ _$jscoverage['core/node.js'][96] = 0;
+ _$jscoverage['core/node.js'][98] = 0;
+ _$jscoverage['core/node.js'][100] = 0;
+ _$jscoverage['core/node.js'][103] = 0;
+ _$jscoverage['core/node.js'][104] = 0;
+ _$jscoverage['core/node.js'][107] = 0;
+ _$jscoverage['core/node.js'][108] = 0;
+ _$jscoverage['core/node.js'][109] = 0;
+ _$jscoverage['core/node.js'][110] = 0;
+ _$jscoverage['core/node.js'][111] = 0;
+ _$jscoverage['core/node.js'][112] = 0;
+ _$jscoverage['core/node.js'][113] = 0;
+ _$jscoverage['core/node.js'][115] = 0;
+ _$jscoverage['core/node.js'][117] = 0;
+ _$jscoverage['core/node.js'][122] = 0;
+ _$jscoverage['core/node.js'][123] = 0;
+ _$jscoverage['core/node.js'][124] = 0;
+ _$jscoverage['core/node.js'][125] = 0;
+ _$jscoverage['core/node.js'][129] = 0;
+ _$jscoverage['core/node.js'][130] = 0;
+ _$jscoverage['core/node.js'][131] = 0;
+ _$jscoverage['core/node.js'][132] = 0;
+ _$jscoverage['core/node.js'][133] = 0;
+ _$jscoverage['core/node.js'][135] = 0;
+ _$jscoverage['core/node.js'][138] = 0;
+ _$jscoverage['core/node.js'][139] = 0;
+ _$jscoverage['core/node.js'][141] = 0;
+ _$jscoverage['core/node.js'][142] = 0;
+ _$jscoverage['core/node.js'][143] = 0;
+ _$jscoverage['core/node.js'][146] = 0;
+ _$jscoverage['core/node.js'][151] = 0;
+ _$jscoverage['core/node.js'][152] = 0;
+ _$jscoverage['core/node.js'][155] = 0;
+ _$jscoverage['core/node.js'][156] = 0;
+ _$jscoverage['core/node.js'][157] = 0;
+ _$jscoverage['core/node.js'][158] = 0;
+ _$jscoverage['core/node.js'][160] = 0;
+ _$jscoverage['core/node.js'][161] = 0;
+ _$jscoverage['core/node.js'][162] = 0;
+ _$jscoverage['core/node.js'][163] = 0;
+ _$jscoverage['core/node.js'][169] = 0;
+ _$jscoverage['core/node.js'][170] = 0;
+ _$jscoverage['core/node.js'][171] = 0;
+ _$jscoverage['core/node.js'][173] = 0;
+ _$jscoverage['core/node.js'][174] = 0;
+ _$jscoverage['core/node.js'][175] = 0;
+ _$jscoverage['core/node.js'][180] = 0;
+ _$jscoverage['core/node.js'][181] = 0;
+ _$jscoverage['core/node.js'][182] = 0;
+ _$jscoverage['core/node.js'][183] = 0;
+ _$jscoverage['core/node.js'][185] = 0;
+ _$jscoverage['core/node.js'][186] = 0;
+ _$jscoverage['core/node.js'][187] = 0;
+ _$jscoverage['core/node.js'][189] = 0;
+ _$jscoverage['core/node.js'][193] = 0;
+ _$jscoverage['core/node.js'][198] = 0;
+ _$jscoverage['core/node.js'][221] = 0;
+ _$jscoverage['core/node.js'][222] = 0;
+ _$jscoverage['core/node.js'][223] = 0;
+ _$jscoverage['core/node.js'][249] = 0;
+ _$jscoverage['core/node.js'][250] = 0;
+ _$jscoverage['core/node.js'][252] = 0;
+ _$jscoverage['core/node.js'][253] = 0;
+ _$jscoverage['core/node.js'][254] = 0;
+ _$jscoverage['core/node.js'][255] = 0;
+ _$jscoverage['core/node.js'][258] = 0;
+ _$jscoverage['core/node.js'][259] = 0;
+ _$jscoverage['core/node.js'][260] = 0;
+ _$jscoverage['core/node.js'][261] = 0;
+ _$jscoverage['core/node.js'][262] = 0;
+ _$jscoverage['core/node.js'][264] = 0;
+ _$jscoverage['core/node.js'][266] = 0;
+ _$jscoverage['core/node.js'][270] = 0;
+ _$jscoverage['core/node.js'][297] = 0;
+ _$jscoverage['core/node.js'][298] = 0;
+ _$jscoverage['core/node.js'][300] = 0;
+ _$jscoverage['core/node.js'][301] = 0;
+ _$jscoverage['core/node.js'][302] = 0;
+ _$jscoverage['core/node.js'][303] = 0;
+ _$jscoverage['core/node.js'][306] = 0;
+ _$jscoverage['core/node.js'][307] = 0;
+ _$jscoverage['core/node.js'][308] = 0;
+ _$jscoverage['core/node.js'][310] = 0;
+ _$jscoverage['core/node.js'][324] = 0;
+ _$jscoverage['core/node.js'][325] = 0;
+ _$jscoverage['core/node.js'][326] = 0;
+ _$jscoverage['core/node.js'][342] = 0;
+ _$jscoverage['core/node.js'][358] = 0;
+ _$jscoverage['core/node.js'][371] = 0;
+ _$jscoverage['core/node.js'][372] = 0;
+ _$jscoverage['core/node.js'][373] = 0;
+ _$jscoverage['core/node.js'][374] = 0;
+ _$jscoverage['core/node.js'][390] = 0;
+ _$jscoverage['core/node.js'][391] = 0;
+ _$jscoverage['core/node.js'][392] = 0;
+ _$jscoverage['core/node.js'][393] = 0;
+ _$jscoverage['core/node.js'][410] = 0;
+ _$jscoverage['core/node.js'][411] = 0;
+ _$jscoverage['core/node.js'][412] = 0;
+ _$jscoverage['core/node.js'][414] = 0;
+ _$jscoverage['core/node.js'][415] = 0;
+ _$jscoverage['core/node.js'][416] = 0;
+ _$jscoverage['core/node.js'][417] = 0;
+ _$jscoverage['core/node.js'][418] = 0;
+ _$jscoverage['core/node.js'][419] = 0;
+ _$jscoverage['core/node.js'][436] = 0;
+ _$jscoverage['core/node.js'][437] = 0;
+ _$jscoverage['core/node.js'][438] = 0;
+ _$jscoverage['core/node.js'][440] = 0;
+ _$jscoverage['core/node.js'][441] = 0;
+ _$jscoverage['core/node.js'][443] = 0;
+ _$jscoverage['core/node.js'][444] = 0;
+ _$jscoverage['core/node.js'][445] = 0;
+ _$jscoverage['core/node.js'][446] = 0;
+ _$jscoverage['core/node.js'][449] = 0;
+ _$jscoverage['core/node.js'][450] = 0;
+ _$jscoverage['core/node.js'][451] = 0;
+ _$jscoverage['core/node.js'][469] = 0;
+ _$jscoverage['core/node.js'][470] = 0;
+ _$jscoverage['core/node.js'][471] = 0;
+ _$jscoverage['core/node.js'][473] = 0;
+ _$jscoverage['core/node.js'][474] = 0;
+ _$jscoverage['core/node.js'][475] = 0;
+ _$jscoverage['core/node.js'][476] = 0;
+ _$jscoverage['core/node.js'][477] = 0;
+ _$jscoverage['core/node.js'][496] = 0;
+ _$jscoverage['core/node.js'][497] = 0;
+ _$jscoverage['core/node.js'][498] = 0;
+ _$jscoverage['core/node.js'][500] = 0;
+ _$jscoverage['core/node.js'][501] = 0;
+ _$jscoverage['core/node.js'][502] = 0;
+ _$jscoverage['core/node.js'][503] = 0;
+ _$jscoverage['core/node.js'][504] = 0;
+ _$jscoverage['core/node.js'][523] = 0;
+ _$jscoverage['core/node.js'][524] = 0;
+ _$jscoverage['core/node.js'][525] = 0;
+ _$jscoverage['core/node.js'][526] = 0;
+ _$jscoverage['core/node.js'][527] = 0;
+ _$jscoverage['core/node.js'][528] = 0;
+ _$jscoverage['core/node.js'][529] = 0;
+ _$jscoverage['core/node.js'][530] = 0;
+ _$jscoverage['core/node.js'][531] = 0;
+ _$jscoverage['core/node.js'][535] = 0;
+ _$jscoverage['core/node.js'][552] = 0;
+ _$jscoverage['core/node.js'][567] = 0;
+ _$jscoverage['core/node.js'][568] = 0;
+ _$jscoverage['core/node.js'][569] = 0;
+ _$jscoverage['core/node.js'][571] = 0;
+ _$jscoverage['core/node.js'][572] = 0;
+ _$jscoverage['core/node.js'][574] = 0;
+ _$jscoverage['core/node.js'][575] = 0;
+ _$jscoverage['core/node.js'][576] = 0;
+ _$jscoverage['core/node.js'][577] = 0;
+ _$jscoverage['core/node.js'][579] = 0;
+ _$jscoverage['core/node.js'][583] = 0;
+ _$jscoverage['core/node.js'][584] = 0;
+ _$jscoverage['core/node.js'][586] = 0;
+ _$jscoverage['core/node.js'][602] = 0;
+ _$jscoverage['core/node.js'][603] = 0;
+ _$jscoverage['core/node.js'][604] = 0;
+ _$jscoverage['core/node.js'][605] = 0;
+ _$jscoverage['core/node.js'][608] = 0;
+ _$jscoverage['core/node.js'][622] = 0;
+ _$jscoverage['core/node.js'][623] = 0;
+ _$jscoverage['core/node.js'][624] = 0;
+ _$jscoverage['core/node.js'][625] = 0;
+ _$jscoverage['core/node.js'][626] = 0;
+ _$jscoverage['core/node.js'][643] = 0;
+ _$jscoverage['core/node.js'][644] = 0;
+ _$jscoverage['core/node.js'][645] = 0;
+ _$jscoverage['core/node.js'][646] = 0;
+ _$jscoverage['core/node.js'][647] = 0;
+ _$jscoverage['core/node.js'][648] = 0;
+ _$jscoverage['core/node.js'][652] = 0;
+ _$jscoverage['core/node.js'][666] = 0;
+ _$jscoverage['core/node.js'][667] = 0;
+ _$jscoverage['core/node.js'][668] = 0;
+ _$jscoverage['core/node.js'][670] = 0;
+ _$jscoverage['core/node.js'][671] = 0;
+ _$jscoverage['core/node.js'][672] = 0;
+ _$jscoverage['core/node.js'][673] = 0;
+ _$jscoverage['core/node.js'][675] = 0;
+ _$jscoverage['core/node.js'][689] = 0;
+ _$jscoverage['core/node.js'][690] = 0;
+ _$jscoverage['core/node.js'][691] = 0;
+ _$jscoverage['core/node.js'][692] = 0;
+ _$jscoverage['core/node.js'][693] = 0;
+ _$jscoverage['core/node.js'][698] = 0;
+ _$jscoverage['core/node.js'][699] = 0;
+ _$jscoverage['core/node.js'][700] = 0;
+ _$jscoverage['core/node.js'][702] = 0;
+ _$jscoverage['core/node.js'][703] = 0;
+ _$jscoverage['core/node.js'][704] = 0;
+ _$jscoverage['core/node.js'][707] = 0;
+ _$jscoverage['core/node.js'][709] = 0;
+ _$jscoverage['core/node.js'][724] = 0;
+ _$jscoverage['core/node.js'][725] = 0;
+ _$jscoverage['core/node.js'][727] = 0;
+}
+_$jscoverage['core/node.js'].source = ["/** "," * 编辑器模拟的节点类 "," * @file "," * @module UE "," * @class uNode "," * @since 1.2.6.1 "," */ ","","/** "," * UEditor公用空间,UEditor所有的功能都挂载在该空间下 "," * @unfile "," * @module UE "," */ ","","( function () { ",""," /** "," * 编辑器模拟的节点类 "," * @unfile "," * @module UE "," * @class uNode "," */ ",""," /** "," * 通过一个键值对,创建一个uNode对象 "," * @constructor "," * @param { KeyValueMap } 传入要创建的uNode的属性 "," * @example "," * ```javascript "," * var node = new uNode({ "," * type:'element', "," * tagName:'span', "," * attrs:{style:'font-size:14px;'} "," * } "," * ``` "," */ "," var uNode = UE. uNode = function ( obj) { "," this . type = obj. type; "," this . data = obj. data; "," this . tagName = obj. tagName; "," this . parentNode = obj. parentNode; "," this . attrs = obj. attrs || {} ; "," this . children = obj. children; "," } ; "," var indentChar = ' ' , "," breakChar = ' \\n ' ; ",""," function insertLine( arr, current, begin) { "," arr. push( breakChar); "," return current + ( begin ? 1 : - 1 ); "," } ",""," function insertIndent( arr, current) { "," //插入缩进 "," for ( var i = 0 ; i < current; i++) { "," arr. push( indentChar); "," } "," } ",""," //创建uNode的静态方法 "," //支持标签和html "," uNode. createElement = function ( html) { "," if ( /[<>]/ . test( html)) { "," return UE. htmlparser( html). children[ 0 ] "," } else { "," return new uNode( { "," type: 'element' , "," children: [], "," tagName: html"," } ) "," } "," } ; "," uNode. createText = function ( data) { "," return new UE. uNode( { "," type: 'text' , "," 'data' : utils. unhtml( data || '' ) "," } ) "," } ; "," function nodeToHtml( node, arr, formatter, current) { "," switch ( node. type) { "," case 'root' : "," for ( var i = 0 , ci; ci = node. children[ i++];) { "," //插入新行 "," if ( formatter && ci. type == 'element' && ! dtd. $inlineWithA[ ci. tagName] && i > 1 ) { "," insertLine( arr, current, true ); "," insertIndent( arr, current) "," } "," nodeToHtml( ci, arr, formatter, current) "," } "," break ; "," case 'text' : "," isText( node, arr); "," break ; "," case 'element' : "," isElement( node, arr, formatter, current); "," break ; "," case 'comment' : "," isComment( node, arr, formatter); "," } "," return arr; "," } ",""," function isText( node, arr) { "," arr. push( node. parentNode. tagName == 'pre' ? node. data : node. data. replace( /[ ]{2}/g , ' ' )) "," } ",""," function isElement( node, arr, formatter, current) { "," var attrhtml = '' ; "," if ( node. attrs) { "," attrhtml = []; "," var attrs = node. attrs; "," for ( var a in attrs) { "," attrhtml. push( a + ( attrs[ a] !== undefined ? '=\"' + utils. unhtml( attrs[ a]) + '\"' : '' )) "," } "," attrhtml = attrhtml. join( ' ' ); "," } "," arr. push( '<' + node. tagName + "," ( attrhtml ? ' ' + attrhtml : '' ) + "," ( dtd. $empty[ node. tagName] ? ' \\/ ' : '' ) + '>' "," ); "," //插入新行 "," if ( formatter && ! dtd. $inlineWithA[ node. tagName] && node. tagName != 'pre' ) { "," if ( node. children && node. children. length) { "," current = insertLine( arr, current, true ); "," insertIndent( arr, current) "," } ",""," } "," if ( node. children && node. children. length) { "," for ( var i = 0 , ci; ci = node. children[ i++];) { "," if ( formatter && ci. type == 'element' && ! dtd. $inlineWithA[ ci. tagName] && i > 1 ) { "," insertLine( arr, current); "," insertIndent( arr, current) "," } "," nodeToHtml( ci, arr, formatter, current) "," } "," } "," if (! dtd. $empty[ node. tagName]) { "," if ( formatter && ! dtd. $inlineWithA[ node. tagName] && node. tagName != 'pre' ) { ",""," if ( node. children && node. children. length) { "," current = insertLine( arr, current); "," insertIndent( arr, current) "," } "," } "," arr. push( '< \\/ ' + node. tagName + '>' ); "," } ",""," } ",""," function isComment( node, arr) { "," arr. push( '<!--' + node. data + '-->' ); "," } ",""," function getNodeById( root, id) { "," var node; "," if ( root. type == 'element' && root. getAttr( 'id' ) == id) { "," return root; "," } "," if ( root. children && root. children. length) { "," for ( var i = 0 , ci; ci = root. children[ i++];) { "," if ( node = getNodeById( ci, id)) { "," return node; "," } "," } "," } "," } ",""," function getNodesByTagName( node, tagName, arr) { "," if ( node. type == 'element' && node. tagName == tagName) { "," arr. push( node); "," } "," if ( node. children && node. children. length) { "," for ( var i = 0 , ci; ci = node. children[ i++];) { "," getNodesByTagName( ci, tagName, arr) "," } "," } "," } ",""," function nodeTraversal( root, fn) { "," if ( root. children && root. children. length) { "," for ( var i = 0 , ci; ci = root. children[ i];) { "," nodeTraversal( ci, fn); "," //ci被替换的情况,这里就不再走 fn了 "," if ( ci. parentNode) { "," if ( ci. children && ci. children. length) { "," fn( ci) "," } "," if ( ci. parentNode) i++ "," } "," } "," } else { "," fn( root) "," } ",""," } ",""," uNode. prototype = { ",""," /** "," * 当前节点对象,转换成html文本 "," * @method toHtml "," * @return { String } 返回转换后的html字符串 "," * @example "," * ```javascript "," * node.toHtml(); "," * ``` "," */ ",""," /** "," * 当前节点对象,转换成html文本 "," * @method toHtml "," * @param { Boolean } formatter 是否格式化返回值 "," * @return { String } 返回转换后的html字符串 "," * @example "," * ```javascript "," * node.toHtml(); "," * ``` "," */ "," toHtml: function ( formatter) { "," var arr = []; "," nodeToHtml( this , arr, formatter, 0 ); "," return arr. join( '' ) "," } , ",""," /** "," * 获取节点的html内容 "," * @method innerHTML "," * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接反悔当前节点 "," * @return { String } 返回节点的html内容 "," * @example "," * ```javascript "," * var htmlstr = node.innerHTML(); "," * ``` "," */ ",""," /** "," * 设置节点的html内容 "," * @method innerHTML "," * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接反悔当前节点 "," * @param { String } htmlstr 传入要设置的html内容 "," * @return { UE.uNode } 返回节点本身 "," * @example "," * ```javascript "," * node.innerHTML('<span>text</span>'); "," * ``` "," */ "," innerHTML: function ( htmlstr) { "," if ( this . type != 'element' || dtd. $empty[ this . tagName]) { "," return this ; "," } "," if ( utils. isString( htmlstr)) { "," if ( this . children) { "," for ( var i = 0 , ci; ci = this . children[ i++];) { "," ci. parentNode = null ; "," } "," } "," this . children = []; "," var tmpRoot = UE. htmlparser( htmlstr); "," for ( var i = 0 , ci; ci = tmpRoot. children[ i++];) { "," this . children. push( ci); "," ci. parentNode = this ; "," } "," return this ; "," } else { "," var tmpRoot = new UE. uNode( { "," type: 'root' , "," children: this . children"," } ); "," return tmpRoot. toHtml(); "," } "," } , ",""," /** "," * 获取节点的纯文本内容 "," * @method innerText "," * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接反悔当前节点 "," * @return { String } 返回节点的存文本内容 "," * @example "," * ```javascript "," * var textStr = node.innerText(); "," * ``` "," */ ",""," /** "," * 获取节点的纯文本内容 "," * @method innerText "," * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接反悔当前节点 "," * @param { String } textStr 传入要设置的文本内容 "," * @return { UE.uNode } 返回节点本身 "," * @example "," * ```javascript "," * node.innerText('<span>text</span>'); "," * ``` "," */ "," innerText: function ( textStr) { "," if ( this . type != 'element' || dtd. $empty[ this . tagName]) { "," return this ; "," } "," if ( textStr) { "," if ( this . children) { "," for ( var i = 0 , ci; ci = this . children[ i++];) { "," ci. parentNode = null ; "," } "," } "," this . children = []; "," this . appendChild( uNode. createText( textStr)); "," return this ; "," } else { "," return this . toHtml(). replace( /<[^>]+>/g , '' ); "," } "," } , ",""," /** "," * 获取当前对象的data属性 "," * @method getData "," * @return { KeyValueMap } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性 "," * @example "," * ```javascript "," * node.getData(); "," * ``` "," */ "," getData: function () { "," if ( this . type == 'element' ) "," return '' ; "," return this . data"," } , ",""," /** "," * 获取当前节点下的第一个子节点 "," * @method firstChild "," * @return { UE.uNode } 返回第一个子节点 "," * @example "," * ```javascript "," * node.firstChild(); //返回第一个子节点 "," * ``` "," */ "," firstChild: function () { ","// if (this.type != 'element' || dtd.$empty[this.tagName]) { ","// return this; ","// } "," return this . children ? this . children[ 0 ] : null ; "," } , ",""," /** "," * 获取当前节点下的最后一个子节点 "," * @method lastChild "," * @return { UE.uNode } 返回最后一个子节点 "," * @example "," * ```javascript "," * node.lastChild(); //返回最后一个子节点 "," * ``` "," */ "," lastChild: function () { ","// if (this.type != 'element' || dtd.$empty[this.tagName] ) { ","// return this; ","// } "," return this . children ? this . children[ this . children. length - 1 ] : null ; "," } , ",""," /** "," * 获取和当前节点有相同父亲节点的前一个节点 "," * @method previousSibling "," * @return { UE.uNode } 返回前一个节点 "," * @example "," * ```javascript "," * node.children[2].previousSibling(); //返回子节点node.children[1] "," * ``` "," */ "," previousSibling: function () { "," var parent = this . parentNode; "," for ( var i = 0 , ci; ci = parent. children[ i]; i++) { "," if ( ci === this ) { "," return i == 0 ? null : parent. children[ i - 1 ]; "," } "," } ",""," } , ",""," /** "," * 获取和当前节点有相同父亲节点的后一个节点 "," * @method nextSibling "," * @return { UE.uNode } 返回后一个节点,找不到返回null "," * @example "," * ```javascript "," * node.children[2].nextSibling(); //如果有,返回子节点node.children[3] "," * ``` "," */ "," nextSibling: function () { "," var parent = this . parentNode; "," for ( var i = 0 , ci; ci = parent. children[ i++];) { "," if ( ci === this ) { "," return parent. children[ i]; "," } "," } "," } , ",""," /** "," * 用新的节点替换当前节点 "," * @method replaceChild "," * @param { UE.uNode } target 要替换成该节点参数 "," * @param { UE.uNode } source 要被替换掉的节点 "," * @return { UE.uNode } 返回替换之后的节点对象 "," * @example "," * ```javascript "," * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点 "," * ``` "," */ "," replaceChild: function ( target, source) { "," if ( this . children) { "," if ( target. parentNode) { "," target. parentNode. removeChild( target); "," } "," for ( var i = 0 , ci; ci = this . children[ i]; i++) { "," if ( ci === source) { "," this . children. splice( i, 1 , target); "," source. parentNode = null ; "," target. parentNode = this ; "," return target; "," } "," } "," } "," } , ",""," /** "," * 在节点的子节点列表最后位置插入一个节点 "," * @method appendChild "," * @param { UE.uNode } node 要插入的节点 "," * @return { UE.uNode } 返回刚插入的子节点 "," * @example "," * ```javascript "," * node.appendChild( newNode ); //在node内插入子节点newNode "," * ``` "," */ "," appendChild: function ( node) { "," if ( this . type == 'root' || ( this . type == 'element' && ! dtd. $empty[ this . tagName])) { "," if (! this . children) { "," this . children = [] "," } "," if ( node. parentNode) { "," node. parentNode. removeChild( node); "," } "," for ( var i = 0 , ci; ci = this . children[ i]; i++) { "," if ( ci === node) { "," this . children. splice( i, 1 ); "," break ; "," } "," } "," this . children. push( node); "," node. parentNode = this ; "," return node; "," } ","",""," } , ",""," /** "," * 在传入节点的前面插入一个节点 "," * @method insertBefore "," * @param { UE.uNode } target 要插入的节点 "," * @param { UE.uNode } source 在该参数节点前面插入 "," * @return { UE.uNode } 返回刚插入的子节点 "," * @example "," * ```javascript "," * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode "," * ``` "," */ "," insertBefore: function ( target, source) { "," if ( this . children) { "," if ( target. parentNode) { "," target. parentNode. removeChild( target); "," } "," for ( var i = 0 , ci; ci = this . children[ i]; i++) { "," if ( ci === source) { "," this . children. splice( i, 0 , target); "," target. parentNode = this ; "," return target; "," } "," } ",""," } "," } , ",""," /** "," * 在传入节点的后面插入一个节点 "," * @method insertAfter "," * @param { UE.uNode } target 要插入的节点 "," * @param { UE.uNode } source 在该参数节点后面插入 "," * @return { UE.uNode } 返回刚插入的子节点 "," * @example "," * ```javascript "," * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode "," * ``` "," */ "," insertAfter: function ( target, source) { "," if ( this . children) { "," if ( target. parentNode) { "," target. parentNode. removeChild( target); "," } "," for ( var i = 0 , ci; ci = this . children[ i]; i++) { "," if ( ci === source) { "," this . children. splice( i + 1 , 0 , target); "," target. parentNode = this ; "," return target; "," } ",""," } "," } "," } , ",""," /** "," * 从当前节点的子节点列表中,移除节点 "," * @method removeChild "," * @param { UE.uNode } node 要移除的节点引用 "," * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置 "," * @return { * } 返回刚移除的子节点 "," * @example "," * ```javascript "," * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置 "," * ``` "," */ "," removeChild: function ( node, keepChildren) { "," if ( this . children) { "," for ( var i = 0 , ci; ci = this . children[ i]; i++) { "," if ( ci === node) { "," this . children. splice( i, 1 ); "," ci. parentNode = null ; "," if ( keepChildren && ci. children && ci. children. length) { "," for ( var j = 0 , cj; cj = ci. children[ j]; j++) { "," this . children. splice( i + j, 0 , cj); "," cj. parentNode = this ; ",""," } "," } "," return ci; "," } "," } "," } "," } , ",""," /** "," * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值 "," * @method getAttr "," * @param { String } attrName 要获取的属性名称 "," * @return { * } 返回attrs对象下的属性值 "," * @example "," * ```javascript "," * node.getAttr('title'); "," * ``` "," */ "," getAttr: function ( attrName) { "," return this . attrs && this . attrs[ attrName. toLowerCase()] "," } , ",""," /** "," * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值 "," * @method getAttr "," * @param { String } attrName 要设置的属性名称 "," * @param { * } attrVal 要设置的属性值,类型视设置的属性而定 "," * @return { * } 返回attrs对象下的属性值 "," * @example "," * ```javascript "," * node.setAttr('title','标题'); "," * ``` "," */ "," setAttr: function ( attrName, attrVal) { "," if (! attrName) { "," delete this . attrs; "," return ; "," } "," if (! this . attrs) { "," this . attrs = {} ; "," } "," if ( utils. isObject( attrName)) { "," for ( var a in attrName) { "," if (! attrName[ a]) { "," delete this . attrs[ a] "," } else { "," this . attrs[ a. toLowerCase()] = attrName[ a]; "," } "," } "," } else { "," if (! attrVal) { "," delete this . attrs[ attrName] "," } else { "," this . attrs[ attrName. toLowerCase()] = attrVal; "," } ",""," } "," } , ",""," /** "," * 获取当前节点在父节点下的位置索引 "," * @method getIndex "," * @return { Number } 返回索引数值,如果没有父节点,返回-1 "," * @example "," * ```javascript "," * node.getIndex(); "," * ``` "," */ "," getIndex: function () { "," var parent = this . parentNode; "," for ( var i = 0 , ci; ci = parent. children[ i]; i++) { "," if ( ci === this ) { "," return i; "," } "," } "," return - 1 ; "," } , ",""," /** "," * 在当前节点下,根据id查找节点 "," * @method getNodeById "," * @param { String } id 要查找的id "," * @return { UE.uNode } 返回找到的节点 "," * @example "," * ```javascript "," * node.getNodeById('textId'); "," * ``` "," */ "," getNodeById: function ( id) { "," var node; "," if ( this . children && this . children. length) { "," for ( var i = 0 , ci; ci = this . children[ i++];) { "," if ( node = getNodeById( ci, id)) { "," return node; "," } "," } "," } "," } , ",""," /** "," * 在当前节点下,根据元素名称查找节点列表 "," * @method getNodeById "," * @param { String } tagNames 要查找的元素名称 "," * @return { Array } 返回找到的节点列表 "," * @example "," * ```javascript "," * node.getNodesByTagName('span'); "," * ``` "," */ "," getNodesByTagName: function ( tagNames) { "," tagNames = utils. trim( tagNames). replace( /[ ]{2,}/g , ' ' ). split( ' ' ); "," var arr = [], me = this ; "," utils. each( tagNames, function ( tagName) { "," if ( me. children && me. children. length) { "," for ( var i = 0 , ci; ci = me. children[ i++];) { "," getNodesByTagName( ci, tagName, arr) "," } "," } "," } ); "," return arr; "," } , ",""," /** "," * 根据样式名称,获取节点的样式值 "," * @method getStyle "," * @param { String } name 要获取的样式名称 "," * @return { String } 返回样式值 "," * @example "," * ```javascript "," * node.getStyle('font-size'); "," * ``` "," */ "," getStyle: function ( name) { "," var cssStyle = this . getAttr( 'style' ); "," if (! cssStyle) { "," return '' "," } "," var reg = new RegExp( name + ':([^;]+)' , 'i' ); "," var match = cssStyle. match( reg); "," if ( match && match[ 0 ]) { "," return match[ 1 ] "," } "," return '' ; "," } , ",""," /** "," * 给节点设置样式 "," * @method setStyle "," * @param { String } name 要设置的的样式名称 "," * @param { String } val 要设置的的样值 "," * @example "," * ```javascript "," * node.setStyle('font-size', '12px'); "," * ``` "," */ "," setStyle: function ( name, val) { "," function exec( name, val) { "," var reg = new RegExp( name + ':([^;]+;?)' , 'gi' ); "," cssStyle = cssStyle. replace( reg, '' ); "," if ( val) { "," cssStyle = name + ':' + utils. unhtml( val) + ';' + cssStyle"," } ",""," } ",""," var cssStyle = this . getAttr( 'style' ); "," if (! cssStyle) { "," cssStyle = '' ; "," } "," if ( utils. isObject( name)) { "," for ( var a in name) { "," exec( a, name[ a]) "," } "," } else { "," exec( name, val) "," } "," this . setAttr( 'style' , utils. trim( cssStyle)) "," } , ",""," /** "," * 传入一个函数,递归遍历当前节点下的所有节点 "," * @method traversal "," * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数 "," * @example "," * ```javascript "," * traversal(node, function(){ "," * console.log(node.type); "," * }); "," * ``` "," */ "," traversal: function ( fn) { "," if ( this . children && this . children. length) { "," nodeTraversal( this , fn); "," } "," return this ; "," } "," } ","} )(); "];
+_$jscoverage['core/node.js'][15]++;
+(function () {
+ _$jscoverage['core/node.js'][37]++;
+ var uNode = (UE.uNode = (function (obj) {
+ _$jscoverage['core/node.js'][38]++;
+ this.type = obj.type;
+ _$jscoverage['core/node.js'][39]++;
+ this.data = obj.data;
+ _$jscoverage['core/node.js'][40]++;
+ this.tagName = obj.tagName;
+ _$jscoverage['core/node.js'][41]++;
+ this.parentNode = obj.parentNode;
+ _$jscoverage['core/node.js'][42]++;
+ this.attrs = (obj.attrs || {});
+ _$jscoverage['core/node.js'][43]++;
+ this.children = obj.children;
+}));
+ _$jscoverage['core/node.js'][45]++;
+ var indentChar = " ", breakChar = "\n";
+ _$jscoverage['core/node.js'][48]++;
+ function insertLine(arr, current, begin) {
+ _$jscoverage['core/node.js'][49]++;
+ arr.push(breakChar);
+ _$jscoverage['core/node.js'][50]++;
+ return (current + (begin? 1: -1));
+}
+ _$jscoverage['core/node.js'][53]++;
+ function insertIndent(arr, current) {
+ _$jscoverage['core/node.js'][55]++;
+ for (var i = 0; (i < current); (i++)) {
+ _$jscoverage['core/node.js'][56]++;
+ arr.push(indentChar);
+}
+}
+ _$jscoverage['core/node.js'][62]++;
+ uNode.createElement = (function (html) {
+ _$jscoverage['core/node.js'][63]++;
+ if (/[<>]/.test(html)) {
+ _$jscoverage['core/node.js'][64]++;
+ return UE.htmlparser(html).children[0];
+ }
+ else {
+ _$jscoverage['core/node.js'][66]++;
+ return new uNode({type: "element", children: [], tagName: html});
+ }
+});
+ _$jscoverage['core/node.js'][73]++;
+ uNode.createText = (function (data) {
+ _$jscoverage['core/node.js'][74]++;
+ return new (UE.uNode)({type: "text", "data": utils.unhtml((data || ""))});
+});
+ _$jscoverage['core/node.js'][79]++;
+ function nodeToHtml(node, arr, formatter, current) {
+ _$jscoverage['core/node.js'][80]++;
+ switch (node.type) {
+ case "root":
+ _$jscoverage['core/node.js'][82]++;
+ for (var i = 0, ci; (ci = node.children[(i++)]);) {
+ _$jscoverage['core/node.js'][84]++;
+ if ((formatter && (ci.type == "element") && (! dtd.$inlineWithA[ci.tagName]) && (i > 1))) {
+ _$jscoverage['core/node.js'][85]++;
+ insertLine(arr, current, true);
+ _$jscoverage['core/node.js'][86]++;
+ insertIndent(arr, current);
+ }
+ _$jscoverage['core/node.js'][88]++;
+ nodeToHtml(ci, arr, formatter, current);
+}
+ _$jscoverage['core/node.js'][90]++;
+ break;
+ case "text":
+ _$jscoverage['core/node.js'][92]++;
+ isText(node, arr);
+ _$jscoverage['core/node.js'][93]++;
+ break;
+ case "element":
+ _$jscoverage['core/node.js'][95]++;
+ isElement(node, arr, formatter, current);
+ _$jscoverage['core/node.js'][96]++;
+ break;
+ case "comment":
+ _$jscoverage['core/node.js'][98]++;
+ isComment(node, arr, formatter);
+ }
+ _$jscoverage['core/node.js'][100]++;
+ return arr;
+}
+ _$jscoverage['core/node.js'][103]++;
+ function isText(node, arr) {
+ _$jscoverage['core/node.js'][104]++;
+ arr.push(((node.parentNode.tagName == "pre")? node.data: node.data.replace(/[ ]{2}/g, " ")));
+}
+ _$jscoverage['core/node.js'][107]++;
+ function isElement(node, arr, formatter, current) {
+ _$jscoverage['core/node.js'][108]++;
+ var attrhtml = "";
+ _$jscoverage['core/node.js'][109]++;
+ if (node.attrs) {
+ _$jscoverage['core/node.js'][110]++;
+ attrhtml = [];
+ _$jscoverage['core/node.js'][111]++;
+ var attrs = node.attrs;
+ _$jscoverage['core/node.js'][112]++;
+ for (var a in attrs) {
+ _$jscoverage['core/node.js'][113]++;
+ attrhtml.push((a + ((attrs[a] !== undefined)? ("=\"" + utils.unhtml(attrs[a]) + "\""): "")));
+}
+ _$jscoverage['core/node.js'][115]++;
+ attrhtml = attrhtml.join(" ");
+ }
+ _$jscoverage['core/node.js'][117]++;
+ arr.push(("<" + node.tagName + (attrhtml? (" " + attrhtml): "") + (dtd.$empty[node.tagName]? "/": "") + ">"));
+ _$jscoverage['core/node.js'][122]++;
+ if ((formatter && (! dtd.$inlineWithA[node.tagName]) && (node.tagName != "pre"))) {
+ _$jscoverage['core/node.js'][123]++;
+ if ((node.children && node.children.length)) {
+ _$jscoverage['core/node.js'][124]++;
+ current = insertLine(arr, current, true);
+ _$jscoverage['core/node.js'][125]++;
+ insertIndent(arr, current);
+ }
+ }
+ _$jscoverage['core/node.js'][129]++;
+ if ((node.children && node.children.length)) {
+ _$jscoverage['core/node.js'][130]++;
+ for (var i = 0, ci; (ci = node.children[(i++)]);) {
+ _$jscoverage['core/node.js'][131]++;
+ if ((formatter && (ci.type == "element") && (! dtd.$inlineWithA[ci.tagName]) && (i > 1))) {
+ _$jscoverage['core/node.js'][132]++;
+ insertLine(arr, current);
+ _$jscoverage['core/node.js'][133]++;
+ insertIndent(arr, current);
+ }
+ _$jscoverage['core/node.js'][135]++;
+ nodeToHtml(ci, arr, formatter, current);
+}
+ }
+ _$jscoverage['core/node.js'][138]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['core/node.js'][139]++;
+ if ((formatter && (! dtd.$inlineWithA[node.tagName]) && (node.tagName != "pre"))) {
+ _$jscoverage['core/node.js'][141]++;
+ if ((node.children && node.children.length)) {
+ _$jscoverage['core/node.js'][142]++;
+ current = insertLine(arr, current);
+ _$jscoverage['core/node.js'][143]++;
+ insertIndent(arr, current);
+ }
+ }
+ _$jscoverage['core/node.js'][146]++;
+ arr.push(("" + node.tagName + ">"));
+ }
+}
+ _$jscoverage['core/node.js'][151]++;
+ function isComment(node, arr) {
+ _$jscoverage['core/node.js'][152]++;
+ arr.push((""));
+}
+ _$jscoverage['core/node.js'][155]++;
+ function getNodeById(root, id) {
+ _$jscoverage['core/node.js'][156]++;
+ var node;
+ _$jscoverage['core/node.js'][157]++;
+ if (((root.type == "element") && (root.getAttr("id") == id))) {
+ _$jscoverage['core/node.js'][158]++;
+ return root;
+ }
+ _$jscoverage['core/node.js'][160]++;
+ if ((root.children && root.children.length)) {
+ _$jscoverage['core/node.js'][161]++;
+ for (var i = 0, ci; (ci = root.children[(i++)]);) {
+ _$jscoverage['core/node.js'][162]++;
+ if ((node = getNodeById(ci, id))) {
+ _$jscoverage['core/node.js'][163]++;
+ return node;
+ }
+}
+ }
+}
+ _$jscoverage['core/node.js'][169]++;
+ function getNodesByTagName(node, tagName, arr) {
+ _$jscoverage['core/node.js'][170]++;
+ if (((node.type == "element") && (node.tagName == tagName))) {
+ _$jscoverage['core/node.js'][171]++;
+ arr.push(node);
+ }
+ _$jscoverage['core/node.js'][173]++;
+ if ((node.children && node.children.length)) {
+ _$jscoverage['core/node.js'][174]++;
+ for (var i = 0, ci; (ci = node.children[(i++)]);) {
+ _$jscoverage['core/node.js'][175]++;
+ getNodesByTagName(ci, tagName, arr);
+}
+ }
+}
+ _$jscoverage['core/node.js'][180]++;
+ function nodeTraversal(root, fn) {
+ _$jscoverage['core/node.js'][181]++;
+ if ((root.children && root.children.length)) {
+ _$jscoverage['core/node.js'][182]++;
+ for (var i = 0, ci; (ci = root.children[i]);) {
+ _$jscoverage['core/node.js'][183]++;
+ nodeTraversal(ci, fn);
+ _$jscoverage['core/node.js'][185]++;
+ if (ci.parentNode) {
+ _$jscoverage['core/node.js'][186]++;
+ if ((ci.children && ci.children.length)) {
+ _$jscoverage['core/node.js'][187]++;
+ fn(ci);
+ }
+ _$jscoverage['core/node.js'][189]++;
+ if (ci.parentNode) {
+ _$jscoverage['core/node.js'][189]++;
+ (i++);
+ }
+ }
+}
+ }
+ else {
+ _$jscoverage['core/node.js'][193]++;
+ fn(root);
+ }
+}
+ _$jscoverage['core/node.js'][198]++;
+ uNode.prototype = {toHtml: (function (formatter) {
+ _$jscoverage['core/node.js'][221]++;
+ var arr = [];
+ _$jscoverage['core/node.js'][222]++;
+ nodeToHtml(this, arr, formatter, 0);
+ _$jscoverage['core/node.js'][223]++;
+ return arr.join("");
+}), innerHTML: (function (htmlstr) {
+ _$jscoverage['core/node.js'][249]++;
+ if (((this.type != "element") || dtd.$empty[this.tagName])) {
+ _$jscoverage['core/node.js'][250]++;
+ return this;
+ }
+ _$jscoverage['core/node.js'][252]++;
+ if (utils.isString(htmlstr)) {
+ _$jscoverage['core/node.js'][253]++;
+ if (this.children) {
+ _$jscoverage['core/node.js'][254]++;
+ for (var i = 0, ci; (ci = this.children[(i++)]);) {
+ _$jscoverage['core/node.js'][255]++;
+ ci.parentNode = null;
+}
+ }
+ _$jscoverage['core/node.js'][258]++;
+ this.children = [];
+ _$jscoverage['core/node.js'][259]++;
+ var tmpRoot = UE.htmlparser(htmlstr);
+ _$jscoverage['core/node.js'][260]++;
+ for (var i = 0, ci = ci; (ci = tmpRoot.children[(i++)]);) {
+ _$jscoverage['core/node.js'][261]++;
+ this.children.push(ci);
+ _$jscoverage['core/node.js'][262]++;
+ ci.parentNode = this;
+}
+ _$jscoverage['core/node.js'][264]++;
+ return this;
+ }
+ else {
+ _$jscoverage['core/node.js'][266]++;
+ var tmpRoot = new (UE.uNode)({type: "root", children: this.children});
+ _$jscoverage['core/node.js'][270]++;
+ return tmpRoot.toHtml();
+ }
+}), innerText: (function (textStr) {
+ _$jscoverage['core/node.js'][297]++;
+ if (((this.type != "element") || dtd.$empty[this.tagName])) {
+ _$jscoverage['core/node.js'][298]++;
+ return this;
+ }
+ _$jscoverage['core/node.js'][300]++;
+ if (textStr) {
+ _$jscoverage['core/node.js'][301]++;
+ if (this.children) {
+ _$jscoverage['core/node.js'][302]++;
+ for (var i = 0, ci; (ci = this.children[(i++)]);) {
+ _$jscoverage['core/node.js'][303]++;
+ ci.parentNode = null;
+}
+ }
+ _$jscoverage['core/node.js'][306]++;
+ this.children = [];
+ _$jscoverage['core/node.js'][307]++;
+ this.appendChild(uNode.createText(textStr));
+ _$jscoverage['core/node.js'][308]++;
+ return this;
+ }
+ else {
+ _$jscoverage['core/node.js'][310]++;
+ return this.toHtml().replace(/<[^>]+>/g, "");
+ }
+}), getData: (function () {
+ _$jscoverage['core/node.js'][324]++;
+ if ((this.type == "element")) {
+ _$jscoverage['core/node.js'][325]++;
+ return "";
+ }
+ _$jscoverage['core/node.js'][326]++;
+ return this.data;
+}), firstChild: (function () {
+ _$jscoverage['core/node.js'][342]++;
+ return (this.children? this.children[0]: null);
+}), lastChild: (function () {
+ _$jscoverage['core/node.js'][358]++;
+ return (this.children? this.children[(this.children.length - 1)]: null);
+}), previousSibling: (function () {
+ _$jscoverage['core/node.js'][371]++;
+ var parent = this.parentNode;
+ _$jscoverage['core/node.js'][372]++;
+ for (var i = 0, ci; (ci = parent.children[i]); (i++)) {
+ _$jscoverage['core/node.js'][373]++;
+ if ((ci === this)) {
+ _$jscoverage['core/node.js'][374]++;
+ return ((i == 0)? null: parent.children[(i - 1)]);
+ }
+}
+}), nextSibling: (function () {
+ _$jscoverage['core/node.js'][390]++;
+ var parent = this.parentNode;
+ _$jscoverage['core/node.js'][391]++;
+ for (var i = 0, ci; (ci = parent.children[(i++)]);) {
+ _$jscoverage['core/node.js'][392]++;
+ if ((ci === this)) {
+ _$jscoverage['core/node.js'][393]++;
+ return parent.children[i];
+ }
+}
+}), replaceChild: (function (target, source) {
+ _$jscoverage['core/node.js'][410]++;
+ if (this.children) {
+ _$jscoverage['core/node.js'][411]++;
+ if (target.parentNode) {
+ _$jscoverage['core/node.js'][412]++;
+ target.parentNode.removeChild(target);
+ }
+ _$jscoverage['core/node.js'][414]++;
+ for (var i = 0, ci; (ci = this.children[i]); (i++)) {
+ _$jscoverage['core/node.js'][415]++;
+ if ((ci === source)) {
+ _$jscoverage['core/node.js'][416]++;
+ this.children.splice(i, 1, target);
+ _$jscoverage['core/node.js'][417]++;
+ source.parentNode = null;
+ _$jscoverage['core/node.js'][418]++;
+ target.parentNode = this;
+ _$jscoverage['core/node.js'][419]++;
+ return target;
+ }
+}
+ }
+}), appendChild: (function (node) {
+ _$jscoverage['core/node.js'][436]++;
+ if (((this.type == "root") || ((this.type == "element") && (! dtd.$empty[this.tagName])))) {
+ _$jscoverage['core/node.js'][437]++;
+ if ((! this.children)) {
+ _$jscoverage['core/node.js'][438]++;
+ this.children = [];
+ }
+ _$jscoverage['core/node.js'][440]++;
+ if (node.parentNode) {
+ _$jscoverage['core/node.js'][441]++;
+ node.parentNode.removeChild(node);
+ }
+ _$jscoverage['core/node.js'][443]++;
+ for (var i = 0, ci; (ci = this.children[i]); (i++)) {
+ _$jscoverage['core/node.js'][444]++;
+ if ((ci === node)) {
+ _$jscoverage['core/node.js'][445]++;
+ this.children.splice(i, 1);
+ _$jscoverage['core/node.js'][446]++;
+ break;
+ }
+}
+ _$jscoverage['core/node.js'][449]++;
+ this.children.push(node);
+ _$jscoverage['core/node.js'][450]++;
+ node.parentNode = this;
+ _$jscoverage['core/node.js'][451]++;
+ return node;
+ }
+}), insertBefore: (function (target, source) {
+ _$jscoverage['core/node.js'][469]++;
+ if (this.children) {
+ _$jscoverage['core/node.js'][470]++;
+ if (target.parentNode) {
+ _$jscoverage['core/node.js'][471]++;
+ target.parentNode.removeChild(target);
+ }
+ _$jscoverage['core/node.js'][473]++;
+ for (var i = 0, ci; (ci = this.children[i]); (i++)) {
+ _$jscoverage['core/node.js'][474]++;
+ if ((ci === source)) {
+ _$jscoverage['core/node.js'][475]++;
+ this.children.splice(i, 0, target);
+ _$jscoverage['core/node.js'][476]++;
+ target.parentNode = this;
+ _$jscoverage['core/node.js'][477]++;
+ return target;
+ }
+}
+ }
+}), insertAfter: (function (target, source) {
+ _$jscoverage['core/node.js'][496]++;
+ if (this.children) {
+ _$jscoverage['core/node.js'][497]++;
+ if (target.parentNode) {
+ _$jscoverage['core/node.js'][498]++;
+ target.parentNode.removeChild(target);
+ }
+ _$jscoverage['core/node.js'][500]++;
+ for (var i = 0, ci; (ci = this.children[i]); (i++)) {
+ _$jscoverage['core/node.js'][501]++;
+ if ((ci === source)) {
+ _$jscoverage['core/node.js'][502]++;
+ this.children.splice((i + 1), 0, target);
+ _$jscoverage['core/node.js'][503]++;
+ target.parentNode = this;
+ _$jscoverage['core/node.js'][504]++;
+ return target;
+ }
+}
+ }
+}), removeChild: (function (node, keepChildren) {
+ _$jscoverage['core/node.js'][523]++;
+ if (this.children) {
+ _$jscoverage['core/node.js'][524]++;
+ for (var i = 0, ci; (ci = this.children[i]); (i++)) {
+ _$jscoverage['core/node.js'][525]++;
+ if ((ci === node)) {
+ _$jscoverage['core/node.js'][526]++;
+ this.children.splice(i, 1);
+ _$jscoverage['core/node.js'][527]++;
+ ci.parentNode = null;
+ _$jscoverage['core/node.js'][528]++;
+ if ((keepChildren && ci.children && ci.children.length)) {
+ _$jscoverage['core/node.js'][529]++;
+ for (var j = 0, cj; (cj = ci.children[j]); (j++)) {
+ _$jscoverage['core/node.js'][530]++;
+ this.children.splice((i + j), 0, cj);
+ _$jscoverage['core/node.js'][531]++;
+ cj.parentNode = this;
+}
+ }
+ _$jscoverage['core/node.js'][535]++;
+ return ci;
+ }
+}
+ }
+}), getAttr: (function (attrName) {
+ _$jscoverage['core/node.js'][552]++;
+ return (this.attrs && this.attrs[attrName.toLowerCase()]);
+}), setAttr: (function (attrName, attrVal) {
+ _$jscoverage['core/node.js'][567]++;
+ if ((! attrName)) {
+ _$jscoverage['core/node.js'][568]++;
+ (delete this.attrs);
+ _$jscoverage['core/node.js'][569]++;
+ return;
+ }
+ _$jscoverage['core/node.js'][571]++;
+ if ((! this.attrs)) {
+ _$jscoverage['core/node.js'][572]++;
+ this.attrs = {};
+ }
+ _$jscoverage['core/node.js'][574]++;
+ if (utils.isObject(attrName)) {
+ _$jscoverage['core/node.js'][575]++;
+ for (var a in attrName) {
+ _$jscoverage['core/node.js'][576]++;
+ if ((! attrName[a])) {
+ _$jscoverage['core/node.js'][577]++;
+ (delete this.attrs[a]);
+ }
+ else {
+ _$jscoverage['core/node.js'][579]++;
+ this.attrs[a.toLowerCase()] = attrName[a];
+ }
+}
+ }
+ else {
+ _$jscoverage['core/node.js'][583]++;
+ if ((! attrVal)) {
+ _$jscoverage['core/node.js'][584]++;
+ (delete this.attrs[attrName]);
+ }
+ else {
+ _$jscoverage['core/node.js'][586]++;
+ this.attrs[attrName.toLowerCase()] = attrVal;
+ }
+ }
+}), getIndex: (function () {
+ _$jscoverage['core/node.js'][602]++;
+ var parent = this.parentNode;
+ _$jscoverage['core/node.js'][603]++;
+ for (var i = 0, ci; (ci = parent.children[i]); (i++)) {
+ _$jscoverage['core/node.js'][604]++;
+ if ((ci === this)) {
+ _$jscoverage['core/node.js'][605]++;
+ return i;
+ }
+}
+ _$jscoverage['core/node.js'][608]++;
+ return -1;
+}), getNodeById: (function (id) {
+ _$jscoverage['core/node.js'][622]++;
+ var node;
+ _$jscoverage['core/node.js'][623]++;
+ if ((this.children && this.children.length)) {
+ _$jscoverage['core/node.js'][624]++;
+ for (var i = 0, ci; (ci = this.children[(i++)]);) {
+ _$jscoverage['core/node.js'][625]++;
+ if ((node = getNodeById(ci, id))) {
+ _$jscoverage['core/node.js'][626]++;
+ return node;
+ }
+}
+ }
+}), getNodesByTagName: (function (tagNames) {
+ _$jscoverage['core/node.js'][643]++;
+ tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, " ").split(" ");
+ _$jscoverage['core/node.js'][644]++;
+ var arr = [], me = this;
+ _$jscoverage['core/node.js'][645]++;
+ utils.each(tagNames, (function (tagName) {
+ _$jscoverage['core/node.js'][646]++;
+ if ((me.children && me.children.length)) {
+ _$jscoverage['core/node.js'][647]++;
+ for (var i = 0, ci; (ci = me.children[(i++)]);) {
+ _$jscoverage['core/node.js'][648]++;
+ getNodesByTagName(ci, tagName, arr);
+}
+ }
+}));
+ _$jscoverage['core/node.js'][652]++;
+ return arr;
+}), getStyle: (function (name) {
+ _$jscoverage['core/node.js'][666]++;
+ var cssStyle = this.getAttr("style");
+ _$jscoverage['core/node.js'][667]++;
+ if ((! cssStyle)) {
+ _$jscoverage['core/node.js'][668]++;
+ return "";
+ }
+ _$jscoverage['core/node.js'][670]++;
+ var reg = new RegExp((name + ":([^;]+)"), "i");
+ _$jscoverage['core/node.js'][671]++;
+ var match = cssStyle.match(reg);
+ _$jscoverage['core/node.js'][672]++;
+ if ((match && match[0])) {
+ _$jscoverage['core/node.js'][673]++;
+ return match[1];
+ }
+ _$jscoverage['core/node.js'][675]++;
+ return "";
+}), setStyle: (function (name, val) {
+ _$jscoverage['core/node.js'][689]++;
+ function exec(name, val) {
+ _$jscoverage['core/node.js'][690]++;
+ var reg = new RegExp((name + ":([^;]+;?)"), "gi");
+ _$jscoverage['core/node.js'][691]++;
+ cssStyle = cssStyle.replace(reg, "");
+ _$jscoverage['core/node.js'][692]++;
+ if (val) {
+ _$jscoverage['core/node.js'][693]++;
+ cssStyle = (name + ":" + utils.unhtml(val) + ";" + cssStyle);
+ }
+}
+ _$jscoverage['core/node.js'][698]++;
+ var cssStyle = this.getAttr("style");
+ _$jscoverage['core/node.js'][699]++;
+ if ((! cssStyle)) {
+ _$jscoverage['core/node.js'][700]++;
+ cssStyle = "";
+ }
+ _$jscoverage['core/node.js'][702]++;
+ if (utils.isObject(name)) {
+ _$jscoverage['core/node.js'][703]++;
+ for (var a in name) {
+ _$jscoverage['core/node.js'][704]++;
+ exec(a, name[a]);
+}
+ }
+ else {
+ _$jscoverage['core/node.js'][707]++;
+ exec(name, val);
+ }
+ _$jscoverage['core/node.js'][709]++;
+ this.setAttr("style", utils.trim(cssStyle));
+}), traversal: (function (fn) {
+ _$jscoverage['core/node.js'][724]++;
+ if ((this.children && this.children.length)) {
+ _$jscoverage['core/node.js'][725]++;
+ nodeTraversal(this, fn);
+ }
+ _$jscoverage['core/node.js'][727]++;
+ return this;
+})};
+})();
diff --git a/_test/coverage/core/utils.js b/_test/coverage/core/utils.js
new file mode 100644
index 000000000..b1af08e77
--- /dev/null
+++ b/_test/coverage/core/utils.js
@@ -0,0 +1,888 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['core/utils.js']) {
+ _$jscoverage['core/utils.js'] = [];
+ _$jscoverage['core/utils.js'][14] = 0;
+ _$jscoverage['core/utils.js'][55] = 0;
+ _$jscoverage['core/utils.js'][56] = 0;
+ _$jscoverage['core/utils.js'][57] = 0;
+ _$jscoverage['core/utils.js'][58] = 0;
+ _$jscoverage['core/utils.js'][59] = 0;
+ _$jscoverage['core/utils.js'][62] = 0;
+ _$jscoverage['core/utils.js'][63] = 0;
+ _$jscoverage['core/utils.js'][64] = 0;
+ _$jscoverage['core/utils.js'][65] = 0;
+ _$jscoverage['core/utils.js'][87] = 0;
+ _$jscoverage['core/utils.js'][88] = 0;
+ _$jscoverage['core/utils.js'][89] = 0;
+ _$jscoverage['core/utils.js'][90] = 0;
+ _$jscoverage['core/utils.js'][91] = 0;
+ _$jscoverage['core/utils.js'][138] = 0;
+ _$jscoverage['core/utils.js'][139] = 0;
+ _$jscoverage['core/utils.js'][140] = 0;
+ _$jscoverage['core/utils.js'][141] = 0;
+ _$jscoverage['core/utils.js'][145] = 0;
+ _$jscoverage['core/utils.js'][172] = 0;
+ _$jscoverage['core/utils.js'][173] = 0;
+ _$jscoverage['core/utils.js'][174] = 0;
+ _$jscoverage['core/utils.js'][175] = 0;
+ _$jscoverage['core/utils.js'][176] = 0;
+ _$jscoverage['core/utils.js'][177] = 0;
+ _$jscoverage['core/utils.js'][181] = 0;
+ _$jscoverage['core/utils.js'][215] = 0;
+ _$jscoverage['core/utils.js'][217] = 0;
+ _$jscoverage['core/utils.js'][218] = 0;
+ _$jscoverage['core/utils.js'][219] = 0;
+ _$jscoverage['core/utils.js'][249] = 0;
+ _$jscoverage['core/utils.js'][250] = 0;
+ _$jscoverage['core/utils.js'][304] = 0;
+ _$jscoverage['core/utils.js'][305] = 0;
+ _$jscoverage['core/utils.js'][306] = 0;
+ _$jscoverage['core/utils.js'][307] = 0;
+ _$jscoverage['core/utils.js'][309] = 0;
+ _$jscoverage['core/utils.js'][348] = 0;
+ _$jscoverage['core/utils.js'][349] = 0;
+ _$jscoverage['core/utils.js'][350] = 0;
+ _$jscoverage['core/utils.js'][351] = 0;
+ _$jscoverage['core/utils.js'][352] = 0;
+ _$jscoverage['core/utils.js'][353] = 0;
+ _$jscoverage['core/utils.js'][356] = 0;
+ _$jscoverage['core/utils.js'][376] = 0;
+ _$jscoverage['core/utils.js'][377] = 0;
+ _$jscoverage['core/utils.js'][378] = 0;
+ _$jscoverage['core/utils.js'][379] = 0;
+ _$jscoverage['core/utils.js'][406] = 0;
+ _$jscoverage['core/utils.js'][439] = 0;
+ _$jscoverage['core/utils.js'][440] = 0;
+ _$jscoverage['core/utils.js'][441] = 0;
+ _$jscoverage['core/utils.js'][442] = 0;
+ _$jscoverage['core/utils.js'][444] = 0;
+ _$jscoverage['core/utils.js'][462] = 0;
+ _$jscoverage['core/utils.js'][463] = 0;
+ _$jscoverage['core/utils.js'][464] = 0;
+ _$jscoverage['core/utils.js'][466] = 0;
+ _$jscoverage['core/utils.js'][495] = 0;
+ _$jscoverage['core/utils.js'][496] = 0;
+ _$jscoverage['core/utils.js'][522] = 0;
+ _$jscoverage['core/utils.js'][527] = 0;
+ _$jscoverage['core/utils.js'][528] = 0;
+ _$jscoverage['core/utils.js'][529] = 0;
+ _$jscoverage['core/utils.js'][575] = 0;
+ _$jscoverage['core/utils.js'][577] = 0;
+ _$jscoverage['core/utils.js'][578] = 0;
+ _$jscoverage['core/utils.js'][579] = 0;
+ _$jscoverage['core/utils.js'][580] = 0;
+ _$jscoverage['core/utils.js'][581] = 0;
+ _$jscoverage['core/utils.js'][585] = 0;
+ _$jscoverage['core/utils.js'][590] = 0;
+ _$jscoverage['core/utils.js'][591] = 0;
+ _$jscoverage['core/utils.js'][592] = 0;
+ _$jscoverage['core/utils.js'][593] = 0;
+ _$jscoverage['core/utils.js'][594] = 0;
+ _$jscoverage['core/utils.js'][596] = 0;
+ _$jscoverage['core/utils.js'][598] = 0;
+ _$jscoverage['core/utils.js'][600] = 0;
+ _$jscoverage['core/utils.js'][605] = 0;
+ _$jscoverage['core/utils.js'][606] = 0;
+ _$jscoverage['core/utils.js'][607] = 0;
+ _$jscoverage['core/utils.js'][608] = 0;
+ _$jscoverage['core/utils.js'][609] = 0;
+ _$jscoverage['core/utils.js'][611] = 0;
+ _$jscoverage['core/utils.js'][612] = 0;
+ _$jscoverage['core/utils.js'][614] = 0;
+ _$jscoverage['core/utils.js'][615] = 0;
+ _$jscoverage['core/utils.js'][617] = 0;
+ _$jscoverage['core/utils.js'][618] = 0;
+ _$jscoverage['core/utils.js'][619] = 0;
+ _$jscoverage['core/utils.js'][620] = 0;
+ _$jscoverage['core/utils.js'][622] = 0;
+ _$jscoverage['core/utils.js'][623] = 0;
+ _$jscoverage['core/utils.js'][624] = 0;
+ _$jscoverage['core/utils.js'][625] = 0;
+ _$jscoverage['core/utils.js'][626] = 0;
+ _$jscoverage['core/utils.js'][627] = 0;
+ _$jscoverage['core/utils.js'][628] = 0;
+ _$jscoverage['core/utils.js'][631] = 0;
+ _$jscoverage['core/utils.js'][634] = 0;
+ _$jscoverage['core/utils.js'][635] = 0;
+ _$jscoverage['core/utils.js'][637] = 0;
+ _$jscoverage['core/utils.js'][672] = 0;
+ _$jscoverage['core/utils.js'][673] = 0;
+ _$jscoverage['core/utils.js'][674] = 0;
+ _$jscoverage['core/utils.js'][675] = 0;
+ _$jscoverage['core/utils.js'][687] = 0;
+ _$jscoverage['core/utils.js'][688] = 0;
+ _$jscoverage['core/utils.js'][689] = 0;
+ _$jscoverage['core/utils.js'][690] = 0;
+ _$jscoverage['core/utils.js'][691] = 0;
+ _$jscoverage['core/utils.js'][692] = 0;
+ _$jscoverage['core/utils.js'][693] = 0;
+ _$jscoverage['core/utils.js'][694] = 0;
+ _$jscoverage['core/utils.js'][696] = 0;
+ _$jscoverage['core/utils.js'][698] = 0;
+ _$jscoverage['core/utils.js'][708] = 0;
+ _$jscoverage['core/utils.js'][709] = 0;
+ _$jscoverage['core/utils.js'][710] = 0;
+ _$jscoverage['core/utils.js'][711] = 0;
+ _$jscoverage['core/utils.js'][713] = 0;
+ _$jscoverage['core/utils.js'][714] = 0;
+ _$jscoverage['core/utils.js'][715] = 0;
+ _$jscoverage['core/utils.js'][717] = 0;
+ _$jscoverage['core/utils.js'][718] = 0;
+ _$jscoverage['core/utils.js'][719] = 0;
+ _$jscoverage['core/utils.js'][721] = 0;
+ _$jscoverage['core/utils.js'][724] = 0;
+ _$jscoverage['core/utils.js'][727] = 0;
+ _$jscoverage['core/utils.js'][728] = 0;
+ _$jscoverage['core/utils.js'][729] = 0;
+ _$jscoverage['core/utils.js'][731] = 0;
+ _$jscoverage['core/utils.js'][732] = 0;
+ _$jscoverage['core/utils.js'][733] = 0;
+ _$jscoverage['core/utils.js'][734] = 0;
+ _$jscoverage['core/utils.js'][737] = 0;
+ _$jscoverage['core/utils.js'][742] = 0;
+ _$jscoverage['core/utils.js'][745] = 0;
+ _$jscoverage['core/utils.js'][746] = 0;
+ _$jscoverage['core/utils.js'][748] = 0;
+ _$jscoverage['core/utils.js'][759] = 0;
+ _$jscoverage['core/utils.js'][760] = 0;
+ _$jscoverage['core/utils.js'][761] = 0;
+ _$jscoverage['core/utils.js'][762] = 0;
+ _$jscoverage['core/utils.js'][763] = 0;
+ _$jscoverage['core/utils.js'][764] = 0;
+ _$jscoverage['core/utils.js'][765] = 0;
+ _$jscoverage['core/utils.js'][766] = 0;
+ _$jscoverage['core/utils.js'][768] = 0;
+ _$jscoverage['core/utils.js'][772] = 0;
+ _$jscoverage['core/utils.js'][792] = 0;
+ _$jscoverage['core/utils.js'][793] = 0;
+ _$jscoverage['core/utils.js'][795] = 0;
+ _$jscoverage['core/utils.js'][796] = 0;
+ _$jscoverage['core/utils.js'][797] = 0;
+ _$jscoverage['core/utils.js'][798] = 0;
+ _$jscoverage['core/utils.js'][800] = 0;
+ _$jscoverage['core/utils.js'][802] = 0;
+ _$jscoverage['core/utils.js'][803] = 0;
+ _$jscoverage['core/utils.js'][805] = 0;
+ _$jscoverage['core/utils.js'][807] = 0;
+ _$jscoverage['core/utils.js'][828] = 0;
+ _$jscoverage['core/utils.js'][830] = 0;
+ _$jscoverage['core/utils.js'][832] = 0;
+ _$jscoverage['core/utils.js'][833] = 0;
+ _$jscoverage['core/utils.js'][837] = 0;
+ _$jscoverage['core/utils.js'][838] = 0;
+ _$jscoverage['core/utils.js'][839] = 0;
+ _$jscoverage['core/utils.js'][840] = 0;
+ _$jscoverage['core/utils.js'][841] = 0;
+ _$jscoverage['core/utils.js'][842] = 0;
+ _$jscoverage['core/utils.js'][844] = 0;
+ _$jscoverage['core/utils.js'][845] = 0;
+ _$jscoverage['core/utils.js'][846] = 0;
+ _$jscoverage['core/utils.js'][847] = 0;
+ _$jscoverage['core/utils.js'][848] = 0;
+ _$jscoverage['core/utils.js'][849] = 0;
+ _$jscoverage['core/utils.js'][851] = 0;
+ _$jscoverage['core/utils.js'][852] = 0;
+ _$jscoverage['core/utils.js'][854] = 0;
+ _$jscoverage['core/utils.js'][856] = 0;
+ _$jscoverage['core/utils.js'][857] = 0;
+ _$jscoverage['core/utils.js'][860] = 0;
+ _$jscoverage['core/utils.js'][861] = 0;
+ _$jscoverage['core/utils.js'][862] = 0;
+ _$jscoverage['core/utils.js'][864] = 0;
+ _$jscoverage['core/utils.js'][865] = 0;
+ _$jscoverage['core/utils.js'][883] = 0;
+ _$jscoverage['core/utils.js'][884] = 0;
+ _$jscoverage['core/utils.js'][885] = 0;
+ _$jscoverage['core/utils.js'][886] = 0;
+ _$jscoverage['core/utils.js'][888] = 0;
+ _$jscoverage['core/utils.js'][890] = 0;
+ _$jscoverage['core/utils.js'][891] = 0;
+ _$jscoverage['core/utils.js'][892] = 0;
+ _$jscoverage['core/utils.js'][893] = 0;
+ _$jscoverage['core/utils.js'][895] = 0;
+ _$jscoverage['core/utils.js'][896] = 0;
+ _$jscoverage['core/utils.js'][898] = 0;
+ _$jscoverage['core/utils.js'][900] = 0;
+ _$jscoverage['core/utils.js'][901] = 0;
+ _$jscoverage['core/utils.js'][903] = 0;
+ _$jscoverage['core/utils.js'][905] = 0;
+ _$jscoverage['core/utils.js'][906] = 0;
+ _$jscoverage['core/utils.js'][907] = 0;
+ _$jscoverage['core/utils.js'][908] = 0;
+ _$jscoverage['core/utils.js'][909] = 0;
+ _$jscoverage['core/utils.js'][911] = 0;
+ _$jscoverage['core/utils.js'][912] = 0;
+ _$jscoverage['core/utils.js'][913] = 0;
+ _$jscoverage['core/utils.js'][915] = 0;
+ _$jscoverage['core/utils.js'][916] = 0;
+ _$jscoverage['core/utils.js'][918] = 0;
+ _$jscoverage['core/utils.js'][919] = 0;
+ _$jscoverage['core/utils.js'][921] = 0;
+ _$jscoverage['core/utils.js'][925] = 0;
+ _$jscoverage['core/utils.js'][926] = 0;
+ _$jscoverage['core/utils.js'][927] = 0;
+ _$jscoverage['core/utils.js'][928] = 0;
+ _$jscoverage['core/utils.js'][929] = 0;
+ _$jscoverage['core/utils.js'][930] = 0;
+ _$jscoverage['core/utils.js'][931] = 0;
+ _$jscoverage['core/utils.js'][935] = 0;
+ _$jscoverage['core/utils.js'][980] = 0;
+ _$jscoverage['core/utils.js'][981] = 0;
+ _$jscoverage['core/utils.js'][982] = 0;
+}
+_$jscoverage['core/utils.js'].source = ["/** "," * 工具函数包 "," * @file "," * @module UE.utils "," * @since 1.2.6.1 "," */ ","","/** "," * UEditor封装使用的静态工具函数 "," * @module UE.utils "," * @unfile "," */ ","","var utils = UE. utils = { ",""," /** "," * 用给定的迭代器遍历对象 "," * @method each "," * @param { Object } obj 需要遍历的对象 "," * @param { Function } iterator 迭代器, 该方法接受两个参数, 第一个参数是当前所处理的value, 第二个参数是当前遍历对象的key "," * @example "," * ```javascript "," * var demoObj = { "," * key1: 1, "," * key2: 2 "," * }; "," * "," * //output: key1: 1, key2: 2 "," * UE.utils.each( demoObj, funciton ( value, key ) { "," * "," * console.log( key + \":\" + value ); "," * "," * } ); "," * ``` "," */ ",""," /** "," * 用给定的迭代器遍历数组或类数组对象 "," * @method each "," * @param { Array } array 需要遍历的数组或者类数组 "," * @param { Function } iterator 迭代器, 该方法接受两个参数, 第一个参数是当前所处理的value, 第二个参数是当前遍历对象的key "," * @example "," * ```javascript "," * var divs = document.getElmentByTagNames( \"div\" ); "," * "," * //output: 0: DIV, 1: DIV ... "," * UE.utils.each( divs, funciton ( value, key ) { "," * "," * console.log( key + \":\" + value.tagName ); "," * "," * } ); "," * ``` "," */ "," each : function ( obj, iterator, context) { "," if ( obj == null ) return ; "," if ( obj. length === + obj. length) { "," for ( var i = 0 , l = obj. length; i < l; i++) { "," if ( iterator. call( context, obj[ i], i, obj) === false ) "," return false ; "," } "," } else { "," for ( var key in obj) { "," if ( obj. hasOwnProperty( key)) { "," if ( iterator. call( context, obj[ key], key, obj) === false ) "," return false ; "," } "," } "," } "," } , ",""," /** "," * 以给定对象作为原型创建一个新对象 "," * @method makeInstance "," * @param { Object } protoObject 该对象将作为新创建对象的原型 "," * @return { Object } 新的对象, 该对象的原型是给定的protoObject对象 "," * @example "," * ```javascript "," * "," * var protoObject = { sayHello: function () { console.log('Hello UEditor!'); } }; "," * "," * var newObject = UE.utils.makeInstance( protoObject ); "," * //output: Hello UEditor! "," * newObject.sayHello(); "," * ``` "," */ "," makeInstance: function ( obj) { "," var noop = new Function(); "," noop. prototype = obj; "," obj = new noop; "," noop. prototype = null ; "," return obj; "," } , ",""," /** "," * 将source对象中的属性扩展到target对象上 "," * @method extend "," * @remind 该方法将强制把source对象上的属性复制到target对象上 "," * @see UE.utils.extend(Object,Object,Boolean) "," * @param { Object } target 目标对象, 新的属性将附加到该对象上 "," * @param { Object } source 源对象, 该对象的属性会被附加到target对象上 "," * @return { Object } 返回target对象 "," * @example "," * ```javascript "," * "," * var target = { name: 'target', sex: 1 }, "," * source = { name: 'source', age: 17 }; "," * "," * UE.utils.extend( target, source ); "," * "," * //output: { name: 'source', sex: 1, age: 17 } "," * console.log( target ); "," * "," * ``` "," */ ",""," /** "," * 将source对象中的属性扩展到target对象上, 根据指定的isKeepTarget值决定是否保留目标对象中与 "," * 源对象属性名相同的属性值。 "," * @method extend "," * @param { Object } target 目标对象, 新的属性将附加到该对象上 "," * @param { Object } source 源对象, 该对象的属性会被附加到target对象上 "," * @param { Boolean } isKeepTarget 是否保留目标对象中与源对象中属性名相同的属性 "," * @return { Object } 返回target对象 "," * @example "," * ```javascript "," * "," * var target = { name: 'target', sex: 1 }, "," * source = { name: 'source', age: 17 }; "," * "," * UE.utils.extend( target, source, true ); "," * "," * //output: { name: 'target', sex: 1, age: 17 } "," * console.log( target ); "," * "," * ``` "," */ "," extend: function ( t, s, b) { "," if ( s) { "," for ( var k in s) { "," if (! b || ! t. hasOwnProperty( k)) { "," t[ k] = s[ k]; "," } "," } "," } "," return t; "," } , ",""," /** "," * 将给定的多个对象的属性复制到目标对象target上 "," * @method extend2 "," * @remind 该方法将强制把源对象上的属性复制到target对象上 "," * @remind 该方法支持两个及以上的参数, 从第二个参数开始, 其属性都会被复制到第一个参数上。 如果遇到同名的属性, "," * 将会覆盖掉之前的值。 "," * @param { Object } target 目标对象, 新的属性将附加到该对象上 "," * @param { Object... } source 源对象, 支持多个对象, 该对象的属性会被附加到target对象上 "," * @return { Object } 返回target对象 "," * @example "," * ```javascript "," * "," * var target = {}, "," * source1 = { name: 'source', age: 17 }, "," * source2 = { title: 'dev' }; "," * "," * UE.utils.extend2( target, source1, source2 ); "," * "," * //output: { name: 'source', age: 17, title: 'dev' } "," * console.log( target ); "," * "," * ``` "," */ "," extend2: function ( t) { "," var a = arguments; "," for ( var i = 1 ; i < a. length; i++) { "," var x = a[ i]; "," for ( var k in x) { "," if (! t. hasOwnProperty( k)) { "," t[ k] = x[ k]; "," } "," } "," } "," return t; "," } , ",""," /** "," * 模拟继承机制, 使得subClass继承自superClass "," * @method inherits "," * @param { Object } subClass 子类对象 "," * @param { Object } superClass 超类对象 "," * @warning 该方法只能让subClass继承超类的原型, subClass对象自身的属性和方法不会被继承 "," * @return { Object } 继承superClass后的子类对象 "," * @example "," * ```javascript "," * function SuperClass(){ "," * this.name = \"小李\"; "," * } "," * "," * SuperClass.prototype = { "," * hello:function(str){ "," * console.log(this.name + str); "," * } "," * } "," * "," * function SubClass(){ "," * this.name = \"小张\"; "," * } "," * "," * UE.utils.inherits(SubClass,SuperClass); "," * "," * var sub = new SubClass(); "," * //output: '小张早上好! "," * sub.hello(\"早上好!\"); "," * ``` "," */ "," inherits: function ( subClass, superClass) { "," var oldP = subClass. prototype, "," newP = utils. makeInstance( superClass. prototype); "," utils. extend( newP, oldP, true ); "," subClass. prototype = newP; "," return ( newP. constructor = subClass); "," } , ",""," /** "," * 用指定的context对象作为函数fn的上下文 "," * @method bind "," * @param { Function } fn 需要绑定上下文的函数对象 "," * @param { Object } content 函数fn新的上下文对象 "," * @return { Function } 一个新的函数, 该函数作为原始函数fn的代理, 将完成fn的上下文调换工作。 "," * @example "," * ```javascript "," * "," * var name = 'window', "," * newTest = null; "," * "," * function test () { "," * console.log( this.name ); "," * } "," * "," * newTest = UE.utils.bind( test, { name: 'object' } ); "," * "," * //output: object "," * newTest(); "," * "," * //output: window "," * test(); "," * "," * ``` "," */ "," bind: function ( fn, context) { "," return function () { "," return fn. apply( context, arguments); "," } ; "," } , ",""," /** "," * 创建延迟指定时间后执行的函数fn "," * @method defer "," * @param { Function } fn 需要延迟执行的函数对象 "," * @param { int } delay 延迟的时间, 单位是毫秒 "," * @warning 该方法的时间控制是不精确的,仅仅只能保证函数的执行是在给定的时间之后, "," * 而不能保证刚好到达延迟时间时执行。 "," * @return { Function } 目标函数fn的代理函数, 只有执行该函数才能起到延时效果 "," * @example "," * ```javascript "," * var start = 0; "," * "," * function test(){ "," * console.log( new Date() - start ); "," * } "," * "," * var testDefer = UE.utils.defer( test, 1000 ); "," * // "," * start = new Date(); "," * //output: (大约在1000毫秒之后输出) 1000 "," * testDefer(); "," * ``` "," */ ",""," /** "," * 创建延迟指定时间后执行的函数fn, 如果在延迟时间内再次执行该方法, 将会根据指定的exclusion的值, "," * 决定是否取消前一次函数的执行, 如果exclusion的值为true, 则取消执行,反之,将继续执行前一个方法。 "," * @method defer "," * @param { Function } fn 需要延迟执行的函数对象 "," * @param { int } delay 延迟的时间, 单位是毫秒 "," * @param { Boolean } exclusion 如果在延迟时间内再次执行该函数,该值将决定是否取消执行前一次函数的执行, "," * 值为true表示取消执行, 反之则将在执行前一次函数之后才执行本次函数调用。 "," * @warning 该方法的时间控制是不精确的,仅仅只能保证函数的执行是在给定的时间之后, "," * 而不能保证刚好到达延迟时间时执行。 "," * @return { Function } 目标函数fn的代理函数, 只有执行该函数才能起到延时效果 "," * @example "," * ```javascript "," * "," * function test(){ "," * console.log(1); "," * } "," * "," * var testDefer = UE.utils.defer( test, 1000, true ); "," * "," * //output: (两次调用仅有一次输出) 1 "," * testDefer(); "," * testDefer(); "," * ``` "," */ "," defer: function ( fn, delay, exclusion) { "," var timerID; "," return function () { "," if ( exclusion) { "," clearTimeout( timerID); "," } "," timerID = setTimeout( fn, delay); "," } ; "," } , ",""," /** "," * 获取元素item在数组array中首次出现的位置, 如果未找到item, 则返回-1 "," * @method indexOf "," * @remind 该方法的匹配过程使用的是恒等“===” "," * @param { Array } array 需要查找的数组对象 "," * @param { * } item 需要在目标数组中查找的值 "," * @return { int } 返回item在目标数组array中首次出现的位置, 如果在数组中未找到item, 则返回-1 "," * @example "," * ```javascript "," * var item = 1, "," * arr = [ 3, 4, 6, 8, 1, 1, 2 ]; "," * "," * //output: 4 "," * console.log( UE.utils.indexOf( arr, item ) ); "," * ``` "," */ ",""," /** "," * 获取元素item数组array中首次出现的位置, 如果未找到item, 则返回-1。通过start的值可以指定搜索的起始位置。 "," * @method indexOf "," * @remind 该方法的匹配过程使用的是恒等“===” "," * @param { Array } array 需要查找的数组对象 "," * @param { * } item 需要在目标数组中查找的值 "," * @param { int } start 搜索的起始位置 "," * @return { int } 返回item在目标数组array中的start位置之后首次出现的位置, 如果在数组中未找到item, 则返回-1 "," * @example "," * ```javascript "," * var item = 1, "," * arr = [ 3, 4, 6, 8, 1, 2, 8, 3, 2, 1, 1, 4 ]; "," * "," * //output: 9 "," * console.log( UE.utils.indexOf( arr, item, 5 ) ); "," * ``` "," */ "," indexOf: function ( array, item, start) { "," var index = - 1 ; "," start = this . isNumber( start) ? start : 0 ; "," this . each( array, function ( v, i) { "," if ( i >= start && v === item) { "," index = i; "," return false ; "," } "," } ); "," return index; "," } , ",""," /** "," * 移除数组array中所有的元素item "," * @method removeItem "," * @param { Array } array 要移除元素的目标数组 "," * @param { * } item 将要被移除的元素 "," * @remind 该方法的匹配过程使用的是恒等“===” "," * @example "," * ```javascript "," * var arr = [ 4, 5, 7, 1, 3, 4, 6 ]; "," * "," * UE.utils.removeItem( arr, 4 ); "," * //output: [ 5, 7, 1, 3, 6 ] "," * console.log( arr ); "," * "," * ``` "," */ "," removeItem: function ( array, item) { "," for ( var i = 0 , l = array. length; i < l; i++) { "," if ( array[ i] === item) { "," array. splice( i, 1 ); "," i--; "," } "," } "," } , ",""," /** "," * 删除字符串str的首尾空格 "," * @method trim "," * @param { String } str 需要删除首尾空格的字符串 "," * @return { String } 删除了首尾的空格后的字符串 "," * @example "," * ```javascript "," * "," * var str = \" UEdtior \"; "," * "," * //output: 9 "," * console.log( str.length ); "," * "," * //output: 7 "," * console.log( UE.utils.trim( \" UEdtior \" ).length ); "," * "," * //output: 9 "," * console.log( str.length ); "," * "," * ``` "," */ "," trim: function ( str) { "," return str. replace( /(^[ \\t\\n\\r]+)|([ \\t\\n\\r]+$)/g , '' ); "," } , ",""," /** "," * 将字符串str以','分隔成数组后,将该数组转换成哈希对象, 其生成的hash对象的key为数组中的元素, value为1 "," * @method listToMap "," * @warning 该方法在生成的hash对象中,会为每一个key同时生成一个另一个全大写的key。 "," * @param { String } str 该字符串将被以','分割为数组, 然后进行转化 "," * @return { Object } 转化之后的hash对象 "," * @example "," * ```javascript "," * "," * //output: Object {UEdtior: 1, UEDTIOR: 1, Hello: 1, HELLO: 1} "," * console.log( UE.utils.listToMap( 'UEdtior,Hello' ) ); "," * "," * ``` "," */ ",""," /** "," * 将字符串数组转换成哈希对象, 其生成的hash对象的key为数组中的元素, value为1 "," * @method listToMap "," * @warning 该方法在生成的hash对象中,会为每一个key同时生成一个另一个全大写的key。 "," * @param { Array } arr 字符串数组 "," * @return { Object } 转化之后的hash对象 "," * @example "," * ```javascript "," * "," * //output: Object {UEdtior: 1, UEDTIOR: 1, Hello: 1, HELLO: 1} "," * console.log( UE.utils.listToMap( [ 'UEdtior', 'Hello' ] ) ); "," * "," * ``` "," */ "," listToMap: function ( list) { "," if (! list) return {} ; "," list = utils. isArray( list) ? list : list. split( ',' ); "," for ( var i = 0 , ci, obj = {} ; ci = list[ i++];) { "," obj[ ci. toUpperCase()] = obj[ ci] = 1 ; "," } "," return obj; "," } , ",""," /** "," * 将str中的html符号转义,将转义“',&,<,\",>”五个字符 "," * @method unhtml "," * @param { String } str 需要转义的字符串 "," * @return { String } 转义后的字符串 "," * @example "," * ```javascript "," * var html = '<body>&</body>'; "," * "," * //output: <body>&</body> "," * console.log( UE.utils.unhtml( html ) ); "," * "," * ``` "," */ "," unhtml: function ( str, reg) { "," return str ? str. replace( reg || /[&<\">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g , function ( a, b) { "," if ( b) { "," return a; "," } else { "," return { "," '<' : '<' , "," '&' : '&' , "," '\"' : '"' , "," '>' : '>' , "," \"'\" : ''' "," } [ a] "," } ",""," } ) : '' ; "," } , ",""," /** "," * 将str中的转义字符还原成html字符 "," * @see UE.utils.unhtml(String); "," * @method html "," * @param { String } str 需要逆转义的字符串 "," * @return { String } 逆转义后的字符串 "," * @example "," * ```javascript "," * "," * var str = '<body>&</body>'; "," * "," * //output: <body>&</body> "," * console.log( UE.utils.html( str ) ); "," * "," * ``` "," */ "," html: function ( str) { "," return str ? str. replace( /&((g|l|quo)t|amp|#39);/g , function ( m) { "," return { "," '<' : '<' , "," '&' : '&' , "," '"' : '\"' , "," '>' : '>' , "," ''' : \"'\" "," } [ m] "," } ) : '' ; "," } , ",""," /** "," * 将css样式转换为驼峰的形式 "," * @method cssStyleToDomStyle "," * @param { String } cssName 需要转换的css样式名 "," * @return { String } 转换成驼峰形式后的css样式名 "," * @example "," * ```javascript "," * "," * var str = 'border-top'; "," * "," * //output: borderTop "," * console.log( UE.utils.cssStyleToDomStyle( str ) ); "," * "," * ``` "," */ "," cssStyleToDomStyle: function () { "," var test = document. createElement( 'div' ). style, "," cache = { "," 'float' : test. cssFloat != undefined ? 'cssFloat' : test. styleFloat != undefined ? 'styleFloat' : 'float' "," } ; ",""," return function ( cssName) { "," return cache[ cssName] || ( cache[ cssName] = cssName. toLowerCase(). replace( /-./g , function ( match) { "," return match. charAt( 1 ). toUpperCase(); "," } )); "," } ; "," } (), ",""," /** "," * 动态加载文件到doc中 "," * @method loadFile "," * @param { DomDocument } document 需要加载资源文件的文档对象 "," * @param { KeyValueMap } options 加载资源文件的属性集合, 取值请参考代码示例 "," * @example "," * ```javascript "," * "," * UE.utils.loadFile( document, { "," * src:\"test.js\", "," * tag:\"script\", "," * type:\"text/javascript\", "," * defer:\"defer\" "," * } ); "," * "," * ``` "," */ ",""," /** "," * 动态加载文件到doc中,加载成功后执行的回调函数fn "," * @method loadFile "," * @param { DomDocument } document 需要加载资源文件的文档对象 "," * @param { KeyValueMap } options 加载资源文件的属性集合, 该集合支持的值是script标签和style标签支持的所有属性。 "," * @param { Function } fn 资源文件加载成功之后执行的回调 "," * @warning 对于在同一个文档中多次加载同一URL的文件, 该方法会在第一次加载之后缓存该请求, "," * 在此之后的所有同一URL的请求, 将会直接出发回调。 "," * @example "," * ```javascript "," * "," * UE.utils.loadFile( document, { "," * src:\"test.js\", "," * tag:\"script\", "," * type:\"text/javascript\", "," * defer:\"defer\" "," * }, function () { "," * console.log('加载成功'); "," * } ); "," * "," * ``` "," */ "," loadFile: function () { "," var tmpList = []; ",""," function getItem( doc, obj) { "," try { "," for ( var i = 0 , ci; ci = tmpList[ i++];) { "," if ( ci. doc === doc && ci. url == ( obj. src || obj. href)) { "," return ci; "," } "," } "," } catch ( e) { "," return null ; "," } ",""," } ",""," return function ( doc, obj, fn) { "," var item = getItem( doc, obj); "," if ( item) { "," if ( item. ready) { "," fn && fn(); "," } else { "," item. funs. push( fn) "," } "," return ; "," } "," tmpList. push( { "," doc: doc, "," url: obj. src || obj. href, "," funs:[ fn] "," } ); "," if (! doc. body) { "," var html = []; "," for ( var p in obj) { "," if ( p == 'tag' ) continue ; "," html. push( p + '=\"' + obj[ p] + '\"' ) "," } "," doc. write( '<' + obj. tag + ' ' + html. join( ' ' ) + ' ></' + obj. tag + '>' ); "," return ; "," } "," if ( obj. id && doc. getElementById( obj. id)) { "," return ; "," } "," var element = doc. createElement( obj. tag); "," delete obj. tag; "," for ( var p in obj) { "," element. setAttribute( p, obj[ p]); "," } "," element. onload = element. onreadystatechange = function () { "," if (! this . readyState || /loaded|complete/ . test( this . readyState)) { "," item = getItem( doc, obj); "," if ( item. funs. length > 0 ) { "," item. ready = 1 ; "," for ( var fi; fi = item. funs. pop();) { "," fi(); "," } "," } "," element. onload = element. onreadystatechange = null ; "," } "," } ; "," element. onerror = function () { "," throw Error( 'The load ' + ( obj. href || obj. src) + ' fails,check the url settings of file ueditor.config.js ' ) "," } ; "," doc. getElementsByTagName( \"head\" )[ 0 ]. appendChild( element); "," } "," } (), ",""," /** "," * 判断obj对象是否为空 "," * @method isEmptyObject "," * @param { * } obj 需要判断的对象 "," * @remind 如果判断的对象是NULL, 将直接返回true, 如果是数组且为空, 返回true, 如果是字符串, 且字符串为空, "," * 返回true, 如果是普通对象, 且该对象没有任何实例属性, 返回true "," * @return { Boolean } 对象是否为空 "," * @example "," * ```javascript "," * "," * //output: true "," * console.log( UE.utils.isEmptyObject( {} ) ); "," * "," * //output: true "," * console.log( UE.utils.isEmptyObject( [] ) ); "," * "," * //output: true "," * console.log( UE.utils.isEmptyObject( \"\" ) ); "," * "," * //output: false "," * console.log( UE.utils.isEmptyObject( { key: 1 } ) ); "," * "," * //output: false "," * console.log( UE.utils.isEmptyObject( [1] ) ); "," * "," * //output: false "," * console.log( UE.utils.isEmptyObject( \"1\" ) ); "," * "," * ``` "," */ "," isEmptyObject: function ( obj) { "," if ( obj == null ) return true ; "," if ( this . isArray( obj) || this . isString( obj)) return obj. length === 0 ; "," for ( var key in obj) if ( obj. hasOwnProperty( key)) return false ; "," return true ; "," } , ",""," /* "," * 把rgb格式的颜色值转换成16进制格式 "," * @method fixColor "," * @param { String } rgb格式的颜色值 "," * @param { String } "," * @example "," * rgb(255,255,255) => \"#ffffff\" "," */ "," fixColor: function ( name, value) { "," if ( /color/i . test( name) && /rgba?/ . test( value)) { "," var array = value. split( \",\" ); "," if ( array. length > 3 ) "," return \"\" ; "," value = \"#\" ; "," for ( var i = 0 , color; color = array[ i++];) { "," color = parseInt( color. replace( /[^\\d]/gi , '' ), 10 ). toString( 16 ); "," value += color. length == 1 ? \"0\" + color : color; "," } "," value = value. toUpperCase(); "," } "," return value; "," } , ",""," /* "," * 只针对border,padding,margin做了处理,因为性能问题 "," * @public "," * @function "," * @param {String} val style字符串 "," */ "," optCss: function ( val) { "," var padding, margin, border; "," val = val. replace( /(padding|margin|border)\\-([^:]+):([^;]+);?/gi , function ( str, key, name, val) { "," if ( val. split( ' ' ). length == 1 ) { "," switch ( key) { "," case 'padding' : "," ! padding && ( padding = {} ); "," padding[ name] = val; "," return '' ; "," case 'margin' : "," ! margin && ( margin = {} ); "," margin[ name] = val; "," return '' ; "," case 'border' : "," return val == 'initial' ? '' : str; "," } "," } "," return str; "," } ); ",""," function opt( obj, name) { "," if (! obj) { "," return '' ; "," } "," var t = obj. top , b = obj. bottom, l = obj. left, r = obj. right, val = '' ; "," if (! t || ! l || ! b || ! r) { "," for ( var p in obj) { "," val += ';' + name + '-' + p + ':' + obj[ p] + ';' ; "," } "," } else { "," val += ';' + name + ':' + "," ( t == b && b == l && l == r ? t : "," t == b && l == r ? ( t + ' ' + l) : "," l == r ? ( t + ' ' + l + ' ' + b) : ( t + ' ' + r + ' ' + b + ' ' + l)) + ';' "," } "," return val; "," } ",""," val += opt( padding, 'padding' ) + opt( margin, 'margin' ); "," return val. replace( /^[ \\n\\r\\t;]*|[ \\n\\r\\t]*$/ , '' ). replace( /;([ \\n\\r\\t]+)|\\1;/g , ';' ) "," . replace( /(&((l|g)t|quot|#39))?;{2,}/g , function ( a, b) { "," return b ? b + \";;\" : ';' "," } ); "," } , ",""," /* "," * 深度克隆对象,从source到target "," * @method clone "," * @grammar UE.utils.clone(source) => anthorObj 新的对象是完整的source的副本 "," * @grammar UE.utils.clone(source,target) => target包含了source的所有内容,重名会覆盖 "," */ "," clone: function ( source, target) { "," var tmp; "," target = target || {} ; "," for ( var i in source) { "," if ( source. hasOwnProperty( i)) { "," tmp = source[ i]; "," if ( typeof tmp == 'object' ) { "," target[ i] = utils. isArray( tmp) ? [] : {} ; "," utils. clone( source[ i], target[ i]) "," } else { "," target[ i] = tmp; "," } "," } "," } "," return target; "," } , ",""," /** "," * 把cm/pt为单位的值转换为px为单位的值 "," * @method transUnitToPx "," * @param { String } 待转换的带单位的字符串 "," * @return { String } 转换为px为计量单位的值的字符串 "," * @example "," * ```javascript "," * "," * //output: 500px "," * console.log( UE.utils.transUnitToPx( '20cm' ) ); "," * "," * //output: 27px "," * console.log( UE.utils.transUnitToPx( '20pt' ) ); "," * "," * ``` "," */ "," transUnitToPx: function ( val) { "," if (! /(pt|cm)/ . test( val)) { "," return val"," } "," var unit; "," val. replace( /([\\d.]+)(\\w+)/ , function ( str, v, u) { "," val = v; "," unit = u; "," } ); "," switch ( unit) { "," case 'cm' : "," val = parseFloat( val) * 25 ; "," break ; "," case 'pt' : "," val = Math. round( parseFloat( val) * 96 / 72 ); "," } "," return val + ( val ? 'px' : '' ); "," } , ",""," /** "," * 在dom树ready之后执行给定的回调函数 "," * @method domReady "," * @remind 如果在执行该方法的时候, dom树已经ready, 那么回调函数将立刻执行 "," * @param { Function } fn dom树ready之后的回调函数 "," * @example "," * ```javascript "," * "," * UE.utils.domReady( function () { "," * "," * console.log('123'); "," * "," * } ); "," * "," * ``` "," */ "," domReady: function () { ",""," var fnArr = []; ",""," function doReady( doc) { "," //确保onready只执行一次 "," doc. isReady = true ; "," for ( var ci; ci = fnArr. pop(); ci()) { "," } "," } ",""," return function ( onready, win) { "," win = win || window; "," var doc = win. document; "," onready && fnArr. push( onready); "," if ( doc. readyState === \"complete\" ) { "," doReady( doc); "," } else { "," doc. isReady && doReady( doc); "," if ( browser. ie) { "," ( function () { "," if ( doc. isReady) return ; "," try { "," doc. documentElement. doScroll( \"left\" ); "," } catch ( error) { "," setTimeout( arguments. callee, 0 ); "," return ; "," } "," doReady( doc); "," } )(); "," win. attachEvent( 'onload' , function () { "," doReady( doc) "," } ); "," } else { "," doc. addEventListener( \"DOMContentLoaded\" , function () { "," doc. removeEventListener( \"DOMContentLoaded\" , arguments. callee, false ); "," doReady( doc); "," } , false ); "," win. addEventListener( 'load' , function () { "," doReady( doc) "," } , false ); "," } "," } ",""," } "," } (), ",""," /* "," * 动态添加css样式 "," * @method cssRule "," * @param { String } 节点名称 "," * @grammar UE.utils.cssRule('添加的样式的节点名称',['样式','放到哪个document上']) "," * @grammar UE.utils.cssRule('body','body{background:#ccc}') => null //给body添加背景颜色 "," * @grammar UE.utils.cssRule('body') =>样式的字符串 //取得key值为body的样式的内容,如果没有找到key值先关的样式将返回空,例如刚才那个背景颜色,将返回 body{background:#ccc} "," * @grammar UE.utils.cssRule('body','') =>null //清空给定的key值的背景颜色 "," */ "," cssRule: browser. ie ? function ( key, style, doc) { "," var indexList, index; "," doc = doc || document; "," if ( doc. indexList) { "," indexList = doc. indexList; "," } else { "," indexList = doc. indexList = {} ; "," } "," var sheetStyle; "," if (! indexList[ key]) { "," if ( style === undefined) { "," return '' "," } "," sheetStyle = doc. createStyleSheet( '' , index = doc. styleSheets. length); "," indexList[ key] = index; "," } else { "," sheetStyle = doc. styleSheets[ indexList[ key]]; "," } "," if ( style === undefined) { "," return sheetStyle. cssText"," } "," sheetStyle. cssText = style || '' "," } : function ( key, style, doc) { "," doc = doc || document; "," var head = doc. getElementsByTagName( 'head' )[ 0 ], node; "," if (!( node = doc. getElementById( key))) { "," if ( style === undefined) { "," return '' "," } "," node = doc. createElement( 'style' ); "," node. id = key; "," head. appendChild( node) "," } "," if ( style === undefined) { "," return node. innerHTML"," } "," if ( style !== '' ) { "," node. innerHTML = style; "," } else { "," head. removeChild( node) "," } "," } , "," sort: function ( array, compareFn) { "," compareFn = compareFn || function ( item1, item2) { return item1. localeCompare( item2); } ; "," for ( var i= 0 , len = array. length; i< len; i++) { "," for ( var j = i, length = array. length; j< length; j++) { "," if ( compareFn( array[ i], array[ j]) > 0 ) { "," var t = array[ i]; "," array[ i] = array[ j]; "," array[ j] = t; "," } "," } "," } "," return array; "," } ","","} ; ","/** "," * 判断给定的对象是否是字符串 "," * @method isString "," * @param { * } object 需要判断的对象 "," * @return { Boolean } 给定的对象是否是字符串 "," */ ","","/** "," * 判断给定的对象是否是数组 "," * @method isArray "," * @param { * } object 需要判断的对象 "," * @return { Boolean } 给定的对象是否是数组 "," */ ","","/** "," * 判断给定的对象是否是一个Function "," * @method isFunction "," * @param { * } object 需要判断的对象 "," * @return { Boolean } 给定的对象是否是Function "," */ ","","/** "," * 判断给定的对象是否是Number "," * @method isNumber "," * @param { * } object 需要判断的对象 "," * @return { Boolean } 给定的对象是否是Number "," */ ","","/** "," * 判断给定的对象是否是一个正则表达式 "," * @method isRegExp "," * @param { * } object 需要判断的对象 "," * @return { Boolean } 给定的对象是否是正则表达式 "," */ ","","/** "," * 判断给定的对象是否是一个普通对象 "," * @method isObject "," * @param { * } object 需要判断的对象 "," * @return { Boolean } 给定的对象是否是普通对象 "," */ ","utils. each([ 'String' , 'Function' , 'Array' , 'Number' , 'RegExp' , 'Object' ], function ( v) { "," UE. utils[ 'is' + v] = function ( obj) { "," return Object. prototype. toString. apply( obj) == '[object ' + v + ']' ; "," } ","} ); "];
+_$jscoverage['core/utils.js'][14]++;
+var utils = (UE.utils = {each: (function (obj, iterator, context) {
+ _$jscoverage['core/utils.js'][55]++;
+ if ((obj == null)) {
+ _$jscoverage['core/utils.js'][55]++;
+ return;
+ }
+ _$jscoverage['core/utils.js'][56]++;
+ if ((obj.length === (+ obj.length))) {
+ _$jscoverage['core/utils.js'][57]++;
+ for (var i = 0, l = obj.length; (i < l); (i++)) {
+ _$jscoverage['core/utils.js'][58]++;
+ if ((iterator.call(context, obj[i], i, obj) === false)) {
+ _$jscoverage['core/utils.js'][59]++;
+ return false;
+ }
+}
+ }
+ else {
+ _$jscoverage['core/utils.js'][62]++;
+ for (var key in obj) {
+ _$jscoverage['core/utils.js'][63]++;
+ if (obj.hasOwnProperty(key)) {
+ _$jscoverage['core/utils.js'][64]++;
+ if ((iterator.call(context, obj[key], key, obj) === false)) {
+ _$jscoverage['core/utils.js'][65]++;
+ return false;
+ }
+ }
+}
+ }
+}), makeInstance: (function (obj) {
+ _$jscoverage['core/utils.js'][87]++;
+ var noop = new Function();
+ _$jscoverage['core/utils.js'][88]++;
+ noop.prototype = obj;
+ _$jscoverage['core/utils.js'][89]++;
+ obj = new noop();
+ _$jscoverage['core/utils.js'][90]++;
+ noop.prototype = null;
+ _$jscoverage['core/utils.js'][91]++;
+ return obj;
+}), extend: (function (t, s, b) {
+ _$jscoverage['core/utils.js'][138]++;
+ if (s) {
+ _$jscoverage['core/utils.js'][139]++;
+ for (var k in s) {
+ _$jscoverage['core/utils.js'][140]++;
+ if (((! b) || (! t.hasOwnProperty(k)))) {
+ _$jscoverage['core/utils.js'][141]++;
+ t[k] = s[k];
+ }
+}
+ }
+ _$jscoverage['core/utils.js'][145]++;
+ return t;
+}), extend2: (function (t) {
+ _$jscoverage['core/utils.js'][172]++;
+ var a = arguments;
+ _$jscoverage['core/utils.js'][173]++;
+ for (var i = 1; (i < a.length); (i++)) {
+ _$jscoverage['core/utils.js'][174]++;
+ var x = a[i];
+ _$jscoverage['core/utils.js'][175]++;
+ for (var k in x) {
+ _$jscoverage['core/utils.js'][176]++;
+ if ((! t.hasOwnProperty(k))) {
+ _$jscoverage['core/utils.js'][177]++;
+ t[k] = x[k];
+ }
+}
+}
+ _$jscoverage['core/utils.js'][181]++;
+ return t;
+}), inherits: (function (subClass, superClass) {
+ _$jscoverage['core/utils.js'][215]++;
+ var oldP = subClass.prototype, newP = utils.makeInstance(superClass.prototype);
+ _$jscoverage['core/utils.js'][217]++;
+ utils.extend(newP, oldP, true);
+ _$jscoverage['core/utils.js'][218]++;
+ subClass.prototype = newP;
+ _$jscoverage['core/utils.js'][219]++;
+ return (newP.constructor = subClass);
+}), bind: (function (fn, context) {
+ _$jscoverage['core/utils.js'][249]++;
+ return (function () {
+ _$jscoverage['core/utils.js'][250]++;
+ return fn.apply(context, arguments);
+});
+}), defer: (function (fn, delay, exclusion) {
+ _$jscoverage['core/utils.js'][304]++;
+ var timerID;
+ _$jscoverage['core/utils.js'][305]++;
+ return (function () {
+ _$jscoverage['core/utils.js'][306]++;
+ if (exclusion) {
+ _$jscoverage['core/utils.js'][307]++;
+ clearTimeout(timerID);
+ }
+ _$jscoverage['core/utils.js'][309]++;
+ timerID = setTimeout(fn, delay);
+});
+}), indexOf: (function (array, item, start) {
+ _$jscoverage['core/utils.js'][348]++;
+ var index = -1;
+ _$jscoverage['core/utils.js'][349]++;
+ start = (this.isNumber(start)? start: 0);
+ _$jscoverage['core/utils.js'][350]++;
+ this.each(array, (function (v, i) {
+ _$jscoverage['core/utils.js'][351]++;
+ if (((i >= start) && (v === item))) {
+ _$jscoverage['core/utils.js'][352]++;
+ index = i;
+ _$jscoverage['core/utils.js'][353]++;
+ return false;
+ }
+}));
+ _$jscoverage['core/utils.js'][356]++;
+ return index;
+}), removeItem: (function (array, item) {
+ _$jscoverage['core/utils.js'][376]++;
+ for (var i = 0, l = array.length; (i < l); (i++)) {
+ _$jscoverage['core/utils.js'][377]++;
+ if ((array[i] === item)) {
+ _$jscoverage['core/utils.js'][378]++;
+ array.splice(i, 1);
+ _$jscoverage['core/utils.js'][379]++;
+ (i--);
+ }
+}
+}), trim: (function (str) {
+ _$jscoverage['core/utils.js'][406]++;
+ return str.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, "");
+}), listToMap: (function (list) {
+ _$jscoverage['core/utils.js'][439]++;
+ if ((! list)) {
+ _$jscoverage['core/utils.js'][439]++;
+ return ({});
+ }
+ _$jscoverage['core/utils.js'][440]++;
+ list = (utils.isArray(list)? list: list.split(","));
+ _$jscoverage['core/utils.js'][441]++;
+ for (var i = 0, ci, obj = {}; (ci = list[(i++)]);) {
+ _$jscoverage['core/utils.js'][442]++;
+ obj[ci.toUpperCase()] = (obj[ci] = 1);
+}
+ _$jscoverage['core/utils.js'][444]++;
+ return obj;
+}), unhtml: (function (str, reg) {
+ _$jscoverage['core/utils.js'][462]++;
+ return (str? str.replace((reg || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g), (function (a, b) {
+ _$jscoverage['core/utils.js'][463]++;
+ if (b) {
+ _$jscoverage['core/utils.js'][464]++;
+ return a;
+ }
+ else {
+ _$jscoverage['core/utils.js'][466]++;
+ return {"<": "<", "&": "&", "\"": """, ">": ">", "'": "'"}[a];
+ }
+})): "");
+}), html: (function (str) {
+ _$jscoverage['core/utils.js'][495]++;
+ return (str? str.replace(/&((g|l|quo)t|amp|#39);/g, (function (m) {
+ _$jscoverage['core/utils.js'][496]++;
+ return {"<": "<", "&": "&", """: "\"", ">": ">", "'": "'"}[m];
+})): "");
+}), cssStyleToDomStyle: (function () {
+ _$jscoverage['core/utils.js'][522]++;
+ var test = document.createElement("div").style, cache = {"float": ((test.cssFloat != undefined)? "cssFloat": ((test.styleFloat != undefined)? "styleFloat": "float"))};
+ _$jscoverage['core/utils.js'][527]++;
+ return (function (cssName) {
+ _$jscoverage['core/utils.js'][528]++;
+ return (cache[cssName] || (cache[cssName] = cssName.toLowerCase().replace(/-./g, (function (match) {
+ _$jscoverage['core/utils.js'][529]++;
+ return match.charAt(1).toUpperCase();
+}))));
+});
+})(), loadFile: (function () {
+ _$jscoverage['core/utils.js'][575]++;
+ var tmpList = [];
+ _$jscoverage['core/utils.js'][577]++;
+ function getItem(doc, obj) {
+ _$jscoverage['core/utils.js'][578]++;
+ try {
+ _$jscoverage['core/utils.js'][579]++;
+ for (var i = 0, ci; (ci = tmpList[(i++)]);) {
+ _$jscoverage['core/utils.js'][580]++;
+ if (((ci.doc === doc) && (ci.url == (obj.src || obj.href)))) {
+ _$jscoverage['core/utils.js'][581]++;
+ return ci;
+ }
+}
+ }
+ catch (e) {
+ _$jscoverage['core/utils.js'][585]++;
+ return null;
+ }
+}
+ _$jscoverage['core/utils.js'][590]++;
+ return (function (doc, obj, fn) {
+ _$jscoverage['core/utils.js'][591]++;
+ var item = getItem(doc, obj);
+ _$jscoverage['core/utils.js'][592]++;
+ if (item) {
+ _$jscoverage['core/utils.js'][593]++;
+ if (item.ready) {
+ _$jscoverage['core/utils.js'][594]++;
+ (fn && fn());
+ }
+ else {
+ _$jscoverage['core/utils.js'][596]++;
+ item.funs.push(fn);
+ }
+ _$jscoverage['core/utils.js'][598]++;
+ return;
+ }
+ _$jscoverage['core/utils.js'][600]++;
+ tmpList.push({doc: doc, url: (obj.src || obj.href), funs: [fn]});
+ _$jscoverage['core/utils.js'][605]++;
+ if ((! doc.body)) {
+ _$jscoverage['core/utils.js'][606]++;
+ var html = [];
+ _$jscoverage['core/utils.js'][607]++;
+ for (var p in obj) {
+ _$jscoverage['core/utils.js'][608]++;
+ if ((p == "tag")) {
+ _$jscoverage['core/utils.js'][608]++;
+ continue;
+ }
+ _$jscoverage['core/utils.js'][609]++;
+ html.push((p + "=\"" + obj[p] + "\""));
+}
+ _$jscoverage['core/utils.js'][611]++;
+ doc.write(("<" + obj.tag + " " + html.join(" ") + " >" + obj.tag + ">"));
+ _$jscoverage['core/utils.js'][612]++;
+ return;
+ }
+ _$jscoverage['core/utils.js'][614]++;
+ if ((obj.id && doc.getElementById(obj.id))) {
+ _$jscoverage['core/utils.js'][615]++;
+ return;
+ }
+ _$jscoverage['core/utils.js'][617]++;
+ var element = doc.createElement(obj.tag);
+ _$jscoverage['core/utils.js'][618]++;
+ (delete obj.tag);
+ _$jscoverage['core/utils.js'][619]++;
+ for (var p = p in obj) {
+ _$jscoverage['core/utils.js'][620]++;
+ element.setAttribute(p, obj[p]);
+}
+ _$jscoverage['core/utils.js'][622]++;
+ element.onload = (element.onreadystatechange = (function () {
+ _$jscoverage['core/utils.js'][623]++;
+ if (((! this.readyState) || /loaded|complete/.test(this.readyState))) {
+ _$jscoverage['core/utils.js'][624]++;
+ item = getItem(doc, obj);
+ _$jscoverage['core/utils.js'][625]++;
+ if ((item.funs.length > 0)) {
+ _$jscoverage['core/utils.js'][626]++;
+ item.ready = 1;
+ _$jscoverage['core/utils.js'][627]++;
+ for (var fi; (fi = item.funs.pop());) {
+ _$jscoverage['core/utils.js'][628]++;
+ fi();
+}
+ }
+ _$jscoverage['core/utils.js'][631]++;
+ element.onload = (element.onreadystatechange = null);
+ }
+}));
+ _$jscoverage['core/utils.js'][634]++;
+ element.onerror = (function () {
+ _$jscoverage['core/utils.js'][635]++;
+ throw Error(("The load " + (obj.href || obj.src) + " fails,check the url settings of file ueditor.config.js "));
+});
+ _$jscoverage['core/utils.js'][637]++;
+ doc.getElementsByTagName("head")[0].appendChild(element);
+});
+})(), isEmptyObject: (function (obj) {
+ _$jscoverage['core/utils.js'][672]++;
+ if ((obj == null)) {
+ _$jscoverage['core/utils.js'][672]++;
+ return true;
+ }
+ _$jscoverage['core/utils.js'][673]++;
+ if ((this.isArray(obj) || this.isString(obj))) {
+ _$jscoverage['core/utils.js'][673]++;
+ return (obj.length === 0);
+ }
+ _$jscoverage['core/utils.js'][674]++;
+ for (var key in obj) {
+ _$jscoverage['core/utils.js'][674]++;
+ if (obj.hasOwnProperty(key)) {
+ _$jscoverage['core/utils.js'][674]++;
+ return false;
+ }
+}
+ _$jscoverage['core/utils.js'][675]++;
+ return true;
+}), fixColor: (function (name, value) {
+ _$jscoverage['core/utils.js'][687]++;
+ if ((/color/i.test(name) && /rgba?/.test(value))) {
+ _$jscoverage['core/utils.js'][688]++;
+ var array = value.split(",");
+ _$jscoverage['core/utils.js'][689]++;
+ if ((array.length > 3)) {
+ _$jscoverage['core/utils.js'][690]++;
+ return "";
+ }
+ _$jscoverage['core/utils.js'][691]++;
+ value = "#";
+ _$jscoverage['core/utils.js'][692]++;
+ for (var i = 0, color; (color = array[(i++)]);) {
+ _$jscoverage['core/utils.js'][693]++;
+ color = parseInt(color.replace(/[^\d]/gi, ""), 10).toString(16);
+ _$jscoverage['core/utils.js'][694]++;
+ value += ((color.length == 1)? ("0" + color): color);
+}
+ _$jscoverage['core/utils.js'][696]++;
+ value = value.toUpperCase();
+ }
+ _$jscoverage['core/utils.js'][698]++;
+ return value;
+}), optCss: (function (val) {
+ _$jscoverage['core/utils.js'][708]++;
+ var padding, margin, border;
+ _$jscoverage['core/utils.js'][709]++;
+ val = val.replace(/(padding|margin|border)\-([^:]+):([^;]+);?/gi, (function (str, key, name, val) {
+ _$jscoverage['core/utils.js'][710]++;
+ if ((val.split(" ").length == 1)) {
+ _$jscoverage['core/utils.js'][711]++;
+ switch (key) {
+ case "padding":
+ _$jscoverage['core/utils.js'][713]++;
+ ((! padding) && (padding = {}));
+ _$jscoverage['core/utils.js'][714]++;
+ padding[name] = val;
+ _$jscoverage['core/utils.js'][715]++;
+ return "";
+ case "margin":
+ _$jscoverage['core/utils.js'][717]++;
+ ((! margin) && (margin = {}));
+ _$jscoverage['core/utils.js'][718]++;
+ margin[name] = val;
+ _$jscoverage['core/utils.js'][719]++;
+ return "";
+ case "border":
+ _$jscoverage['core/utils.js'][721]++;
+ return ((val == "initial")? "": str);
+ }
+ }
+ _$jscoverage['core/utils.js'][724]++;
+ return str;
+}));
+ _$jscoverage['core/utils.js'][727]++;
+ function opt(obj, name) {
+ _$jscoverage['core/utils.js'][728]++;
+ if ((! obj)) {
+ _$jscoverage['core/utils.js'][729]++;
+ return "";
+ }
+ _$jscoverage['core/utils.js'][731]++;
+ var t = obj.top, b = obj.bottom, l = obj.left, r = obj.right, val = "";
+ _$jscoverage['core/utils.js'][732]++;
+ if (((! t) || (! l) || (! b) || (! r))) {
+ _$jscoverage['core/utils.js'][733]++;
+ for (var p in obj) {
+ _$jscoverage['core/utils.js'][734]++;
+ val += (";" + name + "-" + p + ":" + obj[p] + ";");
+}
+ }
+ else {
+ _$jscoverage['core/utils.js'][737]++;
+ val += (";" + name + ":" + (((t == b) && (b == l) && (l == r))? t: (((t == b) && (l == r))? (t + " " + l): ((l == r)? (t + " " + l + " " + b): (t + " " + r + " " + b + " " + l)))) + ";");
+ }
+ _$jscoverage['core/utils.js'][742]++;
+ return val;
+}
+ _$jscoverage['core/utils.js'][745]++;
+ val += (opt(padding, "padding") + opt(margin, "margin"));
+ _$jscoverage['core/utils.js'][746]++;
+ return val.replace(/^[ \n\r\t;]*|[ \n\r\t]*$/, "").replace(/;([ \n\r\t]+)|\1;/g, ";").replace(/(&((l|g)t|quot|#39))?;{2,}/g, (function (a, b) {
+ _$jscoverage['core/utils.js'][748]++;
+ return (b? (b + ";;"): ";");
+}));
+}), clone: (function (source, target) {
+ _$jscoverage['core/utils.js'][759]++;
+ var tmp;
+ _$jscoverage['core/utils.js'][760]++;
+ target = (target || {});
+ _$jscoverage['core/utils.js'][761]++;
+ for (var i in source) {
+ _$jscoverage['core/utils.js'][762]++;
+ if (source.hasOwnProperty(i)) {
+ _$jscoverage['core/utils.js'][763]++;
+ tmp = source[i];
+ _$jscoverage['core/utils.js'][764]++;
+ if (((typeof tmp) == "object")) {
+ _$jscoverage['core/utils.js'][765]++;
+ target[i] = (utils.isArray(tmp)? []: {});
+ _$jscoverage['core/utils.js'][766]++;
+ utils.clone(source[i], target[i]);
+ }
+ else {
+ _$jscoverage['core/utils.js'][768]++;
+ target[i] = tmp;
+ }
+ }
+}
+ _$jscoverage['core/utils.js'][772]++;
+ return target;
+}), transUnitToPx: (function (val) {
+ _$jscoverage['core/utils.js'][792]++;
+ if ((! /(pt|cm)/.test(val))) {
+ _$jscoverage['core/utils.js'][793]++;
+ return val;
+ }
+ _$jscoverage['core/utils.js'][795]++;
+ var unit;
+ _$jscoverage['core/utils.js'][796]++;
+ val.replace(/([\d.]+)(\w+)/, (function (str, v, u) {
+ _$jscoverage['core/utils.js'][797]++;
+ val = v;
+ _$jscoverage['core/utils.js'][798]++;
+ unit = u;
+}));
+ _$jscoverage['core/utils.js'][800]++;
+ switch (unit) {
+ case "cm":
+ _$jscoverage['core/utils.js'][802]++;
+ val = (parseFloat(val) * 25);
+ _$jscoverage['core/utils.js'][803]++;
+ break;
+ case "pt":
+ _$jscoverage['core/utils.js'][805]++;
+ val = Math.round(((parseFloat(val) * 96) / 72));
+ }
+ _$jscoverage['core/utils.js'][807]++;
+ return (val + (val? "px": ""));
+}), domReady: (function () {
+ _$jscoverage['core/utils.js'][828]++;
+ var fnArr = [];
+ _$jscoverage['core/utils.js'][830]++;
+ function doReady(doc) {
+ _$jscoverage['core/utils.js'][832]++;
+ doc.isReady = true;
+ _$jscoverage['core/utils.js'][833]++;
+ for (var ci; (ci = fnArr.pop()); ci()) {
+}
+}
+ _$jscoverage['core/utils.js'][837]++;
+ return (function (onready, win) {
+ _$jscoverage['core/utils.js'][838]++;
+ win = (win || window);
+ _$jscoverage['core/utils.js'][839]++;
+ var doc = win.document;
+ _$jscoverage['core/utils.js'][840]++;
+ (onready && fnArr.push(onready));
+ _$jscoverage['core/utils.js'][841]++;
+ if ((doc.readyState === "complete")) {
+ _$jscoverage['core/utils.js'][842]++;
+ doReady(doc);
+ }
+ else {
+ _$jscoverage['core/utils.js'][844]++;
+ (doc.isReady && doReady(doc));
+ _$jscoverage['core/utils.js'][845]++;
+ if (browser.ie) {
+ _$jscoverage['core/utils.js'][846]++;
+ (function () {
+ _$jscoverage['core/utils.js'][847]++;
+ if (doc.isReady) {
+ _$jscoverage['core/utils.js'][847]++;
+ return;
+ }
+ _$jscoverage['core/utils.js'][848]++;
+ try {
+ _$jscoverage['core/utils.js'][849]++;
+ doc.documentElement.doScroll("left");
+ }
+ catch (error) {
+ _$jscoverage['core/utils.js'][851]++;
+ setTimeout(arguments.callee, 0);
+ _$jscoverage['core/utils.js'][852]++;
+ return;
+ }
+ _$jscoverage['core/utils.js'][854]++;
+ doReady(doc);
+})();
+ _$jscoverage['core/utils.js'][856]++;
+ win.attachEvent("onload", (function () {
+ _$jscoverage['core/utils.js'][857]++;
+ doReady(doc);
+}));
+ }
+ else {
+ _$jscoverage['core/utils.js'][860]++;
+ doc.addEventListener("DOMContentLoaded", (function () {
+ _$jscoverage['core/utils.js'][861]++;
+ doc.removeEventListener("DOMContentLoaded", arguments.callee, false);
+ _$jscoverage['core/utils.js'][862]++;
+ doReady(doc);
+}), false);
+ _$jscoverage['core/utils.js'][864]++;
+ win.addEventListener("load", (function () {
+ _$jscoverage['core/utils.js'][865]++;
+ doReady(doc);
+}), false);
+ }
+ }
+});
+})(), cssRule: (browser.ie? (function (key, style, doc) {
+ _$jscoverage['core/utils.js'][883]++;
+ var indexList, index;
+ _$jscoverage['core/utils.js'][884]++;
+ doc = (doc || document);
+ _$jscoverage['core/utils.js'][885]++;
+ if (doc.indexList) {
+ _$jscoverage['core/utils.js'][886]++;
+ indexList = doc.indexList;
+ }
+ else {
+ _$jscoverage['core/utils.js'][888]++;
+ indexList = (doc.indexList = {});
+ }
+ _$jscoverage['core/utils.js'][890]++;
+ var sheetStyle;
+ _$jscoverage['core/utils.js'][891]++;
+ if ((! indexList[key])) {
+ _$jscoverage['core/utils.js'][892]++;
+ if ((style === undefined)) {
+ _$jscoverage['core/utils.js'][893]++;
+ return "";
+ }
+ _$jscoverage['core/utils.js'][895]++;
+ sheetStyle = doc.createStyleSheet("", (index = doc.styleSheets.length));
+ _$jscoverage['core/utils.js'][896]++;
+ indexList[key] = index;
+ }
+ else {
+ _$jscoverage['core/utils.js'][898]++;
+ sheetStyle = doc.styleSheets[indexList[key]];
+ }
+ _$jscoverage['core/utils.js'][900]++;
+ if ((style === undefined)) {
+ _$jscoverage['core/utils.js'][901]++;
+ return sheetStyle.cssText;
+ }
+ _$jscoverage['core/utils.js'][903]++;
+ sheetStyle.cssText = (style || "");
+}): (function (key, style, doc) {
+ _$jscoverage['core/utils.js'][905]++;
+ doc = (doc || document);
+ _$jscoverage['core/utils.js'][906]++;
+ var head = doc.getElementsByTagName("head")[0], node;
+ _$jscoverage['core/utils.js'][907]++;
+ if ((! (node = doc.getElementById(key)))) {
+ _$jscoverage['core/utils.js'][908]++;
+ if ((style === undefined)) {
+ _$jscoverage['core/utils.js'][909]++;
+ return "";
+ }
+ _$jscoverage['core/utils.js'][911]++;
+ node = doc.createElement("style");
+ _$jscoverage['core/utils.js'][912]++;
+ node.id = key;
+ _$jscoverage['core/utils.js'][913]++;
+ head.appendChild(node);
+ }
+ _$jscoverage['core/utils.js'][915]++;
+ if ((style === undefined)) {
+ _$jscoverage['core/utils.js'][916]++;
+ return node.innerHTML;
+ }
+ _$jscoverage['core/utils.js'][918]++;
+ if ((style !== "")) {
+ _$jscoverage['core/utils.js'][919]++;
+ node.innerHTML = style;
+ }
+ else {
+ _$jscoverage['core/utils.js'][921]++;
+ head.removeChild(node);
+ }
+})), sort: (function (array, compareFn) {
+ _$jscoverage['core/utils.js'][925]++;
+ compareFn = (compareFn || (function (item1, item2) {
+ _$jscoverage['core/utils.js'][925]++;
+ return item1.localeCompare(item2);
+}));
+ _$jscoverage['core/utils.js'][926]++;
+ for (var i = 0, len = array.length; (i < len); (i++)) {
+ _$jscoverage['core/utils.js'][927]++;
+ for (var j = i, length = array.length; (j < length); (j++)) {
+ _$jscoverage['core/utils.js'][928]++;
+ if ((compareFn(array[i], array[j]) > 0)) {
+ _$jscoverage['core/utils.js'][929]++;
+ var t = array[i];
+ _$jscoverage['core/utils.js'][930]++;
+ array[i] = array[j];
+ _$jscoverage['core/utils.js'][931]++;
+ array[j] = t;
+ }
+}
+}
+ _$jscoverage['core/utils.js'][935]++;
+ return array;
+})});
+_$jscoverage['core/utils.js'][980]++;
+utils.each(["String", "Function", "Array", "Number", "RegExp", "Object"], (function (v) {
+ _$jscoverage['core/utils.js'][981]++;
+ UE.utils[("is" + v)] = (function (obj) {
+ _$jscoverage['core/utils.js'][982]++;
+ return (Object.prototype.toString.apply(obj) == ("[object " + v + "]"));
+});
+}));
diff --git a/_test/coverage/customEvent.js b/_test/coverage/customEvent.js
new file mode 100644
index 000000000..cd7c0e836
--- /dev/null
+++ b/_test/coverage/customEvent.js
@@ -0,0 +1,43 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['customEvent.js']) {
+ _$jscoverage['customEvent.js'] = [];
+}
+_$jscoverage['customEvent.js'].source = ["/** "," * @file "," * @name 编辑器事件接口 "," * @short Custom events "," * @des 本文件非编辑器核心文件,仅适用于生成对应的事件接口文档 "," * UEditor编辑器中的所有事件监听和触发都统一采用 "," * ''editor''是编辑器实例 "," * editor.addListener(\"eventName\",handler) 和 editor.fireEvent(\"eventName\")方式调用,支持浏览器原生事件,如keydown,keyup,mousedown,mouseup等 "," */ ","/** "," * 编辑器加载完成事件(核心),在编辑器准备好所有运行条件时触发,大部分场景可以使用editor.ready(fn)取代。 "," * @name ready "," * @grammar editor.addListener(\"ready\",fn) "," * @example "," * editor.addListener(\"ready\",function(){ "," * //this为editor实例 "," * this.setContent(\"欢迎使用UEditor!\"); "," * }) "," * //同如下接口方式调用 "," * editor.ready(function(){ "," * this.setContent(\"欢迎使用UEditor!\"); "," * }) "," */ ","/** "," * 选区变化事件(核心),当选区出现变化时触发。 "," * 在UEditor中,任何涉及到光标改变的操作都会触发选区变化事件,该事件主要用来实现工具栏状态反射。 "," * @name selectionChange "," * @grammar editor.addListener(\"selectionChange\",fn) "," * @grammar editor.fireEvent(\"selectionChange\") "," * @example "," * editor.addListener(\"selectionChange\",function(){ "," * //this为editor实例 "," * }) "," */ ","","/** "," * 内容变化事件(核心),当编辑区域中的文本内容出现变化时触发 "," * @name contentChange "," * @grammar editor.addListener(\"contentChange\",fn) "," * @grammar editor.fireEvent(\"contentChange\") "," */ ","","/** "," * 粘贴事件(核心),当使用ctr+v快捷键粘贴(包括Chrome、FF浏览器的右键粘贴)时会触发本事件 "," * @name (before|after)Paste "," * @grammar editor.addListener(\"beforePaste\",fn) "," * @desc "," * * beforePaste 在将粘贴的内容写到编辑器之前触发,这个事件触发时,粘贴的内容还未在编辑器内显示 "," * * afterPaste 粘贴的内容已经写到编辑器里边后触发 "," * @example "," * editor.addListener(\"beforePaste\",function(type,data){ "," * //beforePaste事件监听区别于afterPaste事件监听最主要的一个方面是存在一个data参数, "," * //该data参数是一个对象,包含属性html。 "," * //若用户在此处更改该html的值时,将会影响粘贴到编辑器中的内容,主要用于粘贴时需要特殊处理的一些场景。 "," * console.log(this.getContent) //this都是当前编辑器的实例 "," * //before事件才用这个参数,用来在写出编辑器之前对粘贴进来的内容进行最后的修改 "," * data.html = \"我把粘贴内容改成了这句话\"; "," * }) "," */ ","","/** "," * 设置内容事件(核心),当调用setContent方法时触发 "," * @name (before|after)SetContent "," * @grammar editor.addListener(\"beforeSetContent\",fn) "," * @desc "," * * beforeSetContent 在内容写到编辑器之前触发 "," * * afterSetContent 内容已经写到编辑器里边后触发 "," * @example "," * editor.addListener(\"beforeSetContent\",function(type,data){ "," * //beforeSetContent事件监听区别于afterSetContent事件监听最主要的一个方面是存在一个data参数, "," * //该data参数是一个对象,包含属性html。 "," * //若用户在此处更改该html的值时,将会影响设置到编辑器中的内容,主要用于设置内容时需要特殊处理的一些场景。 "," * data.html = \"我把设置内容改成了这句话\"; "," * }) "," */ ","","/** "," * getAllHtml事件,当调用getAllHtml方法时触发 "," * @name getAllHtml "," * @grammar editor.addListener(\"getAllHtml\",fn) "," * @desc "," * * 主要用来对于生成的整个html代码中的head内容进行定制,比如你想插入你自己的样式,script标签等,用来在展示时使用 "," * @example "," * editor.addListener(\"getAllHtml\",function(type,data){ "," * //data是document中head部分html的封装,可通过data.html来获取对应字符串。 "," * //需要修改的话得重新赋值data.html = '<style type=\"text/css\"> body{margin:0;}</style>'; "," * }) "," */ ","","/** "," * 内容提交事件(插件),当内容提交插件加载并调用了autosubmit命令时触发,多用于提交之前的验证 "," * @name beforeSubmit "," * @grammar editor.addListener(\"beforeSubmit\",fn) //若fn返回false,则阻止本次提交 "," * @example "," * editor.addListener(\"beforeSubmit\",function(){ "," * if(!editor.hasContents()){ "," * return false; "," * } "," * }) "," */ ","","/** "," * 如果抓取远程的图片失败了,就触发 "," * @name catchRemoteError "," * @grammar editor.addListener(\"catchRemoteError\",fn) "," * @example "," * editor.addListener(\"catchRemoteError\",function(){ "," * console.log(\"抓取失败了!\") "," * }) "," */ ","","/** "," * 当抓取远程的图片成功并会返回生成图片的链接时触发 "," * @name catchRemoterSuccess "," * @grammar editor.addListener(\"catchRemoterSuccess\",fn) "," * @example "," * editor.addListener(\"catchRemoterSuccess\",function(){ "," * console.log(\"抓取成功\") "," * }) "," */ ","","/** "," * 编辑模式切换事件(插件),当源码模式和富文本模式发生切换时触发事件 "," * @name sourceModeChanged "," * @grammar editor.addListener(\"sourceModeChanged\",fn) "," * @example "," * editor.addListener(\"sourceModeChanged\",function(type,mode){ "," * //mode代表了当前的编辑模式,true代表切换到了源码模式,false代表切换到了富文本模式 "," * }) "," */ ","","/** "," * 全屏切换事件(插件),当执行全屏切换的时候触发事件 "," * @name fullScreenChanged "," * @grammar editor.addListener(\"fullScreenChanged\",fn) "," * @example "," * editor.addListener(\"fullScreenChanged\",function(type,mode){ "," * //mode代表当前是否全屏,true代表切换到了全屏模式,false代表切换到了普通模式 "," * }) "," */ ","","/** "," * 字数超出限制事件(插件),当输入的字符数超出配置项配置时触发 "," * @name wordCountOverflow "," * @grammar editor.addListener(\"wordCountOverflow\",fn) "," * @example "," * editor.addListener(\"wordCountOverflow\",function(type,length){ "," * console.log(length) "," * }) "," */ ",""];
diff --git a/_test/coverage/editor.js b/_test/coverage/editor.js
new file mode 100644
index 000000000..2c544eae9
--- /dev/null
+++ b/_test/coverage/editor.js
@@ -0,0 +1,73 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['editor.js']) {
+ _$jscoverage['editor.js'] = [];
+ _$jscoverage['editor.js'][1] = 0;
+ _$jscoverage['editor.js'][3] = 0;
+ _$jscoverage['editor.js'][5] = 0;
+ _$jscoverage['editor.js'][7] = 0;
+ _$jscoverage['editor.js'][9] = 0;
+ _$jscoverage['editor.js'][11] = 0;
+ _$jscoverage['editor.js'][13] = 0;
+ _$jscoverage['editor.js'][15] = 0;
+ _$jscoverage['editor.js'][17] = 0;
+ _$jscoverage['editor.js'][19] = 0;
+}
+_$jscoverage['editor.js'].source = ["UEDITOR_CONFIG = window. UEDITOR_CONFIG || {} ; ","","var baidu = window. baidu || {} ; ","","window. baidu = baidu; ","","window. UE = baidu. editor = {} ; ","","UE. plugins = {} ; ","","UE. commands = {} ; ","","UE. instants = {} ; ","","UE. I18N = {} ; ","","UE. version = \"1.2.6.1\" ; ","","var dom = UE. dom = {} ; "];
+_$jscoverage['editor.js'][1]++;
+UEDITOR_CONFIG = (window.UEDITOR_CONFIG || {});
+_$jscoverage['editor.js'][3]++;
+var baidu = (window.baidu || {});
+_$jscoverage['editor.js'][5]++;
+window.baidu = baidu;
+_$jscoverage['editor.js'][7]++;
+window.UE = (baidu.editor = {});
+_$jscoverage['editor.js'][9]++;
+UE.plugins = {};
+_$jscoverage['editor.js'][11]++;
+UE.commands = {};
+_$jscoverage['editor.js'][13]++;
+UE.instants = {};
+_$jscoverage['editor.js'][15]++;
+UE.I18N = {};
+_$jscoverage['editor.js'][17]++;
+UE.version = "1.2.6.1";
+_$jscoverage['editor.js'][19]++;
+var dom = (UE.dom = {});
diff --git a/_test/coverage/jscoverage-highlight.css b/_test/coverage/jscoverage-highlight.css
new file mode 100644
index 000000000..d2ad01da5
--- /dev/null
+++ b/_test/coverage/jscoverage-highlight.css
@@ -0,0 +1,38 @@
+/*
+ jscoverage-highlight.css - JSCoverage syntax highlighting style sheet
+ Copyright (C) 2008, 2009, 2010 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+/* keyword, type, symbol, cbracket */
+#sourceTable .k {
+ font-weight: bold;
+}
+
+/* string, regexp, number */
+#sourceTable .s {
+ color: #006400;
+}
+
+/* specialchar */
+#sourceTable .t {
+ color: #2e8b57;
+}
+
+/* comment */
+#sourceTable .c {
+ font-style: italic;
+}
diff --git a/_test/coverage/jscoverage-ie.css b/_test/coverage/jscoverage-ie.css
new file mode 100644
index 000000000..05cad2afa
--- /dev/null
+++ b/_test/coverage/jscoverage-ie.css
@@ -0,0 +1,108 @@
+/*
+ jscoverage-ie.css - JSCoverage style sheet for Internet Explorer
+ Copyright (C) 2007, 2008, 2009, 2010 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#headingDiv {
+ position: static;
+ margin-left: 10px;
+ margin-right: 10px;
+ padding-top: 0.5em;
+}
+
+#tabs {
+ clear: all;
+ position: static;
+ top: auto;
+ left: auto;
+ right: auto;
+ height: auto;
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+#tabs div {
+ position: relative;
+ height: auto;
+ line-height: normal;
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+#tabs div.selected {
+ padding-bottom: 6px;
+ z-index: 2;
+}
+
+.TabPage {
+ position: relative;
+ top: -1px;
+ left: auto;
+ right: auto;
+ bottom: auto;
+ clear: left;
+ margin-left: 10px;
+ margin-right: 10px;
+ padding: 10px;
+ z-index: 1;
+}
+
+#locationDiv {
+ margin-bottom: 10px;
+}
+
+#iframeDiv {
+ position: static;
+ width: 100%;
+}
+
+#summaryDiv {
+ position: static;
+ width: 100%;
+}
+
+#fileDiv {
+ margin-bottom: 10px;
+}
+
+#sourceDiv {
+ position: static;
+ width: 100%;
+}
+
+#storeDiv {
+ position: static;
+ width: 100%;
+}
+
+/* some defaults */
+
+.TabPage {
+ height: 650px;
+}
+
+#iframeDiv {
+ height: 600px;
+}
+
+#summaryDiv {
+ height: 600px;
+}
+
+#sourceDiv {
+ height: 600px;
+}
diff --git a/_test/coverage/jscoverage-throbber.gif b/_test/coverage/jscoverage-throbber.gif
new file mode 100644
index 000000000..f13c0b4ec
Binary files /dev/null and b/_test/coverage/jscoverage-throbber.gif differ
diff --git a/_test/coverage/jscoverage.css b/_test/coverage/jscoverage.css
new file mode 100644
index 000000000..9866fd706
--- /dev/null
+++ b/_test/coverage/jscoverage.css
@@ -0,0 +1,355 @@
+/*
+ jscoverage.css - code coverage for JavaScript
+ Copyright (C) 2007, 2008, 2009, 2010 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+body {
+ background-color: #bfffbf;
+ font-family: sans-serif;
+ font-size: 100%;
+ margin: 0;
+}
+
+#mainDiv {
+ font-size: 0.8125em;
+}
+
+#headingDiv {
+ position: absolute;
+ top: 0.5em;
+ left: 1.5em;
+ right: 1.5em;
+ bottom: 0;
+ line-height: 1.5em;
+}
+
+h1 {
+ float: left;
+ margin: 0;
+ padding-bottom: 0.5em;
+ font-size: 1.3em;
+}
+
+.ProgressBar {
+ float: left;
+ visibility: hidden;
+}
+
+.ProgressPercentage {
+ display: block;
+ float: left;
+ width: 5em;
+ text-align: right;
+}
+
+.ProgressGraph {
+ float: left;
+ width: 100px;
+ height: 10px;
+ border: 1px solid black;
+ margin-top: 0.3em;
+ background-color: #d4d0c8;
+ overflow: hidden;
+}
+
+.ProgressCovered {
+ /* windows system color ActiveCaption or Highlight */
+ background-color: #0a246a;
+ width: 0;
+ height: 10px;
+ overflow: hidden;
+}
+
+#progressLabel {
+ display: block;
+ float: left;
+ padding-left: 0.3em;
+}
+
+#warningDiv {
+ display: none;
+ float: right;
+ background-color: #FFBFBF;
+ border: 1px solid red;
+ padding-left: 2px;
+ padding-right: 2px;
+}
+
+.WarningDialog {
+ display: none;
+ background-color: #FFBFBF;
+ position: absolute;
+ z-index: 10;
+ top: 20%;
+ left: 20%;
+ width: 50%;
+ padding: 5%;
+ border: 1px solid red;
+}
+
+.WarningDialog button {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/*******************************************************************************
+browser tab
+*/
+
+input#location, button {
+ border: 1px solid black;
+ margin-left: 1px;
+ margin-right: 1px;
+}
+
+#iframeDiv {
+ position: absolute;
+ top: 3.5em;
+ left: 1em;
+ right: 1em;
+ bottom: 1em;
+}
+
+iframe {
+ width: 100%;
+ height: 100%;
+}
+
+/*******************************************************************************
+summary tab
+*/
+
+#summaryDiv {
+ position: absolute;
+ top: 3em;
+ left: 1em;
+ right: 1em;
+ bottom: 1em;
+ overflow: auto;
+}
+
+table#summaryTable {
+ width: 100%;
+ margin-left: 0px;
+ margin-right: 0px;
+ border-collapse: collapse;
+ font-size: small;
+}
+
+table#summaryTable th, table#summaryTable td {
+ border-left: 1px solid #d9d9d9;
+}
+
+table#summaryTable th.leftColumn, table#summaryTable td.leftColumn {
+ border-left-width: 0px;
+}
+
+table#summaryTable th, table#summaryTable td {
+ padding: 2px;
+}
+
+th {
+ background-color: #e6ffe6;
+}
+
+td.numeric {
+ text-align: right;
+}
+
+abbr {
+ cursor: help;
+}
+
+tr#summaryTotals td.leftColumn span {
+ float: right;
+}
+tr#summaryTotals td.leftColumn span.title {
+ float: left;
+ font-weight: bold;
+}
+tr#summaryTotals td {
+ background-color: #ffd;
+}
+td.coverage {
+ width: 150px;
+}
+td.coverage span {
+ float: right;
+ margin-right: 5px;
+}
+.pctGraph {
+ width: 100px;
+ height: 10px;
+ float: right;
+ border: 1px solid #000;
+ background-color: #e00000;
+ overflow: hidden;
+ margin-top: 4px;
+}
+.pctGraph .covered {
+ background-color: #00f000;
+ width: 0;
+ height: 10px;
+}
+.pctGraph .skipped {
+ background-color: #d4d0c8;
+ width: 100px;
+ height: 10px;
+}
+tbody#summaryTbody tr.even td {
+ background-color: #e6ffe6;
+}
+
+/*******************************************************************************
+source tab
+*/
+
+#fileDiv {
+ font-size: large;
+ font-weight: bold;
+}
+
+#sourceDiv {
+ position: absolute;
+ top: 3em;
+ left: 1em;
+ right: 1em;
+ bottom: 1em;
+ overflow: auto;
+}
+
+table#sourceTable {
+ border: 0px;
+ border-collapse: collapse;
+ font-size: small;
+}
+
+/*
+IE default behavior is to make smaller than surrounding text. Because
+the table already has font-size small, this would make the font-size within the
+ x-small. So we don't rely on the default.
+*/
+table#sourceTable pre {
+ font-size: medium;
+}
+
+table#sourceTable td {
+ border: 0px;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+table#sourceTable pre {
+ border: 0px;
+ margin: 0px;
+}
+
+.g {
+ background-color: #bfffbf;
+}
+
+.y {
+ background-color: #ffffbf;
+}
+
+.r {
+ background-color: #ffbfbf;
+}
+
+/*******************************************************************************
+store tab
+*/
+
+#storeDiv {
+ position: absolute;
+ top: 3em;
+ left: 1em;
+ right: 1em;
+ bottom: 1em;
+ overflow: auto;
+}
+
+/*******************************************************************************
+about tab
+*/
+
+p {
+ margin-top: 0;
+}
+
+/*******************************************************************************
+tabs
+*/
+
+#tabs {
+ position: absolute;
+ top: 3em;
+ left: 1.5em;
+ right: 1.5em;
+ height: 2em;
+}
+
+#tabs div {
+ background-color: white;
+ position: relative;
+ float: left;
+ border: 1px solid black;
+ border-bottom-width: 0;
+ cursor: pointer;
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ height: 2em;
+ z-index: 1;
+ line-height: 1.8em;
+}
+
+#tabs div.selected {
+ z-index: 3;
+ cursor: default;
+}
+
+#tabs div.disabled {
+ /* windows system color GrayText */
+ color: #808080;
+ cursor: default;
+}
+
+.TabPage {
+ background-color: white;
+ border: 1px solid black;
+ position: absolute;
+ top: 5em;
+ left: 1.5em;
+ right: 1.5em;
+ bottom: 1.5em;
+ z-index: 2;
+ padding: 1em;
+ display: none;
+}
+
+#tabPages div.selected {
+ display: block;
+}
+
+img {
+ visibility: hidden;
+}
diff --git a/_test/coverage/jscoverage.html b/_test/coverage/jscoverage.html
new file mode 100644
index 000000000..00d35185a
--- /dev/null
+++ b/_test/coverage/jscoverage.html
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+JSCoverage
+
+
+
+
+
+
+
+
+
+
+
+
+Recent web browsers tend to place significant security restrictions on the use
+of file:
URLs. These restrictions can prevent JSCoverage from
+working properly. To avoid problems, it is recommended that you do either of the
+following:
+
+
+If you are using the jscoverage
program to instrument your
+JavaScript code, install the instrumented files on a web server.
+Use the jscoverage-server
program (which itself acts as a web
+server).
+
+
+See the
+manual
+for further details.
+
+
OK
+
+
+
+
+Recent web browsers tend to place significant security restrictions on the use
+of file:
URLs. These restrictions can prevent JSCoverage from
+working properly. To avoid problems, it is recommended that you view coverage
+reports stored to the filesystem by serving them from a web server.
+
+
+See the
+manual
+for further details.
+
+
OK
+
+
+
+
Browser
+
Summary
+
Source
+
Store
+
About
+
+
+
+
+ URL:
+ Open in frame
+ Open in window
+
+
+
+
+
+
+
Show missing statements column
+
+
+
+
+
+
+
+ Total:
+ 0
+
+ 0
+ 0
+
+
+ 0%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Store Report
+
+
+
+
+
+ This is version 0.5.1 of JSCoverage, a program that calculates code
+ coverage statistics for JavaScript.
+
+
+ See http://siliconforks.com/jscoverage/ for more information.
+
+
+ Copyright © 2007, 2008, 2009, 2010 siliconforks.com
+
+
+
+
+
+
diff --git a/_test/coverage/jscoverage.js b/_test/coverage/jscoverage.js
new file mode 100644
index 000000000..4233615a4
--- /dev/null
+++ b/_test/coverage/jscoverage.js
@@ -0,0 +1,1176 @@
+/*
+ jscoverage.js - code coverage for JavaScript
+ Copyright (C) 2007, 2008, 2009, 2010 siliconforks.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+function jscoverage_openWarningDialog() {
+ var id;
+ if (jscoverage_isReport) {
+ id = 'reportWarningDialog';
+ }
+ else {
+ id = 'warningDialog';
+ }
+ var dialog = document.getElementById(id);
+ dialog.style.display = 'block';
+}
+
+function jscoverage_closeWarningDialog() {
+ var id;
+ if (jscoverage_isReport) {
+ id = 'reportWarningDialog';
+ }
+ else {
+ id = 'warningDialog';
+ }
+ var dialog = document.getElementById(id);
+ dialog.style.display = 'none';
+}
+
+/**
+Initializes the _$jscoverage object in a window. This should be the first
+function called in the page.
+@param w this should always be the global window object
+*/
+function jscoverage_init(w) {
+ try {
+ // in Safari, "import" is a syntax error
+ Components.utils['import']('resource://app/modules/jscoverage.jsm');
+ jscoverage_isInvertedMode = true;
+ return;
+ }
+ catch (e) {}
+
+ // check if we are in inverted mode
+ if (w.opener) {
+ try {
+ if (w.opener.top._$jscoverage) {
+ jscoverage_isInvertedMode = true;
+ if (! w._$jscoverage) {
+ w._$jscoverage = w.opener.top._$jscoverage;
+ }
+ }
+ else {
+ jscoverage_isInvertedMode = false;
+ }
+ }
+ catch (e) {
+ try {
+ if (w.opener._$jscoverage) {
+ jscoverage_isInvertedMode = true;
+ if (! w._$jscoverage) {
+ w._$jscoverage = w.opener._$jscoverage;
+ }
+ }
+ else {
+ jscoverage_isInvertedMode = false;
+ }
+ }
+ catch (e2) {
+ jscoverage_isInvertedMode = false;
+ }
+ }
+ }
+ else {
+ jscoverage_isInvertedMode = false;
+ }
+
+ if (! jscoverage_isInvertedMode) {
+ if (! w._$jscoverage) {
+ w._$jscoverage = {};
+ }
+ }
+}
+
+var jscoverage_currentFile = null;
+var jscoverage_currentLine = null;
+
+var jscoverage_inLengthyOperation = false;
+
+/*
+Possible states:
+ isInvertedMode isServer isReport tabs
+normal false false false Browser
+inverted true false false
+server, normal false true false Browser, Store
+server, inverted true true false Store
+report false false true
+*/
+var jscoverage_isInvertedMode = false;
+var jscoverage_isServer = false;
+var jscoverage_isReport = false;
+
+jscoverage_init(window);
+
+function jscoverage_createRequest() {
+ // Note that the IE7 XMLHttpRequest does not support file URL's.
+ // http://xhab.blogspot.com/2006/11/ie7-support-for-xmlhttprequest.html
+ // http://blogs.msdn.com/ie/archive/2006/12/06/file-uris-in-windows.aspx
+//#JSCOVERAGE_IF
+ if (window.ActiveXObject) {
+ return new ActiveXObject("Microsoft.XMLHTTP");
+ }
+ else {
+ return new XMLHttpRequest();
+ }
+}
+
+// http://www.quirksmode.org/js/findpos.html
+function jscoverage_findPos(obj) {
+ var result = 0;
+ do {
+ result += obj.offsetTop;
+ obj = obj.offsetParent;
+ }
+ while (obj);
+ return result;
+}
+
+// http://www.quirksmode.org/viewport/compatibility.html
+function jscoverage_getViewportHeight() {
+//#JSCOVERAGE_IF /MSIE/.test(navigator.userAgent)
+ if (self.innerHeight) {
+ // all except Explorer
+ return self.innerHeight;
+ }
+ else if (document.documentElement && document.documentElement.clientHeight) {
+ // Explorer 6 Strict Mode
+ return document.documentElement.clientHeight;
+ }
+ else if (document.body) {
+ // other Explorers
+ return document.body.clientHeight;
+ }
+ else {
+ throw "Couldn't calculate viewport height";
+ }
+//#JSCOVERAGE_ENDIF
+}
+
+/**
+Indicates visually that a lengthy operation has begun. The progress bar is
+displayed, and the cursor is changed to busy (on browsers which support this).
+*/
+function jscoverage_beginLengthyOperation() {
+ jscoverage_inLengthyOperation = true;
+
+ var progressBar = document.getElementById('progressBar');
+ progressBar.style.visibility = 'visible';
+ ProgressBar.setPercentage(progressBar, 0);
+ var progressLabel = document.getElementById('progressLabel');
+ progressLabel.style.visibility = 'visible';
+
+ /* blacklist buggy browsers */
+//#JSCOVERAGE_IF
+ if (! /Opera|WebKit/.test(navigator.userAgent)) {
+ /*
+ Change the cursor style of each element. Note that changing the class of the
+ element (to one with a busy cursor) is buggy in IE.
+ */
+ var tabs = document.getElementById('tabs').getElementsByTagName('div');
+ var i;
+ for (i = 0; i < tabs.length; i++) {
+ tabs.item(i).style.cursor = 'wait';
+ }
+ }
+}
+
+/**
+Removes the progress bar and busy cursor.
+*/
+function jscoverage_endLengthyOperation() {
+ var progressBar = document.getElementById('progressBar');
+ ProgressBar.setPercentage(progressBar, 100);
+ setTimeout(function() {
+ jscoverage_inLengthyOperation = false;
+ progressBar.style.visibility = 'hidden';
+ var progressLabel = document.getElementById('progressLabel');
+ progressLabel.style.visibility = 'hidden';
+ progressLabel.innerHTML = '';
+
+ var tabs = document.getElementById('tabs').getElementsByTagName('div');
+ var i;
+ for (i = 0; i < tabs.length; i++) {
+ tabs.item(i).style.cursor = '';
+ }
+ }, 50);
+}
+
+function jscoverage_setSize() {
+//#JSCOVERAGE_IF /MSIE/.test(navigator.userAgent)
+ var viewportHeight = jscoverage_getViewportHeight();
+
+ /*
+ border-top-width: 1px
+ padding-top: 10px
+ padding-bottom: 10px
+ border-bottom-width: 1px
+ margin-bottom: 10px
+ ----
+ 32px
+ */
+ var tabPages = document.getElementById('tabPages');
+ var tabPageHeight = (viewportHeight - jscoverage_findPos(tabPages) - 32) + 'px';
+ var nodeList = tabPages.childNodes;
+ var length = nodeList.length;
+ for (var i = 0; i < length; i++) {
+ var node = nodeList.item(i);
+ if (node.nodeType !== 1) {
+ continue;
+ }
+ node.style.height = tabPageHeight;
+ }
+
+ var iframeDiv = document.getElementById('iframeDiv');
+ // may not exist if we have removed the first tab
+ if (iframeDiv) {
+ iframeDiv.style.height = (viewportHeight - jscoverage_findPos(iframeDiv) - 21) + 'px';
+ }
+
+ var summaryDiv = document.getElementById('summaryDiv');
+ summaryDiv.style.height = (viewportHeight - jscoverage_findPos(summaryDiv) - 21) + 'px';
+
+ var sourceDiv = document.getElementById('sourceDiv');
+ sourceDiv.style.height = (viewportHeight - jscoverage_findPos(sourceDiv) - 21) + 'px';
+
+ var storeDiv = document.getElementById('storeDiv');
+ if (storeDiv) {
+ storeDiv.style.height = (viewportHeight - jscoverage_findPos(storeDiv) - 21) + 'px';
+ }
+//#JSCOVERAGE_ENDIF
+}
+
+/**
+Returns the boolean value of a string. Values 'false', 'f', 'no', 'n', 'off',
+and '0' (upper or lower case) are false.
+@param s the string
+@return a boolean value
+*/
+function jscoverage_getBooleanValue(s) {
+ s = s.toLowerCase();
+ if (s === 'false' || s === 'f' || s === 'no' || s === 'n' || s === 'off' || s === '0') {
+ return false;
+ }
+ return true;
+}
+
+function jscoverage_removeTab(id) {
+ var tab = document.getElementById(id + 'Tab');
+ tab.parentNode.removeChild(tab);
+ var tabPage = document.getElementById(id + 'TabPage');
+ tabPage.parentNode.removeChild(tabPage);
+}
+
+function jscoverage_isValidURL(url) {
+ // RFC 3986
+ var matches = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(url);
+ if (matches === null) {
+ return false;
+ }
+ var scheme = matches[1];
+ if (typeof scheme === 'string') {
+ scheme = scheme.toLowerCase();
+ return scheme === '' || scheme === 'file:' || scheme === 'http:' || scheme === 'https:';
+ }
+ return true;
+}
+
+/**
+Initializes the contents of the tabs. This sets the initial values of the
+input field and iframe in the "Browser" tab and the checkbox in the "Summary"
+tab.
+@param queryString this should always be location.search
+*/
+function jscoverage_initTabContents(queryString) {
+ var showMissingColumn = false;
+ var url = null;
+ var windowURL = null;
+ var parameters, parameter, i, index, name, value;
+ if (queryString.length > 0) {
+ // chop off the question mark
+ queryString = queryString.substring(1);
+ parameters = queryString.split(/&|;/);
+ for (i = 0; i < parameters.length; i++) {
+ parameter = parameters[i];
+ index = parameter.indexOf('=');
+ if (index === -1) {
+ // still works with old syntax
+ url = decodeURIComponent(parameter);
+ }
+ else {
+ name = parameter.substr(0, index);
+ value = decodeURIComponent(parameter.substr(index + 1));
+ if (name === 'missing' || name === 'm') {
+ showMissingColumn = jscoverage_getBooleanValue(value);
+ }
+ else if (name === 'url' || name === 'u' || name === 'frame' || name === 'f') {
+ url = value;
+ }
+ else if (name === 'window' || name === 'w') {
+ windowURL = value;
+ }
+ }
+ }
+ }
+
+ var checkbox = document.getElementById('checkbox');
+ checkbox.checked = showMissingColumn;
+ if (showMissingColumn) {
+ jscoverage_appendMissingColumn();
+ }
+
+ var isValidURL = function (url) {
+ var result = jscoverage_isValidURL(url);
+ if (! result) {
+ alert('Invalid URL: ' + url);
+ }
+ return result;
+ };
+
+ if (url !== null && isValidURL(url)) {
+ // this will automatically propagate to the input field
+ frames[0].location = url;
+ }
+ else if (windowURL !== null && isValidURL(windowURL)) {
+ window.open(windowURL);
+ }
+
+ // if the browser tab is absent, we have to initialize the summary tab
+ if (! document.getElementById('browserTab')) {
+ jscoverage_recalculateSummaryTab();
+ }
+}
+
+function jscoverage_body_load() {
+ // check if this is a file: URL
+ if (window.location && window.location.href && /^file:/i.test(window.location.href)) {
+ var warningDiv = document.getElementById('warningDiv');
+ warningDiv.style.display = 'block';
+ }
+
+ var progressBar = document.getElementById('progressBar');
+ ProgressBar.init(progressBar);
+
+ function reportError(e) {
+ jscoverage_endLengthyOperation();
+ var summaryThrobber = document.getElementById('summaryThrobber');
+ summaryThrobber.style.visibility = 'hidden';
+ var div = document.getElementById('summaryErrorDiv');
+ div.innerHTML = 'Error: ' + e;
+ }
+
+ if (jscoverage_isReport) {
+ jscoverage_beginLengthyOperation();
+ var summaryThrobber = document.getElementById('summaryThrobber');
+ summaryThrobber.style.visibility = 'visible';
+ var request = jscoverage_createRequest();
+ try {
+ request.open('GET', 'jscoverage.json', true);
+ request.onreadystatechange = function (event) {
+ if (request.readyState === 4) {
+ try {
+ if (request.status !== 0 && request.status !== 200) {
+ throw request.status;
+ }
+ var response = request.responseText;
+ if (response === '') {
+ throw 404;
+ }
+
+ var json;
+ if (window.JSON && window.JSON.parse) {
+ json = window.JSON.parse(response);
+ }
+ else {
+ json = eval('(' + response + ')');
+ }
+
+ var file;
+ for (file in json) {
+ if (! json.hasOwnProperty(file)) {
+ continue;
+ }
+
+ var fileCoverage = json[file];
+ _$jscoverage[file] = fileCoverage.coverage;
+ _$jscoverage[file].source = fileCoverage.source;
+ }
+ jscoverage_recalculateSummaryTab();
+ summaryThrobber.style.visibility = 'hidden';
+ }
+ catch (e) {
+ reportError(e);
+ }
+ }
+ };
+ request.send(null);
+ }
+ catch (e) {
+ reportError(e);
+ }
+
+ jscoverage_removeTab('browser');
+ jscoverage_removeTab('store');
+ }
+ else {
+ if (jscoverage_isInvertedMode) {
+ jscoverage_removeTab('browser');
+ }
+
+ if (! jscoverage_isServer) {
+ jscoverage_removeTab('store');
+ }
+ }
+
+ jscoverage_initTabControl();
+
+ jscoverage_initTabContents(location.search);
+}
+
+function jscoverage_body_resize() {
+ if (/MSIE/.test(navigator.userAgent)) {
+ jscoverage_setSize();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// tab 1
+
+function jscoverage_updateBrowser() {
+ var input = document.getElementById("location");
+ frames[0].location = input.value;
+}
+
+function jscoverage_openWindow() {
+ var input = document.getElementById("location");
+ var url = input.value;
+ window.open(url);
+}
+
+function jscoverage_input_keypress(e) {
+ if (e.keyCode === 13) {
+ if (e.shiftKey) {
+ jscoverage_openWindow();
+ }
+ else {
+ jscoverage_updateBrowser();
+ }
+ }
+}
+
+function jscoverage_openInFrameButton_click() {
+ jscoverage_updateBrowser();
+}
+
+function jscoverage_openInWindowButton_click() {
+ jscoverage_openWindow();
+}
+
+function jscoverage_browser_load() {
+ /* update the input box */
+ var input = document.getElementById("location");
+
+ /* sometimes IE seems to fire this after the tab has been removed */
+ if (input) {
+ input.value = frames[0].location;
+ }
+}
+
+// -----------------------------------------------------------------------------
+// tab 2
+
+function jscoverage_createHandler(file, line) {
+ return function () {
+ jscoverage_get(file, line);
+ return false;
+ };
+}
+
+function jscoverage_createLink(file, line) {
+ var link = document.createElement("a");
+ link.href = '#';
+ link.onclick = jscoverage_createHandler(file, line);
+
+ var text;
+ if (line) {
+ text = line.toString();
+ }
+ else {
+ text = file;
+ }
+
+ link.appendChild(document.createTextNode(text));
+
+ return link;
+}
+
+function jscoverage_recalculateSummaryTab(cc) {
+ var checkbox = document.getElementById('checkbox');
+ var showMissingColumn = checkbox.checked;
+
+ if (! cc) {
+ cc = window._$jscoverage;
+ }
+ if (! cc) {
+//#JSCOVERAGE_IF 0
+ throw "No coverage information found.";
+//#JSCOVERAGE_ENDIF
+ }
+
+ var tbody = document.getElementById("summaryTbody");
+ while (tbody.hasChildNodes()) {
+ tbody.removeChild(tbody.firstChild);
+ }
+
+ var totals = { files:0, statements:0, executed:0 };
+
+ var file;
+ var files = [];
+ for (file in cc) {
+ if (! cc.hasOwnProperty(file)) {
+ continue;
+ }
+
+ files.push(file);
+ }
+ files.sort();
+
+ var rowCounter = 0;
+ for (var f = 0; f < files.length; f++) {
+ file = files[f];
+ var lineNumber;
+ var num_statements = 0;
+ var num_executed = 0;
+ var missing = [];
+ var fileCC = cc[file];
+ var length = fileCC.length;
+ var currentConditionalEnd = 0;
+ var conditionals = null;
+ if (fileCC.conditionals) {
+ conditionals = fileCC.conditionals;
+ }
+ for (lineNumber = 0; lineNumber < length; lineNumber++) {
+ var n = fileCC[lineNumber];
+
+ if (lineNumber === currentConditionalEnd) {
+ currentConditionalEnd = 0;
+ }
+ else if (currentConditionalEnd === 0 && conditionals && conditionals[lineNumber]) {
+ currentConditionalEnd = conditionals[lineNumber];
+ }
+
+ if (currentConditionalEnd !== 0) {
+ continue;
+ }
+
+ if (n === undefined || n === null) {
+ continue;
+ }
+
+ if (n === 0) {
+ missing.push(lineNumber);
+ }
+ else {
+ num_executed++;
+ }
+ num_statements++;
+ }
+
+ var percentage = ( num_statements === 0 ? 0 : parseInt(100 * num_executed / num_statements) );
+
+ var row = document.createElement("tr");
+ row.className = ( rowCounter++ % 2 == 0 ? "odd" : "even" );
+
+ var cell = document.createElement("td");
+ cell.className = 'leftColumn';
+ var link = jscoverage_createLink(file);
+ cell.appendChild(link);
+
+ row.appendChild(cell);
+
+ cell = document.createElement("td");
+ cell.className = 'numeric';
+ cell.appendChild(document.createTextNode(num_statements));
+ row.appendChild(cell);
+
+ cell = document.createElement("td");
+ cell.className = 'numeric';
+ cell.appendChild(document.createTextNode(num_executed));
+ row.appendChild(cell);
+
+ // new coverage td containing a bar graph
+ cell = document.createElement("td");
+ cell.className = 'coverage';
+ var pctGraph = document.createElement("div"),
+ covered = document.createElement("div"),
+ pct = document.createElement("span");
+ pctGraph.className = "pctGraph";
+ if( num_statements === 0 ) {
+ covered.className = "skipped";
+ pct.appendChild(document.createTextNode("N/A"));
+ } else {
+ covered.className = "covered";
+ covered.style.width = percentage + "px";
+ pct.appendChild(document.createTextNode(percentage + '%'));
+ }
+ pct.className = "pct";
+ pctGraph.appendChild(covered);
+ cell.appendChild(pctGraph);
+ cell.appendChild(pct);
+ row.appendChild(cell);
+
+ if (showMissingColumn) {
+ cell = document.createElement("td");
+ for (var i = 0; i < missing.length; i++) {
+ if (i !== 0) {
+ cell.appendChild(document.createTextNode(", "));
+ }
+ link = jscoverage_createLink(file, missing[i]);
+
+ // group contiguous missing lines; e.g., 10, 11, 12 -> 10-12
+ var j, start = missing[i];
+ for (;;) {
+ j = 1;
+ while (i + j < missing.length && missing[i + j] == missing[i] + j) {
+ j++;
+ }
+ var nextmissing = missing[i + j], cur = missing[i] + j;
+ if (isNaN(nextmissing)) {
+ break;
+ }
+ while (cur < nextmissing && ! fileCC[cur]) {
+ cur++;
+ }
+ if (cur < nextmissing || cur >= length) {
+ break;
+ }
+ i += j;
+ }
+ if (start != missing[i] || j > 1) {
+ i += j - 1;
+ link.innerHTML += "-" + missing[i];
+ }
+
+ cell.appendChild(link);
+ }
+ row.appendChild(cell);
+ }
+
+ tbody.appendChild(row);
+
+ totals['files'] ++;
+ totals['statements'] += num_statements;
+ totals['executed'] += num_executed;
+
+ // write totals data into summaryTotals row
+ var tr = document.getElementById("summaryTotals");
+ if (tr) {
+ var tds = tr.getElementsByTagName("td");
+ tds[0].getElementsByTagName("span")[1].firstChild.nodeValue = totals['files'];
+ tds[1].firstChild.nodeValue = totals['statements'];
+ tds[2].firstChild.nodeValue = totals['executed'];
+
+ var coverage = parseInt(100 * totals['executed'] / totals['statements']);
+ if( isNaN( coverage ) ) {
+ coverage = 0;
+ }
+ tds[3].getElementsByTagName("span")[0].firstChild.nodeValue = coverage + '%';
+ tds[3].getElementsByTagName("div")[1].style.width = coverage + 'px';
+ }
+
+ }
+ jscoverage_endLengthyOperation();
+}
+
+function jscoverage_appendMissingColumn() {
+ var headerRow = document.getElementById('headerRow');
+ var missingHeader = document.createElement('th');
+ missingHeader.id = 'missingHeader';
+ missingHeader.innerHTML = 'Missing ';
+ headerRow.appendChild(missingHeader);
+ var summaryTotals = document.getElementById('summaryTotals');
+ var empty = document.createElement('td');
+ empty.id = 'missingCell';
+ summaryTotals.appendChild(empty);
+}
+
+function jscoverage_removeMissingColumn() {
+ var missingNode;
+ missingNode = document.getElementById('missingHeader');
+ missingNode.parentNode.removeChild(missingNode);
+ missingNode = document.getElementById('missingCell');
+ missingNode.parentNode.removeChild(missingNode);
+}
+
+function jscoverage_checkbox_click() {
+ if (jscoverage_inLengthyOperation) {
+ return false;
+ }
+ jscoverage_beginLengthyOperation();
+ var checkbox = document.getElementById('checkbox');
+ var showMissingColumn = checkbox.checked;
+ setTimeout(function() {
+ if (showMissingColumn) {
+ jscoverage_appendMissingColumn();
+ }
+ else {
+ jscoverage_removeMissingColumn();
+ }
+ jscoverage_recalculateSummaryTab();
+ }, 50);
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+// tab 3
+
+function jscoverage_makeTable() {
+ var coverage = _$jscoverage[jscoverage_currentFile];
+ var lines = coverage.source;
+
+ // this can happen if there is an error in the original JavaScript file
+ if (! lines) {
+ lines = [];
+ }
+
+ var rows = [' '];
+ var i = 0;
+ var progressBar = document.getElementById('progressBar');
+ var tableHTML;
+ var currentConditionalEnd = 0;
+
+ function joinTableRows() {
+ tableHTML = rows.join('');
+ ProgressBar.setPercentage(progressBar, 60);
+ /*
+ This may be a long delay, so set a timeout of 100 ms to make sure the
+ display is updated.
+ */
+ setTimeout(appendTable, 100);
+ }
+
+ function appendTable() {
+ var sourceDiv = document.getElementById('sourceDiv');
+ sourceDiv.innerHTML = tableHTML;
+ ProgressBar.setPercentage(progressBar, 80);
+ setTimeout(jscoverage_scrollToLine, 0);
+ }
+
+ while (i < lines.length) {
+ var lineNumber = i + 1;
+
+ if (lineNumber === currentConditionalEnd) {
+ currentConditionalEnd = 0;
+ }
+ else if (currentConditionalEnd === 0 && coverage.conditionals && coverage.conditionals[lineNumber]) {
+ currentConditionalEnd = coverage.conditionals[lineNumber];
+ }
+
+ var row = '';
+ row += '' + lineNumber + ' ';
+ var timesExecuted = coverage[lineNumber];
+ if (timesExecuted !== undefined && timesExecuted !== null) {
+ if (currentConditionalEnd !== 0) {
+ row += '';
+ }
+ else if (timesExecuted === 0) {
+ row += ' ';
+ }
+ else {
+ row += ' ';
+ }
+ row += timesExecuted;
+ row += ' ';
+ }
+ else {
+ row += ' ';
+ }
+ row += '' + lines[i] + ' ';
+ row += ' ';
+ row += '\n';
+ rows[lineNumber] = row;
+ i++;
+ }
+ rows[i + 1] = '
';
+ ProgressBar.setPercentage(progressBar, 40);
+ setTimeout(joinTableRows, 0);
+}
+
+function jscoverage_scrollToLine() {
+ jscoverage_selectTab('sourceTab');
+ if (! window.jscoverage_currentLine) {
+ jscoverage_endLengthyOperation();
+ return;
+ }
+ var div = document.getElementById('sourceDiv');
+ if (jscoverage_currentLine === 1) {
+ div.scrollTop = 0;
+ }
+ else {
+ var cell = document.getElementById('line-' + jscoverage_currentLine);
+
+ // this might not be there if there is an error in the original JavaScript
+ if (cell) {
+ var divOffset = jscoverage_findPos(div);
+ var cellOffset = jscoverage_findPos(cell);
+ div.scrollTop = cellOffset - divOffset;
+ }
+ }
+ jscoverage_currentLine = 0;
+ jscoverage_endLengthyOperation();
+}
+
+/**
+Loads the given file (and optional line) in the source tab.
+*/
+function jscoverage_get(file, line) {
+ if (jscoverage_inLengthyOperation) {
+ return;
+ }
+ jscoverage_beginLengthyOperation();
+ setTimeout(function() {
+ var sourceDiv = document.getElementById('sourceDiv');
+ sourceDiv.innerHTML = '';
+ jscoverage_selectTab('sourceTab');
+ if (file === jscoverage_currentFile) {
+ jscoverage_currentLine = line;
+ jscoverage_recalculateSourceTab();
+ }
+ else {
+ if (jscoverage_currentFile === null) {
+ var tab = document.getElementById('sourceTab');
+ tab.className = '';
+ tab.onclick = jscoverage_tab_click;
+ }
+ jscoverage_currentFile = file;
+ jscoverage_currentLine = line || 1; // when changing the source, always scroll to top
+ var fileDiv = document.getElementById('fileDiv');
+ fileDiv.innerHTML = jscoverage_currentFile;
+ jscoverage_recalculateSourceTab();
+ return;
+ }
+ }, 50);
+}
+
+/**
+Calculates coverage statistics for the current source file.
+*/
+function jscoverage_recalculateSourceTab() {
+ if (! jscoverage_currentFile) {
+ jscoverage_endLengthyOperation();
+ return;
+ }
+ var progressLabel = document.getElementById('progressLabel');
+ progressLabel.innerHTML = 'Calculating coverage ...';
+ var progressBar = document.getElementById('progressBar');
+ ProgressBar.setPercentage(progressBar, 20);
+ setTimeout(jscoverage_makeTable, 0);
+}
+
+// -----------------------------------------------------------------------------
+// tabs
+
+/**
+Initializes the tab control. This function must be called when the document is
+loaded.
+*/
+function jscoverage_initTabControl() {
+ var tabs = document.getElementById('tabs');
+ var i;
+ var child;
+ var tabNum = 0;
+ for (i = 0; i < tabs.childNodes.length; i++) {
+ child = tabs.childNodes.item(i);
+ if (child.nodeType === 1) {
+ if (child.className !== 'disabled') {
+ child.onclick = jscoverage_tab_click;
+ }
+ tabNum++;
+ }
+ }
+ jscoverage_selectTab(0);
+}
+
+/**
+Selects a tab.
+@param tab the integer index of the tab (0, 1, 2, or 3)
+ OR
+ the ID of the tab element
+ OR
+ the tab element itself
+*/
+function jscoverage_selectTab(tab) {
+ if (typeof tab !== 'number') {
+ tab = jscoverage_tabIndexOf(tab);
+ }
+ var tabs = document.getElementById('tabs');
+ var tabPages = document.getElementById('tabPages');
+ var nodeList;
+ var tabNum;
+ var i;
+ var node;
+
+ nodeList = tabs.childNodes;
+ tabNum = 0;
+ for (i = 0; i < nodeList.length; i++) {
+ node = nodeList.item(i);
+ if (node.nodeType !== 1) {
+ continue;
+ }
+
+ if (node.className !== 'disabled') {
+ if (tabNum === tab) {
+ node.className = 'selected';
+ }
+ else {
+ node.className = '';
+ }
+ }
+ tabNum++;
+ }
+
+ nodeList = tabPages.childNodes;
+ tabNum = 0;
+ for (i = 0; i < nodeList.length; i++) {
+ node = nodeList.item(i);
+ if (node.nodeType !== 1) {
+ continue;
+ }
+
+ if (tabNum === tab) {
+ node.className = 'selected TabPage';
+ }
+ else {
+ node.className = 'TabPage';
+ }
+ tabNum++;
+ }
+}
+
+/**
+Returns an integer (0, 1, 2, or 3) representing the index of a given tab.
+@param tab the ID of the tab element
+ OR
+ the tab element itself
+*/
+function jscoverage_tabIndexOf(tab) {
+ if (typeof tab === 'string') {
+ tab = document.getElementById(tab);
+ }
+ var tabs = document.getElementById('tabs');
+ var i;
+ var child;
+ var tabNum = 0;
+ for (i = 0; i < tabs.childNodes.length; i++) {
+ child = tabs.childNodes.item(i);
+ if (child.nodeType === 1) {
+ if (child === tab) {
+ return tabNum;
+ }
+ tabNum++;
+ }
+ }
+//#JSCOVERAGE_IF 0
+ throw "Tab not found";
+//#JSCOVERAGE_ENDIF
+}
+
+function jscoverage_tab_click(e) {
+ if (jscoverage_inLengthyOperation) {
+ return;
+ }
+ var target;
+//#JSCOVERAGE_IF
+ if (e) {
+ target = e.target;
+ }
+ else if (window.event) {
+ // IE
+ target = window.event.srcElement;
+ }
+ if (target.className === 'selected') {
+ return;
+ }
+ jscoverage_beginLengthyOperation();
+ setTimeout(function() {
+ if (target.id === 'summaryTab') {
+ var tbody = document.getElementById("summaryTbody");
+ while (tbody.hasChildNodes()) {
+ tbody.removeChild(tbody.firstChild);
+ }
+ }
+ else if (target.id === 'sourceTab') {
+ var sourceDiv = document.getElementById('sourceDiv');
+ sourceDiv.innerHTML = '';
+ }
+ jscoverage_selectTab(target);
+ if (target.id === 'summaryTab') {
+ jscoverage_recalculateSummaryTab();
+ }
+ else if (target.id === 'sourceTab') {
+ jscoverage_recalculateSourceTab();
+ }
+ else {
+ jscoverage_endLengthyOperation();
+ }
+ }, 50);
+}
+
+// -----------------------------------------------------------------------------
+// progress bar
+
+var ProgressBar = {
+ init: function(element) {
+ element._percentage = 0;
+
+ /* doing this via JavaScript crashes Safari */
+/*
+ var pctGraph = document.createElement('div');
+ pctGraph.className = 'pctGraph';
+ element.appendChild(pctGraph);
+ var covered = document.createElement('div');
+ covered.className = 'covered';
+ pctGraph.appendChild(covered);
+ var pct = document.createElement('span');
+ pct.className = 'pct';
+ element.appendChild(pct);
+*/
+
+ ProgressBar._update(element);
+ },
+ setPercentage: function(element, percentage) {
+ element._percentage = percentage;
+ ProgressBar._update(element);
+ },
+ _update: function(element) {
+ var pctGraph = element.getElementsByTagName('div').item(0);
+ var covered = pctGraph.getElementsByTagName('div').item(0);
+ var pct = element.getElementsByTagName('span').item(0);
+ pct.innerHTML = element._percentage.toString() + '%';
+ covered.style.width = element._percentage + 'px';
+ }
+};
+
+// -----------------------------------------------------------------------------
+// reports
+
+function jscoverage_pad(s) {
+ return '0000'.substr(s.length) + s;
+}
+
+function jscoverage_quote(s) {
+ return '"' + s.replace(/[\u0000-\u001f"\\\u007f-\uffff]/g, function (c) {
+ switch (c) {
+ case '\b':
+ return '\\b';
+ case '\f':
+ return '\\f';
+ case '\n':
+ return '\\n';
+ case '\r':
+ return '\\r';
+ case '\t':
+ return '\\t';
+ // IE doesn't support this
+ /*
+ case '\v':
+ return '\\v';
+ */
+ case '"':
+ return '\\"';
+ case '\\':
+ return '\\\\';
+ default:
+ return '\\u' + jscoverage_pad(c.charCodeAt(0).toString(16));
+ }
+ }) + '"';
+}
+
+function jscoverage_serializeCoverageToJSON() {
+ var json = [];
+ for (var file in _$jscoverage) {
+ if (! _$jscoverage.hasOwnProperty(file)) {
+ continue;
+ }
+
+ var coverage = _$jscoverage[file];
+
+ var array = [];
+ var length = coverage.length;
+ for (var line = 0; line < length; line++) {
+ var value = coverage[line];
+ if (value === undefined || value === null) {
+ value = 'null';
+ }
+ array.push(value);
+ }
+
+ var source = coverage.source;
+ var lines = [];
+ length = source.length;
+ for (var line = 0; line < length; line++) {
+ lines.push(jscoverage_quote(source[line]));
+ }
+
+ json.push(jscoverage_quote(file) + ':{"coverage":[' + array.join(',') + '],"source":[' + lines.join(',') + ']}');
+ }
+ return '{' + json.join(',') + '}';
+}
+
+function jscoverage_storeButton_click() {
+ if (jscoverage_inLengthyOperation) {
+ return;
+ }
+
+ jscoverage_beginLengthyOperation();
+ var img = document.getElementById('storeImg');
+ img.style.visibility = 'visible';
+
+ var request = jscoverage_createRequest();
+ request.open('POST', '/jscoverage-store', true);
+ request.onreadystatechange = function (event) {
+ if (request.readyState === 4) {
+ var message;
+ try {
+ if (request.status !== 200 && request.status !== 201 && request.status !== 204) {
+ throw request.status;
+ }
+ message = request.responseText;
+ }
+ catch (e) {
+ if (e.toString().search(/^\d{3}$/) === 0) {
+ message = e + ': ' + request.responseText;
+ }
+ else {
+ message = 'Could not connect to server: ' + e;
+ }
+ }
+
+ jscoverage_endLengthyOperation();
+ var img = document.getElementById('storeImg');
+ img.style.visibility = 'hidden';
+
+ var div = document.getElementById('storeDiv');
+ div.appendChild(document.createTextNode(new Date() + ': ' + message));
+ div.appendChild(document.createElement('br'));
+ }
+ };
+ request.setRequestHeader('Content-Type', 'application/json');
+ var json = jscoverage_serializeCoverageToJSON();
+ request.setRequestHeader('Content-Length', json.length.toString());
+ request.send(json);
+}
diff --git a/_test/coverage/plugins/anchor.js b/_test/coverage/plugins/anchor.js
new file mode 100644
index 000000000..09dd629c7
--- /dev/null
+++ b/_test/coverage/plugins/anchor.js
@@ -0,0 +1,146 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/anchor.js']) {
+ _$jscoverage['plugins/anchor.js'] = [];
+ _$jscoverage['plugins/anchor.js'][7] = 0;
+ _$jscoverage['plugins/anchor.js'][8] = 0;
+ _$jscoverage['plugins/anchor.js'][10] = 0;
+ _$jscoverage['plugins/anchor.js'][11] = 0;
+ _$jscoverage['plugins/anchor.js'][17] = 0;
+ _$jscoverage['plugins/anchor.js'][18] = 0;
+ _$jscoverage['plugins/anchor.js'][19] = 0;
+ _$jscoverage['plugins/anchor.js'][20] = 0;
+ _$jscoverage['plugins/anchor.js'][21] = 0;
+ _$jscoverage['plugins/anchor.js'][22] = 0;
+ _$jscoverage['plugins/anchor.js'][30] = 0;
+ _$jscoverage['plugins/anchor.js'][31] = 0;
+ _$jscoverage['plugins/anchor.js'][32] = 0;
+ _$jscoverage['plugins/anchor.js'][33] = 0;
+ _$jscoverage['plugins/anchor.js'][34] = 0;
+ _$jscoverage['plugins/anchor.js'][35] = 0;
+ _$jscoverage['plugins/anchor.js'][39] = 0;
+ _$jscoverage['plugins/anchor.js'][57] = 0;
+ _$jscoverage['plugins/anchor.js'][59] = 0;
+ _$jscoverage['plugins/anchor.js'][60] = 0;
+ _$jscoverage['plugins/anchor.js'][61] = 0;
+ _$jscoverage['plugins/anchor.js'][62] = 0;
+ _$jscoverage['plugins/anchor.js'][64] = 0;
+ _$jscoverage['plugins/anchor.js'][65] = 0;
+ _$jscoverage['plugins/anchor.js'][68] = 0;
+ _$jscoverage['plugins/anchor.js'][70] = 0;
+ _$jscoverage['plugins/anchor.js'][71] = 0;
+ _$jscoverage['plugins/anchor.js'][72] = 0;
+ _$jscoverage['plugins/anchor.js'][76] = 0;
+}
+_$jscoverage['plugins/anchor.js'].source = ["/** "," * 锚点插件,为UEditor提供插入锚点支持 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ 'anchor' ] = function () { "," var me = this ; ",""," me. ready( function () { "," utils. cssRule( 'anchor' , "," '.anchorclass{background: url( \\' ' "," + me. options. UEDITOR_HOME_URL + "," 'themes/default/images/anchor.gif \\' ) no-repeat scroll left center transparent;border: 1px dotted #0000FF;cursor: auto;display: inline-block;height: 16px;width: 15px;}' , "," me. document) "," } ); "," me. addOutputRule( function ( root) { "," utils. each( root. getNodesByTagName( 'img' ), function ( a) { "," var val; "," if ( val = a. getAttr( 'anchorname' )) { "," a. tagName = 'a' ; "," a. setAttr( { "," anchorname : '' , "," name : val, "," 'class' : '' "," } ) "," } "," } ) "," } ); "," me. addInputRule( function ( root) { "," utils. each( root. getNodesByTagName( 'a' ), function ( a) { "," var val; "," if (( val = a. getAttr( 'name' )) && ! a. getAttr( 'href' )) { "," a. tagName = 'img' ; "," a. setAttr( { "," anchorname : a. getAttr( 'name' ), "," 'class' : 'anchorclass' "," } ); "," a. setAttr( 'name' ) ",""," } "," } ) "," } ); ",""," /** "," * 插入锚点 "," * @command anchor "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } name 锚点名称字符串 "," * @example "," * ```javascript "," * //editor 是编辑器实例 "," * editor.execCommand('anchor', 'anchor1'); "," * ``` "," */ "," me. commands[ 'anchor' ] = { "," execCommand: function ( cmd, name) { "," var range = this . selection. getRange(), img = range. getClosedNode(); "," if ( img && img. getAttribute( 'anchorname' )) { "," if ( name) { "," img. setAttribute( 'anchorname' , name); "," } else { "," range. setStartBefore( img). setCursor(); "," domUtils. remove( img); "," } "," } else { "," if ( name) { "," //只在选区的开始插入 "," var anchor = this . document. createElement( 'img' ); "," range. collapse( true ); "," domUtils. setAttributes( anchor, { "," 'anchorname' : name, "," 'class' : 'anchorclass' "," } ); "," range. insertNode( anchor). setStartAfter( anchor). setCursor( false , true ); "," } "," } "," } ",""," } ; ","","","} ; "];
+_$jscoverage['plugins/anchor.js'][7]++;
+UE.plugins.anchor = (function () {
+ _$jscoverage['plugins/anchor.js'][8]++;
+ var me = this;
+ _$jscoverage['plugins/anchor.js'][10]++;
+ me.ready((function () {
+ _$jscoverage['plugins/anchor.js'][11]++;
+ utils.cssRule("anchor", (".anchorclass{background: url('" + me.options.UEDITOR_HOME_URL + "themes/default/images/anchor.gif') no-repeat scroll left center transparent;border: 1px dotted #0000FF;cursor: auto;display: inline-block;height: 16px;width: 15px;}"), me.document);
+}));
+ _$jscoverage['plugins/anchor.js'][17]++;
+ me.addOutputRule((function (root) {
+ _$jscoverage['plugins/anchor.js'][18]++;
+ utils.each(root.getNodesByTagName("img"), (function (a) {
+ _$jscoverage['plugins/anchor.js'][19]++;
+ var val;
+ _$jscoverage['plugins/anchor.js'][20]++;
+ if ((val = a.getAttr("anchorname"))) {
+ _$jscoverage['plugins/anchor.js'][21]++;
+ a.tagName = "a";
+ _$jscoverage['plugins/anchor.js'][22]++;
+ a.setAttr({anchorname: "", name: val, "class": ""});
+ }
+}));
+}));
+ _$jscoverage['plugins/anchor.js'][30]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/anchor.js'][31]++;
+ utils.each(root.getNodesByTagName("a"), (function (a) {
+ _$jscoverage['plugins/anchor.js'][32]++;
+ var val;
+ _$jscoverage['plugins/anchor.js'][33]++;
+ if (((val = a.getAttr("name")) && (! a.getAttr("href")))) {
+ _$jscoverage['plugins/anchor.js'][34]++;
+ a.tagName = "img";
+ _$jscoverage['plugins/anchor.js'][35]++;
+ a.setAttr({anchorname: a.getAttr("name"), "class": "anchorclass"});
+ _$jscoverage['plugins/anchor.js'][39]++;
+ a.setAttr("name");
+ }
+}));
+}));
+ _$jscoverage['plugins/anchor.js'][57]++;
+ me.commands.anchor = {execCommand: (function (cmd, name) {
+ _$jscoverage['plugins/anchor.js'][59]++;
+ var range = this.selection.getRange(), img = range.getClosedNode();
+ _$jscoverage['plugins/anchor.js'][60]++;
+ if ((img && img.getAttribute("anchorname"))) {
+ _$jscoverage['plugins/anchor.js'][61]++;
+ if (name) {
+ _$jscoverage['plugins/anchor.js'][62]++;
+ img.setAttribute("anchorname", name);
+ }
+ else {
+ _$jscoverage['plugins/anchor.js'][64]++;
+ range.setStartBefore(img).setCursor();
+ _$jscoverage['plugins/anchor.js'][65]++;
+ domUtils.remove(img);
+ }
+ }
+ else {
+ _$jscoverage['plugins/anchor.js'][68]++;
+ if (name) {
+ _$jscoverage['plugins/anchor.js'][70]++;
+ var anchor = this.document.createElement("img");
+ _$jscoverage['plugins/anchor.js'][71]++;
+ range.collapse(true);
+ _$jscoverage['plugins/anchor.js'][72]++;
+ domUtils.setAttributes(anchor, {"anchorname": name, "class": "anchorclass"});
+ _$jscoverage['plugins/anchor.js'][76]++;
+ range.insertNode(anchor).setStartAfter(anchor).setCursor(false, true);
+ }
+ }
+})};
+});
diff --git a/_test/coverage/plugins/autofloat.js b/_test/coverage/plugins/autofloat.js
new file mode 100644
index 000000000..6cb09ad9c
--- /dev/null
+++ b/_test/coverage/plugins/autofloat.js
@@ -0,0 +1,290 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/autofloat.js']) {
+ _$jscoverage['plugins/autofloat.js'] = [];
+ _$jscoverage['plugins/autofloat.js'][10] = 0;
+ _$jscoverage['plugins/autofloat.js'][11] = 0;
+ _$jscoverage['plugins/autofloat.js'][13] = 0;
+ _$jscoverage['plugins/autofloat.js'][16] = 0;
+ _$jscoverage['plugins/autofloat.js'][21] = 0;
+ _$jscoverage['plugins/autofloat.js'][22] = 0;
+ _$jscoverage['plugins/autofloat.js'][24] = 0;
+ _$jscoverage['plugins/autofloat.js'][28] = 0;
+ _$jscoverage['plugins/autofloat.js'][29] = 0;
+ _$jscoverage['plugins/autofloat.js'][30] = 0;
+ _$jscoverage['plugins/autofloat.js'][31] = 0;
+ _$jscoverage['plugins/autofloat.js'][33] = 0;
+ _$jscoverage['plugins/autofloat.js'][35] = 0;
+ _$jscoverage['plugins/autofloat.js'][36] = 0;
+ _$jscoverage['plugins/autofloat.js'][37] = 0;
+ _$jscoverage['plugins/autofloat.js'][38] = 0;
+ _$jscoverage['plugins/autofloat.js'][40] = 0;
+ _$jscoverage['plugins/autofloat.js'][45] = 0;
+ _$jscoverage['plugins/autofloat.js'][46] = 0;
+ _$jscoverage['plugins/autofloat.js'][49] = 0;
+ _$jscoverage['plugins/autofloat.js'][50] = 0;
+ _$jscoverage['plugins/autofloat.js'][51] = 0;
+ _$jscoverage['plugins/autofloat.js'][52] = 0;
+ _$jscoverage['plugins/autofloat.js'][53] = 0;
+ _$jscoverage['plugins/autofloat.js'][54] = 0;
+ _$jscoverage['plugins/autofloat.js'][56] = 0;
+ _$jscoverage['plugins/autofloat.js'][58] = 0;
+ _$jscoverage['plugins/autofloat.js'][59] = 0;
+ _$jscoverage['plugins/autofloat.js'][60] = 0;
+ _$jscoverage['plugins/autofloat.js'][62] = 0;
+ _$jscoverage['plugins/autofloat.js'][63] = 0;
+ _$jscoverage['plugins/autofloat.js'][64] = 0;
+ _$jscoverage['plugins/autofloat.js'][65] = 0;
+ _$jscoverage['plugins/autofloat.js'][69] = 0;
+ _$jscoverage['plugins/autofloat.js'][70] = 0;
+ _$jscoverage['plugins/autofloat.js'][71] = 0;
+ _$jscoverage['plugins/autofloat.js'][72] = 0;
+ _$jscoverage['plugins/autofloat.js'][74] = 0;
+ _$jscoverage['plugins/autofloat.js'][77] = 0;
+ _$jscoverage['plugins/autofloat.js'][78] = 0;
+ _$jscoverage['plugins/autofloat.js'][79] = 0;
+ _$jscoverage['plugins/autofloat.js'][80] = 0;
+ _$jscoverage['plugins/autofloat.js'][81] = 0;
+ _$jscoverage['plugins/autofloat.js'][83] = 0;
+ _$jscoverage['plugins/autofloat.js'][86] = 0;
+ _$jscoverage['plugins/autofloat.js'][87] = 0;
+ _$jscoverage['plugins/autofloat.js'][90] = 0;
+ _$jscoverage['plugins/autofloat.js'][91] = 0;
+ _$jscoverage['plugins/autofloat.js'][92] = 0;
+ _$jscoverage['plugins/autofloat.js'][95] = 0;
+ _$jscoverage['plugins/autofloat.js'][96] = 0;
+ _$jscoverage['plugins/autofloat.js'][98] = 0;
+ _$jscoverage['plugins/autofloat.js'][99] = 0;
+ _$jscoverage['plugins/autofloat.js'][100] = 0;
+ _$jscoverage['plugins/autofloat.js'][101] = 0;
+ _$jscoverage['plugins/autofloat.js'][102] = 0;
+ _$jscoverage['plugins/autofloat.js'][103] = 0;
+ _$jscoverage['plugins/autofloat.js'][104] = 0;
+ _$jscoverage['plugins/autofloat.js'][106] = 0;
+ _$jscoverage['plugins/autofloat.js'][107] = 0;
+ _$jscoverage['plugins/autofloat.js'][109] = 0;
+ _$jscoverage['plugins/autofloat.js'][110] = 0;
+ _$jscoverage['plugins/autofloat.js'][111] = 0;
+ _$jscoverage['plugins/autofloat.js'][114] = 0;
+ _$jscoverage['plugins/autofloat.js'][115] = 0;
+ _$jscoverage['plugins/autofloat.js'][116] = 0;
+ _$jscoverage['plugins/autofloat.js'][119] = 0;
+ _$jscoverage['plugins/autofloat.js'][120] = 0;
+ _$jscoverage['plugins/autofloat.js'][121] = 0;
+ _$jscoverage['plugins/autofloat.js'][124] = 0;
+ _$jscoverage['plugins/autofloat.js'][125] = 0;
+ _$jscoverage['plugins/autofloat.js'][126] = 0;
+}
+_$jscoverage['plugins/autofloat.js'].source = ["///import core ","///commands 悬浮工具栏 ","///commandsName AutoFloat,autoFloatEnabled ","///commandsTitle 悬浮工具栏 ","/* "," * modified by chengchao01 "," * "," * 注意: 引入此功能后,在IE6下会将body的背景图片覆盖掉! "," */ "," UE. plugins[ 'autofloat' ] = function () { "," var me = this , "," lang = me. getLang(); "," me. setOpt( { "," topOffset: 0 "," } ); "," var optsAutoFloatEnabled = me. options. autoFloatEnabled !== false , "," topOffset = me. options. topOffset; ","",""," //如果不固定toolbar的位置,则直接退出 "," if (! optsAutoFloatEnabled) { "," return ; "," } "," var uiUtils = UE. ui. uiUtils, "," \t\tLteIE6 = browser. ie && browser. version <= 6 , "," quirks = browser. quirks; ",""," function checkHasUI() { "," if (! UE. ui) { "," alert( lang. autofloatMsg); "," return 0 ; "," } "," return 1 ; "," } "," function fixIE6FixedPos() { "," var docStyle = document. body. style; "," docStyle. backgroundImage = 'url(\"about:blank\")' ; "," docStyle. backgroundAttachment = 'fixed' ; "," } ","\t\tvar \tbakCssText, ","\t\t\tplaceHolder = document. createElement( 'div' ), "," toolbarBox, orgTop, "," getPosition, "," flag = true ; //ie7模式下需要偏移 ","\t\tfunction setFloating() { ","\t\t\tvar toobarBoxPos = domUtils. getXY( toolbarBox), ","\t\t\t\torigalFloat = domUtils. getComputedStyle( toolbarBox, 'position' ), "," origalLeft = domUtils. getComputedStyle( toolbarBox, 'left' ); ","\t\t\ttoolbarBox. style. width = toolbarBox. offsetWidth + 'px' ; "," toolbarBox. style. zIndex = me. options. zIndex * 1 + 1 ; ","\t\t\ttoolbarBox. parentNode. insertBefore( placeHolder, toolbarBox); ","\t\t\tif ( LteIE6 || ( quirks && browser. ie)) { "," if ( toolbarBox. style. position != 'absolute' ) { "," toolbarBox. style. position = 'absolute' ; "," } "," toolbarBox. style. top = ( document. body. scrollTop|| document. documentElement. scrollTop) - orgTop + topOffset + 'px' ; ","\t\t\t} else { "," if ( browser. ie7Compat && flag) { "," flag = false ; "," toolbarBox. style. left = domUtils. getXY( toolbarBox). x - document. documentElement. getBoundingClientRect(). left+ 2 + 'px' ; "," } "," if ( toolbarBox. style. position != 'fixed' ) { "," toolbarBox. style. position = 'fixed' ; "," toolbarBox. style. top = topOffset + \"px\" ; "," (( origalFloat == 'absolute' || origalFloat == 'relative' ) && parseFloat( origalLeft)) && ( toolbarBox. style. left = toobarBoxPos. x + 'px' ); "," } ","\t\t\t} ","\t\t} ","\t\tfunction unsetFloating() { "," flag = true ; "," if ( placeHolder. parentNode) { "," placeHolder. parentNode. removeChild( placeHolder); "," } ","\t\t\ttoolbarBox. style. cssText = bakCssText; ","\t\t} ",""," function updateFloating() { "," var rect3 = getPosition( me. container); "," var offset= me. options. toolbarTopOffset|| 0 ; "," if ( rect3. top < 0 && rect3. bottom - toolbarBox. offsetHeight > offset) { "," setFloating(); "," } else { "," unsetFloating(); "," } "," } "," var defer_updateFloating = utils. defer( function () { "," updateFloating(); "," } , browser. ie ? 200 : 100 , true ); ",""," me. addListener( 'destroy' , function () { "," domUtils. un( window, [ 'scroll' , 'resize' ], updateFloating); "," me. removeListener( 'keydown' , defer_updateFloating); "," } ); ",""," me. addListener( 'ready' , function () { "," if ( checkHasUI( me)) { ",""," getPosition = uiUtils. getClientRect; "," toolbarBox = me. ui. getDom( 'toolbarbox' ); "," orgTop = getPosition( toolbarBox). top; "," bakCssText = toolbarBox. style. cssText; "," placeHolder. style. height = toolbarBox. offsetHeight + 'px' ; "," if ( LteIE6) { "," fixIE6FixedPos(); "," } "," domUtils. on( window, [ 'scroll' , 'resize' ], updateFloating); "," me. addListener( 'keydown' , defer_updateFloating); ",""," me. addListener( 'beforefullscreenchange' , function ( t, enabled) { "," if ( enabled) { "," unsetFloating(); "," } "," } ); "," me. addListener( 'fullscreenchanged' , function ( t, enabled) { "," if (! enabled) { "," updateFloating(); "," } "," } ); "," me. addListener( 'sourcemodechanged' , function ( t, enabled) { "," setTimeout( function () { "," updateFloating(); "," } , 0 ); "," } ); "," me. addListener( \"clearDoc\" , function () { "," setTimeout( function () { "," updateFloating(); "," } , 0 ); ",""," } ) "," } "," } ); ","\t} ; "];
+_$jscoverage['plugins/autofloat.js'][10]++;
+UE.plugins.autofloat = (function () {
+ _$jscoverage['plugins/autofloat.js'][11]++;
+ var me = this, lang = me.getLang();
+ _$jscoverage['plugins/autofloat.js'][13]++;
+ me.setOpt({topOffset: 0});
+ _$jscoverage['plugins/autofloat.js'][16]++;
+ var optsAutoFloatEnabled = (me.options.autoFloatEnabled !== false), topOffset = me.options.topOffset;
+ _$jscoverage['plugins/autofloat.js'][21]++;
+ if ((! optsAutoFloatEnabled)) {
+ _$jscoverage['plugins/autofloat.js'][22]++;
+ return;
+ }
+ _$jscoverage['plugins/autofloat.js'][24]++;
+ var uiUtils = UE.ui.uiUtils, LteIE6 = (browser.ie && (browser.version <= 6)), quirks = browser.quirks;
+ _$jscoverage['plugins/autofloat.js'][28]++;
+ function checkHasUI() {
+ _$jscoverage['plugins/autofloat.js'][29]++;
+ if ((! UE.ui)) {
+ _$jscoverage['plugins/autofloat.js'][30]++;
+ alert(lang.autofloatMsg);
+ _$jscoverage['plugins/autofloat.js'][31]++;
+ return 0;
+ }
+ _$jscoverage['plugins/autofloat.js'][33]++;
+ return 1;
+}
+ _$jscoverage['plugins/autofloat.js'][35]++;
+ function fixIE6FixedPos() {
+ _$jscoverage['plugins/autofloat.js'][36]++;
+ var docStyle = document.body.style;
+ _$jscoverage['plugins/autofloat.js'][37]++;
+ docStyle.backgroundImage = "url(\"about:blank\")";
+ _$jscoverage['plugins/autofloat.js'][38]++;
+ docStyle.backgroundAttachment = "fixed";
+}
+ _$jscoverage['plugins/autofloat.js'][40]++;
+ var bakCssText, placeHolder = document.createElement("div"), toolbarBox, orgTop, getPosition, flag = true;
+ _$jscoverage['plugins/autofloat.js'][45]++;
+ function setFloating() {
+ _$jscoverage['plugins/autofloat.js'][46]++;
+ var toobarBoxPos = domUtils.getXY(toolbarBox), origalFloat = domUtils.getComputedStyle(toolbarBox, "position"), origalLeft = domUtils.getComputedStyle(toolbarBox, "left");
+ _$jscoverage['plugins/autofloat.js'][49]++;
+ toolbarBox.style.width = (toolbarBox.offsetWidth + "px");
+ _$jscoverage['plugins/autofloat.js'][50]++;
+ toolbarBox.style.zIndex = ((me.options.zIndex * 1) + 1);
+ _$jscoverage['plugins/autofloat.js'][51]++;
+ toolbarBox.parentNode.insertBefore(placeHolder, toolbarBox);
+ _$jscoverage['plugins/autofloat.js'][52]++;
+ if ((LteIE6 || (quirks && browser.ie))) {
+ _$jscoverage['plugins/autofloat.js'][53]++;
+ if ((toolbarBox.style.position != "absolute")) {
+ _$jscoverage['plugins/autofloat.js'][54]++;
+ toolbarBox.style.position = "absolute";
+ }
+ _$jscoverage['plugins/autofloat.js'][56]++;
+ toolbarBox.style.top = (((document.body.scrollTop || document.documentElement.scrollTop) - orgTop) + topOffset + "px");
+ }
+ else {
+ _$jscoverage['plugins/autofloat.js'][58]++;
+ if ((browser.ie7Compat && flag)) {
+ _$jscoverage['plugins/autofloat.js'][59]++;
+ flag = false;
+ _$jscoverage['plugins/autofloat.js'][60]++;
+ toolbarBox.style.left = ((domUtils.getXY(toolbarBox).x - document.documentElement.getBoundingClientRect().left) + 2 + "px");
+ }
+ _$jscoverage['plugins/autofloat.js'][62]++;
+ if ((toolbarBox.style.position != "fixed")) {
+ _$jscoverage['plugins/autofloat.js'][63]++;
+ toolbarBox.style.position = "fixed";
+ _$jscoverage['plugins/autofloat.js'][64]++;
+ toolbarBox.style.top = (topOffset + "px");
+ _$jscoverage['plugins/autofloat.js'][65]++;
+ (((origalFloat == "absolute") || (origalFloat == "relative")) && parseFloat(origalLeft) && (toolbarBox.style.left = (toobarBoxPos.x + "px")));
+ }
+ }
+}
+ _$jscoverage['plugins/autofloat.js'][69]++;
+ function unsetFloating() {
+ _$jscoverage['plugins/autofloat.js'][70]++;
+ flag = true;
+ _$jscoverage['plugins/autofloat.js'][71]++;
+ if (placeHolder.parentNode) {
+ _$jscoverage['plugins/autofloat.js'][72]++;
+ placeHolder.parentNode.removeChild(placeHolder);
+ }
+ _$jscoverage['plugins/autofloat.js'][74]++;
+ toolbarBox.style.cssText = bakCssText;
+}
+ _$jscoverage['plugins/autofloat.js'][77]++;
+ function updateFloating() {
+ _$jscoverage['plugins/autofloat.js'][78]++;
+ var rect3 = getPosition(me.container);
+ _$jscoverage['plugins/autofloat.js'][79]++;
+ var offset = (me.options.toolbarTopOffset || 0);
+ _$jscoverage['plugins/autofloat.js'][80]++;
+ if (((rect3.top < 0) && ((rect3.bottom - toolbarBox.offsetHeight) > offset))) {
+ _$jscoverage['plugins/autofloat.js'][81]++;
+ setFloating();
+ }
+ else {
+ _$jscoverage['plugins/autofloat.js'][83]++;
+ unsetFloating();
+ }
+}
+ _$jscoverage['plugins/autofloat.js'][86]++;
+ var defer_updateFloating = utils.defer((function () {
+ _$jscoverage['plugins/autofloat.js'][87]++;
+ updateFloating();
+}), (browser.ie? 200: 100), true);
+ _$jscoverage['plugins/autofloat.js'][90]++;
+ me.addListener("destroy", (function () {
+ _$jscoverage['plugins/autofloat.js'][91]++;
+ domUtils.un(window, ["scroll", "resize"], updateFloating);
+ _$jscoverage['plugins/autofloat.js'][92]++;
+ me.removeListener("keydown", defer_updateFloating);
+}));
+ _$jscoverage['plugins/autofloat.js'][95]++;
+ me.addListener("ready", (function () {
+ _$jscoverage['plugins/autofloat.js'][96]++;
+ if (checkHasUI(me)) {
+ _$jscoverage['plugins/autofloat.js'][98]++;
+ getPosition = uiUtils.getClientRect;
+ _$jscoverage['plugins/autofloat.js'][99]++;
+ toolbarBox = me.ui.getDom("toolbarbox");
+ _$jscoverage['plugins/autofloat.js'][100]++;
+ orgTop = getPosition(toolbarBox).top;
+ _$jscoverage['plugins/autofloat.js'][101]++;
+ bakCssText = toolbarBox.style.cssText;
+ _$jscoverage['plugins/autofloat.js'][102]++;
+ placeHolder.style.height = (toolbarBox.offsetHeight + "px");
+ _$jscoverage['plugins/autofloat.js'][103]++;
+ if (LteIE6) {
+ _$jscoverage['plugins/autofloat.js'][104]++;
+ fixIE6FixedPos();
+ }
+ _$jscoverage['plugins/autofloat.js'][106]++;
+ domUtils.on(window, ["scroll", "resize"], updateFloating);
+ _$jscoverage['plugins/autofloat.js'][107]++;
+ me.addListener("keydown", defer_updateFloating);
+ _$jscoverage['plugins/autofloat.js'][109]++;
+ me.addListener("beforefullscreenchange", (function (t, enabled) {
+ _$jscoverage['plugins/autofloat.js'][110]++;
+ if (enabled) {
+ _$jscoverage['plugins/autofloat.js'][111]++;
+ unsetFloating();
+ }
+}));
+ _$jscoverage['plugins/autofloat.js'][114]++;
+ me.addListener("fullscreenchanged", (function (t, enabled) {
+ _$jscoverage['plugins/autofloat.js'][115]++;
+ if ((! enabled)) {
+ _$jscoverage['plugins/autofloat.js'][116]++;
+ updateFloating();
+ }
+}));
+ _$jscoverage['plugins/autofloat.js'][119]++;
+ me.addListener("sourcemodechanged", (function (t, enabled) {
+ _$jscoverage['plugins/autofloat.js'][120]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/autofloat.js'][121]++;
+ updateFloating();
+}), 0);
+}));
+ _$jscoverage['plugins/autofloat.js'][124]++;
+ me.addListener("clearDoc", (function () {
+ _$jscoverage['plugins/autofloat.js'][125]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/autofloat.js'][126]++;
+ updateFloating();
+}), 0);
+}));
+ }
+}));
+});
diff --git a/_test/coverage/plugins/autoheight.js b/_test/coverage/plugins/autoheight.js
new file mode 100644
index 000000000..ba8195a94
--- /dev/null
+++ b/_test/coverage/plugins/autoheight.js
@@ -0,0 +1,224 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/autoheight.js']) {
+ _$jscoverage['plugins/autoheight.js'] = [];
+ _$jscoverage['plugins/autoheight.js'][9] = 0;
+ _$jscoverage['plugins/autoheight.js'][10] = 0;
+ _$jscoverage['plugins/autoheight.js'][12] = 0;
+ _$jscoverage['plugins/autoheight.js'][13] = 0;
+ _$jscoverage['plugins/autoheight.js'][14] = 0;
+ _$jscoverage['plugins/autoheight.js'][17] = 0;
+ _$jscoverage['plugins/autoheight.js'][24] = 0;
+ _$jscoverage['plugins/autoheight.js'][25] = 0;
+ _$jscoverage['plugins/autoheight.js'][26] = 0;
+ _$jscoverage['plugins/autoheight.js'][27] = 0;
+ _$jscoverage['plugins/autoheight.js'][28] = 0;
+ _$jscoverage['plugins/autoheight.js'][29] = 0;
+ _$jscoverage['plugins/autoheight.js'][30] = 0;
+ _$jscoverage['plugins/autoheight.js'][31] = 0;
+ _$jscoverage['plugins/autoheight.js'][33] = 0;
+ _$jscoverage['plugins/autoheight.js'][34] = 0;
+ _$jscoverage['plugins/autoheight.js'][36] = 0;
+ _$jscoverage['plugins/autoheight.js'][37] = 0;
+ _$jscoverage['plugins/autoheight.js'][38] = 0;
+ _$jscoverage['plugins/autoheight.js'][39] = 0;
+ _$jscoverage['plugins/autoheight.js'][41] = 0;
+ _$jscoverage['plugins/autoheight.js'][43] = 0;
+ _$jscoverage['plugins/autoheight.js'][45] = 0;
+ _$jscoverage['plugins/autoheight.js'][50] = 0;
+ _$jscoverage['plugins/autoheight.js'][51] = 0;
+ _$jscoverage['plugins/autoheight.js'][52] = 0;
+ _$jscoverage['plugins/autoheight.js'][54] = 0;
+ _$jscoverage['plugins/autoheight.js'][55] = 0;
+ _$jscoverage['plugins/autoheight.js'][57] = 0;
+ _$jscoverage['plugins/autoheight.js'][58] = 0;
+ _$jscoverage['plugins/autoheight.js'][59] = 0;
+ _$jscoverage['plugins/autoheight.js'][60] = 0;
+ _$jscoverage['plugins/autoheight.js'][62] = 0;
+ _$jscoverage['plugins/autoheight.js'][63] = 0;
+ _$jscoverage['plugins/autoheight.js'][64] = 0;
+ _$jscoverage['plugins/autoheight.js'][65] = 0;
+ _$jscoverage['plugins/autoheight.js'][66] = 0;
+ _$jscoverage['plugins/autoheight.js'][69] = 0;
+ _$jscoverage['plugins/autoheight.js'][70] = 0;
+ _$jscoverage['plugins/autoheight.js'][72] = 0;
+ _$jscoverage['plugins/autoheight.js'][74] = 0;
+ _$jscoverage['plugins/autoheight.js'][76] = 0;
+ _$jscoverage['plugins/autoheight.js'][78] = 0;
+ _$jscoverage['plugins/autoheight.js'][79] = 0;
+ _$jscoverage['plugins/autoheight.js'][80] = 0;
+ _$jscoverage['plugins/autoheight.js'][81] = 0;
+ _$jscoverage['plugins/autoheight.js'][82] = 0;
+ _$jscoverage['plugins/autoheight.js'][84] = 0;
+ _$jscoverage['plugins/autoheight.js'][85] = 0;
+ _$jscoverage['plugins/autoheight.js'][87] = 0;
+ _$jscoverage['plugins/autoheight.js'][88] = 0;
+ _$jscoverage['plugins/autoheight.js'][89] = 0;
+ _$jscoverage['plugins/autoheight.js'][90] = 0;
+ _$jscoverage['plugins/autoheight.js'][91] = 0;
+}
+_$jscoverage['plugins/autoheight.js'].source = ["///import core ","///commands 当输入内容超过编辑器高度时,编辑器自动增高 ","///commandsName AutoHeight,autoHeightEnabled ","///commandsTitle 自动增高 ","/* "," * @description 自动伸展 "," * @author zhanyi "," */ ","UE. plugins[ 'autoheight' ] = function () { "," var me = this ; "," //提供开关,就算加载也可以关闭 "," me. autoHeightEnabled = me. options. autoHeightEnabled !== false ; "," if (! me. autoHeightEnabled) { "," return ; "," } ",""," var bakOverflow, "," span, tmpNode, "," lastHeight = 0 , "," options = me. options, "," currentHeight, "," timer; ",""," function adjustHeight() { "," var me = this ; "," clearTimeout( timer); "," if ( isFullscreen) return ; "," timer = setTimeout( function () { "," if (! me. queryCommandState || me. queryCommandState && me. queryCommandState( 'source' ) != 1 ) { "," if (! span) { "," span = me. document. createElement( 'span' ); "," //trace:1764 "," span. style. cssText = 'display:block;width:0;margin:0;padding:0;border:0;clear:both;' ; "," span. innerHTML = '.' ; "," } "," tmpNode = span. cloneNode( true ); "," me. body. appendChild( tmpNode); "," currentHeight = Math. max( domUtils. getXY( tmpNode). y + tmpNode. offsetHeight, Math. max( options. minFrameHeight, options. initialFrameHeight)); "," if ( currentHeight != lastHeight) { ",""," me. setHeight( currentHeight, true ); ",""," lastHeight = currentHeight; "," } "," domUtils. remove( tmpNode); ",""," } "," } , 50 ); "," } "," var isFullscreen; "," me. addListener( 'fullscreenchanged' , function ( cmd, f) { "," isFullscreen = f"," } ); "," me. addListener( 'destroy' , function () { "," me. removeListener( 'contentchange afterinserthtml keyup mouseup' , adjustHeight) "," } ); "," me. enableAutoHeight = function () { "," var me = this ; "," if (! me. autoHeightEnabled) { "," return ; "," } "," var doc = me. document; "," me. autoHeightEnabled = true ; "," bakOverflow = doc. body. style. overflowY; "," doc. body. style. overflowY = 'hidden' ; "," me. addListener( 'contentchange afterinserthtml keyup mouseup' , adjustHeight); "," //ff不给事件算得不对 ",""," setTimeout( function () { "," adjustHeight. call( me); "," } , browser. gecko ? 100 : 0 ); "," me. fireEvent( 'autoheightchanged' , me. autoHeightEnabled); "," } ; "," me. disableAutoHeight = function () { ",""," me. body. style. overflowY = bakOverflow || '' ; ",""," me. removeListener( 'contentchange' , adjustHeight); "," me. removeListener( 'keyup' , adjustHeight); "," me. removeListener( 'mouseup' , adjustHeight); "," me. autoHeightEnabled = false ; "," me. fireEvent( 'autoheightchanged' , me. autoHeightEnabled); "," } ; "," me. addListener( 'ready' , function () { "," me. enableAutoHeight(); "," //trace:1764 "," var timer; "," domUtils. on( browser. ie ? me. body : me. document, browser. webkit ? 'dragover' : 'drop' , function () { "," clearTimeout( timer); "," timer = setTimeout( function () { "," adjustHeight. call( this ); "," } , 100 ); ",""," } ); "," } ); ","","","} ; ",""];
+_$jscoverage['plugins/autoheight.js'][9]++;
+UE.plugins.autoheight = (function () {
+ _$jscoverage['plugins/autoheight.js'][10]++;
+ var me = this;
+ _$jscoverage['plugins/autoheight.js'][12]++;
+ me.autoHeightEnabled = (me.options.autoHeightEnabled !== false);
+ _$jscoverage['plugins/autoheight.js'][13]++;
+ if ((! me.autoHeightEnabled)) {
+ _$jscoverage['plugins/autoheight.js'][14]++;
+ return;
+ }
+ _$jscoverage['plugins/autoheight.js'][17]++;
+ var bakOverflow, span, tmpNode, lastHeight = 0, options = me.options, currentHeight, timer;
+ _$jscoverage['plugins/autoheight.js'][24]++;
+ function adjustHeight() {
+ _$jscoverage['plugins/autoheight.js'][25]++;
+ var me = this;
+ _$jscoverage['plugins/autoheight.js'][26]++;
+ clearTimeout(timer);
+ _$jscoverage['plugins/autoheight.js'][27]++;
+ if (isFullscreen) {
+ _$jscoverage['plugins/autoheight.js'][27]++;
+ return;
+ }
+ _$jscoverage['plugins/autoheight.js'][28]++;
+ timer = setTimeout((function () {
+ _$jscoverage['plugins/autoheight.js'][29]++;
+ if (((! me.queryCommandState) || (me.queryCommandState && (me.queryCommandState("source") != 1)))) {
+ _$jscoverage['plugins/autoheight.js'][30]++;
+ if ((! span)) {
+ _$jscoverage['plugins/autoheight.js'][31]++;
+ span = me.document.createElement("span");
+ _$jscoverage['plugins/autoheight.js'][33]++;
+ span.style.cssText = "display:block;width:0;margin:0;padding:0;border:0;clear:both;";
+ _$jscoverage['plugins/autoheight.js'][34]++;
+ span.innerHTML = ".";
+ }
+ _$jscoverage['plugins/autoheight.js'][36]++;
+ tmpNode = span.cloneNode(true);
+ _$jscoverage['plugins/autoheight.js'][37]++;
+ me.body.appendChild(tmpNode);
+ _$jscoverage['plugins/autoheight.js'][38]++;
+ currentHeight = Math.max((domUtils.getXY(tmpNode).y + tmpNode.offsetHeight), Math.max(options.minFrameHeight, options.initialFrameHeight));
+ _$jscoverage['plugins/autoheight.js'][39]++;
+ if ((currentHeight != lastHeight)) {
+ _$jscoverage['plugins/autoheight.js'][41]++;
+ me.setHeight(currentHeight, true);
+ _$jscoverage['plugins/autoheight.js'][43]++;
+ lastHeight = currentHeight;
+ }
+ _$jscoverage['plugins/autoheight.js'][45]++;
+ domUtils.remove(tmpNode);
+ }
+}), 50);
+}
+ _$jscoverage['plugins/autoheight.js'][50]++;
+ var isFullscreen;
+ _$jscoverage['plugins/autoheight.js'][51]++;
+ me.addListener("fullscreenchanged", (function (cmd, f) {
+ _$jscoverage['plugins/autoheight.js'][52]++;
+ isFullscreen = f;
+}));
+ _$jscoverage['plugins/autoheight.js'][54]++;
+ me.addListener("destroy", (function () {
+ _$jscoverage['plugins/autoheight.js'][55]++;
+ me.removeListener("contentchange afterinserthtml keyup mouseup", adjustHeight);
+}));
+ _$jscoverage['plugins/autoheight.js'][57]++;
+ me.enableAutoHeight = (function () {
+ _$jscoverage['plugins/autoheight.js'][58]++;
+ var me = this;
+ _$jscoverage['plugins/autoheight.js'][59]++;
+ if ((! me.autoHeightEnabled)) {
+ _$jscoverage['plugins/autoheight.js'][60]++;
+ return;
+ }
+ _$jscoverage['plugins/autoheight.js'][62]++;
+ var doc = me.document;
+ _$jscoverage['plugins/autoheight.js'][63]++;
+ me.autoHeightEnabled = true;
+ _$jscoverage['plugins/autoheight.js'][64]++;
+ bakOverflow = doc.body.style.overflowY;
+ _$jscoverage['plugins/autoheight.js'][65]++;
+ doc.body.style.overflowY = "hidden";
+ _$jscoverage['plugins/autoheight.js'][66]++;
+ me.addListener("contentchange afterinserthtml keyup mouseup", adjustHeight);
+ _$jscoverage['plugins/autoheight.js'][69]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/autoheight.js'][70]++;
+ adjustHeight.call(me);
+}), (browser.gecko? 100: 0));
+ _$jscoverage['plugins/autoheight.js'][72]++;
+ me.fireEvent("autoheightchanged", me.autoHeightEnabled);
+});
+ _$jscoverage['plugins/autoheight.js'][74]++;
+ me.disableAutoHeight = (function () {
+ _$jscoverage['plugins/autoheight.js'][76]++;
+ me.body.style.overflowY = (bakOverflow || "");
+ _$jscoverage['plugins/autoheight.js'][78]++;
+ me.removeListener("contentchange", adjustHeight);
+ _$jscoverage['plugins/autoheight.js'][79]++;
+ me.removeListener("keyup", adjustHeight);
+ _$jscoverage['plugins/autoheight.js'][80]++;
+ me.removeListener("mouseup", adjustHeight);
+ _$jscoverage['plugins/autoheight.js'][81]++;
+ me.autoHeightEnabled = false;
+ _$jscoverage['plugins/autoheight.js'][82]++;
+ me.fireEvent("autoheightchanged", me.autoHeightEnabled);
+});
+ _$jscoverage['plugins/autoheight.js'][84]++;
+ me.addListener("ready", (function () {
+ _$jscoverage['plugins/autoheight.js'][85]++;
+ me.enableAutoHeight();
+ _$jscoverage['plugins/autoheight.js'][87]++;
+ var timer;
+ _$jscoverage['plugins/autoheight.js'][88]++;
+ domUtils.on((browser.ie? me.body: me.document), (browser.webkit? "dragover": "drop"), (function () {
+ _$jscoverage['plugins/autoheight.js'][89]++;
+ clearTimeout(timer);
+ _$jscoverage['plugins/autoheight.js'][90]++;
+ timer = setTimeout((function () {
+ _$jscoverage['plugins/autoheight.js'][91]++;
+ adjustHeight.call(this);
+}), 100);
+}));
+}));
+});
diff --git a/_test/coverage/plugins/autolink.js b/_test/coverage/plugins/autolink.js
new file mode 100644
index 000000000..e232a6180
--- /dev/null
+++ b/_test/coverage/plugins/autolink.js
@@ -0,0 +1,246 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/autolink.js']) {
+ _$jscoverage['plugins/autolink.js'] = [];
+ _$jscoverage['plugins/autolink.js'][9] = 0;
+ _$jscoverage['plugins/autolink.js'][10] = 0;
+ _$jscoverage['plugins/autolink.js'][11] = 0;
+ _$jscoverage['plugins/autolink.js'][12] = 0;
+ _$jscoverage['plugins/autolink.js'][14] = 0;
+ _$jscoverage['plugins/autolink.js'][15] = 0;
+ _$jscoverage['plugins/autolink.js'][16] = 0;
+ _$jscoverage['plugins/autolink.js'][18] = 0;
+ _$jscoverage['plugins/autolink.js'][19] = 0;
+ _$jscoverage['plugins/autolink.js'][21] = 0;
+ _$jscoverage['plugins/autolink.js'][23] = 0;
+ _$jscoverage['plugins/autolink.js'][28] = 0;
+ _$jscoverage['plugins/autolink.js'][29] = 0;
+ _$jscoverage['plugins/autolink.js'][30] = 0;
+ _$jscoverage['plugins/autolink.js'][31] = 0;
+ _$jscoverage['plugins/autolink.js'][32] = 0;
+ _$jscoverage['plugins/autolink.js'][34] = 0;
+ _$jscoverage['plugins/autolink.js'][35] = 0;
+ _$jscoverage['plugins/autolink.js'][36] = 0;
+ _$jscoverage['plugins/autolink.js'][39] = 0;
+ _$jscoverage['plugins/autolink.js'][40] = 0;
+ _$jscoverage['plugins/autolink.js'][41] = 0;
+ _$jscoverage['plugins/autolink.js'][43] = 0;
+ _$jscoverage['plugins/autolink.js'][44] = 0;
+ _$jscoverage['plugins/autolink.js'][46] = 0;
+ _$jscoverage['plugins/autolink.js'][47] = 0;
+ _$jscoverage['plugins/autolink.js'][49] = 0;
+ _$jscoverage['plugins/autolink.js'][51] = 0;
+ _$jscoverage['plugins/autolink.js'][52] = 0;
+ _$jscoverage['plugins/autolink.js'][54] = 0;
+ _$jscoverage['plugins/autolink.js'][55] = 0;
+ _$jscoverage['plugins/autolink.js'][58] = 0;
+ _$jscoverage['plugins/autolink.js'][59] = 0;
+ _$jscoverage['plugins/autolink.js'][60] = 0;
+ _$jscoverage['plugins/autolink.js'][61] = 0;
+ _$jscoverage['plugins/autolink.js'][63] = 0;
+ _$jscoverage['plugins/autolink.js'][64] = 0;
+ _$jscoverage['plugins/autolink.js'][67] = 0;
+ _$jscoverage['plugins/autolink.js'][68] = 0;
+ _$jscoverage['plugins/autolink.js'][69] = 0;
+ _$jscoverage['plugins/autolink.js'][70] = 0;
+ _$jscoverage['plugins/autolink.js'][72] = 0;
+ _$jscoverage['plugins/autolink.js'][75] = 0;
+ _$jscoverage['plugins/autolink.js'][81] = 0;
+ _$jscoverage['plugins/autolink.js'][82] = 0;
+ _$jscoverage['plugins/autolink.js'][84] = 0;
+ _$jscoverage['plugins/autolink.js'][86] = 0;
+ _$jscoverage['plugins/autolink.js'][87] = 0;
+ _$jscoverage['plugins/autolink.js'][88] = 0;
+ _$jscoverage['plugins/autolink.js'][89] = 0;
+ _$jscoverage['plugins/autolink.js'][90] = 0;
+ _$jscoverage['plugins/autolink.js'][91] = 0;
+ _$jscoverage['plugins/autolink.js'][92] = 0;
+ _$jscoverage['plugins/autolink.js'][94] = 0;
+ _$jscoverage['plugins/autolink.js'][95] = 0;
+ _$jscoverage['plugins/autolink.js'][96] = 0;
+ _$jscoverage['plugins/autolink.js'][97] = 0;
+ _$jscoverage['plugins/autolink.js'][98] = 0;
+ _$jscoverage['plugins/autolink.js'][99] = 0;
+ _$jscoverage['plugins/autolink.js'][100] = 0;
+}
+_$jscoverage['plugins/autolink.js'].source = ["///import core ","///commands 为非ie浏览器自动添加a标签 ","///commandsName AutoLink ","///commandsTitle 自动增加链接 ","/* "," * @description 为非ie浏览器自动添加a标签 "," * @author zhanyi "," */ "," UE. plugins[ 'autolink' ] = function () { "," var cont = 0 ; "," if ( browser. ie) { "," return ; "," } "," var me = this ; "," me. addListener( 'reset' , function () { "," cont = 0 ; "," } ); "," me. addListener( 'keydown' , function ( type, evt) { "," var keyCode = evt. keyCode || evt. which; ",""," if ( keyCode == 32 || keyCode == 13 ) { ",""," var sel = me. selection. getNative(), "," range = sel. getRangeAt( 0 ). cloneRange(), "," offset, "," charCode; ",""," var start = range. startContainer; "," while ( start. nodeType == 1 && range. startOffset > 0 ) { "," start = range. startContainer. childNodes[ range. startOffset - 1 ]; "," if (! start) { "," break ; "," } "," range. setStart( start, start. nodeType == 1 ? start. childNodes. length : start. nodeValue. length); "," range. collapse( true ); "," start = range. startContainer; "," } ",""," do { "," if ( range. startOffset == 0 ) { "," start = range. startContainer. previousSibling; ",""," while ( start && start. nodeType == 1 ) { "," start = start. lastChild; "," } "," if (! start || domUtils. isFillChar( start)) { "," break ; "," } "," offset = start. nodeValue. length; "," } else { "," start = range. startContainer; "," offset = range. startOffset; "," } "," range. setStart( start, offset - 1 ); "," charCode = range. toString(). charCodeAt( 0 ); "," } while ( charCode != 160 && charCode != 32 ); ",""," if ( range. toString(). replace( new RegExp( domUtils. fillChar, 'g' ), '' ). match( /(?:https?:\\/\\/|ssh:\\/\\/|ftp:\\/\\/|file:\\/|www\\.)/i )) { "," while ( range. toString(). length) { "," if ( /^(?:https?:\\/\\/|ssh:\\/\\/|ftp:\\/\\/|file:\\/|www\\.)/i . test( range. toString())) { "," break ; "," } "," try { "," range. setStart( range. startContainer, range. startOffset+ 1 ); "," } catch ( e) { "," //trace:2121 "," var start = range. startContainer; "," while (!( next = start. nextSibling)) { "," if ( domUtils. isBody( start)) { "," return ; "," } "," start = start. parentNode; ",""," } "," range. setStart( next, 0 ); ",""," } ",""," } "," //range的开始边界已经在a标签里的不再处理 "," if ( domUtils. findParentByTagName( range. startContainer, 'a' , true )) { "," return ; "," } "," var a = me. document. createElement( 'a' ), text = me. document. createTextNode( ' ' ), href; ",""," me. undoManger && me. undoManger. save(); "," a. appendChild( range. extractContents()); "," a. href = a. innerHTML = a. innerHTML. replace( /<[^>]+>/g , '' ); "," href = a. getAttribute( \"href\" ). replace( new RegExp( domUtils. fillChar, 'g' ), '' ); "," href = /^(?:https?:\\/\\/)/ig . test( href) ? href : \"http://\" + href; "," a. setAttribute( '_src' , utils. html( href)); "," a. href = utils. html( href); ",""," range. insertNode( a); "," a. parentNode. insertBefore( text, a. nextSibling); "," range. setStart( text, 0 ); "," range. collapse( true ); "," sel. removeAllRanges(); "," sel. addRange( range); "," me. undoManger && me. undoManger. save(); "," } "," } "," } ); "," } ; "];
+_$jscoverage['plugins/autolink.js'][9]++;
+UE.plugins.autolink = (function () {
+ _$jscoverage['plugins/autolink.js'][10]++;
+ var cont = 0;
+ _$jscoverage['plugins/autolink.js'][11]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/autolink.js'][12]++;
+ return;
+ }
+ _$jscoverage['plugins/autolink.js'][14]++;
+ var me = this;
+ _$jscoverage['plugins/autolink.js'][15]++;
+ me.addListener("reset", (function () {
+ _$jscoverage['plugins/autolink.js'][16]++;
+ cont = 0;
+}));
+ _$jscoverage['plugins/autolink.js'][18]++;
+ me.addListener("keydown", (function (type, evt) {
+ _$jscoverage['plugins/autolink.js'][19]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/autolink.js'][21]++;
+ if (((keyCode == 32) || (keyCode == 13))) {
+ _$jscoverage['plugins/autolink.js'][23]++;
+ var sel = me.selection.getNative(), range = sel.getRangeAt(0).cloneRange(), offset, charCode;
+ _$jscoverage['plugins/autolink.js'][28]++;
+ var start = range.startContainer;
+ _$jscoverage['plugins/autolink.js'][29]++;
+ while (((start.nodeType == 1) && (range.startOffset > 0))) {
+ _$jscoverage['plugins/autolink.js'][30]++;
+ start = range.startContainer.childNodes[(range.startOffset - 1)];
+ _$jscoverage['plugins/autolink.js'][31]++;
+ if ((! start)) {
+ _$jscoverage['plugins/autolink.js'][32]++;
+ break;
+ }
+ _$jscoverage['plugins/autolink.js'][34]++;
+ range.setStart(start, ((start.nodeType == 1)? start.childNodes.length: start.nodeValue.length));
+ _$jscoverage['plugins/autolink.js'][35]++;
+ range.collapse(true);
+ _$jscoverage['plugins/autolink.js'][36]++;
+ start = range.startContainer;
+}
+ _$jscoverage['plugins/autolink.js'][39]++;
+ do {
+ _$jscoverage['plugins/autolink.js'][40]++;
+ if ((range.startOffset == 0)) {
+ _$jscoverage['plugins/autolink.js'][41]++;
+ start = range.startContainer.previousSibling;
+ _$jscoverage['plugins/autolink.js'][43]++;
+ while ((start && (start.nodeType == 1))) {
+ _$jscoverage['plugins/autolink.js'][44]++;
+ start = start.lastChild;
+}
+ _$jscoverage['plugins/autolink.js'][46]++;
+ if (((! start) || domUtils.isFillChar(start))) {
+ _$jscoverage['plugins/autolink.js'][47]++;
+ break;
+ }
+ _$jscoverage['plugins/autolink.js'][49]++;
+ offset = start.nodeValue.length;
+ }
+ else {
+ _$jscoverage['plugins/autolink.js'][51]++;
+ start = range.startContainer;
+ _$jscoverage['plugins/autolink.js'][52]++;
+ offset = range.startOffset;
+ }
+ _$jscoverage['plugins/autolink.js'][54]++;
+ range.setStart(start, (offset - 1));
+ _$jscoverage['plugins/autolink.js'][55]++;
+ charCode = range.toString().charCodeAt(0);
+}
+ while (((charCode != 160) && (charCode != 32)));
+ _$jscoverage['plugins/autolink.js'][58]++;
+ if (range.toString().replace(new RegExp(domUtils.fillChar, "g"), "").match(/(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i)) {
+ _$jscoverage['plugins/autolink.js'][59]++;
+ while (range.toString().length) {
+ _$jscoverage['plugins/autolink.js'][60]++;
+ if (/^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test(range.toString())) {
+ _$jscoverage['plugins/autolink.js'][61]++;
+ break;
+ }
+ _$jscoverage['plugins/autolink.js'][63]++;
+ try {
+ _$jscoverage['plugins/autolink.js'][64]++;
+ range.setStart(range.startContainer, (range.startOffset + 1));
+ }
+ catch (e) {
+ _$jscoverage['plugins/autolink.js'][67]++;
+ var start = range.startContainer;
+ _$jscoverage['plugins/autolink.js'][68]++;
+ while ((! (next = start.nextSibling))) {
+ _$jscoverage['plugins/autolink.js'][69]++;
+ if (domUtils.isBody(start)) {
+ _$jscoverage['plugins/autolink.js'][70]++;
+ return;
+ }
+ _$jscoverage['plugins/autolink.js'][72]++;
+ start = start.parentNode;
+}
+ _$jscoverage['plugins/autolink.js'][75]++;
+ range.setStart(next, 0);
+ }
+}
+ _$jscoverage['plugins/autolink.js'][81]++;
+ if (domUtils.findParentByTagName(range.startContainer, "a", true)) {
+ _$jscoverage['plugins/autolink.js'][82]++;
+ return;
+ }
+ _$jscoverage['plugins/autolink.js'][84]++;
+ var a = me.document.createElement("a"), text = me.document.createTextNode(" "), href;
+ _$jscoverage['plugins/autolink.js'][86]++;
+ (me.undoManger && me.undoManger.save());
+ _$jscoverage['plugins/autolink.js'][87]++;
+ a.appendChild(range.extractContents());
+ _$jscoverage['plugins/autolink.js'][88]++;
+ a.href = (a.innerHTML = a.innerHTML.replace(/<[^>]+>/g, ""));
+ _$jscoverage['plugins/autolink.js'][89]++;
+ href = a.getAttribute("href").replace(new RegExp(domUtils.fillChar, "g"), "");
+ _$jscoverage['plugins/autolink.js'][90]++;
+ href = (/^(?:https?:\/\/)/gi.test(href)? href: ("http://" + href));
+ _$jscoverage['plugins/autolink.js'][91]++;
+ a.setAttribute("_src", utils.html(href));
+ _$jscoverage['plugins/autolink.js'][92]++;
+ a.href = utils.html(href);
+ _$jscoverage['plugins/autolink.js'][94]++;
+ range.insertNode(a);
+ _$jscoverage['plugins/autolink.js'][95]++;
+ a.parentNode.insertBefore(text, a.nextSibling);
+ _$jscoverage['plugins/autolink.js'][96]++;
+ range.setStart(text, 0);
+ _$jscoverage['plugins/autolink.js'][97]++;
+ range.collapse(true);
+ _$jscoverage['plugins/autolink.js'][98]++;
+ sel.removeAllRanges();
+ _$jscoverage['plugins/autolink.js'][99]++;
+ sel.addRange(range);
+ _$jscoverage['plugins/autolink.js'][100]++;
+ (me.undoManger && me.undoManger.save());
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/autosubmit.js b/_test/coverage/plugins/autosubmit.js
new file mode 100644
index 000000000..72002947b
--- /dev/null
+++ b/_test/coverage/plugins/autosubmit.js
@@ -0,0 +1,77 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/autosubmit.js']) {
+ _$jscoverage['plugins/autosubmit.js'] = [];
+ _$jscoverage['plugins/autosubmit.js'][17] = 0;
+ _$jscoverage['plugins/autosubmit.js'][18] = 0;
+ _$jscoverage['plugins/autosubmit.js'][19] = 0;
+ _$jscoverage['plugins/autosubmit.js'][21] = 0;
+ _$jscoverage['plugins/autosubmit.js'][23] = 0;
+ _$jscoverage['plugins/autosubmit.js'][24] = 0;
+ _$jscoverage['plugins/autosubmit.js'][25] = 0;
+ _$jscoverage['plugins/autosubmit.js'][27] = 0;
+ _$jscoverage['plugins/autosubmit.js'][28] = 0;
+ _$jscoverage['plugins/autosubmit.js'][33] = 0;
+}
+_$jscoverage['plugins/autosubmit.js'].source = ["/** "," * 快捷键提交 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 对编辑器区域插入html字符串 "," * @command autosubmit "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'autosubmit' ); "," * ``` "," */ ","UE. plugins[ 'autosubmit' ] = function () { "," var me = this ; "," me. commands[ 'autosubmit' ] = { "," execCommand: function () { "," var me= this , "," form = domUtils. findParentByTagName( me. iframe, \"form\" , false ); "," if ( form) { "," if ( me. fireEvent( \"beforesubmit\" )=== false ) { "," return ; "," } "," me. sync(); "," form. submit(); "," } "," } "," } ; "," //快捷键 "," me. addshortcutkey( { "," \"autosubmit\" : \"ctrl+13\" //手动提交 "," } ); ","} ; "];
+_$jscoverage['plugins/autosubmit.js'][17]++;
+UE.plugins.autosubmit = (function () {
+ _$jscoverage['plugins/autosubmit.js'][18]++;
+ var me = this;
+ _$jscoverage['plugins/autosubmit.js'][19]++;
+ me.commands.autosubmit = {execCommand: (function () {
+ _$jscoverage['plugins/autosubmit.js'][21]++;
+ var me = this, form = domUtils.findParentByTagName(me.iframe, "form", false);
+ _$jscoverage['plugins/autosubmit.js'][23]++;
+ if (form) {
+ _$jscoverage['plugins/autosubmit.js'][24]++;
+ if ((me.fireEvent("beforesubmit") === false)) {
+ _$jscoverage['plugins/autosubmit.js'][25]++;
+ return;
+ }
+ _$jscoverage['plugins/autosubmit.js'][27]++;
+ me.sync();
+ _$jscoverage['plugins/autosubmit.js'][28]++;
+ form.submit();
+ }
+})};
+ _$jscoverage['plugins/autosubmit.js'][33]++;
+ me.addshortcutkey({"autosubmit": "ctrl+13"});
+});
diff --git a/_test/coverage/plugins/autotypeset.js b/_test/coverage/plugins/autotypeset.js
new file mode 100644
index 000000000..86f561530
--- /dev/null
+++ b/_test/coverage/plugins/autotypeset.js
@@ -0,0 +1,434 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/autotypeset.js']) {
+ _$jscoverage['plugins/autotypeset.js'] = [];
+ _$jscoverage['plugins/autotypeset.js'][11] = 0;
+ _$jscoverage['plugins/autotypeset.js'][13] = 0;
+ _$jscoverage['plugins/autotypeset.js'][28] = 0;
+ _$jscoverage['plugins/autotypeset.js'][47] = 0;
+ _$jscoverage['plugins/autotypeset.js'][48] = 0;
+ _$jscoverage['plugins/autotypeset.js'][50] = 0;
+ _$jscoverage['plugins/autotypeset.js'][51] = 0;
+ _$jscoverage['plugins/autotypeset.js'][52] = 0;
+ _$jscoverage['plugins/autotypeset.js'][53] = 0;
+ _$jscoverage['plugins/autotypeset.js'][54] = 0;
+ _$jscoverage['plugins/autotypeset.js'][55] = 0;
+ _$jscoverage['plugins/autotypeset.js'][56] = 0;
+ _$jscoverage['plugins/autotypeset.js'][60] = 0;
+ _$jscoverage['plugins/autotypeset.js'][63] = 0;
+ _$jscoverage['plugins/autotypeset.js'][68] = 0;
+ _$jscoverage['plugins/autotypeset.js'][69] = 0;
+ _$jscoverage['plugins/autotypeset.js'][70] = 0;
+ _$jscoverage['plugins/autotypeset.js'][71] = 0;
+ _$jscoverage['plugins/autotypeset.js'][72] = 0;
+ _$jscoverage['plugins/autotypeset.js'][76] = 0;
+ _$jscoverage['plugins/autotypeset.js'][77] = 0;
+ _$jscoverage['plugins/autotypeset.js'][78] = 0;
+ _$jscoverage['plugins/autotypeset.js'][79] = 0;
+ _$jscoverage['plugins/autotypeset.js'][80] = 0;
+ _$jscoverage['plugins/autotypeset.js'][82] = 0;
+ _$jscoverage['plugins/autotypeset.js'][83] = 0;
+ _$jscoverage['plugins/autotypeset.js'][85] = 0;
+ _$jscoverage['plugins/autotypeset.js'][87] = 0;
+ _$jscoverage['plugins/autotypeset.js'][90] = 0;
+ _$jscoverage['plugins/autotypeset.js'][92] = 0;
+ _$jscoverage['plugins/autotypeset.js'][93] = 0;
+ _$jscoverage['plugins/autotypeset.js'][96] = 0;
+ _$jscoverage['plugins/autotypeset.js'][97] = 0;
+ _$jscoverage['plugins/autotypeset.js'][99] = 0;
+ _$jscoverage['plugins/autotypeset.js'][103] = 0;
+ _$jscoverage['plugins/autotypeset.js'][104] = 0;
+ _$jscoverage['plugins/autotypeset.js'][105] = 0;
+ _$jscoverage['plugins/autotypeset.js'][108] = 0;
+ _$jscoverage['plugins/autotypeset.js'][110] = 0;
+ _$jscoverage['plugins/autotypeset.js'][111] = 0;
+ _$jscoverage['plugins/autotypeset.js'][112] = 0;
+ _$jscoverage['plugins/autotypeset.js'][113] = 0;
+ _$jscoverage['plugins/autotypeset.js'][114] = 0;
+ _$jscoverage['plugins/autotypeset.js'][115] = 0;
+ _$jscoverage['plugins/autotypeset.js'][116] = 0;
+ _$jscoverage['plugins/autotypeset.js'][118] = 0;
+ _$jscoverage['plugins/autotypeset.js'][123] = 0;
+ _$jscoverage['plugins/autotypeset.js'][124] = 0;
+ _$jscoverage['plugins/autotypeset.js'][125] = 0;
+ _$jscoverage['plugins/autotypeset.js'][126] = 0;
+ _$jscoverage['plugins/autotypeset.js'][127] = 0;
+ _$jscoverage['plugins/autotypeset.js'][130] = 0;
+ _$jscoverage['plugins/autotypeset.js'][131] = 0;
+ _$jscoverage['plugins/autotypeset.js'][136] = 0;
+ _$jscoverage['plugins/autotypeset.js'][137] = 0;
+ _$jscoverage['plugins/autotypeset.js'][138] = 0;
+ _$jscoverage['plugins/autotypeset.js'][140] = 0;
+ _$jscoverage['plugins/autotypeset.js'][141] = 0;
+ _$jscoverage['plugins/autotypeset.js'][150] = 0;
+ _$jscoverage['plugins/autotypeset.js'][152] = 0;
+ _$jscoverage['plugins/autotypeset.js'][153] = 0;
+ _$jscoverage['plugins/autotypeset.js'][155] = 0;
+ _$jscoverage['plugins/autotypeset.js'][159] = 0;
+ _$jscoverage['plugins/autotypeset.js'][160] = 0;
+ _$jscoverage['plugins/autotypeset.js'][161] = 0;
+ _$jscoverage['plugins/autotypeset.js'][162] = 0;
+ _$jscoverage['plugins/autotypeset.js'][166] = 0;
+ _$jscoverage['plugins/autotypeset.js'][167] = 0;
+ _$jscoverage['plugins/autotypeset.js'][168] = 0;
+ _$jscoverage['plugins/autotypeset.js'][170] = 0;
+ _$jscoverage['plugins/autotypeset.js'][171] = 0;
+ _$jscoverage['plugins/autotypeset.js'][172] = 0;
+ _$jscoverage['plugins/autotypeset.js'][173] = 0;
+ _$jscoverage['plugins/autotypeset.js'][174] = 0;
+ _$jscoverage['plugins/autotypeset.js'][175] = 0;
+ _$jscoverage['plugins/autotypeset.js'][176] = 0;
+ _$jscoverage['plugins/autotypeset.js'][177] = 0;
+ _$jscoverage['plugins/autotypeset.js'][178] = 0;
+ _$jscoverage['plugins/autotypeset.js'][180] = 0;
+ _$jscoverage['plugins/autotypeset.js'][181] = 0;
+ _$jscoverage['plugins/autotypeset.js'][183] = 0;
+ _$jscoverage['plugins/autotypeset.js'][191] = 0;
+ _$jscoverage['plugins/autotypeset.js'][192] = 0;
+ _$jscoverage['plugins/autotypeset.js'][194] = 0;
+ _$jscoverage['plugins/autotypeset.js'][195] = 0;
+ _$jscoverage['plugins/autotypeset.js'][196] = 0;
+ _$jscoverage['plugins/autotypeset.js'][197] = 0;
+ _$jscoverage['plugins/autotypeset.js'][198] = 0;
+ _$jscoverage['plugins/autotypeset.js'][200] = 0;
+ _$jscoverage['plugins/autotypeset.js'][201] = 0;
+ _$jscoverage['plugins/autotypeset.js'][203] = 0;
+ _$jscoverage['plugins/autotypeset.js'][204] = 0;
+ _$jscoverage['plugins/autotypeset.js'][208] = 0;
+ _$jscoverage['plugins/autotypeset.js'][209] = 0;
+ _$jscoverage['plugins/autotypeset.js'][210] = 0;
+ _$jscoverage['plugins/autotypeset.js'][217] = 0;
+ _$jscoverage['plugins/autotypeset.js'][218] = 0;
+ _$jscoverage['plugins/autotypeset.js'][219] = 0;
+ _$jscoverage['plugins/autotypeset.js'][227] = 0;
+ _$jscoverage['plugins/autotypeset.js'][228] = 0;
+ _$jscoverage['plugins/autotypeset.js'][229] = 0;
+ _$jscoverage['plugins/autotypeset.js'][233] = 0;
+ _$jscoverage['plugins/autotypeset.js'][234] = 0;
+ _$jscoverage['plugins/autotypeset.js'][237] = 0;
+ _$jscoverage['plugins/autotypeset.js'][238] = 0;
+ _$jscoverage['plugins/autotypeset.js'][241] = 0;
+ _$jscoverage['plugins/autotypeset.js'][243] = 0;
+ _$jscoverage['plugins/autotypeset.js'][244] = 0;
+ _$jscoverage['plugins/autotypeset.js'][245] = 0;
+ _$jscoverage['plugins/autotypeset.js'][247] = 0;
+}
+_$jscoverage['plugins/autotypeset.js'].source = ["///import core ","///commands 自动排版 ","///commandsName autotypeset ","///commandsTitle 自动排版 ","/* "," * 自动排版 "," * @function "," * @name baidu.editor.execCommands "," */ ","","UE. plugins[ 'autotypeset' ] = function () { ",""," this . setOpt( { 'autotypeset' : { "," mergeEmptyline : true , //合并空行 "," removeClass : true , //去掉冗余的class "," removeEmptyline : false , //去掉空行 "," textAlign : \"left\" , //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版 "," imageBlockLine : 'center' , //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版 "," pasteFilter : false , //根据规则过滤没事粘贴进来的内容 "," clearFontSize : false , //去掉所有的内嵌字号,使用编辑器默认的字号 "," clearFontFamily : false , //去掉所有的内嵌字体,使用编辑器默认的字体 "," removeEmptyNode : false , // 去掉空节点 "," //可以去掉的标签 "," removeTagNames : utils. extend( { div: 1 } , dtd. $removeEmpty), "," indent : false , // 行首缩进 "," indentValue : '2em' //行首缩进的大小 "," }} ); "," var me = this , "," opt = me. options. autotypeset, "," remainClass = { "," 'selectTdClass' : 1 , "," 'pagebreak' : 1 , "," 'anchorclass' : 1 "," } , "," remainTag = { "," 'li' : 1 "," } , "," tags = { "," div: 1 , "," p: 1 , "," //trace:2183 这些也认为是行 "," blockquote: 1 , center: 1 , h1: 1 , h2: 1 , h3: 1 , h4: 1 , h5: 1 , h6: 1 , "," span: 1 "," } , "," highlightCont; "," //升级了版本,但配置项目里没有autotypeset "," if (! opt) { "," return ; "," } "," function isLine( node, notEmpty) { "," if (! node || node. nodeType == 3 ) "," return 0 ; "," if ( domUtils. isBr( node)) "," return 1 ; "," if ( node && node. parentNode && tags[ node. tagName. toLowerCase()]) { "," if ( highlightCont && highlightCont. contains( node) "," || "," node. getAttribute( 'pagebreak' ) "," ) { "," return 0 ; "," } ",""," return notEmpty ? ! domUtils. isEmptyBlock( node) : domUtils. isEmptyBlock( node, new RegExp( '[ \\\\ s' + domUtils. fillChar"," + ']' , 'g' )); "," } "," } ",""," function removeNotAttributeSpan( node) { "," if (! node. style. cssText) { "," domUtils. removeAttributes( node,[ 'style' ]); "," if ( node. tagName. toLowerCase() == 'span' && domUtils. hasNoAttributes( node)) { "," domUtils. remove( node, true ); "," } "," } "," } "," function autotype( type, html) { "," var me = this , cont; "," if ( html) { "," if (! opt. pasteFilter) { "," return ; "," } "," cont = me. document. createElement( 'div' ); "," cont. innerHTML = html. html; "," } else { "," cont = me. document. body; "," } "," var nodes = domUtils. getElementsByTagName( cont, '*' ); ",""," // 行首缩进,段落方向,段间距,段内间距 "," for ( var i= 0 , ci; ci= nodes[ i++];) { ",""," if ( me. fireEvent( 'excludeNodeinautotype' , ci) === true ) { "," continue ; "," } "," //font-size "," if ( opt. clearFontSize && ci. style. fontSize) { "," domUtils. removeStyle( ci, 'font-size' ); ",""," removeNotAttributeSpan( ci); ",""," } "," //font-family "," if ( opt. clearFontFamily && ci. style. fontFamily) { "," domUtils. removeStyle( ci, 'font-family' ); "," removeNotAttributeSpan( ci); "," } ",""," if ( isLine( ci)) { "," //合并空行 "," if ( opt. mergeEmptyline ) { "," var next = ci. nextSibling, tmpNode, isBr = domUtils. isBr( ci); "," while ( isLine( next)) { "," tmpNode = next; "," next = tmpNode. nextSibling; "," if ( isBr && (! next || next && ! domUtils. isBr( next))) { "," break ; "," } "," domUtils. remove( tmpNode); "," } ",""," } "," //去掉空行,保留占位的空行 "," if ( opt. removeEmptyline && domUtils. inDoc( ci, cont) && ! remainTag[ ci. parentNode. tagName. toLowerCase()] ) { "," if ( domUtils. isBr( ci)) { "," next = ci. nextSibling; "," if ( next && ! domUtils. isBr( next)) { "," continue ; "," } "," } "," domUtils. remove( ci); "," continue ; ",""," } ",""," } "," if ( isLine( ci, true ) && ci. tagName != 'SPAN' ) { "," if ( opt. indent) { "," ci. style. textIndent = opt. indentValue; "," } "," if ( opt. textAlign) { "," ci. style. textAlign = opt. textAlign; "," } ","// if(opt.lineHeight) ","// ci.style.lineHeight = opt.lineHeight + 'cm'; ","",""," } ",""," //去掉class,保留的class不去掉 "," if ( opt. removeClass && ci. className && ! remainClass[ ci. className. toLowerCase()]) { ",""," if ( highlightCont && highlightCont. contains( ci)) { "," continue ; "," } "," domUtils. removeAttributes( ci,[ 'class' ]); "," } ",""," //表情不处理 "," if ( opt. imageBlockLine && ci. tagName. toLowerCase() == 'img' && ! ci. getAttribute( 'emotion' )) { "," if ( html) { "," var img = ci; "," switch ( opt. imageBlockLine) { "," case 'left' : "," case 'right' : "," case 'none' : "," var pN = img. parentNode, tmpNode, pre, next; "," while ( dtd. $inline[ pN. tagName] || pN. tagName == 'A' ) { "," pN = pN. parentNode; "," } "," tmpNode = pN; "," if ( tmpNode. tagName == 'P' && domUtils. getStyle( tmpNode, 'text-align' ) == 'center' ) { "," if (! domUtils. isBody( tmpNode) && domUtils. getChildCount( tmpNode, function ( node) { return ! domUtils. isBr( node) && ! domUtils. isWhitespace( node) } ) == 1 ) { "," pre = tmpNode. previousSibling; "," next = tmpNode. nextSibling; "," if ( pre && next && pre. nodeType == 1 && next. nodeType == 1 && pre. tagName == next. tagName && domUtils. isBlockElm( pre)) { "," pre. appendChild( tmpNode. firstChild); "," while ( next. firstChild) { "," pre. appendChild( next. firstChild); "," } "," domUtils. remove( tmpNode); "," domUtils. remove( next); "," } else { "," domUtils. setStyle( tmpNode, 'text-align' , '' ); "," } ","",""," } ","",""," } "," domUtils. setStyle( img, 'float' , opt. imageBlockLine); "," break ; "," case 'center' : "," if ( me. queryCommandValue( 'imagefloat' ) != 'center' ) { "," pN = img. parentNode; "," domUtils. setStyle( img, 'float' , 'none' ); "," tmpNode = img; "," while ( pN && domUtils. getChildCount( pN, function ( node) { return ! domUtils. isBr( node) && ! domUtils. isWhitespace( node) } ) == 1 "," && ( dtd. $inline[ pN. tagName] || pN. tagName == 'A' )) { "," tmpNode = pN; "," pN = pN. parentNode; "," } "," var pNode = me. document. createElement( 'p' ); "," domUtils. setAttributes( pNode, { ",""," style: 'text-align:center' "," } ); "," tmpNode. parentNode. insertBefore( pNode, tmpNode); "," pNode. appendChild( tmpNode); "," domUtils. setStyle( tmpNode, 'float' , '' ); ",""," } ","",""," } "," } else { "," var range = me. selection. getRange(); "," range. selectNode( ci). select(); "," me. execCommand( 'imagefloat' , opt. imageBlockLine); "," } ","","",""," } ",""," //去掉冗余的标签 "," if ( opt. removeEmptyNode) { "," if ( opt. removeTagNames[ ci. tagName. toLowerCase()] && domUtils. hasNoAttributes( ci) && domUtils. isEmptyBlock( ci)) { "," domUtils. remove( ci); "," } "," } "," } "," if ( html) { "," html. html = cont. innerHTML; "," } "," } "," if ( opt. pasteFilter) { "," me. addListener( 'beforepaste' , autotype); "," } ",""," me. commands[ 'autotypeset' ] = { "," execCommand: function () { "," me. removeListener( 'beforepaste' , autotype); "," if ( opt. pasteFilter) { "," me. addListener( 'beforepaste' , autotype); "," } "," autotype. call( me) "," } ",""," } ; ","","} ; ",""];
+_$jscoverage['plugins/autotypeset.js'][11]++;
+UE.plugins.autotypeset = (function () {
+ _$jscoverage['plugins/autotypeset.js'][13]++;
+ this.setOpt({"autotypeset": {mergeEmptyline: true, removeClass: true, removeEmptyline: false, textAlign: "left", imageBlockLine: "center", pasteFilter: false, clearFontSize: false, clearFontFamily: false, removeEmptyNode: false, removeTagNames: utils.extend({div: 1}, dtd.$removeEmpty), indent: false, indentValue: "2em"}});
+ _$jscoverage['plugins/autotypeset.js'][28]++;
+ var me = this, opt = me.options.autotypeset, remainClass = {"selectTdClass": 1, "pagebreak": 1, "anchorclass": 1}, remainTag = {"li": 1}, tags = {div: 1, p: 1, blockquote: 1, center: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, span: 1}, highlightCont;
+ _$jscoverage['plugins/autotypeset.js'][47]++;
+ if ((! opt)) {
+ _$jscoverage['plugins/autotypeset.js'][48]++;
+ return;
+ }
+ _$jscoverage['plugins/autotypeset.js'][50]++;
+ function isLine(node, notEmpty) {
+ _$jscoverage['plugins/autotypeset.js'][51]++;
+ if (((! node) || (node.nodeType == 3))) {
+ _$jscoverage['plugins/autotypeset.js'][52]++;
+ return 0;
+ }
+ _$jscoverage['plugins/autotypeset.js'][53]++;
+ if (domUtils.isBr(node)) {
+ _$jscoverage['plugins/autotypeset.js'][54]++;
+ return 1;
+ }
+ _$jscoverage['plugins/autotypeset.js'][55]++;
+ if ((node && node.parentNode && tags[node.tagName.toLowerCase()])) {
+ _$jscoverage['plugins/autotypeset.js'][56]++;
+ if (((highlightCont && highlightCont.contains(node)) || node.getAttribute("pagebreak"))) {
+ _$jscoverage['plugins/autotypeset.js'][60]++;
+ return 0;
+ }
+ _$jscoverage['plugins/autotypeset.js'][63]++;
+ return (notEmpty? (! domUtils.isEmptyBlock(node)): domUtils.isEmptyBlock(node, new RegExp(("[\\s" + domUtils.fillChar + "]"), "g")));
+ }
+}
+ _$jscoverage['plugins/autotypeset.js'][68]++;
+ function removeNotAttributeSpan(node) {
+ _$jscoverage['plugins/autotypeset.js'][69]++;
+ if ((! node.style.cssText)) {
+ _$jscoverage['plugins/autotypeset.js'][70]++;
+ domUtils.removeAttributes(node, ["style"]);
+ _$jscoverage['plugins/autotypeset.js'][71]++;
+ if (((node.tagName.toLowerCase() == "span") && domUtils.hasNoAttributes(node))) {
+ _$jscoverage['plugins/autotypeset.js'][72]++;
+ domUtils.remove(node, true);
+ }
+ }
+}
+ _$jscoverage['plugins/autotypeset.js'][76]++;
+ function autotype(type, html) {
+ _$jscoverage['plugins/autotypeset.js'][77]++;
+ var me = this, cont;
+ _$jscoverage['plugins/autotypeset.js'][78]++;
+ if (html) {
+ _$jscoverage['plugins/autotypeset.js'][79]++;
+ if ((! opt.pasteFilter)) {
+ _$jscoverage['plugins/autotypeset.js'][80]++;
+ return;
+ }
+ _$jscoverage['plugins/autotypeset.js'][82]++;
+ cont = me.document.createElement("div");
+ _$jscoverage['plugins/autotypeset.js'][83]++;
+ cont.innerHTML = html.html;
+ }
+ else {
+ _$jscoverage['plugins/autotypeset.js'][85]++;
+ cont = me.document.body;
+ }
+ _$jscoverage['plugins/autotypeset.js'][87]++;
+ var nodes = domUtils.getElementsByTagName(cont, "*");
+ _$jscoverage['plugins/autotypeset.js'][90]++;
+ for (var i = 0, ci; (ci = nodes[(i++)]);) {
+ _$jscoverage['plugins/autotypeset.js'][92]++;
+ if ((me.fireEvent("excludeNodeinautotype", ci) === true)) {
+ _$jscoverage['plugins/autotypeset.js'][93]++;
+ continue;
+ }
+ _$jscoverage['plugins/autotypeset.js'][96]++;
+ if ((opt.clearFontSize && ci.style.fontSize)) {
+ _$jscoverage['plugins/autotypeset.js'][97]++;
+ domUtils.removeStyle(ci, "font-size");
+ _$jscoverage['plugins/autotypeset.js'][99]++;
+ removeNotAttributeSpan(ci);
+ }
+ _$jscoverage['plugins/autotypeset.js'][103]++;
+ if ((opt.clearFontFamily && ci.style.fontFamily)) {
+ _$jscoverage['plugins/autotypeset.js'][104]++;
+ domUtils.removeStyle(ci, "font-family");
+ _$jscoverage['plugins/autotypeset.js'][105]++;
+ removeNotAttributeSpan(ci);
+ }
+ _$jscoverage['plugins/autotypeset.js'][108]++;
+ if (isLine(ci)) {
+ _$jscoverage['plugins/autotypeset.js'][110]++;
+ if (opt.mergeEmptyline) {
+ _$jscoverage['plugins/autotypeset.js'][111]++;
+ var next = ci.nextSibling, tmpNode, isBr = domUtils.isBr(ci);
+ _$jscoverage['plugins/autotypeset.js'][112]++;
+ while (isLine(next)) {
+ _$jscoverage['plugins/autotypeset.js'][113]++;
+ tmpNode = next;
+ _$jscoverage['plugins/autotypeset.js'][114]++;
+ next = tmpNode.nextSibling;
+ _$jscoverage['plugins/autotypeset.js'][115]++;
+ if ((isBr && ((! next) || (next && (! domUtils.isBr(next)))))) {
+ _$jscoverage['plugins/autotypeset.js'][116]++;
+ break;
+ }
+ _$jscoverage['plugins/autotypeset.js'][118]++;
+ domUtils.remove(tmpNode);
+}
+ }
+ _$jscoverage['plugins/autotypeset.js'][123]++;
+ if ((opt.removeEmptyline && domUtils.inDoc(ci, cont) && (! remainTag[ci.parentNode.tagName.toLowerCase()]))) {
+ _$jscoverage['plugins/autotypeset.js'][124]++;
+ if (domUtils.isBr(ci)) {
+ _$jscoverage['plugins/autotypeset.js'][125]++;
+ next = ci.nextSibling;
+ _$jscoverage['plugins/autotypeset.js'][126]++;
+ if ((next && (! domUtils.isBr(next)))) {
+ _$jscoverage['plugins/autotypeset.js'][127]++;
+ continue;
+ }
+ }
+ _$jscoverage['plugins/autotypeset.js'][130]++;
+ domUtils.remove(ci);
+ _$jscoverage['plugins/autotypeset.js'][131]++;
+ continue;
+ }
+ }
+ _$jscoverage['plugins/autotypeset.js'][136]++;
+ if ((isLine(ci, true) && (ci.tagName != "SPAN"))) {
+ _$jscoverage['plugins/autotypeset.js'][137]++;
+ if (opt.indent) {
+ _$jscoverage['plugins/autotypeset.js'][138]++;
+ ci.style.textIndent = opt.indentValue;
+ }
+ _$jscoverage['plugins/autotypeset.js'][140]++;
+ if (opt.textAlign) {
+ _$jscoverage['plugins/autotypeset.js'][141]++;
+ ci.style.textAlign = opt.textAlign;
+ }
+ }
+ _$jscoverage['plugins/autotypeset.js'][150]++;
+ if ((opt.removeClass && ci.className && (! remainClass[ci.className.toLowerCase()]))) {
+ _$jscoverage['plugins/autotypeset.js'][152]++;
+ if ((highlightCont && highlightCont.contains(ci))) {
+ _$jscoverage['plugins/autotypeset.js'][153]++;
+ continue;
+ }
+ _$jscoverage['plugins/autotypeset.js'][155]++;
+ domUtils.removeAttributes(ci, ["class"]);
+ }
+ _$jscoverage['plugins/autotypeset.js'][159]++;
+ if ((opt.imageBlockLine && (ci.tagName.toLowerCase() == "img") && (! ci.getAttribute("emotion")))) {
+ _$jscoverage['plugins/autotypeset.js'][160]++;
+ if (html) {
+ _$jscoverage['plugins/autotypeset.js'][161]++;
+ var img = ci;
+ _$jscoverage['plugins/autotypeset.js'][162]++;
+ switch (opt.imageBlockLine) {
+ case "left":
+ case "right":
+ case "none":
+ _$jscoverage['plugins/autotypeset.js'][166]++;
+ var pN = img.parentNode, tmpNode = tmpNode, pre, next = next;
+ _$jscoverage['plugins/autotypeset.js'][167]++;
+ while ((dtd.$inline[pN.tagName] || (pN.tagName == "A"))) {
+ _$jscoverage['plugins/autotypeset.js'][168]++;
+ pN = pN.parentNode;
+}
+ _$jscoverage['plugins/autotypeset.js'][170]++;
+ tmpNode = pN;
+ _$jscoverage['plugins/autotypeset.js'][171]++;
+ if (((tmpNode.tagName == "P") && (domUtils.getStyle(tmpNode, "text-align") == "center"))) {
+ _$jscoverage['plugins/autotypeset.js'][172]++;
+ if (((! domUtils.isBody(tmpNode)) && (domUtils.getChildCount(tmpNode, (function (node) {
+ _$jscoverage['plugins/autotypeset.js'][172]++;
+ return ((! domUtils.isBr(node)) && (! domUtils.isWhitespace(node)));
+})) == 1))) {
+ _$jscoverage['plugins/autotypeset.js'][173]++;
+ pre = tmpNode.previousSibling;
+ _$jscoverage['plugins/autotypeset.js'][174]++;
+ next = tmpNode.nextSibling;
+ _$jscoverage['plugins/autotypeset.js'][175]++;
+ if ((pre && next && (pre.nodeType == 1) && (next.nodeType == 1) && (pre.tagName == next.tagName) && domUtils.isBlockElm(pre))) {
+ _$jscoverage['plugins/autotypeset.js'][176]++;
+ pre.appendChild(tmpNode.firstChild);
+ _$jscoverage['plugins/autotypeset.js'][177]++;
+ while (next.firstChild) {
+ _$jscoverage['plugins/autotypeset.js'][178]++;
+ pre.appendChild(next.firstChild);
+}
+ _$jscoverage['plugins/autotypeset.js'][180]++;
+ domUtils.remove(tmpNode);
+ _$jscoverage['plugins/autotypeset.js'][181]++;
+ domUtils.remove(next);
+ }
+ else {
+ _$jscoverage['plugins/autotypeset.js'][183]++;
+ domUtils.setStyle(tmpNode, "text-align", "");
+ }
+ }
+ }
+ _$jscoverage['plugins/autotypeset.js'][191]++;
+ domUtils.setStyle(img, "float", opt.imageBlockLine);
+ _$jscoverage['plugins/autotypeset.js'][192]++;
+ break;
+ case "center":
+ _$jscoverage['plugins/autotypeset.js'][194]++;
+ if ((me.queryCommandValue("imagefloat") != "center")) {
+ _$jscoverage['plugins/autotypeset.js'][195]++;
+ pN = img.parentNode;
+ _$jscoverage['plugins/autotypeset.js'][196]++;
+ domUtils.setStyle(img, "float", "none");
+ _$jscoverage['plugins/autotypeset.js'][197]++;
+ tmpNode = img;
+ _$jscoverage['plugins/autotypeset.js'][198]++;
+ while ((pN && (domUtils.getChildCount(pN, (function (node) {
+ _$jscoverage['plugins/autotypeset.js'][198]++;
+ return ((! domUtils.isBr(node)) && (! domUtils.isWhitespace(node)));
+})) == 1) && (dtd.$inline[pN.tagName] || (pN.tagName == "A")))) {
+ _$jscoverage['plugins/autotypeset.js'][200]++;
+ tmpNode = pN;
+ _$jscoverage['plugins/autotypeset.js'][201]++;
+ pN = pN.parentNode;
+}
+ _$jscoverage['plugins/autotypeset.js'][203]++;
+ var pNode = me.document.createElement("p");
+ _$jscoverage['plugins/autotypeset.js'][204]++;
+ domUtils.setAttributes(pNode, {style: "text-align:center"});
+ _$jscoverage['plugins/autotypeset.js'][208]++;
+ tmpNode.parentNode.insertBefore(pNode, tmpNode);
+ _$jscoverage['plugins/autotypeset.js'][209]++;
+ pNode.appendChild(tmpNode);
+ _$jscoverage['plugins/autotypeset.js'][210]++;
+ domUtils.setStyle(tmpNode, "float", "");
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/autotypeset.js'][217]++;
+ var range = me.selection.getRange();
+ _$jscoverage['plugins/autotypeset.js'][218]++;
+ range.selectNode(ci).select();
+ _$jscoverage['plugins/autotypeset.js'][219]++;
+ me.execCommand("imagefloat", opt.imageBlockLine);
+ }
+ }
+ _$jscoverage['plugins/autotypeset.js'][227]++;
+ if (opt.removeEmptyNode) {
+ _$jscoverage['plugins/autotypeset.js'][228]++;
+ if ((opt.removeTagNames[ci.tagName.toLowerCase()] && domUtils.hasNoAttributes(ci) && domUtils.isEmptyBlock(ci))) {
+ _$jscoverage['plugins/autotypeset.js'][229]++;
+ domUtils.remove(ci);
+ }
+ }
+}
+ _$jscoverage['plugins/autotypeset.js'][233]++;
+ if (html) {
+ _$jscoverage['plugins/autotypeset.js'][234]++;
+ html.html = cont.innerHTML;
+ }
+}
+ _$jscoverage['plugins/autotypeset.js'][237]++;
+ if (opt.pasteFilter) {
+ _$jscoverage['plugins/autotypeset.js'][238]++;
+ me.addListener("beforepaste", autotype);
+ }
+ _$jscoverage['plugins/autotypeset.js'][241]++;
+ me.commands.autotypeset = {execCommand: (function () {
+ _$jscoverage['plugins/autotypeset.js'][243]++;
+ me.removeListener("beforepaste", autotype);
+ _$jscoverage['plugins/autotypeset.js'][244]++;
+ if (opt.pasteFilter) {
+ _$jscoverage['plugins/autotypeset.js'][245]++;
+ me.addListener("beforepaste", autotype);
+ }
+ _$jscoverage['plugins/autotypeset.js'][247]++;
+ autotype.call(me);
+})};
+});
diff --git a/_test/coverage/plugins/background.js b/_test/coverage/plugins/background.js
new file mode 100644
index 000000000..a36521711
--- /dev/null
+++ b/_test/coverage/plugins/background.js
@@ -0,0 +1,92 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/background.js']) {
+ _$jscoverage['plugins/background.js'] = [];
+ _$jscoverage['plugins/background.js'][6] = 0;
+ _$jscoverage['plugins/background.js'][7] = 0;
+ _$jscoverage['plugins/background.js'][8] = 0;
+ _$jscoverage['plugins/background.js'][9] = 0;
+ _$jscoverage['plugins/background.js'][12] = 0;
+ _$jscoverage['plugins/background.js'][13] = 0;
+ _$jscoverage['plugins/background.js'][15] = 0;
+ _$jscoverage['plugins/background.js'][17] = 0;
+ _$jscoverage['plugins/background.js'][18] = 0;
+ _$jscoverage['plugins/background.js'][25] = 0;
+ _$jscoverage['plugins/background.js'][26] = 0;
+ _$jscoverage['plugins/background.js'][27] = 0;
+ _$jscoverage['plugins/background.js'][30] = 0;
+ _$jscoverage['plugins/background.js'][31] = 0;
+}
+_$jscoverage['plugins/background.js'].source = ["///import core ","///commands 插入背景 ","///commandsName background ","///commandsTitle 插入背景 ","///commandsDialog dialogs\\background ","UE. plugins[ 'background' ] = function () { "," var me = this ; "," me. addListener( \"getAllHtml\" , function ( type, headHtml) { "," var body = this . body, "," su = domUtils. getComputedStyle( body, \"background-image\" ), "," url= \"\" ; "," if ( su. indexOf( me. options. imagePath)> 0 ) { "," url = su. substring( su. indexOf( me. options. imagePath), su. length- 1 ). replace( /\"|\\(|\\)/ig , \"\" ); "," } else { "," url = su!= \"none\" ? su. replace( /url\\(\"?|\"?\\)/ig , \"\" ): \"\" ; "," } "," var html = '<style type=\"text/css\">body{' ; "," var bgObj = { "," \"background-color\" : domUtils. getComputedStyle( body, \"background-color\" )|| \"#ffffff\" , "," 'background-image' : url ? 'url(' + url+ ')' : '' , "," 'background-repeat' : domUtils. getComputedStyle( body, \"background-repeat\" )|| \"\" , "," 'background-position' : browser. ie?( domUtils. getComputedStyle( body, \"background-position-x\" )+ \" \" + domUtils. getComputedStyle( body, \"background-position-y\" )): domUtils. getComputedStyle( body, \"background-position\" ), "," 'height' : domUtils. getComputedStyle( body, \"height\" ) "," } ; "," for ( var name in bgObj ) { "," if ( bgObj. hasOwnProperty( name ) ) { "," html += name+ \":\" + bgObj[ name]+ \";\" ; "," } "," } "," html += '}</style> ' ; "," headHtml. push( html); "," } ); ","} "];
+_$jscoverage['plugins/background.js'][6]++;
+UE.plugins.background = (function () {
+ _$jscoverage['plugins/background.js'][7]++;
+ var me = this;
+ _$jscoverage['plugins/background.js'][8]++;
+ me.addListener("getAllHtml", (function (type, headHtml) {
+ _$jscoverage['plugins/background.js'][9]++;
+ var body = this.body, su = domUtils.getComputedStyle(body, "background-image"), url = "";
+ _$jscoverage['plugins/background.js'][12]++;
+ if ((su.indexOf(me.options.imagePath) > 0)) {
+ _$jscoverage['plugins/background.js'][13]++;
+ url = su.substring(su.indexOf(me.options.imagePath), (su.length - 1)).replace(/"|\(|\)/gi, "");
+ }
+ else {
+ _$jscoverage['plugins/background.js'][15]++;
+ url = ((su != "none")? su.replace(/url\("?|"?\)/gi, ""): "");
+ }
+ _$jscoverage['plugins/background.js'][17]++;
+ var html = " ";
+ _$jscoverage['plugins/background.js'][31]++;
+ headHtml.push(html);
+}));
+});
diff --git a/_test/coverage/plugins/basestyle.js b/_test/coverage/plugins/basestyle.js
new file mode 100644
index 000000000..5022b1b24
--- /dev/null
+++ b/_test/coverage/plugins/basestyle.js
@@ -0,0 +1,159 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/basestyle.js']) {
+ _$jscoverage['plugins/basestyle.js'] = [];
+ _$jscoverage['plugins/basestyle.js'][7] = 0;
+ _$jscoverage['plugins/basestyle.js'][138] = 0;
+ _$jscoverage['plugins/basestyle.js'][145] = 0;
+ _$jscoverage['plugins/basestyle.js'][149] = 0;
+ _$jscoverage['plugins/basestyle.js'][154] = 0;
+ _$jscoverage['plugins/basestyle.js'][155] = 0;
+ _$jscoverage['plugins/basestyle.js'][156] = 0;
+ _$jscoverage['plugins/basestyle.js'][158] = 0;
+ _$jscoverage['plugins/basestyle.js'][159] = 0;
+ _$jscoverage['plugins/basestyle.js'][161] = 0;
+ _$jscoverage['plugins/basestyle.js'][165] = 0;
+ _$jscoverage['plugins/basestyle.js'][166] = 0;
+ _$jscoverage['plugins/basestyle.js'][167] = 0;
+ _$jscoverage['plugins/basestyle.js'][169] = 0;
+ _$jscoverage['plugins/basestyle.js'][170] = 0;
+ _$jscoverage['plugins/basestyle.js'][171] = 0;
+ _$jscoverage['plugins/basestyle.js'][172] = 0;
+ _$jscoverage['plugins/basestyle.js'][173] = 0;
+ _$jscoverage['plugins/basestyle.js'][174] = 0;
+ _$jscoverage['plugins/basestyle.js'][175] = 0;
+ _$jscoverage['plugins/basestyle.js'][177] = 0;
+ _$jscoverage['plugins/basestyle.js'][178] = 0;
+ _$jscoverage['plugins/basestyle.js'][179] = 0;
+ _$jscoverage['plugins/basestyle.js'][180] = 0;
+ _$jscoverage['plugins/basestyle.js'][185] = 0;
+ _$jscoverage['plugins/basestyle.js'][187] = 0;
+ _$jscoverage['plugins/basestyle.js'][189] = 0;
+ _$jscoverage['plugins/basestyle.js'][190] = 0;
+ _$jscoverage['plugins/basestyle.js'][191] = 0;
+ _$jscoverage['plugins/basestyle.js'][194] = 0;
+ _$jscoverage['plugins/basestyle.js'][196] = 0;
+ _$jscoverage['plugins/basestyle.js'][199] = 0;
+}
+_$jscoverage['plugins/basestyle.js'].source = ["/** "," * B、I、sub、super命令支持 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ 'basestyle' ] = function () { ",""," /** "," * 字体加粗, 对已加粗的文本内容执行该命令, 将取消加粗 "," * @command bold "," * @param { String } cmd 命令字符串 "," * @method execCommand "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //对当前选中的文本内容执行加粗操作 "," * //第一次执行, 文本内容加粗 "," * editor.execCommand( 'bold' ); "," * "," * //第二次执行, 文本内容取消加粗 "," * editor.execCommand( 'bold' ); "," * ``` "," */ ",""," /** "," * 获取当前选中的文本内容的加粗状态 "," * @command bold "," * @param { String } cmd 命令字符串 "," * @method queryCommandState "," * @return { int } 如果当前选中的所有文本内容已经被加粗, 则返回1, 否则返回0 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //获取当前选中的文本内容的加粗状态 "," * //output: 1 或者 0 "," * console.log( editor.queryCommandState( 'bold' ) ); "," * ``` "," */ ",""," /** "," * 字体倾斜, 对已倾斜的文本内容执行该命令, 将取消倾斜 "," * @command italic "," * @param { String } cmd 命令字符串 "," * @method execCommand "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //对当前选中的文本内容执行斜体操作 "," * //第一次操作, 文本内容将变成斜体 "," * editor.execCommand( 'italic' ); "," * "," * //再次对同一文本内容执行, 则文本内容将恢复正常 "," * editor.execCommand( 'italic' ); "," * ``` "," */ ",""," /** "," * 获取当前选中的文本内容的倾斜状态 "," * @command italic "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 如果当前选中的所有文本内容已经是斜体, 则返回1, 否则返回0 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //获取当前选中的文本内容的倾斜状态 "," * //output: 1 或者 0 "," * console.log( editor.queryCommandState( 'italic' ) ); "," * ``` "," */ ",""," /** "," * 下标文本, 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成 "," * 正常文本 "," * @command subscript "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //对当前选中的文本内容执行下标操作 "," * //第一次操作, 文本内容将变成下标文本 "," * editor.execCommand( 'subscript' ); "," * "," * //再次对同一文本内容执行, 则文本内容将恢复正常 "," * editor.execCommand( 'subscript' ); "," * ``` "," */ ",""," /** "," * 获取当前选中的文本内容的下标状态 "," * @command subscript "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 如果当前选中的所有文本内容已经是下标文本, 则返回1, 否则返回0 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //获取当前选中的文本内容的下标状态 "," * //output: 1 或者 0 "," * console.log( editor.queryCommandState( 'subscript' ) ); "," * ``` "," */ ",""," /** "," * 上标文本, 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成 "," * 正常文本 "," * @command superscript "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //对当前选中的文本内容执行上标操作 "," * //第一次操作, 文本内容将变成上标文本 "," * editor.execCommand( 'superscript' ); "," * "," * //再次对同一文本内容执行, 则文本内容将恢复正常 "," * editor.execCommand( 'superscript' ); "," * ``` "," */ ",""," /** "," * 获取当前选中的文本内容的上标状态 "," * @command superscript "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 如果当前选中的所有文本内容已经是上标文本, 则返回1, 否则返回0 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //获取当前选中的文本内容的上标状态 "," * //output: 1 或者 0 "," * console.log( editor.queryCommandState( 'superscript' ) ); "," * ``` "," */ "," var basestyles = { "," 'bold' :[ 'strong' , 'b' ], "," 'italic' :[ 'em' , 'i' ], "," 'subscript' :[ 'sub' ], "," 'superscript' :[ 'sup' ] "," } , "," getObj = function ( editor, tagNames) { "," return domUtils. filterNodeList( editor. selection. getStartElementPath(), tagNames); "," } , "," me = this ; "," //添加快捷键 "," me. addshortcutkey( { "," \"Bold\" : \"ctrl+66\" , //^B "," \"Italic\" : \"ctrl+73\" , //^I "," \"Underline\" : \"ctrl+85\" //^U "," } ); "," me. addInputRule( function ( root) { "," utils. each( root. getNodesByTagName( 'b i' ), function ( node) { "," switch ( node. tagName) { "," case 'b' : "," node. tagName = 'strong' ; "," break ; "," case 'i' : "," node. tagName = 'em' ; "," } "," } ); "," } ); "," for ( var style in basestyles ) { "," ( function ( cmd, tagNames ) { "," me. commands[ cmd] = { "," execCommand : function ( cmdName ) { "," var range = me. selection. getRange(), obj = getObj( this , tagNames); "," if ( range. collapsed ) { "," if ( obj ) { "," var tmpText = me. document. createTextNode( '' ); "," range. insertNode( tmpText ). removeInlineStyle( tagNames ); "," range. setStartBefore( tmpText); "," domUtils. remove( tmpText); "," } else { "," var tmpNode = range. document. createElement( tagNames[ 0 ] ); "," if ( cmdName == 'superscript' || cmdName == 'subscript' ) { "," tmpText = me. document. createTextNode( '' ); "," range. insertNode( tmpText) "," . removeInlineStyle([ 'sub' , 'sup' ]) "," . setStartBefore( tmpText) "," . collapse( true ); "," } "," range. insertNode( tmpNode ). setStart( tmpNode, 0 ); "," } "," range. collapse( true ); "," } else { "," if ( cmdName == 'superscript' || cmdName == 'subscript' ) { "," if (! obj || obj. tagName. toLowerCase() != cmdName) { "," range. removeInlineStyle([ 'sub' , 'sup' ]); "," } "," } "," obj ? range. removeInlineStyle( tagNames ) : range. applyInlineStyle( tagNames[ 0 ] ); "," } "," range. select(); "," } , "," queryCommandState : function () { "," return getObj( this , tagNames) ? 1 : 0 ; "," } "," } ; "," } )( style, basestyles[ style] ); "," } ","} ; ",""];
+_$jscoverage['plugins/basestyle.js'][7]++;
+UE.plugins.basestyle = (function () {
+ _$jscoverage['plugins/basestyle.js'][138]++;
+ var basestyles = {"bold": ["strong", "b"], "italic": ["em", "i"], "subscript": ["sub"], "superscript": ["sup"]}, getObj = (function (editor, tagNames) {
+ _$jscoverage['plugins/basestyle.js'][145]++;
+ return domUtils.filterNodeList(editor.selection.getStartElementPath(), tagNames);
+}), me = this;
+ _$jscoverage['plugins/basestyle.js'][149]++;
+ me.addshortcutkey({"Bold": "ctrl+66", "Italic": "ctrl+73", "Underline": "ctrl+85"});
+ _$jscoverage['plugins/basestyle.js'][154]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/basestyle.js'][155]++;
+ utils.each(root.getNodesByTagName("b i"), (function (node) {
+ _$jscoverage['plugins/basestyle.js'][156]++;
+ switch (node.tagName) {
+ case "b":
+ _$jscoverage['plugins/basestyle.js'][158]++;
+ node.tagName = "strong";
+ _$jscoverage['plugins/basestyle.js'][159]++;
+ break;
+ case "i":
+ _$jscoverage['plugins/basestyle.js'][161]++;
+ node.tagName = "em";
+ }
+}));
+}));
+ _$jscoverage['plugins/basestyle.js'][165]++;
+ for (var style in basestyles) {
+ _$jscoverage['plugins/basestyle.js'][166]++;
+ (function (cmd, tagNames) {
+ _$jscoverage['plugins/basestyle.js'][167]++;
+ me.commands[cmd] = {execCommand: (function (cmdName) {
+ _$jscoverage['plugins/basestyle.js'][169]++;
+ var range = me.selection.getRange(), obj = getObj(this, tagNames);
+ _$jscoverage['plugins/basestyle.js'][170]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/basestyle.js'][171]++;
+ if (obj) {
+ _$jscoverage['plugins/basestyle.js'][172]++;
+ var tmpText = me.document.createTextNode("");
+ _$jscoverage['plugins/basestyle.js'][173]++;
+ range.insertNode(tmpText).removeInlineStyle(tagNames);
+ _$jscoverage['plugins/basestyle.js'][174]++;
+ range.setStartBefore(tmpText);
+ _$jscoverage['plugins/basestyle.js'][175]++;
+ domUtils.remove(tmpText);
+ }
+ else {
+ _$jscoverage['plugins/basestyle.js'][177]++;
+ var tmpNode = range.document.createElement(tagNames[0]);
+ _$jscoverage['plugins/basestyle.js'][178]++;
+ if (((cmdName == "superscript") || (cmdName == "subscript"))) {
+ _$jscoverage['plugins/basestyle.js'][179]++;
+ tmpText = me.document.createTextNode("");
+ _$jscoverage['plugins/basestyle.js'][180]++;
+ range.insertNode(tmpText).removeInlineStyle(["sub", "sup"]).setStartBefore(tmpText).collapse(true);
+ }
+ _$jscoverage['plugins/basestyle.js'][185]++;
+ range.insertNode(tmpNode).setStart(tmpNode, 0);
+ }
+ _$jscoverage['plugins/basestyle.js'][187]++;
+ range.collapse(true);
+ }
+ else {
+ _$jscoverage['plugins/basestyle.js'][189]++;
+ if (((cmdName == "superscript") || (cmdName == "subscript"))) {
+ _$jscoverage['plugins/basestyle.js'][190]++;
+ if (((! obj) || (obj.tagName.toLowerCase() != cmdName))) {
+ _$jscoverage['plugins/basestyle.js'][191]++;
+ range.removeInlineStyle(["sub", "sup"]);
+ }
+ }
+ _$jscoverage['plugins/basestyle.js'][194]++;
+ (obj? range.removeInlineStyle(tagNames): range.applyInlineStyle(tagNames[0]));
+ }
+ _$jscoverage['plugins/basestyle.js'][196]++;
+ range.select();
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/basestyle.js'][199]++;
+ return (getObj(this, tagNames)? 1: 0);
+})};
+})(style, basestyles[style]);
+}
+});
diff --git a/_test/coverage/plugins/blockquote.js b/_test/coverage/plugins/blockquote.js
new file mode 100644
index 000000000..af7ef670e
--- /dev/null
+++ b/_test/coverage/plugins/blockquote.js
@@ -0,0 +1,287 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/blockquote.js']) {
+ _$jscoverage['plugins/blockquote.js'] = [];
+ _$jscoverage['plugins/blockquote.js'][44] = 0;
+ _$jscoverage['plugins/blockquote.js'][45] = 0;
+ _$jscoverage['plugins/blockquote.js'][46] = 0;
+ _$jscoverage['plugins/blockquote.js'][47] = 0;
+ _$jscoverage['plugins/blockquote.js'][49] = 0;
+ _$jscoverage['plugins/blockquote.js'][51] = 0;
+ _$jscoverage['plugins/blockquote.js'][56] = 0;
+ _$jscoverage['plugins/blockquote.js'][58] = 0;
+ _$jscoverage['plugins/blockquote.js'][59] = 0;
+ _$jscoverage['plugins/blockquote.js'][62] = 0;
+ _$jscoverage['plugins/blockquote.js'][65] = 0;
+ _$jscoverage['plugins/blockquote.js'][66] = 0;
+ _$jscoverage['plugins/blockquote.js'][69] = 0;
+ _$jscoverage['plugins/blockquote.js'][70] = 0;
+ _$jscoverage['plugins/blockquote.js'][72] = 0;
+ _$jscoverage['plugins/blockquote.js'][75] = 0;
+ _$jscoverage['plugins/blockquote.js'][76] = 0;
+ _$jscoverage['plugins/blockquote.js'][77] = 0;
+ _$jscoverage['plugins/blockquote.js'][78] = 0;
+ _$jscoverage['plugins/blockquote.js'][79] = 0;
+ _$jscoverage['plugins/blockquote.js'][81] = 0;
+ _$jscoverage['plugins/blockquote.js'][87] = 0;
+ _$jscoverage['plugins/blockquote.js'][88] = 0;
+ _$jscoverage['plugins/blockquote.js'][89] = 0;
+ _$jscoverage['plugins/blockquote.js'][90] = 0;
+ _$jscoverage['plugins/blockquote.js'][91] = 0;
+ _$jscoverage['plugins/blockquote.js'][92] = 0;
+ _$jscoverage['plugins/blockquote.js'][101] = 0;
+ _$jscoverage['plugins/blockquote.js'][107] = 0;
+ _$jscoverage['plugins/blockquote.js'][108] = 0;
+ _$jscoverage['plugins/blockquote.js'][109] = 0;
+ _$jscoverage['plugins/blockquote.js'][110] = 0;
+ _$jscoverage['plugins/blockquote.js'][111] = 0;
+ _$jscoverage['plugins/blockquote.js'][112] = 0;
+ _$jscoverage['plugins/blockquote.js'][114] = 0;
+ _$jscoverage['plugins/blockquote.js'][117] = 0;
+ _$jscoverage['plugins/blockquote.js'][120] = 0;
+ _$jscoverage['plugins/blockquote.js'][122] = 0;
+ _$jscoverage['plugins/blockquote.js'][123] = 0;
+ _$jscoverage['plugins/blockquote.js'][124] = 0;
+ _$jscoverage['plugins/blockquote.js'][126] = 0;
+ _$jscoverage['plugins/blockquote.js'][128] = 0;
+ _$jscoverage['plugins/blockquote.js'][131] = 0;
+ _$jscoverage['plugins/blockquote.js'][132] = 0;
+ _$jscoverage['plugins/blockquote.js'][136] = 0;
+ _$jscoverage['plugins/blockquote.js'][137] = 0;
+ _$jscoverage['plugins/blockquote.js'][138] = 0;
+ _$jscoverage['plugins/blockquote.js'][140] = 0;
+ _$jscoverage['plugins/blockquote.js'][141] = 0;
+ _$jscoverage['plugins/blockquote.js'][143] = 0;
+ _$jscoverage['plugins/blockquote.js'][146] = 0;
+ _$jscoverage['plugins/blockquote.js'][149] = 0;
+ _$jscoverage['plugins/blockquote.js'][151] = 0;
+ _$jscoverage['plugins/blockquote.js'][152] = 0;
+ _$jscoverage['plugins/blockquote.js'][153] = 0;
+ _$jscoverage['plugins/blockquote.js'][156] = 0;
+ _$jscoverage['plugins/blockquote.js'][157] = 0;
+ _$jscoverage['plugins/blockquote.js'][163] = 0;
+ _$jscoverage['plugins/blockquote.js'][164] = 0;
+ _$jscoverage['plugins/blockquote.js'][165] = 0;
+ _$jscoverage['plugins/blockquote.js'][166] = 0;
+ _$jscoverage['plugins/blockquote.js'][168] = 0;
+ _$jscoverage['plugins/blockquote.js'][169] = 0;
+ _$jscoverage['plugins/blockquote.js'][170] = 0;
+ _$jscoverage['plugins/blockquote.js'][171] = 0;
+ _$jscoverage['plugins/blockquote.js'][176] = 0;
+ _$jscoverage['plugins/blockquote.js'][179] = 0;
+}
+_$jscoverage['plugins/blockquote.js'].source = ["/** "," * 添加引用 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 根据选区位置对标签添加引用 "," * @command blockquote "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'blockquote' ); "," * ``` "," */ ","","/** "," * 根据选区位置对标签添加引用 "," * @command blockquote "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { Object } attrs 节点属性 "," * @example "," * ```javascript "," * editor.execCommand( 'blockquote',{ "," * color:'#000' "," * } ); "," * ``` "," */ ","","/** "," * 返回当前选区位置是否在引用标签内 "," * @command blockquote "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 0为是,-1为不是 "," * @example "," * ```javascript "," * editor.queryCommandState( 'blockquote' ); "," * ``` "," */ ","","UE. plugins[ 'blockquote' ] = function () { "," var me = this ; "," function getObj( editor) { "," return domUtils. filterNodeList( editor. selection. getStartElementPath(), 'blockquote' ); "," } "," me. commands[ 'blockquote' ] = { "," execCommand : function ( cmdName, attrs ) { "," var range = this . selection. getRange(), "," obj = getObj( this ), "," blockquote = dtd. blockquote, "," bookmark = range. createBookmark(); ",""," if ( obj ) { ",""," var start = range. startContainer, "," startBlock = domUtils. isBlockElm( start) ? start : domUtils. findParent( start, function ( node) { return domUtils. isBlockElm( node) } ), ",""," end = range. endContainer, "," endBlock = domUtils. isBlockElm( end) ? end : domUtils. findParent( end, function ( node) { return domUtils. isBlockElm( node) } ); ",""," //处理一下li "," startBlock = domUtils. findParentByTagName( startBlock, 'li' , true ) || startBlock; "," endBlock = domUtils. findParentByTagName( endBlock, 'li' , true ) || endBlock; ","",""," if ( startBlock. tagName == 'LI' || startBlock. tagName == 'TD' || startBlock === obj || domUtils. isBody( startBlock)) { "," domUtils. remove( obj, true ); "," } else { "," domUtils. breakParent( startBlock, obj); "," } ",""," if ( startBlock !== endBlock) { "," obj = domUtils. findParentByTagName( endBlock, 'blockquote' ); "," if ( obj) { "," if ( endBlock. tagName == 'LI' || endBlock. tagName == 'TD' || domUtils. isBody( endBlock)) { "," obj. parentNode && domUtils. remove( obj, true ); "," } else { "," domUtils. breakParent( endBlock, obj); "," } ",""," } "," } ",""," var blockquotes = domUtils. getElementsByTagName( this . document, 'blockquote' ); "," for ( var i= 0 , bi; bi= blockquotes[ i++];) { "," if (! bi. childNodes. length) { "," domUtils. remove( bi); "," } else if ( domUtils. getPosition( bi, startBlock)& domUtils. POSITION_FOLLOWING && domUtils. getPosition( bi, endBlock)& domUtils. POSITION_PRECEDING) { "," domUtils. remove( bi, true ); "," } "," } ","","","",""," } else { ",""," var tmpRange = range. cloneRange(), "," node = tmpRange. startContainer. nodeType == 1 ? tmpRange. startContainer : tmpRange. startContainer. parentNode, "," preNode = node, "," doEnd = 1 ; ",""," //调整开始 "," while ( 1 ) { "," if ( domUtils. isBody( node) ) { "," if ( preNode !== node ) { "," if ( range. collapsed ) { "," tmpRange. selectNode( preNode ); "," doEnd = 0 ; "," } else { "," tmpRange. setStartBefore( preNode ); "," } "," } else { "," tmpRange. setStart( node, 0 ); "," } ",""," break ; "," } "," if ( ! blockquote[ node. tagName] ) { "," if ( range. collapsed ) { "," tmpRange. selectNode( preNode ); "," } else { "," tmpRange. setStartBefore( preNode); "," } "," break ; "," } ",""," preNode = node; "," node = node. parentNode; "," } ",""," //调整结束 "," if ( doEnd ) { "," preNode = node = node = tmpRange. endContainer. nodeType == 1 ? tmpRange. endContainer : tmpRange. endContainer. parentNode; "," while ( 1 ) { ",""," if ( domUtils. isBody( node ) ) { "," if ( preNode !== node ) { ",""," tmpRange. setEndAfter( preNode ); ",""," } else { "," tmpRange. setEnd( node, node. childNodes. length ); "," } ",""," break ; "," } "," if ( ! blockquote[ node. tagName] ) { "," tmpRange. setEndAfter( preNode ); "," break ; "," } ",""," preNode = node; "," node = node. parentNode; "," } ",""," } ","",""," node = range. document. createElement( 'blockquote' ); "," domUtils. setAttributes( node, attrs ); "," node. appendChild( tmpRange. extractContents() ); "," tmpRange. insertNode( node ); "," //去除重复的 "," var childs = domUtils. getElementsByTagName( node, 'blockquote' ); "," for ( var i= 0 , ci; ci= childs[ i++];) { "," if ( ci. parentNode) { "," domUtils. remove( ci, true ); "," } "," } ",""," } "," range. moveToBookmark( bookmark ). select(); "," } , "," queryCommandState : function () { "," return getObj( this ) ? 1 : 0 ; "," } "," } ; ","} ; ",""];
+_$jscoverage['plugins/blockquote.js'][44]++;
+UE.plugins.blockquote = (function () {
+ _$jscoverage['plugins/blockquote.js'][45]++;
+ var me = this;
+ _$jscoverage['plugins/blockquote.js'][46]++;
+ function getObj(editor) {
+ _$jscoverage['plugins/blockquote.js'][47]++;
+ return domUtils.filterNodeList(editor.selection.getStartElementPath(), "blockquote");
+}
+ _$jscoverage['plugins/blockquote.js'][49]++;
+ me.commands.blockquote = {execCommand: (function (cmdName, attrs) {
+ _$jscoverage['plugins/blockquote.js'][51]++;
+ var range = this.selection.getRange(), obj = getObj(this), blockquote = dtd.blockquote, bookmark = range.createBookmark();
+ _$jscoverage['plugins/blockquote.js'][56]++;
+ if (obj) {
+ _$jscoverage['plugins/blockquote.js'][58]++;
+ var start = range.startContainer, startBlock = (domUtils.isBlockElm(start)? start: domUtils.findParent(start, (function (node) {
+ _$jscoverage['plugins/blockquote.js'][59]++;
+ return domUtils.isBlockElm(node);
+}))), end = range.endContainer, endBlock = (domUtils.isBlockElm(end)? end: domUtils.findParent(end, (function (node) {
+ _$jscoverage['plugins/blockquote.js'][62]++;
+ return domUtils.isBlockElm(node);
+})));
+ _$jscoverage['plugins/blockquote.js'][65]++;
+ startBlock = (domUtils.findParentByTagName(startBlock, "li", true) || startBlock);
+ _$jscoverage['plugins/blockquote.js'][66]++;
+ endBlock = (domUtils.findParentByTagName(endBlock, "li", true) || endBlock);
+ _$jscoverage['plugins/blockquote.js'][69]++;
+ if (((startBlock.tagName == "LI") || (startBlock.tagName == "TD") || (startBlock === obj) || domUtils.isBody(startBlock))) {
+ _$jscoverage['plugins/blockquote.js'][70]++;
+ domUtils.remove(obj, true);
+ }
+ else {
+ _$jscoverage['plugins/blockquote.js'][72]++;
+ domUtils.breakParent(startBlock, obj);
+ }
+ _$jscoverage['plugins/blockquote.js'][75]++;
+ if ((startBlock !== endBlock)) {
+ _$jscoverage['plugins/blockquote.js'][76]++;
+ obj = domUtils.findParentByTagName(endBlock, "blockquote");
+ _$jscoverage['plugins/blockquote.js'][77]++;
+ if (obj) {
+ _$jscoverage['plugins/blockquote.js'][78]++;
+ if (((endBlock.tagName == "LI") || (endBlock.tagName == "TD") || domUtils.isBody(endBlock))) {
+ _$jscoverage['plugins/blockquote.js'][79]++;
+ (obj.parentNode && domUtils.remove(obj, true));
+ }
+ else {
+ _$jscoverage['plugins/blockquote.js'][81]++;
+ domUtils.breakParent(endBlock, obj);
+ }
+ }
+ }
+ _$jscoverage['plugins/blockquote.js'][87]++;
+ var blockquotes = domUtils.getElementsByTagName(this.document, "blockquote");
+ _$jscoverage['plugins/blockquote.js'][88]++;
+ for (var i = 0, bi; (bi = blockquotes[(i++)]);) {
+ _$jscoverage['plugins/blockquote.js'][89]++;
+ if ((! bi.childNodes.length)) {
+ _$jscoverage['plugins/blockquote.js'][90]++;
+ domUtils.remove(bi);
+ }
+ else {
+ _$jscoverage['plugins/blockquote.js'][91]++;
+ if (((domUtils.getPosition(bi, startBlock) & domUtils.POSITION_FOLLOWING) && (domUtils.getPosition(bi, endBlock) & domUtils.POSITION_PRECEDING))) {
+ _$jscoverage['plugins/blockquote.js'][92]++;
+ domUtils.remove(bi, true);
+ }
+ }
+}
+ }
+ else {
+ _$jscoverage['plugins/blockquote.js'][101]++;
+ var tmpRange = range.cloneRange(), node = ((tmpRange.startContainer.nodeType == 1)? tmpRange.startContainer: tmpRange.startContainer.parentNode), preNode = node, doEnd = 1;
+ _$jscoverage['plugins/blockquote.js'][107]++;
+ while (true) {
+ _$jscoverage['plugins/blockquote.js'][108]++;
+ if (domUtils.isBody(node)) {
+ _$jscoverage['plugins/blockquote.js'][109]++;
+ if ((preNode !== node)) {
+ _$jscoverage['plugins/blockquote.js'][110]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/blockquote.js'][111]++;
+ tmpRange.selectNode(preNode);
+ _$jscoverage['plugins/blockquote.js'][112]++;
+ doEnd = 0;
+ }
+ else {
+ _$jscoverage['plugins/blockquote.js'][114]++;
+ tmpRange.setStartBefore(preNode);
+ }
+ }
+ else {
+ _$jscoverage['plugins/blockquote.js'][117]++;
+ tmpRange.setStart(node, 0);
+ }
+ _$jscoverage['plugins/blockquote.js'][120]++;
+ break;
+ }
+ _$jscoverage['plugins/blockquote.js'][122]++;
+ if ((! blockquote[node.tagName])) {
+ _$jscoverage['plugins/blockquote.js'][123]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/blockquote.js'][124]++;
+ tmpRange.selectNode(preNode);
+ }
+ else {
+ _$jscoverage['plugins/blockquote.js'][126]++;
+ tmpRange.setStartBefore(preNode);
+ }
+ _$jscoverage['plugins/blockquote.js'][128]++;
+ break;
+ }
+ _$jscoverage['plugins/blockquote.js'][131]++;
+ preNode = node;
+ _$jscoverage['plugins/blockquote.js'][132]++;
+ node = node.parentNode;
+}
+ _$jscoverage['plugins/blockquote.js'][136]++;
+ if (doEnd) {
+ _$jscoverage['plugins/blockquote.js'][137]++;
+ preNode = (node = (node = ((tmpRange.endContainer.nodeType == 1)? tmpRange.endContainer: tmpRange.endContainer.parentNode)));
+ _$jscoverage['plugins/blockquote.js'][138]++;
+ while (true) {
+ _$jscoverage['plugins/blockquote.js'][140]++;
+ if (domUtils.isBody(node)) {
+ _$jscoverage['plugins/blockquote.js'][141]++;
+ if ((preNode !== node)) {
+ _$jscoverage['plugins/blockquote.js'][143]++;
+ tmpRange.setEndAfter(preNode);
+ }
+ else {
+ _$jscoverage['plugins/blockquote.js'][146]++;
+ tmpRange.setEnd(node, node.childNodes.length);
+ }
+ _$jscoverage['plugins/blockquote.js'][149]++;
+ break;
+ }
+ _$jscoverage['plugins/blockquote.js'][151]++;
+ if ((! blockquote[node.tagName])) {
+ _$jscoverage['plugins/blockquote.js'][152]++;
+ tmpRange.setEndAfter(preNode);
+ _$jscoverage['plugins/blockquote.js'][153]++;
+ break;
+ }
+ _$jscoverage['plugins/blockquote.js'][156]++;
+ preNode = node;
+ _$jscoverage['plugins/blockquote.js'][157]++;
+ node = node.parentNode;
+}
+ }
+ _$jscoverage['plugins/blockquote.js'][163]++;
+ node = range.document.createElement("blockquote");
+ _$jscoverage['plugins/blockquote.js'][164]++;
+ domUtils.setAttributes(node, attrs);
+ _$jscoverage['plugins/blockquote.js'][165]++;
+ node.appendChild(tmpRange.extractContents());
+ _$jscoverage['plugins/blockquote.js'][166]++;
+ tmpRange.insertNode(node);
+ _$jscoverage['plugins/blockquote.js'][168]++;
+ var childs = domUtils.getElementsByTagName(node, "blockquote");
+ _$jscoverage['plugins/blockquote.js'][169]++;
+ for (var i = 0, ci; (ci = childs[(i++)]);) {
+ _$jscoverage['plugins/blockquote.js'][170]++;
+ if (ci.parentNode) {
+ _$jscoverage['plugins/blockquote.js'][171]++;
+ domUtils.remove(ci, true);
+ }
+}
+ }
+ _$jscoverage['plugins/blockquote.js'][176]++;
+ range.moveToBookmark(bookmark).select();
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/blockquote.js'][179]++;
+ return (getObj(this)? 1: 0);
+})};
+});
diff --git a/_test/coverage/plugins/catchremoteimage.js b/_test/coverage/plugins/catchremoteimage.js
new file mode 100644
index 000000000..a27962630
--- /dev/null
+++ b/_test/coverage/plugins/catchremoteimage.js
@@ -0,0 +1,192 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/catchremoteimage.js']) {
+ _$jscoverage['plugins/catchremoteimage.js'] = [];
+ _$jscoverage['plugins/catchremoteimage.js'][9] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][10] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][11] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][13] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][14] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][20] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][24] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][25] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][26] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][31] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][32] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][35] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][36] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][39] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][40] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][41] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][42] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][43] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][44] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][45] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][48] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][50] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][51] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][52] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][54] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][55] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][56] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][59] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][60] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][63] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][64] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][66] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][68] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][70] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][71] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][72] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][73] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][74] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][76] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][77] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][81] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][85] = 0;
+ _$jscoverage['plugins/catchremoteimage.js'][89] = 0;
+}
+_$jscoverage['plugins/catchremoteimage.js'].source = ["///import core ","///commands 远程图片抓取 ","///commandsName catchRemoteImage,catchremoteimageenable ","///commandsTitle 远程图片抓取 ","/* "," * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片 "," * "," */ ","UE. plugins[ 'catchremoteimage' ] = function () { "," if ( this . options. catchRemoteImageEnable=== false ) { "," return ; "," } "," var me = this ; "," this . setOpt( { "," localDomain:[ \"127.0.0.1\" , \"localhost\" , \"img.baidu.com\" ], "," separater: 'ue_separate_ue' , "," catchFieldName: \"upfile\" , "," catchRemoteImageEnable: true "," } ); "," var ajax = UE. ajax, "," localDomain = me. options. localDomain , "," catcherUrl = me. options. catcherUrl, "," separater = me. options. separater; "," function catchremoteimage( imgs, callbacks) { "," var submitStr = imgs. join( separater); "," var tmpOption = { "," timeout: 60000 , //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值 "," onsuccess: callbacks[ \"success\" ], "," onerror: callbacks[ \"error\" ] "," } ; "," tmpOption[ me. options. catchFieldName] = submitStr; "," ajax. request( catcherUrl, tmpOption); "," } ",""," me. addListener( \"afterpaste\" , function () { "," me. fireEvent( \"catchRemoteImage\" ); "," } ); ",""," me. addListener( \"catchRemoteImage\" , function () { "," var remoteImages = []; "," var imgs = domUtils. getElementsByTagName( me. document, \"img\" ); "," var test = function ( src, urls) { "," for ( var j = 0 , url; url = urls[ j++];) { "," if ( src. indexOf( url) !== - 1 ) { "," return true ; "," } "," } "," return false ; "," } ; "," for ( var i = 0 , ci; ci = imgs[ i++];) { "," if ( ci. getAttribute( \"word_img\" )) { "," continue ; "," } "," var src = ci. getAttribute( \"_src\" ) || ci. src || \"\" ; "," if ( /^(https?|ftp):/i . test( src) && ! test( src, localDomain)) { "," remoteImages. push( src); "," } "," } "," if ( remoteImages. length) { "," catchremoteimage( remoteImages, { "," //成功抓取 "," success: function ( xhr) { "," try { "," var info = eval( \"(\" + xhr. responseText + \")\" ); "," } catch ( e) { "," return ; "," } "," var srcUrls = info. srcUrl. split( separater), "," urls = info. url. split( separater); "," for ( var i = 0 , ci; ci = imgs[ i++];) { "," var src = ci. getAttribute( \"_src\" ) || ci. src || \"\" ; "," for ( var j = 0 , cj; cj = srcUrls[ j++];) { "," var url = urls[ j - 1 ]; "," if ( src == cj && url != \"error\" ) { //抓取失败时不做替换处理 "," //地址修正 "," var newSrc = me. options. catcherPath + url; "," domUtils. setAttributes( ci, { "," \"src\" : newSrc, "," \"_src\" : newSrc"," } ); "," break ; "," } "," } "," } "," me. fireEvent( 'catchremotesuccess' ) "," } , "," //回调失败,本次请求超时 "," error: function () { "," me. fireEvent( \"catchremoteerror\" ); "," } "," } ); "," } ",""," } ); ","} ; "];
+_$jscoverage['plugins/catchremoteimage.js'][9]++;
+UE.plugins.catchremoteimage = (function () {
+ _$jscoverage['plugins/catchremoteimage.js'][10]++;
+ if ((this.options.catchRemoteImageEnable === false)) {
+ _$jscoverage['plugins/catchremoteimage.js'][11]++;
+ return;
+ }
+ _$jscoverage['plugins/catchremoteimage.js'][13]++;
+ var me = this;
+ _$jscoverage['plugins/catchremoteimage.js'][14]++;
+ this.setOpt({localDomain: ["127.0.0.1", "localhost", "img.baidu.com"], separater: "ue_separate_ue", catchFieldName: "upfile", catchRemoteImageEnable: true});
+ _$jscoverage['plugins/catchremoteimage.js'][20]++;
+ var ajax = UE.ajax, localDomain = me.options.localDomain, catcherUrl = me.options.catcherUrl, separater = me.options.separater;
+ _$jscoverage['plugins/catchremoteimage.js'][24]++;
+ function catchremoteimage(imgs, callbacks) {
+ _$jscoverage['plugins/catchremoteimage.js'][25]++;
+ var submitStr = imgs.join(separater);
+ _$jscoverage['plugins/catchremoteimage.js'][26]++;
+ var tmpOption = {timeout: 60000, onsuccess: callbacks.success, onerror: callbacks.error};
+ _$jscoverage['plugins/catchremoteimage.js'][31]++;
+ tmpOption[me.options.catchFieldName] = submitStr;
+ _$jscoverage['plugins/catchremoteimage.js'][32]++;
+ ajax.request(catcherUrl, tmpOption);
+}
+ _$jscoverage['plugins/catchremoteimage.js'][35]++;
+ me.addListener("afterpaste", (function () {
+ _$jscoverage['plugins/catchremoteimage.js'][36]++;
+ me.fireEvent("catchRemoteImage");
+}));
+ _$jscoverage['plugins/catchremoteimage.js'][39]++;
+ me.addListener("catchRemoteImage", (function () {
+ _$jscoverage['plugins/catchremoteimage.js'][40]++;
+ var remoteImages = [];
+ _$jscoverage['plugins/catchremoteimage.js'][41]++;
+ var imgs = domUtils.getElementsByTagName(me.document, "img");
+ _$jscoverage['plugins/catchremoteimage.js'][42]++;
+ var test = (function (src, urls) {
+ _$jscoverage['plugins/catchremoteimage.js'][43]++;
+ for (var j = 0, url; (url = urls[(j++)]);) {
+ _$jscoverage['plugins/catchremoteimage.js'][44]++;
+ if ((src.indexOf(url) !== -1)) {
+ _$jscoverage['plugins/catchremoteimage.js'][45]++;
+ return true;
+ }
+}
+ _$jscoverage['plugins/catchremoteimage.js'][48]++;
+ return false;
+});
+ _$jscoverage['plugins/catchremoteimage.js'][50]++;
+ for (var i = 0, ci; (ci = imgs[(i++)]);) {
+ _$jscoverage['plugins/catchremoteimage.js'][51]++;
+ if (ci.getAttribute("word_img")) {
+ _$jscoverage['plugins/catchremoteimage.js'][52]++;
+ continue;
+ }
+ _$jscoverage['plugins/catchremoteimage.js'][54]++;
+ var src = (ci.getAttribute("_src") || ci.src || "");
+ _$jscoverage['plugins/catchremoteimage.js'][55]++;
+ if ((/^(https?|ftp):/i.test(src) && (! test(src, localDomain)))) {
+ _$jscoverage['plugins/catchremoteimage.js'][56]++;
+ remoteImages.push(src);
+ }
+}
+ _$jscoverage['plugins/catchremoteimage.js'][59]++;
+ if (remoteImages.length) {
+ _$jscoverage['plugins/catchremoteimage.js'][60]++;
+ catchremoteimage(remoteImages, {success: (function (xhr) {
+ _$jscoverage['plugins/catchremoteimage.js'][63]++;
+ try {
+ _$jscoverage['plugins/catchremoteimage.js'][64]++;
+ var info = eval(("(" + xhr.responseText + ")"));
+ }
+ catch (e) {
+ _$jscoverage['plugins/catchremoteimage.js'][66]++;
+ return;
+ }
+ _$jscoverage['plugins/catchremoteimage.js'][68]++;
+ var srcUrls = info.srcUrl.split(separater), urls = info.url.split(separater);
+ _$jscoverage['plugins/catchremoteimage.js'][70]++;
+ for (var i = 0, ci; (ci = imgs[(i++)]);) {
+ _$jscoverage['plugins/catchremoteimage.js'][71]++;
+ var src = (ci.getAttribute("_src") || ci.src || "");
+ _$jscoverage['plugins/catchremoteimage.js'][72]++;
+ for (var j = 0, cj; (cj = srcUrls[(j++)]);) {
+ _$jscoverage['plugins/catchremoteimage.js'][73]++;
+ var url = urls[(j - 1)];
+ _$jscoverage['plugins/catchremoteimage.js'][74]++;
+ if (((src == cj) && (url != "error"))) {
+ _$jscoverage['plugins/catchremoteimage.js'][76]++;
+ var newSrc = (me.options.catcherPath + url);
+ _$jscoverage['plugins/catchremoteimage.js'][77]++;
+ domUtils.setAttributes(ci, {"src": newSrc, "_src": newSrc});
+ _$jscoverage['plugins/catchremoteimage.js'][81]++;
+ break;
+ }
+}
+}
+ _$jscoverage['plugins/catchremoteimage.js'][85]++;
+ me.fireEvent("catchremotesuccess");
+}), error: (function () {
+ _$jscoverage['plugins/catchremoteimage.js'][89]++;
+ me.fireEvent("catchremoteerror");
+})});
+ }
+}));
+});
diff --git a/_test/coverage/plugins/cleardoc.js b/_test/coverage/plugins/cleardoc.js
new file mode 100644
index 000000000..0feece8fb
--- /dev/null
+++ b/_test/coverage/plugins/cleardoc.js
@@ -0,0 +1,75 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/cleardoc.js']) {
+ _$jscoverage['plugins/cleardoc.js'] = [];
+ _$jscoverage['plugins/cleardoc.js'][19] = 0;
+ _$jscoverage['plugins/cleardoc.js'][21] = 0;
+ _$jscoverage['plugins/cleardoc.js'][24] = 0;
+ _$jscoverage['plugins/cleardoc.js'][25] = 0;
+ _$jscoverage['plugins/cleardoc.js'][26] = 0;
+ _$jscoverage['plugins/cleardoc.js'][28] = 0;
+ _$jscoverage['plugins/cleardoc.js'][29] = 0;
+ _$jscoverage['plugins/cleardoc.js'][31] = 0;
+ _$jscoverage['plugins/cleardoc.js'][32] = 0;
+}
+_$jscoverage['plugins/cleardoc.js'].source = ["/** "," * 清空文档插件 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 清空文档命令 "," * @command cleardoc "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * //editor 是编辑器实例 "," * editor.execCommand('cleardoc'); "," * ``` "," */ ","","UE. commands[ 'cleardoc' ] = { "," execCommand : function ( cmdName) { "," var me = this , "," enterTag = me. options. enterTag, "," range = me. selection. getRange(); "," if ( enterTag == \"br\" ) { "," me. body. innerHTML = \"<br/>\" ; "," range. setStart( me. body, 0 ). setCursor(); "," } else { "," me. body. innerHTML = \"<p>\" +( ie ? \"\" : \"<br/>\" )+ \"</p>\" ; "," range. setStart( me. body. firstChild, 0 ). setCursor( false , true ); "," } "," setTimeout( function () { "," me. fireEvent( \"clearDoc\" ); "," } , 0 ); ",""," } ","} ; ",""];
+_$jscoverage['plugins/cleardoc.js'][19]++;
+UE.commands.cleardoc = {execCommand: (function (cmdName) {
+ _$jscoverage['plugins/cleardoc.js'][21]++;
+ var me = this, enterTag = me.options.enterTag, range = me.selection.getRange();
+ _$jscoverage['plugins/cleardoc.js'][24]++;
+ if ((enterTag == "br")) {
+ _$jscoverage['plugins/cleardoc.js'][25]++;
+ me.body.innerHTML = " ";
+ _$jscoverage['plugins/cleardoc.js'][26]++;
+ range.setStart(me.body, 0).setCursor();
+ }
+ else {
+ _$jscoverage['plugins/cleardoc.js'][28]++;
+ me.body.innerHTML = ("" + (ie? "": " ") + "
");
+ _$jscoverage['plugins/cleardoc.js'][29]++;
+ range.setStart(me.body.firstChild, 0).setCursor(false, true);
+ }
+ _$jscoverage['plugins/cleardoc.js'][31]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/cleardoc.js'][32]++;
+ me.fireEvent("clearDoc");
+}), 0);
+})};
diff --git a/_test/coverage/plugins/contextmenu.js b/_test/coverage/plugins/contextmenu.js
new file mode 100644
index 000000000..69e001c82
--- /dev/null
+++ b/_test/coverage/plugins/contextmenu.js
@@ -0,0 +1,413 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/contextmenu.js']) {
+ _$jscoverage['plugins/contextmenu.js'] = [];
+ _$jscoverage['plugins/contextmenu.js'][12] = 0;
+ _$jscoverage['plugins/contextmenu.js'][13] = 0;
+ _$jscoverage['plugins/contextmenu.js'][27] = 0;
+ _$jscoverage['plugins/contextmenu.js'][28] = 0;
+ _$jscoverage['plugins/contextmenu.js'][159] = 0;
+ _$jscoverage['plugins/contextmenu.js'][160] = 0;
+ _$jscoverage['plugins/contextmenu.js'][162] = 0;
+ _$jscoverage['plugins/contextmenu.js'][169] = 0;
+ _$jscoverage['plugins/contextmenu.js'][170] = 0;
+ _$jscoverage['plugins/contextmenu.js'][172] = 0;
+ _$jscoverage['plugins/contextmenu.js'][194] = 0;
+ _$jscoverage['plugins/contextmenu.js'][195] = 0;
+ _$jscoverage['plugins/contextmenu.js'][197] = 0;
+ _$jscoverage['plugins/contextmenu.js'][205] = 0;
+ _$jscoverage['plugins/contextmenu.js'][206] = 0;
+ _$jscoverage['plugins/contextmenu.js'][208] = 0;
+ _$jscoverage['plugins/contextmenu.js'][209] = 0;
+ _$jscoverage['plugins/contextmenu.js'][210] = 0;
+ _$jscoverage['plugins/contextmenu.js'][218] = 0;
+ _$jscoverage['plugins/contextmenu.js'][219] = 0;
+ _$jscoverage['plugins/contextmenu.js'][221] = 0;
+ _$jscoverage['plugins/contextmenu.js'][222] = 0;
+ _$jscoverage['plugins/contextmenu.js'][223] = 0;
+ _$jscoverage['plugins/contextmenu.js'][237] = 0;
+ _$jscoverage['plugins/contextmenu.js'][244] = 0;
+ _$jscoverage['plugins/contextmenu.js'][251] = 0;
+ _$jscoverage['plugins/contextmenu.js'][258] = 0;
+ _$jscoverage['plugins/contextmenu.js'][265] = 0;
+ _$jscoverage['plugins/contextmenu.js'][272] = 0;
+ _$jscoverage['plugins/contextmenu.js'][357] = 0;
+ _$jscoverage['plugins/contextmenu.js'][360] = 0;
+ _$jscoverage['plugins/contextmenu.js'][367] = 0;
+ _$jscoverage['plugins/contextmenu.js'][370] = 0;
+ _$jscoverage['plugins/contextmenu.js'][376] = 0;
+ _$jscoverage['plugins/contextmenu.js'][377] = 0;
+ _$jscoverage['plugins/contextmenu.js'][379] = 0;
+ _$jscoverage['plugins/contextmenu.js'][383] = 0;
+ _$jscoverage['plugins/contextmenu.js'][384] = 0;
+ _$jscoverage['plugins/contextmenu.js'][386] = 0;
+ _$jscoverage['plugins/contextmenu.js'][388] = 0;
+ _$jscoverage['plugins/contextmenu.js'][390] = 0;
+ _$jscoverage['plugins/contextmenu.js'][391] = 0;
+ _$jscoverage['plugins/contextmenu.js'][392] = 0;
+ _$jscoverage['plugins/contextmenu.js'][393] = 0;
+ _$jscoverage['plugins/contextmenu.js'][395] = 0;
+ _$jscoverage['plugins/contextmenu.js'][396] = 0;
+ _$jscoverage['plugins/contextmenu.js'][397] = 0;
+ _$jscoverage['plugins/contextmenu.js'][398] = 0;
+ _$jscoverage['plugins/contextmenu.js'][399] = 0;
+ _$jscoverage['plugins/contextmenu.js'][400] = 0;
+ _$jscoverage['plugins/contextmenu.js'][402] = 0;
+ _$jscoverage['plugins/contextmenu.js'][403] = 0;
+ _$jscoverage['plugins/contextmenu.js'][404] = 0;
+ _$jscoverage['plugins/contextmenu.js'][405] = 0;
+ _$jscoverage['plugins/contextmenu.js'][406] = 0;
+ _$jscoverage['plugins/contextmenu.js'][407] = 0;
+ _$jscoverage['plugins/contextmenu.js'][409] = 0;
+ _$jscoverage['plugins/contextmenu.js'][412] = 0;
+ _$jscoverage['plugins/contextmenu.js'][414] = 0;
+ _$jscoverage['plugins/contextmenu.js'][418] = 0;
+ _$jscoverage['plugins/contextmenu.js'][420] = 0;
+ _$jscoverage['plugins/contextmenu.js'][427] = 0;
+ _$jscoverage['plugins/contextmenu.js'][428] = 0;
+ _$jscoverage['plugins/contextmenu.js'][429] = 0;
+ _$jscoverage['plugins/contextmenu.js'][431] = 0;
+ _$jscoverage['plugins/contextmenu.js'][433] = 0;
+ _$jscoverage['plugins/contextmenu.js'][435] = 0;
+ _$jscoverage['plugins/contextmenu.js'][437] = 0;
+ _$jscoverage['plugins/contextmenu.js'][439] = 0;
+ _$jscoverage['plugins/contextmenu.js'][441] = 0;
+ _$jscoverage['plugins/contextmenu.js'][443] = 0;
+ _$jscoverage['plugins/contextmenu.js'][446] = 0;
+ _$jscoverage['plugins/contextmenu.js'][459] = 0;
+ _$jscoverage['plugins/contextmenu.js'][462] = 0;
+ _$jscoverage['plugins/contextmenu.js'][463] = 0;
+ _$jscoverage['plugins/contextmenu.js'][464] = 0;
+ _$jscoverage['plugins/contextmenu.js'][466] = 0;
+ _$jscoverage['plugins/contextmenu.js'][467] = 0;
+ _$jscoverage['plugins/contextmenu.js'][470] = 0;
+ _$jscoverage['plugins/contextmenu.js'][474] = 0;
+ _$jscoverage['plugins/contextmenu.js'][476] = 0;
+ _$jscoverage['plugins/contextmenu.js'][485] = 0;
+ _$jscoverage['plugins/contextmenu.js'][486] = 0;
+ _$jscoverage['plugins/contextmenu.js'][489] = 0;
+ _$jscoverage['plugins/contextmenu.js'][494] = 0;
+ _$jscoverage['plugins/contextmenu.js'][495] = 0;
+ _$jscoverage['plugins/contextmenu.js'][497] = 0;
+ _$jscoverage['plugins/contextmenu.js'][499] = 0;
+ _$jscoverage['plugins/contextmenu.js'][500] = 0;
+ _$jscoverage['plugins/contextmenu.js'][501] = 0;
+ _$jscoverage['plugins/contextmenu.js'][502] = 0;
+ _$jscoverage['plugins/contextmenu.js'][503] = 0;
+ _$jscoverage['plugins/contextmenu.js'][505] = 0;
+ _$jscoverage['plugins/contextmenu.js'][507] = 0;
+ _$jscoverage['plugins/contextmenu.js'][508] = 0;
+ _$jscoverage['plugins/contextmenu.js'][509] = 0;
+}
+_$jscoverage['plugins/contextmenu.js'].source = ["///import core ","///commands 右键菜单 ","///commandsName ContextMenu ","///commandsTitle 右键菜单 ","/* "," * 右键菜单 "," * @function "," * @name baidu.editor.plugins.contextmenu "," * @author zhanyi "," */ ","","UE. plugins[ 'contextmenu' ] = function () { "," var me = this , "," lang = me. getLang( \"contextMenu\" ), "," menu, "," items = me. options. contextMenu || [ "," { label: lang[ 'selectall' ], cmdName: 'selectall' } , "," { "," label: lang. deletecode, "," cmdName: 'highlightcode' , "," icon: 'deletehighlightcode' "," } , "," { "," label: lang. cleardoc, "," cmdName: 'cleardoc' , "," exec: function () { "," if ( confirm( lang. confirmclear ) ) { "," this . execCommand( 'cleardoc' ); "," } "," } "," } , "," '-' , "," { "," label: lang. unlink, "," cmdName: 'unlink' "," } , "," '-' , "," { "," group: lang. paragraph, "," icon: 'justifyjustify' , "," subMenu:[ "," { "," label: lang. justifyleft, "," cmdName: 'justify' , "," value: 'left' "," } , "," { "," label: lang. justifyright, "," cmdName: 'justify' , "," value: 'right' "," } , "," { "," label: lang. justifycenter, "," cmdName: 'justify' , "," value: 'center' "," } , "," { "," label: lang. justifyjustify, "," cmdName: 'justify' , "," value: 'justify' "," } "," ] "," } , "," '-' , "," { "," group: lang. table, "," icon: 'table' , "," subMenu:[ "," { "," label: lang. inserttable, "," cmdName: 'inserttable' "," } , "," { "," label: lang. deletetable, "," cmdName: 'deletetable' "," } , "," '-' , "," { "," label: lang. deleterow, "," cmdName: 'deleterow' "," } , "," { "," label: lang. deletecol, "," cmdName: 'deletecol' "," } , "," { "," label: lang. insertcol, "," cmdName: 'insertcol' "," } , "," { "," label: lang. insertcolnext, "," cmdName: 'insertcolnext' "," } , "," { "," label: lang. insertrow, "," cmdName: 'insertrow' "," } , "," { "," label: lang. insertrownext, "," cmdName: 'insertrownext' "," } , "," '-' , "," { "," label: lang. insertcaption, "," cmdName: 'insertcaption' "," } , "," { "," label: lang. deletecaption, "," cmdName: 'deletecaption' "," } , "," { "," label: lang. inserttitle, "," cmdName: 'inserttitle' "," } , "," { "," label: lang. deletetitle, "," cmdName: 'deletetitle' "," } , "," '-' , "," { "," label: lang. mergecells, "," cmdName: 'mergecells' "," } , "," { "," label: lang. mergeright, "," cmdName: 'mergeright' "," } , "," { "," label: lang. mergedown, "," cmdName: 'mergedown' "," } , "," '-' , "," { "," label: lang. splittorows, "," cmdName: 'splittorows' "," } , "," { "," label: lang. splittocols, "," cmdName: 'splittocols' "," } , "," { "," label: lang. splittocells, "," cmdName: 'splittocells' "," } , "," '-' , "," { "," label: lang. averageDiseRow, "," cmdName: 'averagedistributerow' "," } , "," { "," label: lang. averageDisCol, "," cmdName: 'averagedistributecol' "," } , "," '-' , "," { "," label: lang. edittd, "," cmdName: 'edittd' , "," exec: function () { "," if ( UE. ui[ 'edittd' ] ) { "," new UE. ui[ 'edittd' ]( this ); "," } "," this . getDialog( 'edittd' ). open(); "," } "," } , "," { "," label: lang. edittable, "," cmdName: 'edittable' , "," exec: function () { "," if ( UE. ui[ 'edittable' ] ) { "," new UE. ui[ 'edittable' ]( this ); "," } "," this . getDialog( 'edittable' ). open(); "," } "," } "," ] "," } , "," { "," group: lang. tablesort, "," icon: 'tablesort' , "," subMenu:[ "," { "," label: lang. reversecurrent, "," cmdName: 'sorttable' , "," value: 1 "," } , "," { "," label: lang. orderbyasc, "," cmdName: 'sorttable' "," } , "," { "," label: lang. reversebyasc, "," cmdName: 'sorttable' , "," exec: function () { "," this . execCommand( \"sorttable\" , function ( td1, td2) { "," var value1 = td1. innerHTML, "," value2 = td2. innerHTML; "," return value2. localeCompare( value1); "," } ); "," } "," } , "," { "," label: lang. orderbynum, "," cmdName: 'sorttable' , "," exec: function () { "," this . execCommand( \"sorttable\" , function ( td1, td2) { "," var value1 = td1[ browser. ie ? 'innerText' : 'textContent' ]. match( /\\d+/ ), "," value2 = td2[ browser. ie ? 'innerText' : 'textContent' ]. match( /\\d+/ ); "," if ( value1) value1 = + value1[ 0 ]; "," if ( value2) value2 = + value2[ 0 ]; "," return ( value1|| 0 ) - ( value2|| 0 ); "," } ); "," } "," } , "," { "," label: lang. reversebynum, "," cmdName: 'sorttable' , "," exec: function () { "," this . execCommand( \"sorttable\" , function ( td1, td2) { "," var value1 = td1[ browser. ie ? 'innerText' : 'textContent' ]. match( /\\d+/ ), "," value2 = td2[ browser. ie ? 'innerText' : 'textContent' ]. match( /\\d+/ ); "," if ( value1) value1 = + value1[ 0 ]; "," if ( value2) value2 = + value2[ 0 ]; "," return ( value2|| 0 ) - ( value1|| 0 ); "," } ); "," } "," } "," ] "," } , "," { "," group: lang. borderbk, "," icon: 'borderBack' , "," subMenu:[ "," { "," label: lang. setcolor, "," cmdName: \"interlacetable\" , "," exec: function () { "," this . execCommand( \"interlacetable\" ); "," } "," } , "," { "," label: lang. unsetcolor, "," cmdName: \"uninterlacetable\" , "," exec: function () { "," this . execCommand( \"uninterlacetable\" ); "," } "," } , "," { "," label: lang. setbackground, "," cmdName: \"settablebackground\" , "," exec: function () { "," this . execCommand( \"settablebackground\" , { repeat: true , colorList:[ \"#bbb\" , \"#ccc\" ] } ); "," } "," } , "," { "," label: lang. unsetbackground, "," cmdName: \"cleartablebackground\" , "," exec: function () { "," this . execCommand( \"cleartablebackground\" ); "," } "," } , "," { "," label: lang. redandblue, "," cmdName: \"settablebackground\" , "," exec: function () { "," this . execCommand( \"settablebackground\" , { repeat: true , colorList:[ \"red\" , \"blue\" ] } ); "," } "," } , "," { "," label: lang. threecolorgradient, "," cmdName: \"settablebackground\" , "," exec: function () { "," this . execCommand( \"settablebackground\" , { repeat: true , colorList:[ \"#aaa\" , \"#bbb\" , \"#ccc\" ] } ); "," } "," } "," ] "," } , "," { "," group: lang. aligntd, "," icon: 'aligntd' , "," subMenu:[ "," { "," cmdName: 'cellalignment' , "," value: { align: 'left' , vAlign: 'top' } "," } , "," { "," cmdName: 'cellalignment' , "," value: { align: 'center' , vAlign: 'top' } "," } , "," { "," cmdName: 'cellalignment' , "," value: { align: 'right' , vAlign: 'top' } "," } , "," { "," cmdName: 'cellalignment' , "," value: { align: 'left' , vAlign: 'middle' } "," } , "," { "," cmdName: 'cellalignment' , "," value: { align: 'center' , vAlign: 'middle' } "," } , "," { "," cmdName: 'cellalignment' , "," value: { align: 'right' , vAlign: 'middle' } "," } , "," { "," cmdName: 'cellalignment' , "," value: { align: 'left' , vAlign: 'bottom' } "," } , "," { "," cmdName: 'cellalignment' , "," value: { align: 'center' , vAlign: 'bottom' } "," } , "," { "," cmdName: 'cellalignment' , "," value: { align: 'right' , vAlign: 'bottom' } "," } "," ] "," } , "," { "," group: lang. aligntable, "," icon: 'aligntable' , "," subMenu:[ "," { "," cmdName: 'tablealignment' , "," className: 'left' , "," label: lang. tableleft, "," value: \"left\" "," } , "," { "," cmdName: 'tablealignment' , "," className: 'center' , "," label: lang. tablecenter, "," value: \"center\" "," } , "," { "," cmdName: 'tablealignment' , "," className: 'right' , "," label: lang. tableright, "," value: \"right\" "," } "," ] "," } , "," '-' , "," { "," label: lang. insertparagraphbefore, "," cmdName: 'insertparagraph' , "," value: true "," } , "," { "," label: lang. insertparagraphafter, "," cmdName: 'insertparagraph' "," } , "," { "," label: lang[ 'copy' ], "," cmdName: 'copy' , "," exec: function () { "," alert( lang. copymsg ); "," } , "," query: function () { "," return 0 ; "," } "," } , "," { "," label: lang[ 'paste' ], "," cmdName: 'paste' , "," exec: function () { "," alert( lang. pastemsg ); "," } , "," query: function () { "," return 0 ; "," } "," } , { "," label: lang[ 'highlightcode' ], "," cmdName: 'highlightcode' , "," exec: function () { "," if ( UE. ui[ 'highlightcode' ] ) { "," new UE. ui[ 'highlightcode' ]( this ); "," } "," this . ui. _dialogs[ 'highlightcodeDialog' ]. open(); "," } "," } "," ]; "," if ( ! items. length ) { "," return ; "," } "," var uiUtils = UE. ui. uiUtils; ",""," me. addListener( 'contextmenu' , function ( type, evt ) { ",""," var offset = uiUtils. getViewportOffsetByEvent( evt ); "," me. fireEvent( 'beforeselectionchange' ); "," if ( menu ) { "," menu. destroy(); "," } "," for ( var i = 0 , ti, contextItems = []; ti = items[ i]; i++ ) { "," var last; "," ( function ( item ) { "," if ( item == '-' ) { "," if ( ( last = contextItems[ contextItems. length - 1 ] ) && last !== '-' ) { "," contextItems. push( '-' ); "," } "," } else if ( item. hasOwnProperty( \"group\" ) ) { "," for ( var j = 0 , cj, subMenu = []; cj = item. subMenu[ j]; j++ ) { "," ( function ( subItem ) { "," if ( subItem == '-' ) { "," if ( ( last = subMenu[ subMenu. length - 1 ] ) && last !== '-' ) { "," subMenu. push( '-' ); "," } else { "," subMenu. splice( subMenu. length- 1 ); "," } "," } else { "," if ( ( me. commands[ subItem. cmdName] || UE. commands[ subItem. cmdName] || subItem. query) && "," ( subItem. query ? subItem. query() : me. queryCommandState( subItem. cmdName )) > - 1 ) { "," subMenu. push( { "," 'label' : subItem. label || me. getLang( \"contextMenu.\" + subItem. cmdName + ( subItem. value || '' ) )|| \"\" , "," 'className' : 'edui-for-' + subItem. cmdName + ( subItem. className ? ( ' edui-for-' + subItem. cmdName + '-' + subItem. className ) : '' ), "," onclick: subItem. exec ? function () { "," subItem. exec. call( me ); "," } : function () { "," me. execCommand( subItem. cmdName, subItem. value ); "," } "," } ); "," } "," } "," } )( cj ); "," } "," if ( subMenu. length ) { "," function getLabel() { "," switch ( item. icon) { "," case \"table\" : "," return me. getLang( \"contextMenu.table\" ); "," case \"justifyjustify\" : "," return me. getLang( \"contextMenu.paragraph\" ); "," case \"aligntd\" : "," return me. getLang( \"contextMenu.aligntd\" ); "," case \"aligntable\" : "," return me. getLang( \"contextMenu.aligntable\" ); "," case \"tablesort\" : "," return lang. tablesort; "," case \"borderBack\" : "," return lang. borderbk; "," default : "," return '' ; "," } "," } "," contextItems. push( { "," //todo 修正成自动获取方式 "," 'label' : getLabel(), "," className: 'edui-for-' + item. icon, "," 'subMenu' : { "," items: subMenu, "," editor: me"," } "," } ); "," } ",""," } else { "," //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法 "," if ( ( me. commands[ item. cmdName] || UE. commands[ item. cmdName] || item. query) && "," ( item. query ? item. query. call( me) : me. queryCommandState( item. cmdName )) > - 1 ) { "," //highlight todo "," if ( item. cmdName == 'highlightcode' ) { "," if ( me. queryCommandState( item. cmdName ) == 1 && item. icon != 'deletehighlightcode' ) { "," return ; "," } "," if ( me. queryCommandState( item. cmdName ) != 1 && item. icon == 'deletehighlightcode' ) { "," return ; "," } "," } "," contextItems. push( { "," 'label' : item. label || me. getLang( \"contextMenu.\" + item. cmdName ), "," className: 'edui-for-' + ( item. icon ? item. icon : item. cmdName + ( item. value || '' )), "," onclick: item. exec ? function () { "," item. exec. call( me ); "," } : function () { "," me. execCommand( item. cmdName, item. value ); "," } "," } ); "," } ",""," } ",""," } )( ti ); "," } "," if ( contextItems[ contextItems. length - 1 ] == '-' ) { "," contextItems. pop(); "," } ",""," menu = new UE. ui. Menu( { "," items: contextItems, "," className: \"edui-contextmenu\" , "," editor: me"," } ); "," menu. render(); "," menu. showAt( offset ); ",""," me. fireEvent( \"aftershowcontextmenu\" , menu); ",""," domUtils. preventDefault( evt ); "," if ( browser. ie ) { "," var ieRange; "," try { "," ieRange = me. selection. getNative(). createRange(); "," } catch ( e ) { "," return ; "," } "," if ( ieRange. item ) { "," var range = new dom. Range( me. document ); "," range. selectNode( ieRange. item( 0 ) ). select( true , true ); ",""," } "," } "," } ); ","} ; ","",""];
+_$jscoverage['plugins/contextmenu.js'][12]++;
+UE.plugins.contextmenu = (function () {
+ _$jscoverage['plugins/contextmenu.js'][13]++;
+ var me = this, lang = me.getLang("contextMenu"), menu, items = (me.options.contextMenu || [{label: lang.selectall, cmdName: "selectall"}, {label: lang.deletecode, cmdName: "highlightcode", icon: "deletehighlightcode"}, {label: lang.cleardoc, cmdName: "cleardoc", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][27]++;
+ if (confirm(lang.confirmclear)) {
+ _$jscoverage['plugins/contextmenu.js'][28]++;
+ this.execCommand("cleardoc");
+ }
+})}, "-", {label: lang.unlink, cmdName: "unlink"}, "-", {group: lang.paragraph, icon: "justifyjustify", subMenu: [{label: lang.justifyleft, cmdName: "justify", value: "left"}, {label: lang.justifyright, cmdName: "justify", value: "right"}, {label: lang.justifycenter, cmdName: "justify", value: "center"}, {label: lang.justifyjustify, cmdName: "justify", value: "justify"}]}, "-", {group: lang.table, icon: "table", subMenu: [{label: lang.inserttable, cmdName: "inserttable"}, {label: lang.deletetable, cmdName: "deletetable"}, "-", {label: lang.deleterow, cmdName: "deleterow"}, {label: lang.deletecol, cmdName: "deletecol"}, {label: lang.insertcol, cmdName: "insertcol"}, {label: lang.insertcolnext, cmdName: "insertcolnext"}, {label: lang.insertrow, cmdName: "insertrow"}, {label: lang.insertrownext, cmdName: "insertrownext"}, "-", {label: lang.insertcaption, cmdName: "insertcaption"}, {label: lang.deletecaption, cmdName: "deletecaption"}, {label: lang.inserttitle, cmdName: "inserttitle"}, {label: lang.deletetitle, cmdName: "deletetitle"}, "-", {label: lang.mergecells, cmdName: "mergecells"}, {label: lang.mergeright, cmdName: "mergeright"}, {label: lang.mergedown, cmdName: "mergedown"}, "-", {label: lang.splittorows, cmdName: "splittorows"}, {label: lang.splittocols, cmdName: "splittocols"}, {label: lang.splittocells, cmdName: "splittocells"}, "-", {label: lang.averageDiseRow, cmdName: "averagedistributerow"}, {label: lang.averageDisCol, cmdName: "averagedistributecol"}, "-", {label: lang.edittd, cmdName: "edittd", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][159]++;
+ if (UE.ui.edittd) {
+ _$jscoverage['plugins/contextmenu.js'][160]++;
+ new (UE.ui.edittd)(this);
+ }
+ _$jscoverage['plugins/contextmenu.js'][162]++;
+ this.getDialog("edittd").open();
+})}, {label: lang.edittable, cmdName: "edittable", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][169]++;
+ if (UE.ui.edittable) {
+ _$jscoverage['plugins/contextmenu.js'][170]++;
+ new (UE.ui.edittable)(this);
+ }
+ _$jscoverage['plugins/contextmenu.js'][172]++;
+ this.getDialog("edittable").open();
+})}]}, {group: lang.tablesort, icon: "tablesort", subMenu: [{label: lang.reversecurrent, cmdName: "sorttable", value: 1}, {label: lang.orderbyasc, cmdName: "sorttable"}, {label: lang.reversebyasc, cmdName: "sorttable", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][194]++;
+ this.execCommand("sorttable", (function (td1, td2) {
+ _$jscoverage['plugins/contextmenu.js'][195]++;
+ var value1 = td1.innerHTML, value2 = td2.innerHTML;
+ _$jscoverage['plugins/contextmenu.js'][197]++;
+ return value2.localeCompare(value1);
+}));
+})}, {label: lang.orderbynum, cmdName: "sorttable", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][205]++;
+ this.execCommand("sorttable", (function (td1, td2) {
+ _$jscoverage['plugins/contextmenu.js'][206]++;
+ var value1 = td1[(browser.ie? "innerText": "textContent")].match(/\d+/), value2 = td2[(browser.ie? "innerText": "textContent")].match(/\d+/);
+ _$jscoverage['plugins/contextmenu.js'][208]++;
+ if (value1) {
+ _$jscoverage['plugins/contextmenu.js'][208]++;
+ value1 = (+ value1[0]);
+ }
+ _$jscoverage['plugins/contextmenu.js'][209]++;
+ if (value2) {
+ _$jscoverage['plugins/contextmenu.js'][209]++;
+ value2 = (+ value2[0]);
+ }
+ _$jscoverage['plugins/contextmenu.js'][210]++;
+ return ((value1 || 0) - (value2 || 0));
+}));
+})}, {label: lang.reversebynum, cmdName: "sorttable", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][218]++;
+ this.execCommand("sorttable", (function (td1, td2) {
+ _$jscoverage['plugins/contextmenu.js'][219]++;
+ var value1 = td1[(browser.ie? "innerText": "textContent")].match(/\d+/), value2 = td2[(browser.ie? "innerText": "textContent")].match(/\d+/);
+ _$jscoverage['plugins/contextmenu.js'][221]++;
+ if (value1) {
+ _$jscoverage['plugins/contextmenu.js'][221]++;
+ value1 = (+ value1[0]);
+ }
+ _$jscoverage['plugins/contextmenu.js'][222]++;
+ if (value2) {
+ _$jscoverage['plugins/contextmenu.js'][222]++;
+ value2 = (+ value2[0]);
+ }
+ _$jscoverage['plugins/contextmenu.js'][223]++;
+ return ((value2 || 0) - (value1 || 0));
+}));
+})}]}, {group: lang.borderbk, icon: "borderBack", subMenu: [{label: lang.setcolor, cmdName: "interlacetable", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][237]++;
+ this.execCommand("interlacetable");
+})}, {label: lang.unsetcolor, cmdName: "uninterlacetable", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][244]++;
+ this.execCommand("uninterlacetable");
+})}, {label: lang.setbackground, cmdName: "settablebackground", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][251]++;
+ this.execCommand("settablebackground", {repeat: true, colorList: ["#bbb", "#ccc"]});
+})}, {label: lang.unsetbackground, cmdName: "cleartablebackground", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][258]++;
+ this.execCommand("cleartablebackground");
+})}, {label: lang.redandblue, cmdName: "settablebackground", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][265]++;
+ this.execCommand("settablebackground", {repeat: true, colorList: ["red", "blue"]});
+})}, {label: lang.threecolorgradient, cmdName: "settablebackground", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][272]++;
+ this.execCommand("settablebackground", {repeat: true, colorList: ["#aaa", "#bbb", "#ccc"]});
+})}]}, {group: lang.aligntd, icon: "aligntd", subMenu: [{cmdName: "cellalignment", value: {align: "left", vAlign: "top"}}, {cmdName: "cellalignment", value: {align: "center", vAlign: "top"}}, {cmdName: "cellalignment", value: {align: "right", vAlign: "top"}}, {cmdName: "cellalignment", value: {align: "left", vAlign: "middle"}}, {cmdName: "cellalignment", value: {align: "center", vAlign: "middle"}}, {cmdName: "cellalignment", value: {align: "right", vAlign: "middle"}}, {cmdName: "cellalignment", value: {align: "left", vAlign: "bottom"}}, {cmdName: "cellalignment", value: {align: "center", vAlign: "bottom"}}, {cmdName: "cellalignment", value: {align: "right", vAlign: "bottom"}}]}, {group: lang.aligntable, icon: "aligntable", subMenu: [{cmdName: "tablealignment", className: "left", label: lang.tableleft, value: "left"}, {cmdName: "tablealignment", className: "center", label: lang.tablecenter, value: "center"}, {cmdName: "tablealignment", className: "right", label: lang.tableright, value: "right"}]}, "-", {label: lang.insertparagraphbefore, cmdName: "insertparagraph", value: true}, {label: lang.insertparagraphafter, cmdName: "insertparagraph"}, {label: lang.copy, cmdName: "copy", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][357]++;
+ alert(lang.copymsg);
+}), query: (function () {
+ _$jscoverage['plugins/contextmenu.js'][360]++;
+ return 0;
+})}, {label: lang.paste, cmdName: "paste", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][367]++;
+ alert(lang.pastemsg);
+}), query: (function () {
+ _$jscoverage['plugins/contextmenu.js'][370]++;
+ return 0;
+})}, {label: lang.highlightcode, cmdName: "highlightcode", exec: (function () {
+ _$jscoverage['plugins/contextmenu.js'][376]++;
+ if (UE.ui.highlightcode) {
+ _$jscoverage['plugins/contextmenu.js'][377]++;
+ new (UE.ui.highlightcode)(this);
+ }
+ _$jscoverage['plugins/contextmenu.js'][379]++;
+ this.ui._dialogs.highlightcodeDialog.open();
+})}]);
+ _$jscoverage['plugins/contextmenu.js'][383]++;
+ if ((! items.length)) {
+ _$jscoverage['plugins/contextmenu.js'][384]++;
+ return;
+ }
+ _$jscoverage['plugins/contextmenu.js'][386]++;
+ var uiUtils = UE.ui.uiUtils;
+ _$jscoverage['plugins/contextmenu.js'][388]++;
+ me.addListener("contextmenu", (function (type, evt) {
+ _$jscoverage['plugins/contextmenu.js'][390]++;
+ var offset = uiUtils.getViewportOffsetByEvent(evt);
+ _$jscoverage['plugins/contextmenu.js'][391]++;
+ me.fireEvent("beforeselectionchange");
+ _$jscoverage['plugins/contextmenu.js'][392]++;
+ if (menu) {
+ _$jscoverage['plugins/contextmenu.js'][393]++;
+ menu.destroy();
+ }
+ _$jscoverage['plugins/contextmenu.js'][395]++;
+ for (var i = 0, ti, contextItems = []; (ti = items[i]); (i++)) {
+ _$jscoverage['plugins/contextmenu.js'][396]++;
+ var last;
+ _$jscoverage['plugins/contextmenu.js'][397]++;
+ (function (item) {
+ _$jscoverage['plugins/contextmenu.js'][398]++;
+ if ((item == "-")) {
+ _$jscoverage['plugins/contextmenu.js'][399]++;
+ if (((last = contextItems[(contextItems.length - 1)]) && (last !== "-"))) {
+ _$jscoverage['plugins/contextmenu.js'][400]++;
+ contextItems.push("-");
+ }
+ }
+ else {
+ _$jscoverage['plugins/contextmenu.js'][402]++;
+ if (item.hasOwnProperty("group")) {
+ _$jscoverage['plugins/contextmenu.js'][403]++;
+ for (var j = 0, cj, subMenu = []; (cj = item.subMenu[j]); (j++)) {
+ _$jscoverage['plugins/contextmenu.js'][404]++;
+ (function (subItem) {
+ _$jscoverage['plugins/contextmenu.js'][405]++;
+ if ((subItem == "-")) {
+ _$jscoverage['plugins/contextmenu.js'][406]++;
+ if (((last = subMenu[(subMenu.length - 1)]) && (last !== "-"))) {
+ _$jscoverage['plugins/contextmenu.js'][407]++;
+ subMenu.push("-");
+ }
+ else {
+ _$jscoverage['plugins/contextmenu.js'][409]++;
+ subMenu.splice((subMenu.length - 1));
+ }
+ }
+ else {
+ _$jscoverage['plugins/contextmenu.js'][412]++;
+ if (((me.commands[subItem.cmdName] || UE.commands[subItem.cmdName] || subItem.query) && ((subItem.query? subItem.query(): me.queryCommandState(subItem.cmdName)) > -1))) {
+ _$jscoverage['plugins/contextmenu.js'][414]++;
+ subMenu.push({"label": (subItem.label || me.getLang(("contextMenu." + subItem.cmdName + (subItem.value || ""))) || ""), "className": ("edui-for-" + subItem.cmdName + (subItem.className? (" edui-for-" + subItem.cmdName + "-" + subItem.className): "")), onclick: (subItem.exec? (function () {
+ _$jscoverage['plugins/contextmenu.js'][418]++;
+ subItem.exec.call(me);
+}): (function () {
+ _$jscoverage['plugins/contextmenu.js'][420]++;
+ me.execCommand(subItem.cmdName, subItem.value);
+}))});
+ }
+ }
+})(cj);
+}
+ _$jscoverage['plugins/contextmenu.js'][427]++;
+ if (subMenu.length) {
+ _$jscoverage['plugins/contextmenu.js'][428]++;
+ function getLabel() {
+ _$jscoverage['plugins/contextmenu.js'][429]++;
+ switch (item.icon) {
+ case "table":
+ _$jscoverage['plugins/contextmenu.js'][431]++;
+ return me.getLang("contextMenu.table");
+ case "justifyjustify":
+ _$jscoverage['plugins/contextmenu.js'][433]++;
+ return me.getLang("contextMenu.paragraph");
+ case "aligntd":
+ _$jscoverage['plugins/contextmenu.js'][435]++;
+ return me.getLang("contextMenu.aligntd");
+ case "aligntable":
+ _$jscoverage['plugins/contextmenu.js'][437]++;
+ return me.getLang("contextMenu.aligntable");
+ case "tablesort":
+ _$jscoverage['plugins/contextmenu.js'][439]++;
+ return lang.tablesort;
+ case "borderBack":
+ _$jscoverage['plugins/contextmenu.js'][441]++;
+ return lang.borderbk;
+ default:
+ _$jscoverage['plugins/contextmenu.js'][443]++;
+ return "";
+ }
+}
+ _$jscoverage['plugins/contextmenu.js'][446]++;
+ contextItems.push({"label": getLabel(), className: ("edui-for-" + item.icon), "subMenu": {items: subMenu, editor: me}});
+ }
+ }
+ else {
+ _$jscoverage['plugins/contextmenu.js'][459]++;
+ if (((me.commands[item.cmdName] || UE.commands[item.cmdName] || item.query) && ((item.query? item.query.call(me): me.queryCommandState(item.cmdName)) > -1))) {
+ _$jscoverage['plugins/contextmenu.js'][462]++;
+ if ((item.cmdName == "highlightcode")) {
+ _$jscoverage['plugins/contextmenu.js'][463]++;
+ if (((me.queryCommandState(item.cmdName) == 1) && (item.icon != "deletehighlightcode"))) {
+ _$jscoverage['plugins/contextmenu.js'][464]++;
+ return;
+ }
+ _$jscoverage['plugins/contextmenu.js'][466]++;
+ if (((me.queryCommandState(item.cmdName) != 1) && (item.icon == "deletehighlightcode"))) {
+ _$jscoverage['plugins/contextmenu.js'][467]++;
+ return;
+ }
+ }
+ _$jscoverage['plugins/contextmenu.js'][470]++;
+ contextItems.push({"label": (item.label || me.getLang(("contextMenu." + item.cmdName))), className: ("edui-for-" + (item.icon? item.icon: (item.cmdName + (item.value || "")))), onclick: (item.exec? (function () {
+ _$jscoverage['plugins/contextmenu.js'][474]++;
+ item.exec.call(me);
+}): (function () {
+ _$jscoverage['plugins/contextmenu.js'][476]++;
+ me.execCommand(item.cmdName, item.value);
+}))});
+ }
+ }
+ }
+})(ti);
+}
+ _$jscoverage['plugins/contextmenu.js'][485]++;
+ if ((contextItems[(contextItems.length - 1)] == "-")) {
+ _$jscoverage['plugins/contextmenu.js'][486]++;
+ contextItems.pop();
+ }
+ _$jscoverage['plugins/contextmenu.js'][489]++;
+ menu = new (UE.ui.Menu)({items: contextItems, className: "edui-contextmenu", editor: me});
+ _$jscoverage['plugins/contextmenu.js'][494]++;
+ menu.render();
+ _$jscoverage['plugins/contextmenu.js'][495]++;
+ menu.showAt(offset);
+ _$jscoverage['plugins/contextmenu.js'][497]++;
+ me.fireEvent("aftershowcontextmenu", menu);
+ _$jscoverage['plugins/contextmenu.js'][499]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/contextmenu.js'][500]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/contextmenu.js'][501]++;
+ var ieRange;
+ _$jscoverage['plugins/contextmenu.js'][502]++;
+ try {
+ _$jscoverage['plugins/contextmenu.js'][503]++;
+ ieRange = me.selection.getNative().createRange();
+ }
+ catch (e) {
+ _$jscoverage['plugins/contextmenu.js'][505]++;
+ return;
+ }
+ _$jscoverage['plugins/contextmenu.js'][507]++;
+ if (ieRange.item) {
+ _$jscoverage['plugins/contextmenu.js'][508]++;
+ var range = new (dom.Range)(me.document);
+ _$jscoverage['plugins/contextmenu.js'][509]++;
+ range.selectNode(ieRange.item(0)).select(true, true);
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/convertcase.js b/_test/coverage/plugins/convertcase.js
new file mode 100644
index 000000000..89df8c0c9
--- /dev/null
+++ b/_test/coverage/plugins/convertcase.js
@@ -0,0 +1,91 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/convertcase.js']) {
+ _$jscoverage['plugins/convertcase.js'] = [];
+ _$jscoverage['plugins/convertcase.js'][28] = 0;
+ _$jscoverage['plugins/convertcase.js'][31] = 0;
+ _$jscoverage['plugins/convertcase.js'][32] = 0;
+ _$jscoverage['plugins/convertcase.js'][33] = 0;
+ _$jscoverage['plugins/convertcase.js'][34] = 0;
+ _$jscoverage['plugins/convertcase.js'][36] = 0;
+ _$jscoverage['plugins/convertcase.js'][39] = 0;
+ _$jscoverage['plugins/convertcase.js'][42] = 0;
+ _$jscoverage['plugins/convertcase.js'][44] = 0;
+ _$jscoverage['plugins/convertcase.js'][45] = 0;
+ _$jscoverage['plugins/convertcase.js'][47] = 0;
+ _$jscoverage['plugins/convertcase.js'][48] = 0;
+ _$jscoverage['plugins/convertcase.js'][49] = 0;
+ _$jscoverage['plugins/convertcase.js'][53] = 0;
+}
+_$jscoverage['plugins/convertcase.js'].source = ["/** "," * 大小写转换 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 把选区内文本变大写 "," * @command touppercase "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'touppercase' ); "," * ``` "," */ ","","/** "," * 把选区内文本变小写 "," * @command tolowercase "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'tolowercase' ); "," * ``` "," */ ","UE. commands[ 'touppercase' ] = ","UE. commands[ 'tolowercase' ] = { "," execCommand: function ( cmd) { "," var me = this ; "," var rng = me. selection. getRange(); "," if ( rng. collapsed) { "," return rng; "," } "," var bk = rng. createBookmark(), "," bkEnd = bk. end, "," filterFn = function ( node ) { "," return ! domUtils. isBr( node) && ! domUtils. isWhitespace( node ); "," } , "," curNode = domUtils. getNextDomNode( bk. start, false , filterFn ); "," while ( curNode && ( domUtils. getPosition( curNode, bkEnd ) & domUtils. POSITION_PRECEDING) ) { ",""," if ( curNode. nodeType == 3 ) { "," curNode. nodeValue = curNode. nodeValue[ cmd == 'touppercase' ? 'toUpperCase' : 'toLowerCase' ](); "," } "," curNode = domUtils. getNextDomNode( curNode, true , filterFn ); "," if ( curNode === bkEnd) { "," break ; "," } ",""," } "," rng. moveToBookmark( bk). select(); "," } ","} ; ",""];
+_$jscoverage['plugins/convertcase.js'][28]++;
+UE.commands.touppercase = (UE.commands.tolowercase = {execCommand: (function (cmd) {
+ _$jscoverage['plugins/convertcase.js'][31]++;
+ var me = this;
+ _$jscoverage['plugins/convertcase.js'][32]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/convertcase.js'][33]++;
+ if (rng.collapsed) {
+ _$jscoverage['plugins/convertcase.js'][34]++;
+ return rng;
+ }
+ _$jscoverage['plugins/convertcase.js'][36]++;
+ var bk = rng.createBookmark(), bkEnd = bk.end, filterFn = (function (node) {
+ _$jscoverage['plugins/convertcase.js'][39]++;
+ return ((! domUtils.isBr(node)) && (! domUtils.isWhitespace(node)));
+}), curNode = domUtils.getNextDomNode(bk.start, false, filterFn);
+ _$jscoverage['plugins/convertcase.js'][42]++;
+ while ((curNode && (domUtils.getPosition(curNode, bkEnd) & domUtils.POSITION_PRECEDING))) {
+ _$jscoverage['plugins/convertcase.js'][44]++;
+ if ((curNode.nodeType == 3)) {
+ _$jscoverage['plugins/convertcase.js'][45]++;
+ curNode.nodeValue = (curNode.nodeValue[((cmd == "touppercase")? "toUpperCase": "toLowerCase")])();
+ }
+ _$jscoverage['plugins/convertcase.js'][47]++;
+ curNode = domUtils.getNextDomNode(curNode, true, filterFn);
+ _$jscoverage['plugins/convertcase.js'][48]++;
+ if ((curNode === bkEnd)) {
+ _$jscoverage['plugins/convertcase.js'][49]++;
+ break;
+ }
+}
+ _$jscoverage['plugins/convertcase.js'][53]++;
+ rng.moveToBookmark(bk).select();
+})});
diff --git a/_test/coverage/plugins/customstyle.js b/_test/coverage/plugins/customstyle.js
new file mode 100644
index 000000000..fbf440cbb
--- /dev/null
+++ b/_test/coverage/plugins/customstyle.js
@@ -0,0 +1,293 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/customstyle.js']) {
+ _$jscoverage['plugins/customstyle.js'] = [];
+ _$jscoverage['plugins/customstyle.js'][6] = 0;
+ _$jscoverage['plugins/customstyle.js'][7] = 0;
+ _$jscoverage['plugins/customstyle.js'][8] = 0;
+ _$jscoverage['plugins/customstyle.js'][14] = 0;
+ _$jscoverage['plugins/customstyle.js'][16] = 0;
+ _$jscoverage['plugins/customstyle.js'][19] = 0;
+ _$jscoverage['plugins/customstyle.js'][22] = 0;
+ _$jscoverage['plugins/customstyle.js'][23] = 0;
+ _$jscoverage['plugins/customstyle.js'][24] = 0;
+ _$jscoverage['plugins/customstyle.js'][26] = 0;
+ _$jscoverage['plugins/customstyle.js'][27] = 0;
+ _$jscoverage['plugins/customstyle.js'][28] = 0;
+ _$jscoverage['plugins/customstyle.js'][29] = 0;
+ _$jscoverage['plugins/customstyle.js'][30] = 0;
+ _$jscoverage['plugins/customstyle.js'][32] = 0;
+ _$jscoverage['plugins/customstyle.js'][33] = 0;
+ _$jscoverage['plugins/customstyle.js'][34] = 0;
+ _$jscoverage['plugins/customstyle.js'][35] = 0;
+ _$jscoverage['plugins/customstyle.js'][36] = 0;
+ _$jscoverage['plugins/customstyle.js'][38] = 0;
+ _$jscoverage['plugins/customstyle.js'][43] = 0;
+ _$jscoverage['plugins/customstyle.js'][45] = 0;
+ _$jscoverage['plugins/customstyle.js'][46] = 0;
+ _$jscoverage['plugins/customstyle.js'][48] = 0;
+ _$jscoverage['plugins/customstyle.js'][49] = 0;
+ _$jscoverage['plugins/customstyle.js'][50] = 0;
+ _$jscoverage['plugins/customstyle.js'][51] = 0;
+ _$jscoverage['plugins/customstyle.js'][55] = 0;
+ _$jscoverage['plugins/customstyle.js'][56] = 0;
+ _$jscoverage['plugins/customstyle.js'][57] = 0;
+ _$jscoverage['plugins/customstyle.js'][58] = 0;
+ _$jscoverage['plugins/customstyle.js'][60] = 0;
+ _$jscoverage['plugins/customstyle.js'][63] = 0;
+ _$jscoverage['plugins/customstyle.js'][64] = 0;
+ _$jscoverage['plugins/customstyle.js'][66] = 0;
+ _$jscoverage['plugins/customstyle.js'][68] = 0;
+ _$jscoverage['plugins/customstyle.js'][73] = 0;
+ _$jscoverage['plugins/customstyle.js'][75] = 0;
+ _$jscoverage['plugins/customstyle.js'][76] = 0;
+ _$jscoverage['plugins/customstyle.js'][77] = 0;
+ _$jscoverage['plugins/customstyle.js'][78] = 0;
+ _$jscoverage['plugins/customstyle.js'][79] = 0;
+ _$jscoverage['plugins/customstyle.js'][80] = 0;
+ _$jscoverage['plugins/customstyle.js'][81] = 0;
+ _$jscoverage['plugins/customstyle.js'][83] = 0;
+ _$jscoverage['plugins/customstyle.js'][84] = 0;
+ _$jscoverage['plugins/customstyle.js'][85] = 0;
+ _$jscoverage['plugins/customstyle.js'][86] = 0;
+ _$jscoverage['plugins/customstyle.js'][90] = 0;
+ _$jscoverage['plugins/customstyle.js'][91] = 0;
+ _$jscoverage['plugins/customstyle.js'][92] = 0;
+ _$jscoverage['plugins/customstyle.js'][93] = 0;
+ _$jscoverage['plugins/customstyle.js'][94] = 0;
+ _$jscoverage['plugins/customstyle.js'][96] = 0;
+ _$jscoverage['plugins/customstyle.js'][99] = 0;
+ _$jscoverage['plugins/customstyle.js'][100] = 0;
+ _$jscoverage['plugins/customstyle.js'][106] = 0;
+ _$jscoverage['plugins/customstyle.js'][108] = 0;
+ _$jscoverage['plugins/customstyle.js'][110] = 0;
+ _$jscoverage['plugins/customstyle.js'][114] = 0;
+ _$jscoverage['plugins/customstyle.js'][115] = 0;
+ _$jscoverage['plugins/customstyle.js'][117] = 0;
+ _$jscoverage['plugins/customstyle.js'][118] = 0;
+ _$jscoverage['plugins/customstyle.js'][119] = 0;
+ _$jscoverage['plugins/customstyle.js'][120] = 0;
+ _$jscoverage['plugins/customstyle.js'][121] = 0;
+ _$jscoverage['plugins/customstyle.js'][123] = 0;
+ _$jscoverage['plugins/customstyle.js'][124] = 0;
+ _$jscoverage['plugins/customstyle.js'][125] = 0;
+ _$jscoverage['plugins/customstyle.js'][126] = 0;
+ _$jscoverage['plugins/customstyle.js'][127] = 0;
+ _$jscoverage['plugins/customstyle.js'][128] = 0;
+}
+_$jscoverage['plugins/customstyle.js'].source = ["/** "," * 自定义样式命令支持 "," * @file "," */ ","","UE. plugins[ 'customstyle' ] = function () { "," var me = this ; "," me. setOpt( { 'customstyle' :[ "," { tag: 'h1' , name: 'tc' , style: 'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;' } , "," { tag: 'h1' , name: 'tl' , style: 'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;' } , "," { tag: 'span' , name: 'im' , style: 'font-size:16px;font-style:italic;font-weight:bold;line-height:18px;' } , "," { tag: 'span' , name: 'hi' , style: 'font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;' } "," ] } ); "," me. commands[ 'customstyle' ] = { "," execCommand : function ( cmdName, obj) { "," var me = this , "," tagName = obj. tag, "," node = domUtils. findParent( me. selection. getStart(), function ( node) { "," return node. getAttribute( 'label' ); "," } , true ), "," range, bk, tmpObj = {} ; "," for ( var p in obj) { "," if ( obj[ p]!== undefined) "," tmpObj[ p] = obj[ p]; "," } "," delete tmpObj. tag; "," if ( node && node. getAttribute( 'label' ) == obj. label) { "," range = this . selection. getRange(); "," bk = range. createBookmark(); "," if ( range. collapsed) { "," //trace:1732 删掉自定义标签,要有p来回填站位 "," if ( dtd. $block[ node. tagName]) { "," var fillNode = me. document. createElement( 'p' ); "," domUtils. moveChild( node, fillNode); "," node. parentNode. insertBefore( fillNode, node); "," domUtils. remove( node); "," } else { "," domUtils. remove( node, true ); "," } ",""," } else { ",""," var common = domUtils. getCommonAncestor( bk. start, bk. end), "," nodes = domUtils. getElementsByTagName( common, tagName); "," if ( new RegExp( tagName, 'i' ). test( common. tagName)) { "," nodes. push( common); "," } "," for ( var i = 0 , ni; ni = nodes[ i++];) { "," if ( ni. getAttribute( 'label' ) == obj. label) { "," var ps = domUtils. getPosition( ni, bk. start), pe = domUtils. getPosition( ni, bk. end); "," if (( ps & domUtils. POSITION_FOLLOWING || ps & domUtils. POSITION_CONTAINS) "," && "," ( pe & domUtils. POSITION_PRECEDING || pe & domUtils. POSITION_CONTAINS) "," ) "," if ( dtd. $block[ tagName]) { "," var fillNode = me. document. createElement( 'p' ); "," domUtils. moveChild( ni, fillNode); "," ni. parentNode. insertBefore( fillNode, ni); "," } "," domUtils. remove( ni, true ); "," } "," } "," node = domUtils. findParent( common, function ( node) { "," return node. getAttribute( 'label' ) == obj. label; "," } , true ); "," if ( node) { ",""," domUtils. remove( node, true ); ",""," } ",""," } "," range. moveToBookmark( bk). select(); "," } else { "," if ( dtd. $block[ tagName]) { "," this . execCommand( 'paragraph' , tagName, tmpObj, 'customstyle' ); "," range = me. selection. getRange(); "," if (! range. collapsed) { "," range. collapse(); "," node = domUtils. findParent( me. selection. getStart(), function ( node) { "," return node. getAttribute( 'label' ) == obj. label; "," } , true ); "," var pNode = me. document. createElement( 'p' ); "," domUtils. insertAfter( node, pNode); "," domUtils. fillNode( me. document, pNode); "," range. setStart( pNode, 0 ). setCursor(); "," } "," } else { ",""," range = me. selection. getRange(); "," if ( range. collapsed) { "," node = me. document. createElement( tagName); "," domUtils. setAttributes( node, tmpObj); "," range. insertNode( node). setStart( node, 0 ). setCursor(); ",""," return ; "," } ",""," bk = range. createBookmark(); "," range. applyInlineStyle( tagName, tmpObj). moveToBookmark( bk). select(); "," } "," } ",""," } , "," queryCommandValue : function () { "," var parent = domUtils. filterNodeList( "," this . selection. getStartElementPath(), "," function ( node) { return node. getAttribute( 'label' ) } "," ); "," return parent ? parent. getAttribute( 'label' ) : '' ; "," } "," } ; "," //当去掉customstyle是,如果是块元素,用p代替 "," me. addListener( 'keyup' , function ( type, evt) { "," var keyCode = evt. keyCode || evt. which; ",""," if ( keyCode == 32 || keyCode == 13 ) { "," var range = me. selection. getRange(); "," if ( range. collapsed) { "," var node = domUtils. findParent( me. selection. getStart(), function ( node) { "," return node. getAttribute( 'label' ); "," } , true ); "," if ( node && dtd. $block[ node. tagName] && domUtils. isEmptyNode( node)) { "," var p = me. document. createElement( 'p' ); "," domUtils. insertAfter( node, p); "," domUtils. fillNode( me. document, p); "," domUtils. remove( node); "," range. setStart( p, 0 ). setCursor(); ","",""," } "," } "," } "," } ); ","} ; "];
+_$jscoverage['plugins/customstyle.js'][6]++;
+UE.plugins.customstyle = (function () {
+ _$jscoverage['plugins/customstyle.js'][7]++;
+ var me = this;
+ _$jscoverage['plugins/customstyle.js'][8]++;
+ me.setOpt({"customstyle": [{tag: "h1", name: "tc", style: "font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;"}, {tag: "h1", name: "tl", style: "font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;"}, {tag: "span", name: "im", style: "font-size:16px;font-style:italic;font-weight:bold;line-height:18px;"}, {tag: "span", name: "hi", style: "font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;"}]});
+ _$jscoverage['plugins/customstyle.js'][14]++;
+ me.commands.customstyle = {execCommand: (function (cmdName, obj) {
+ _$jscoverage['plugins/customstyle.js'][16]++;
+ var me = this, tagName = obj.tag, node = domUtils.findParent(me.selection.getStart(), (function (node) {
+ _$jscoverage['plugins/customstyle.js'][19]++;
+ return node.getAttribute("label");
+}), true), range, bk, tmpObj = {};
+ _$jscoverage['plugins/customstyle.js'][22]++;
+ for (var p in obj) {
+ _$jscoverage['plugins/customstyle.js'][23]++;
+ if ((obj[p] !== undefined)) {
+ _$jscoverage['plugins/customstyle.js'][24]++;
+ tmpObj[p] = obj[p];
+ }
+}
+ _$jscoverage['plugins/customstyle.js'][26]++;
+ (delete tmpObj.tag);
+ _$jscoverage['plugins/customstyle.js'][27]++;
+ if ((node && (node.getAttribute("label") == obj.label))) {
+ _$jscoverage['plugins/customstyle.js'][28]++;
+ range = this.selection.getRange();
+ _$jscoverage['plugins/customstyle.js'][29]++;
+ bk = range.createBookmark();
+ _$jscoverage['plugins/customstyle.js'][30]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/customstyle.js'][32]++;
+ if (dtd.$block[node.tagName]) {
+ _$jscoverage['plugins/customstyle.js'][33]++;
+ var fillNode = me.document.createElement("p");
+ _$jscoverage['plugins/customstyle.js'][34]++;
+ domUtils.moveChild(node, fillNode);
+ _$jscoverage['plugins/customstyle.js'][35]++;
+ node.parentNode.insertBefore(fillNode, node);
+ _$jscoverage['plugins/customstyle.js'][36]++;
+ domUtils.remove(node);
+ }
+ else {
+ _$jscoverage['plugins/customstyle.js'][38]++;
+ domUtils.remove(node, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/customstyle.js'][43]++;
+ var common = domUtils.getCommonAncestor(bk.start, bk.end), nodes = domUtils.getElementsByTagName(common, tagName);
+ _$jscoverage['plugins/customstyle.js'][45]++;
+ if (new RegExp(tagName, "i").test(common.tagName)) {
+ _$jscoverage['plugins/customstyle.js'][46]++;
+ nodes.push(common);
+ }
+ _$jscoverage['plugins/customstyle.js'][48]++;
+ for (var i = 0, ni; (ni = nodes[(i++)]);) {
+ _$jscoverage['plugins/customstyle.js'][49]++;
+ if ((ni.getAttribute("label") == obj.label)) {
+ _$jscoverage['plugins/customstyle.js'][50]++;
+ var ps = domUtils.getPosition(ni, bk.start), pe = domUtils.getPosition(ni, bk.end);
+ _$jscoverage['plugins/customstyle.js'][51]++;
+ if ((((ps & domUtils.POSITION_FOLLOWING) || (ps & domUtils.POSITION_CONTAINS)) && ((pe & domUtils.POSITION_PRECEDING) || (pe & domUtils.POSITION_CONTAINS)))) {
+ _$jscoverage['plugins/customstyle.js'][55]++;
+ if (dtd.$block[tagName]) {
+ _$jscoverage['plugins/customstyle.js'][56]++;
+ var fillNode = me.document.createElement("p");
+ _$jscoverage['plugins/customstyle.js'][57]++;
+ domUtils.moveChild(ni, fillNode);
+ _$jscoverage['plugins/customstyle.js'][58]++;
+ ni.parentNode.insertBefore(fillNode, ni);
+ }
+ }
+ _$jscoverage['plugins/customstyle.js'][60]++;
+ domUtils.remove(ni, true);
+ }
+}
+ _$jscoverage['plugins/customstyle.js'][63]++;
+ node = domUtils.findParent(common, (function (node) {
+ _$jscoverage['plugins/customstyle.js'][64]++;
+ return (node.getAttribute("label") == obj.label);
+}), true);
+ _$jscoverage['plugins/customstyle.js'][66]++;
+ if (node) {
+ _$jscoverage['plugins/customstyle.js'][68]++;
+ domUtils.remove(node, true);
+ }
+ }
+ _$jscoverage['plugins/customstyle.js'][73]++;
+ range.moveToBookmark(bk).select();
+ }
+ else {
+ _$jscoverage['plugins/customstyle.js'][75]++;
+ if (dtd.$block[tagName]) {
+ _$jscoverage['plugins/customstyle.js'][76]++;
+ this.execCommand("paragraph", tagName, tmpObj, "customstyle");
+ _$jscoverage['plugins/customstyle.js'][77]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/customstyle.js'][78]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/customstyle.js'][79]++;
+ range.collapse();
+ _$jscoverage['plugins/customstyle.js'][80]++;
+ node = domUtils.findParent(me.selection.getStart(), (function (node) {
+ _$jscoverage['plugins/customstyle.js'][81]++;
+ return (node.getAttribute("label") == obj.label);
+}), true);
+ _$jscoverage['plugins/customstyle.js'][83]++;
+ var pNode = me.document.createElement("p");
+ _$jscoverage['plugins/customstyle.js'][84]++;
+ domUtils.insertAfter(node, pNode);
+ _$jscoverage['plugins/customstyle.js'][85]++;
+ domUtils.fillNode(me.document, pNode);
+ _$jscoverage['plugins/customstyle.js'][86]++;
+ range.setStart(pNode, 0).setCursor();
+ }
+ }
+ else {
+ _$jscoverage['plugins/customstyle.js'][90]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/customstyle.js'][91]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/customstyle.js'][92]++;
+ node = me.document.createElement(tagName);
+ _$jscoverage['plugins/customstyle.js'][93]++;
+ domUtils.setAttributes(node, tmpObj);
+ _$jscoverage['plugins/customstyle.js'][94]++;
+ range.insertNode(node).setStart(node, 0).setCursor();
+ _$jscoverage['plugins/customstyle.js'][96]++;
+ return;
+ }
+ _$jscoverage['plugins/customstyle.js'][99]++;
+ bk = range.createBookmark();
+ _$jscoverage['plugins/customstyle.js'][100]++;
+ range.applyInlineStyle(tagName, tmpObj).moveToBookmark(bk).select();
+ }
+ }
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/customstyle.js'][106]++;
+ var parent = domUtils.filterNodeList(this.selection.getStartElementPath(), (function (node) {
+ _$jscoverage['plugins/customstyle.js'][108]++;
+ return node.getAttribute("label");
+}));
+ _$jscoverage['plugins/customstyle.js'][110]++;
+ return (parent? parent.getAttribute("label"): "");
+})};
+ _$jscoverage['plugins/customstyle.js'][114]++;
+ me.addListener("keyup", (function (type, evt) {
+ _$jscoverage['plugins/customstyle.js'][115]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/customstyle.js'][117]++;
+ if (((keyCode == 32) || (keyCode == 13))) {
+ _$jscoverage['plugins/customstyle.js'][118]++;
+ var range = me.selection.getRange();
+ _$jscoverage['plugins/customstyle.js'][119]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/customstyle.js'][120]++;
+ var node = domUtils.findParent(me.selection.getStart(), (function (node) {
+ _$jscoverage['plugins/customstyle.js'][121]++;
+ return node.getAttribute("label");
+}), true);
+ _$jscoverage['plugins/customstyle.js'][123]++;
+ if ((node && dtd.$block[node.tagName] && domUtils.isEmptyNode(node))) {
+ _$jscoverage['plugins/customstyle.js'][124]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/customstyle.js'][125]++;
+ domUtils.insertAfter(node, p);
+ _$jscoverage['plugins/customstyle.js'][126]++;
+ domUtils.fillNode(me.document, p);
+ _$jscoverage['plugins/customstyle.js'][127]++;
+ domUtils.remove(node);
+ _$jscoverage['plugins/customstyle.js'][128]++;
+ range.setStart(p, 0).setCursor();
+ }
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/defaultfilter.js b/_test/coverage/plugins/defaultfilter.js
new file mode 100644
index 000000000..7cb7f3dad
--- /dev/null
+++ b/_test/coverage/plugins/defaultfilter.js
@@ -0,0 +1,388 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/defaultfilter.js']) {
+ _$jscoverage['plugins/defaultfilter.js'] = [];
+ _$jscoverage['plugins/defaultfilter.js'][4] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][5] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][6] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][9] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][10] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][11] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][13] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][14] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][15] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][16] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][17] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][18] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][20] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][22] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][25] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][29] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][30] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][31] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][33] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][34] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][36] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][39] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][40] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][41] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][42] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][45] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][46] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][48] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][49] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][50] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][51] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][52] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][56] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][58] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][59] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][60] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][69] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][70] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][72] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][74] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][75] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][78] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][79] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][80] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][82] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][83] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][85] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][86] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][87] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][88] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][90] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][91] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][92] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][94] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][98] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][99] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][101] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][102] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][104] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][105] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][108] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][109] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][111] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][112] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][113] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][115] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][116] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][117] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][119] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][123] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][125] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][130] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][131] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][138] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][140] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][141] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][142] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][144] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][146] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][147] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][148] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][150] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][152] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][154] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][155] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][156] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][157] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][159] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][161] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][162] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][167] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][169] = 0;
+ _$jscoverage['plugins/defaultfilter.js'][170] = 0;
+}
+_$jscoverage['plugins/defaultfilter.js'].source = ["///import core ","///plugin 编辑器默认的过滤转换机制 ","","UE. plugins[ 'defaultfilter' ] = function () { "," var me = this ; "," me. setOpt( 'allowDivTransToP' , true ); "," //默认的过滤处理 "," //进入编辑器的内容处理 "," me. addInputRule( function ( root) { "," var allowDivTransToP = this . options. allowDivTransToP; "," var val; "," //进行默认的处理 "," root. traversal( function ( node) { "," if ( node. type == 'element' ) { "," if (! dtd. $cdata[ node. tagName] && me. options. autoClearEmptyNode && dtd. $inline[ node. tagName] && ! dtd. $empty[ node. tagName] && (! node. attrs || utils. isEmptyObject( node. attrs))) { "," if (! node. firstChild()) node. parentNode. removeChild( node); "," else if ( node. tagName == 'span' && (! node. attrs || utils. isEmptyObject( node. attrs))) { "," node. parentNode. removeChild( node, true ) "," } "," return ; "," } "," switch ( node. tagName) { "," case 'style' : "," case 'script' : "," node. setAttr( { "," cdata_tag: node. tagName, "," cdata_data: encodeURIComponent( node. innerText() || '' ) "," } ); "," node. tagName = 'div' ; "," node. removeChild( node. firstChild()); "," break ; "," case 'a' : "," if ( val = node. getAttr( 'href' )) { "," node. setAttr( '_href' , val) "," } "," break ; "," case 'img' : "," //todo base64暂时去掉,后边做远程图片上传后,干掉这个 "," if ( val = node. getAttr( 'src' )) { "," if ( /^data:/ . test( val)) { "," node. parentNode. removeChild( node); "," break ; "," } "," } "," node. setAttr( '_src' , node. getAttr( 'src' )); "," break ; "," case 'span' : "," if ( browser. webkit && ( val = node. getStyle( 'white-space' ))) { "," if ( /nowrap|normal/ . test( val)) { "," node. setStyle( 'white-space' , '' ); "," if ( me. options. autoClearEmptyNode && utils. isEmptyObject( node. attrs)) { "," node. parentNode. removeChild( node, true ) "," } "," } "," } "," break ; "," case 'p' : "," if ( val = node. getAttr( 'align' )) { "," node. setAttr( 'align' ); "," node. setStyle( 'text-align' , val) "," } "," //trace:3431 ","// var cssStyle = node.getAttr('style'); ","// if (cssStyle) { ","// cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, ''); ","// node.setAttr('style', cssStyle) ","// ","// } "," if (! node. firstChild()) { "," node. innerHTML( browser. ie ? ' ' : '<br/>' ) "," } "," break ; "," case 'div' : "," if ( node. getAttr( 'cdata_tag' )) { "," break ; "," } "," //针对代码这里不处理插入代码的div "," val = node. getAttr( 'class' ); "," if ( val && /^line number\\d+/ . test( val)) { "," break ; "," } "," if (! allowDivTransToP) { "," break ; "," } "," var tmpNode, p = UE. uNode. createElement( 'p' ); "," while ( tmpNode = node. firstChild()) { "," if ( tmpNode. type == 'text' || ! UE. dom. dtd. $block[ tmpNode. tagName]) { "," p. appendChild( tmpNode); "," } else { "," if ( p. firstChild()) { "," node. parentNode. insertBefore( p, node); "," p = UE. uNode. createElement( 'p' ); "," } else { "," node. parentNode. insertBefore( tmpNode, node); "," } "," } "," } "," if ( p. firstChild()) { "," node. parentNode. insertBefore( p, node); "," } "," node. parentNode. removeChild( node); "," break ; "," case 'dl' : "," node. tagName = 'ul' ; "," break ; "," case 'dt' : "," case 'dd' : "," node. tagName = 'li' ; "," break ; "," case 'li' : "," var className = node. getAttr( 'class' ); "," if (! className || ! /list\\-/ . test( className)) { "," node. setAttr() "," } "," var tmpNodes = node. getNodesByTagName( 'ol ul' ); "," UE. utils. each( tmpNodes, function ( n) { "," node. parentNode. insertAfter( n, node); "," } ); "," break ; "," case 'td' : "," case 'th' : "," case 'caption' : "," if (! node. children || ! node. children. length) { ",""," node. appendChild( browser. ie ? UE. uNode. createText( ' ' ) : UE. uNode. createElement( 'br' )) "," } "," } ",""," } "," if ( node. type == 'comment' ) { "," node. parentNode. removeChild( node); "," } "," } ) ",""," } ); ",""," //从编辑器出去的内容处理 "," me. addOutputRule( function ( root) { ",""," var val; "," root. traversal( function ( node) { "," if ( node. type == 'element' ) { ",""," if ( me. options. autoClearEmptyNode && dtd. $inline[ node. tagName] && ! dtd. $empty[ node. tagName] && (! node. attrs || utils. isEmptyObject( node. attrs))) { ",""," if (! node. firstChild()) node. parentNode. removeChild( node); "," else if ( node. tagName == 'span' && (! node. attrs || utils. isEmptyObject( node. attrs))) { "," node. parentNode. removeChild( node, true ) "," } "," return ; "," } "," switch ( node. tagName) { "," case 'div' : "," if ( val = node. getAttr( 'cdata_tag' )) { "," node. tagName = val; "," node. appendChild( UE. uNode. createText( node. getAttr( 'cdata_data' ))); "," node. setAttr( { cdata_tag: '' , cdata_data: '' } ); "," } "," break ; "," case 'a' : "," if ( val = node. getAttr( '_href' )) { "," node. setAttr( { "," 'href' : val, "," '_href' : '' "," } ) "," } "," break ; "," case 'img' : "," if ( val = node. getAttr( '_src' )) { "," node. setAttr( { "," 'src' : node. getAttr( '_src' ), "," '_src' : '' "," } ) "," } ","",""," } "," } ",""," } ) ","",""," } ); ","} ; "];
+_$jscoverage['plugins/defaultfilter.js'][4]++;
+UE.plugins.defaultfilter = (function () {
+ _$jscoverage['plugins/defaultfilter.js'][5]++;
+ var me = this;
+ _$jscoverage['plugins/defaultfilter.js'][6]++;
+ me.setOpt("allowDivTransToP", true);
+ _$jscoverage['plugins/defaultfilter.js'][9]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/defaultfilter.js'][10]++;
+ var allowDivTransToP = this.options.allowDivTransToP;
+ _$jscoverage['plugins/defaultfilter.js'][11]++;
+ var val;
+ _$jscoverage['plugins/defaultfilter.js'][13]++;
+ root.traversal((function (node) {
+ _$jscoverage['plugins/defaultfilter.js'][14]++;
+ if ((node.type == "element")) {
+ _$jscoverage['plugins/defaultfilter.js'][15]++;
+ if (((! dtd.$cdata[node.tagName]) && me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && (! dtd.$empty[node.tagName]) && ((! node.attrs) || utils.isEmptyObject(node.attrs)))) {
+ _$jscoverage['plugins/defaultfilter.js'][16]++;
+ if ((! node.firstChild())) {
+ _$jscoverage['plugins/defaultfilter.js'][16]++;
+ node.parentNode.removeChild(node);
+ }
+ else {
+ _$jscoverage['plugins/defaultfilter.js'][17]++;
+ if (((node.tagName == "span") && ((! node.attrs) || utils.isEmptyObject(node.attrs)))) {
+ _$jscoverage['plugins/defaultfilter.js'][18]++;
+ node.parentNode.removeChild(node, true);
+ }
+ }
+ _$jscoverage['plugins/defaultfilter.js'][20]++;
+ return;
+ }
+ _$jscoverage['plugins/defaultfilter.js'][22]++;
+ switch (node.tagName) {
+ case "style":
+ case "script":
+ _$jscoverage['plugins/defaultfilter.js'][25]++;
+ node.setAttr({cdata_tag: node.tagName, cdata_data: encodeURIComponent((node.innerText() || ""))});
+ _$jscoverage['plugins/defaultfilter.js'][29]++;
+ node.tagName = "div";
+ _$jscoverage['plugins/defaultfilter.js'][30]++;
+ node.removeChild(node.firstChild());
+ _$jscoverage['plugins/defaultfilter.js'][31]++;
+ break;
+ case "a":
+ _$jscoverage['plugins/defaultfilter.js'][33]++;
+ if ((val = node.getAttr("href"))) {
+ _$jscoverage['plugins/defaultfilter.js'][34]++;
+ node.setAttr("_href", val);
+ }
+ _$jscoverage['plugins/defaultfilter.js'][36]++;
+ break;
+ case "img":
+ _$jscoverage['plugins/defaultfilter.js'][39]++;
+ if ((val = node.getAttr("src"))) {
+ _$jscoverage['plugins/defaultfilter.js'][40]++;
+ if (/^data:/.test(val)) {
+ _$jscoverage['plugins/defaultfilter.js'][41]++;
+ node.parentNode.removeChild(node);
+ _$jscoverage['plugins/defaultfilter.js'][42]++;
+ break;
+ }
+ }
+ _$jscoverage['plugins/defaultfilter.js'][45]++;
+ node.setAttr("_src", node.getAttr("src"));
+ _$jscoverage['plugins/defaultfilter.js'][46]++;
+ break;
+ case "span":
+ _$jscoverage['plugins/defaultfilter.js'][48]++;
+ if ((browser.webkit && (val = node.getStyle("white-space")))) {
+ _$jscoverage['plugins/defaultfilter.js'][49]++;
+ if (/nowrap|normal/.test(val)) {
+ _$jscoverage['plugins/defaultfilter.js'][50]++;
+ node.setStyle("white-space", "");
+ _$jscoverage['plugins/defaultfilter.js'][51]++;
+ if ((me.options.autoClearEmptyNode && utils.isEmptyObject(node.attrs))) {
+ _$jscoverage['plugins/defaultfilter.js'][52]++;
+ node.parentNode.removeChild(node, true);
+ }
+ }
+ }
+ _$jscoverage['plugins/defaultfilter.js'][56]++;
+ break;
+ case "p":
+ _$jscoverage['plugins/defaultfilter.js'][58]++;
+ if ((val = node.getAttr("align"))) {
+ _$jscoverage['plugins/defaultfilter.js'][59]++;
+ node.setAttr("align");
+ _$jscoverage['plugins/defaultfilter.js'][60]++;
+ node.setStyle("text-align", val);
+ }
+ _$jscoverage['plugins/defaultfilter.js'][69]++;
+ if ((! node.firstChild())) {
+ _$jscoverage['plugins/defaultfilter.js'][70]++;
+ node.innerHTML((browser.ie? " ": " "));
+ }
+ _$jscoverage['plugins/defaultfilter.js'][72]++;
+ break;
+ case "div":
+ _$jscoverage['plugins/defaultfilter.js'][74]++;
+ if (node.getAttr("cdata_tag")) {
+ _$jscoverage['plugins/defaultfilter.js'][75]++;
+ break;
+ }
+ _$jscoverage['plugins/defaultfilter.js'][78]++;
+ val = node.getAttr("class");
+ _$jscoverage['plugins/defaultfilter.js'][79]++;
+ if ((val && /^line number\d+/.test(val))) {
+ _$jscoverage['plugins/defaultfilter.js'][80]++;
+ break;
+ }
+ _$jscoverage['plugins/defaultfilter.js'][82]++;
+ if ((! allowDivTransToP)) {
+ _$jscoverage['plugins/defaultfilter.js'][83]++;
+ break;
+ }
+ _$jscoverage['plugins/defaultfilter.js'][85]++;
+ var tmpNode, p = UE.uNode.createElement("p");
+ _$jscoverage['plugins/defaultfilter.js'][86]++;
+ while ((tmpNode = node.firstChild())) {
+ _$jscoverage['plugins/defaultfilter.js'][87]++;
+ if (((tmpNode.type == "text") || (! UE.dom.dtd.$block[tmpNode.tagName]))) {
+ _$jscoverage['plugins/defaultfilter.js'][88]++;
+ p.appendChild(tmpNode);
+ }
+ else {
+ _$jscoverage['plugins/defaultfilter.js'][90]++;
+ if (p.firstChild()) {
+ _$jscoverage['plugins/defaultfilter.js'][91]++;
+ node.parentNode.insertBefore(p, node);
+ _$jscoverage['plugins/defaultfilter.js'][92]++;
+ p = UE.uNode.createElement("p");
+ }
+ else {
+ _$jscoverage['plugins/defaultfilter.js'][94]++;
+ node.parentNode.insertBefore(tmpNode, node);
+ }
+ }
+}
+ _$jscoverage['plugins/defaultfilter.js'][98]++;
+ if (p.firstChild()) {
+ _$jscoverage['plugins/defaultfilter.js'][99]++;
+ node.parentNode.insertBefore(p, node);
+ }
+ _$jscoverage['plugins/defaultfilter.js'][101]++;
+ node.parentNode.removeChild(node);
+ _$jscoverage['plugins/defaultfilter.js'][102]++;
+ break;
+ case "dl":
+ _$jscoverage['plugins/defaultfilter.js'][104]++;
+ node.tagName = "ul";
+ _$jscoverage['plugins/defaultfilter.js'][105]++;
+ break;
+ case "dt":
+ case "dd":
+ _$jscoverage['plugins/defaultfilter.js'][108]++;
+ node.tagName = "li";
+ _$jscoverage['plugins/defaultfilter.js'][109]++;
+ break;
+ case "li":
+ _$jscoverage['plugins/defaultfilter.js'][111]++;
+ var className = node.getAttr("class");
+ _$jscoverage['plugins/defaultfilter.js'][112]++;
+ if (((! className) || (! /list\-/.test(className)))) {
+ _$jscoverage['plugins/defaultfilter.js'][113]++;
+ node.setAttr();
+ }
+ _$jscoverage['plugins/defaultfilter.js'][115]++;
+ var tmpNodes = node.getNodesByTagName("ol ul");
+ _$jscoverage['plugins/defaultfilter.js'][116]++;
+ UE.utils.each(tmpNodes, (function (n) {
+ _$jscoverage['plugins/defaultfilter.js'][117]++;
+ node.parentNode.insertAfter(n, node);
+}));
+ _$jscoverage['plugins/defaultfilter.js'][119]++;
+ break;
+ case "td":
+ case "th":
+ case "caption":
+ _$jscoverage['plugins/defaultfilter.js'][123]++;
+ if (((! node.children) || (! node.children.length))) {
+ _$jscoverage['plugins/defaultfilter.js'][125]++;
+ node.appendChild((browser.ie? UE.uNode.createText(" "): UE.uNode.createElement("br")));
+ }
+ }
+ }
+ _$jscoverage['plugins/defaultfilter.js'][130]++;
+ if ((node.type == "comment")) {
+ _$jscoverage['plugins/defaultfilter.js'][131]++;
+ node.parentNode.removeChild(node);
+ }
+}));
+}));
+ _$jscoverage['plugins/defaultfilter.js'][138]++;
+ me.addOutputRule((function (root) {
+ _$jscoverage['plugins/defaultfilter.js'][140]++;
+ var val;
+ _$jscoverage['plugins/defaultfilter.js'][141]++;
+ root.traversal((function (node) {
+ _$jscoverage['plugins/defaultfilter.js'][142]++;
+ if ((node.type == "element")) {
+ _$jscoverage['plugins/defaultfilter.js'][144]++;
+ if ((me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && (! dtd.$empty[node.tagName]) && ((! node.attrs) || utils.isEmptyObject(node.attrs)))) {
+ _$jscoverage['plugins/defaultfilter.js'][146]++;
+ if ((! node.firstChild())) {
+ _$jscoverage['plugins/defaultfilter.js'][146]++;
+ node.parentNode.removeChild(node);
+ }
+ else {
+ _$jscoverage['plugins/defaultfilter.js'][147]++;
+ if (((node.tagName == "span") && ((! node.attrs) || utils.isEmptyObject(node.attrs)))) {
+ _$jscoverage['plugins/defaultfilter.js'][148]++;
+ node.parentNode.removeChild(node, true);
+ }
+ }
+ _$jscoverage['plugins/defaultfilter.js'][150]++;
+ return;
+ }
+ _$jscoverage['plugins/defaultfilter.js'][152]++;
+ switch (node.tagName) {
+ case "div":
+ _$jscoverage['plugins/defaultfilter.js'][154]++;
+ if ((val = node.getAttr("cdata_tag"))) {
+ _$jscoverage['plugins/defaultfilter.js'][155]++;
+ node.tagName = val;
+ _$jscoverage['plugins/defaultfilter.js'][156]++;
+ node.appendChild(UE.uNode.createText(node.getAttr("cdata_data")));
+ _$jscoverage['plugins/defaultfilter.js'][157]++;
+ node.setAttr({cdata_tag: "", cdata_data: ""});
+ }
+ _$jscoverage['plugins/defaultfilter.js'][159]++;
+ break;
+ case "a":
+ _$jscoverage['plugins/defaultfilter.js'][161]++;
+ if ((val = node.getAttr("_href"))) {
+ _$jscoverage['plugins/defaultfilter.js'][162]++;
+ node.setAttr({"href": val, "_href": ""});
+ }
+ _$jscoverage['plugins/defaultfilter.js'][167]++;
+ break;
+ case "img":
+ _$jscoverage['plugins/defaultfilter.js'][169]++;
+ if ((val = node.getAttr("_src"))) {
+ _$jscoverage['plugins/defaultfilter.js'][170]++;
+ node.setAttr({"src": node.getAttr("_src"), "_src": ""});
+ }
+ }
+ }
+}));
+}));
+});
diff --git a/_test/coverage/plugins/directionality.js b/_test/coverage/plugins/directionality.js
new file mode 100644
index 000000000..8accd52cb
--- /dev/null
+++ b/_test/coverage/plugins/directionality.js
@@ -0,0 +1,199 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/directionality.js']) {
+ _$jscoverage['plugins/directionality.js'] = [];
+ _$jscoverage['plugins/directionality.js'][7] = 0;
+ _$jscoverage['plugins/directionality.js'][8] = 0;
+ _$jscoverage['plugins/directionality.js'][21] = 0;
+ _$jscoverage['plugins/directionality.js'][26] = 0;
+ _$jscoverage['plugins/directionality.js'][28] = 0;
+ _$jscoverage['plugins/directionality.js'][33] = 0;
+ _$jscoverage['plugins/directionality.js'][34] = 0;
+ _$jscoverage['plugins/directionality.js'][35] = 0;
+ _$jscoverage['plugins/directionality.js'][37] = 0;
+ _$jscoverage['plugins/directionality.js'][38] = 0;
+ _$jscoverage['plugins/directionality.js'][39] = 0;
+ _$jscoverage['plugins/directionality.js'][43] = 0;
+ _$jscoverage['plugins/directionality.js'][44] = 0;
+ _$jscoverage['plugins/directionality.js'][45] = 0;
+ _$jscoverage['plugins/directionality.js'][46] = 0;
+ _$jscoverage['plugins/directionality.js'][47] = 0;
+ _$jscoverage['plugins/directionality.js'][48] = 0;
+ _$jscoverage['plugins/directionality.js'][49] = 0;
+ _$jscoverage['plugins/directionality.js'][52] = 0;
+ _$jscoverage['plugins/directionality.js'][53] = 0;
+ _$jscoverage['plugins/directionality.js'][54] = 0;
+ _$jscoverage['plugins/directionality.js'][56] = 0;
+ _$jscoverage['plugins/directionality.js'][57] = 0;
+ _$jscoverage['plugins/directionality.js'][60] = 0;
+ _$jscoverage['plugins/directionality.js'][61] = 0;
+ _$jscoverage['plugins/directionality.js'][62] = 0;
+ _$jscoverage['plugins/directionality.js'][63] = 0;
+ _$jscoverage['plugins/directionality.js'][64] = 0;
+ _$jscoverage['plugins/directionality.js'][65] = 0;
+ _$jscoverage['plugins/directionality.js'][68] = 0;
+ _$jscoverage['plugins/directionality.js'][70] = 0;
+ _$jscoverage['plugins/directionality.js'][73] = 0;
+ _$jscoverage['plugins/directionality.js'][99] = 0;
+ _$jscoverage['plugins/directionality.js'][101] = 0;
+ _$jscoverage['plugins/directionality.js'][103] = 0;
+ _$jscoverage['plugins/directionality.js'][104] = 0;
+ _$jscoverage['plugins/directionality.js'][105] = 0;
+ _$jscoverage['plugins/directionality.js'][107] = 0;
+ _$jscoverage['plugins/directionality.js'][108] = 0;
+ _$jscoverage['plugins/directionality.js'][109] = 0;
+ _$jscoverage['plugins/directionality.js'][110] = 0;
+ _$jscoverage['plugins/directionality.js'][113] = 0;
+ _$jscoverage['plugins/directionality.js'][114] = 0;
+ _$jscoverage['plugins/directionality.js'][117] = 0;
+ _$jscoverage['plugins/directionality.js'][118] = 0;
+}
+_$jscoverage['plugins/directionality.js'].source = ["/** "," * 设置文字输入的方向的插件 "," * @file "," * @since 1.2.6.1 "," */ ","","( function () { "," var block = domUtils. isBlockElm , "," getObj = function ( editor) { ","// var startNode = editor.selection.getStart(), ","// parents; ","// if ( startNode ) { ","// //查找所有的是block的父亲节点 ","// parents = domUtils.findParents( startNode, true, block, true ); ","// for ( var i = 0,ci; ci = parents[i++]; ) { ","// if ( ci.getAttribute( 'dir' ) ) { ","// return ci; ","// } ","// } ","// } "," return domUtils. filterNodeList( editor. selection. getStartElementPath(), function ( n) { return n. getAttribute( 'dir' ) } ); ",""," } , "," doDirectionality = function ( range, editor, forward) { "," "," var bookmark, "," filterFn = function ( node ) { "," return node. nodeType == 1 ? ! domUtils. isBookmarkNode( node) : ! domUtils. isWhitespace( node); "," } , ",""," obj = getObj( editor ); ",""," if ( obj && range. collapsed ) { "," obj. setAttribute( 'dir' , forward ); "," return range; "," } "," bookmark = range. createBookmark(); "," range. enlarge( true ); "," var bookmark2 = range. createBookmark(), "," current = domUtils. getNextDomNode( bookmark2. start, false , filterFn ), "," tmpRange = range. cloneRange(), "," tmpNode; "," while ( current && !( domUtils. getPosition( current, bookmark2. end ) & domUtils. POSITION_FOLLOWING) ) { "," if ( current. nodeType == 3 || ! block( current ) ) { "," tmpRange. setStartBefore( current ); "," while ( current && current !== bookmark2. end && ! block( current ) ) { "," tmpNode = current; "," current = domUtils. getNextDomNode( current, false , null , function ( node ) { "," return ! block( node ); "," } ); "," } "," tmpRange. setEndAfter( tmpNode ); "," var common = tmpRange. getCommonAncestor(); "," if ( ! domUtils. isBody( common ) && block( common ) ) { "," //遍历到了block节点 "," common. setAttribute( 'dir' , forward ); "," current = common; "," } else { "," //没有遍历到,添加一个block节点 "," var p = range. document. createElement( 'p' ); "," p. setAttribute( 'dir' , forward ); "," var frag = tmpRange. extractContents(); "," p. appendChild( frag ); "," tmpRange. insertNode( p ); "," current = p; "," } ",""," current = domUtils. getNextDomNode( current, false , filterFn ); "," } else { "," current = domUtils. getNextDomNode( current, true , filterFn ); "," } "," } "," return range. moveToBookmark( bookmark2 ). moveToBookmark( bookmark ); "," } ; ",""," /** "," * 设置文字的方向,可设置从左向右输入,或者从右向左输入,操作对当前段作用 "," * @command directionality "," * @method execCommand "," * @param { String } cmdName 命令字符串 "," * @param { String } forward 传入'ltr'表示从左向右输入,传入'rtl'表示从右向左输入 "," * @example "," * ```javascript "," * editor.execCommand( 'directionality', 'ltr'); "," * ``` "," */ ",""," /** "," * 查询当前段落的文字输入方向 "," * @command directionality "," * @method queryCommandValue "," * @param { String } cmdName 命令字符串 "," * @return { String } 返回'ltr'表示从左向右输入,返回'rtl'表示从右向左输入 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'directionality'); "," * ``` "," */ "," UE. commands[ 'directionality' ] = { "," execCommand : function ( cmdName, forward ) { "," var range = this . selection. getRange(); "," //闭合时单独处理 "," if ( range. collapsed) { "," var txt = this . document. createTextNode( 'd' ); "," range. insertNode( txt); "," } "," doDirectionality( range, this , forward); "," if ( txt) { "," range. setStartBefore( txt). collapse( true ); "," domUtils. remove( txt); "," } ",""," range. select(); "," return true ; "," } , "," queryCommandValue : function () { "," var node = getObj( this ); "," return node ? node. getAttribute( 'dir' ) : 'ltr' ; "," } "," } ; ","} )(); ",""];
+_$jscoverage['plugins/directionality.js'][7]++;
+(function () {
+ _$jscoverage['plugins/directionality.js'][8]++;
+ var block = domUtils.isBlockElm, getObj = (function (editor) {
+ _$jscoverage['plugins/directionality.js'][21]++;
+ return domUtils.filterNodeList(editor.selection.getStartElementPath(), (function (n) {
+ _$jscoverage['plugins/directionality.js'][21]++;
+ return n.getAttribute("dir");
+}));
+}), doDirectionality = (function (range, editor, forward) {
+ _$jscoverage['plugins/directionality.js'][26]++;
+ var bookmark, filterFn = (function (node) {
+ _$jscoverage['plugins/directionality.js'][28]++;
+ return ((node.nodeType == 1)? (! domUtils.isBookmarkNode(node)): (! domUtils.isWhitespace(node)));
+}), obj = getObj(editor);
+ _$jscoverage['plugins/directionality.js'][33]++;
+ if ((obj && range.collapsed)) {
+ _$jscoverage['plugins/directionality.js'][34]++;
+ obj.setAttribute("dir", forward);
+ _$jscoverage['plugins/directionality.js'][35]++;
+ return range;
+ }
+ _$jscoverage['plugins/directionality.js'][37]++;
+ bookmark = range.createBookmark();
+ _$jscoverage['plugins/directionality.js'][38]++;
+ range.enlarge(true);
+ _$jscoverage['plugins/directionality.js'][39]++;
+ var bookmark2 = range.createBookmark(), current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), tmpRange = range.cloneRange(), tmpNode;
+ _$jscoverage['plugins/directionality.js'][43]++;
+ while ((current && (! (domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)))) {
+ _$jscoverage['plugins/directionality.js'][44]++;
+ if (((current.nodeType == 3) || (! block(current)))) {
+ _$jscoverage['plugins/directionality.js'][45]++;
+ tmpRange.setStartBefore(current);
+ _$jscoverage['plugins/directionality.js'][46]++;
+ while ((current && (current !== bookmark2.end) && (! block(current)))) {
+ _$jscoverage['plugins/directionality.js'][47]++;
+ tmpNode = current;
+ _$jscoverage['plugins/directionality.js'][48]++;
+ current = domUtils.getNextDomNode(current, false, null, (function (node) {
+ _$jscoverage['plugins/directionality.js'][49]++;
+ return (! block(node));
+}));
+}
+ _$jscoverage['plugins/directionality.js'][52]++;
+ tmpRange.setEndAfter(tmpNode);
+ _$jscoverage['plugins/directionality.js'][53]++;
+ var common = tmpRange.getCommonAncestor();
+ _$jscoverage['plugins/directionality.js'][54]++;
+ if (((! domUtils.isBody(common)) && block(common))) {
+ _$jscoverage['plugins/directionality.js'][56]++;
+ common.setAttribute("dir", forward);
+ _$jscoverage['plugins/directionality.js'][57]++;
+ current = common;
+ }
+ else {
+ _$jscoverage['plugins/directionality.js'][60]++;
+ var p = range.document.createElement("p");
+ _$jscoverage['plugins/directionality.js'][61]++;
+ p.setAttribute("dir", forward);
+ _$jscoverage['plugins/directionality.js'][62]++;
+ var frag = tmpRange.extractContents();
+ _$jscoverage['plugins/directionality.js'][63]++;
+ p.appendChild(frag);
+ _$jscoverage['plugins/directionality.js'][64]++;
+ tmpRange.insertNode(p);
+ _$jscoverage['plugins/directionality.js'][65]++;
+ current = p;
+ }
+ _$jscoverage['plugins/directionality.js'][68]++;
+ current = domUtils.getNextDomNode(current, false, filterFn);
+ }
+ else {
+ _$jscoverage['plugins/directionality.js'][70]++;
+ current = domUtils.getNextDomNode(current, true, filterFn);
+ }
+}
+ _$jscoverage['plugins/directionality.js'][73]++;
+ return range.moveToBookmark(bookmark2).moveToBookmark(bookmark);
+});
+ _$jscoverage['plugins/directionality.js'][99]++;
+ UE.commands.directionality = {execCommand: (function (cmdName, forward) {
+ _$jscoverage['plugins/directionality.js'][101]++;
+ var range = this.selection.getRange();
+ _$jscoverage['plugins/directionality.js'][103]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/directionality.js'][104]++;
+ var txt = this.document.createTextNode("d");
+ _$jscoverage['plugins/directionality.js'][105]++;
+ range.insertNode(txt);
+ }
+ _$jscoverage['plugins/directionality.js'][107]++;
+ doDirectionality(range, this, forward);
+ _$jscoverage['plugins/directionality.js'][108]++;
+ if (txt) {
+ _$jscoverage['plugins/directionality.js'][109]++;
+ range.setStartBefore(txt).collapse(true);
+ _$jscoverage['plugins/directionality.js'][110]++;
+ domUtils.remove(txt);
+ }
+ _$jscoverage['plugins/directionality.js'][113]++;
+ range.select();
+ _$jscoverage['plugins/directionality.js'][114]++;
+ return true;
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/directionality.js'][117]++;
+ var node = getObj(this);
+ _$jscoverage['plugins/directionality.js'][118]++;
+ return (node? node.getAttribute("dir"): "ltr");
+})};
+})();
diff --git a/_test/coverage/plugins/dragdrop.js b/_test/coverage/plugins/dragdrop.js
new file mode 100644
index 000000000..12afaabad
--- /dev/null
+++ b/_test/coverage/plugins/dragdrop.js
@@ -0,0 +1,158 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/dragdrop.js']) {
+ _$jscoverage['plugins/dragdrop.js'] = [];
+ _$jscoverage['plugins/dragdrop.js'][1] = 0;
+ _$jscoverage['plugins/dragdrop.js'][3] = 0;
+ _$jscoverage['plugins/dragdrop.js'][4] = 0;
+ _$jscoverage['plugins/dragdrop.js'][5] = 0;
+ _$jscoverage['plugins/dragdrop.js'][6] = 0;
+ _$jscoverage['plugins/dragdrop.js'][7] = 0;
+ _$jscoverage['plugins/dragdrop.js'][9] = 0;
+ _$jscoverage['plugins/dragdrop.js'][11] = 0;
+ _$jscoverage['plugins/dragdrop.js'][12] = 0;
+ _$jscoverage['plugins/dragdrop.js'][13] = 0;
+ _$jscoverage['plugins/dragdrop.js'][14] = 0;
+ _$jscoverage['plugins/dragdrop.js'][16] = 0;
+ _$jscoverage['plugins/dragdrop.js'][21] = 0;
+ _$jscoverage['plugins/dragdrop.js'][22] = 0;
+ _$jscoverage['plugins/dragdrop.js'][23] = 0;
+ _$jscoverage['plugins/dragdrop.js'][24] = 0;
+ _$jscoverage['plugins/dragdrop.js'][25] = 0;
+ _$jscoverage['plugins/dragdrop.js'][26] = 0;
+ _$jscoverage['plugins/dragdrop.js'][27] = 0;
+ _$jscoverage['plugins/dragdrop.js'][30] = 0;
+ _$jscoverage['plugins/dragdrop.js'][31] = 0;
+ _$jscoverage['plugins/dragdrop.js'][33] = 0;
+ _$jscoverage['plugins/dragdrop.js'][34] = 0;
+ _$jscoverage['plugins/dragdrop.js'][36] = 0;
+ _$jscoverage['plugins/dragdrop.js'][37] = 0;
+ _$jscoverage['plugins/dragdrop.js'][45] = 0;
+ _$jscoverage['plugins/dragdrop.js'][46] = 0;
+ _$jscoverage['plugins/dragdrop.js'][47] = 0;
+ _$jscoverage['plugins/dragdrop.js'][48] = 0;
+ _$jscoverage['plugins/dragdrop.js'][49] = 0;
+ _$jscoverage['plugins/dragdrop.js'][50] = 0;
+ _$jscoverage['plugins/dragdrop.js'][51] = 0;
+}
+_$jscoverage['plugins/dragdrop.js'].source = ["UE. plugins[ 'dragdrop' ] = function () { ",""," var me = this ; "," me. ready( function () { "," domUtils. on( this . body, 'dragend' , function () { "," var rng = me. selection. getRange(); "," var node = rng. getClosedNode()|| me. selection. getStart(); ",""," if ( node && node. tagName == 'IMG' ) { ",""," var pre = node. previousSibling, next; "," while ( next = node. nextSibling) { "," if ( next. nodeType == 1 && next. tagName == 'SPAN' && ! next. firstChild) { "," domUtils. remove( next) "," } else { "," break ; "," } "," } ","",""," if (( pre && pre. nodeType == 1 && ! domUtils. isEmptyBlock( pre) || ! pre) && (! next || next && ! domUtils. isEmptyBlock( next))) { "," if ( pre && pre. tagName == 'P' && ! domUtils. isEmptyBlock( pre)) { "," pre. appendChild( node); "," domUtils. moveChild( next, pre); "," domUtils. remove( next); "," } else if ( next && next. tagName == 'P' && ! domUtils. isEmptyBlock( next)) { "," next. insertBefore( node, next. firstChild); "," } ",""," if ( pre && pre. tagName == 'P' && domUtils. isEmptyBlock( pre)) { "," domUtils. remove( pre) "," } "," if ( next && next. tagName == 'P' && domUtils. isEmptyBlock( next)) { "," domUtils. remove( next) "," } "," rng. selectNode( node). select(); "," me. fireEvent( 'saveScene' ); ",""," } ",""," } ",""," } ) "," } ); "," me. addListener( 'keyup' , function ( type, evt) { "," var keyCode = evt. keyCode || evt. which; "," if ( keyCode == 13 ) { "," var rng = me. selection. getRange(), node; "," if ( node = domUtils. findParentByTagName( rng. startContainer, 'p' , true )) { "," if ( domUtils. getComputedStyle( node, 'text-align' ) == 'center' ) { "," domUtils. removeStyle( node, 'text-align' ) "," } "," } "," } "," } ) ","} ; "];
+_$jscoverage['plugins/dragdrop.js'][1]++;
+UE.plugins.dragdrop = (function () {
+ _$jscoverage['plugins/dragdrop.js'][3]++;
+ var me = this;
+ _$jscoverage['plugins/dragdrop.js'][4]++;
+ me.ready((function () {
+ _$jscoverage['plugins/dragdrop.js'][5]++;
+ domUtils.on(this.body, "dragend", (function () {
+ _$jscoverage['plugins/dragdrop.js'][6]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/dragdrop.js'][7]++;
+ var node = (rng.getClosedNode() || me.selection.getStart());
+ _$jscoverage['plugins/dragdrop.js'][9]++;
+ if ((node && (node.tagName == "IMG"))) {
+ _$jscoverage['plugins/dragdrop.js'][11]++;
+ var pre = node.previousSibling, next;
+ _$jscoverage['plugins/dragdrop.js'][12]++;
+ while ((next = node.nextSibling)) {
+ _$jscoverage['plugins/dragdrop.js'][13]++;
+ if (((next.nodeType == 1) && (next.tagName == "SPAN") && (! next.firstChild))) {
+ _$jscoverage['plugins/dragdrop.js'][14]++;
+ domUtils.remove(next);
+ }
+ else {
+ _$jscoverage['plugins/dragdrop.js'][16]++;
+ break;
+ }
+}
+ _$jscoverage['plugins/dragdrop.js'][21]++;
+ if ((((pre && (pre.nodeType == 1) && (! domUtils.isEmptyBlock(pre))) || (! pre)) && ((! next) || (next && (! domUtils.isEmptyBlock(next)))))) {
+ _$jscoverage['plugins/dragdrop.js'][22]++;
+ if ((pre && (pre.tagName == "P") && (! domUtils.isEmptyBlock(pre)))) {
+ _$jscoverage['plugins/dragdrop.js'][23]++;
+ pre.appendChild(node);
+ _$jscoverage['plugins/dragdrop.js'][24]++;
+ domUtils.moveChild(next, pre);
+ _$jscoverage['plugins/dragdrop.js'][25]++;
+ domUtils.remove(next);
+ }
+ else {
+ _$jscoverage['plugins/dragdrop.js'][26]++;
+ if ((next && (next.tagName == "P") && (! domUtils.isEmptyBlock(next)))) {
+ _$jscoverage['plugins/dragdrop.js'][27]++;
+ next.insertBefore(node, next.firstChild);
+ }
+ }
+ _$jscoverage['plugins/dragdrop.js'][30]++;
+ if ((pre && (pre.tagName == "P") && domUtils.isEmptyBlock(pre))) {
+ _$jscoverage['plugins/dragdrop.js'][31]++;
+ domUtils.remove(pre);
+ }
+ _$jscoverage['plugins/dragdrop.js'][33]++;
+ if ((next && (next.tagName == "P") && domUtils.isEmptyBlock(next))) {
+ _$jscoverage['plugins/dragdrop.js'][34]++;
+ domUtils.remove(next);
+ }
+ _$jscoverage['plugins/dragdrop.js'][36]++;
+ rng.selectNode(node).select();
+ _$jscoverage['plugins/dragdrop.js'][37]++;
+ me.fireEvent("saveScene");
+ }
+ }
+}));
+}));
+ _$jscoverage['plugins/dragdrop.js'][45]++;
+ me.addListener("keyup", (function (type, evt) {
+ _$jscoverage['plugins/dragdrop.js'][46]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/dragdrop.js'][47]++;
+ if ((keyCode == 13)) {
+ _$jscoverage['plugins/dragdrop.js'][48]++;
+ var rng = me.selection.getRange(), node;
+ _$jscoverage['plugins/dragdrop.js'][49]++;
+ if ((node = domUtils.findParentByTagName(rng.startContainer, "p", true))) {
+ _$jscoverage['plugins/dragdrop.js'][50]++;
+ if ((domUtils.getComputedStyle(node, "text-align") == "center")) {
+ _$jscoverage['plugins/dragdrop.js'][51]++;
+ domUtils.removeStyle(node, "text-align");
+ }
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/elementpath.js b/_test/coverage/plugins/elementpath.js
new file mode 100644
index 000000000..4491ea35a
--- /dev/null
+++ b/_test/coverage/plugins/elementpath.js
@@ -0,0 +1,120 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/elementpath.js']) {
+ _$jscoverage['plugins/elementpath.js'] = [];
+ _$jscoverage['plugins/elementpath.js'][6] = 0;
+ _$jscoverage['plugins/elementpath.js'][7] = 0;
+ _$jscoverage['plugins/elementpath.js'][10] = 0;
+ _$jscoverage['plugins/elementpath.js'][11] = 0;
+ _$jscoverage['plugins/elementpath.js'][12] = 0;
+ _$jscoverage['plugins/elementpath.js'][14] = 0;
+ _$jscoverage['plugins/elementpath.js'][16] = 0;
+ _$jscoverage['plugins/elementpath.js'][17] = 0;
+ _$jscoverage['plugins/elementpath.js'][19] = 0;
+ _$jscoverage['plugins/elementpath.js'][20] = 0;
+ _$jscoverage['plugins/elementpath.js'][24] = 0;
+ _$jscoverage['plugins/elementpath.js'][26] = 0;
+ _$jscoverage['plugins/elementpath.js'][27] = 0;
+ _$jscoverage['plugins/elementpath.js'][28] = 0;
+ _$jscoverage['plugins/elementpath.js'][29] = 0;
+ _$jscoverage['plugins/elementpath.js'][31] = 0;
+ _$jscoverage['plugins/elementpath.js'][32] = 0;
+ _$jscoverage['plugins/elementpath.js'][33] = 0;
+ _$jscoverage['plugins/elementpath.js'][35] = 0;
+ _$jscoverage['plugins/elementpath.js'][36] = 0;
+ _$jscoverage['plugins/elementpath.js'][37] = 0;
+ _$jscoverage['plugins/elementpath.js'][38] = 0;
+ _$jscoverage['plugins/elementpath.js'][41] = 0;
+}
+_$jscoverage['plugins/elementpath.js'].source = ["/** "," * 选取路径命令 "," * @file "," */ ","","UE. plugins[ 'elementpath' ] = function () { "," var currentLevel, "," tagNames, "," me = this ; "," me. setOpt( 'elementPathEnabled' , true ); "," if (! me. options. elementPathEnabled) { "," return ; "," } "," me. commands[ 'elementpath' ] = { "," execCommand : function ( cmdName, level ) { "," debugger ; "," var start = tagNames[ level], "," range = me. selection. getRange(); "," currentLevel = level* 1 ; "," range. selectNode( start). select(); "," } , "," queryCommandValue : function () { "," //产生一个副本,不能修改原来的startElementPath; "," var parents = []. concat( this . selection. getStartElementPath()). reverse(), "," names = []; "," tagNames = parents; "," for ( var i= 0 , ci; ci= parents[ i]; i++) { "," if ( ci. nodeType == 3 ) { "," continue ; "," } "," var name = ci. tagName. toLowerCase(); "," if ( name == 'img' && ci. getAttribute( 'anchorname' )) { "," name = 'anchor' ; "," } "," names[ i] = name; "," if ( currentLevel == i) { "," currentLevel = - 1 ; "," break ; "," } "," } "," return names; "," } "," } ; ","} ; ",""];
+_$jscoverage['plugins/elementpath.js'][6]++;
+UE.plugins.elementpath = (function () {
+ _$jscoverage['plugins/elementpath.js'][7]++;
+ var currentLevel, tagNames, me = this;
+ _$jscoverage['plugins/elementpath.js'][10]++;
+ me.setOpt("elementPathEnabled", true);
+ _$jscoverage['plugins/elementpath.js'][11]++;
+ if ((! me.options.elementPathEnabled)) {
+ _$jscoverage['plugins/elementpath.js'][12]++;
+ return;
+ }
+ _$jscoverage['plugins/elementpath.js'][14]++;
+ me.commands.elementpath = {execCommand: (function (cmdName, level) {
+ _$jscoverage['plugins/elementpath.js'][16]++;
+ debugger;
+ _$jscoverage['plugins/elementpath.js'][17]++;
+ var start = tagNames[level], range = me.selection.getRange();
+ _$jscoverage['plugins/elementpath.js'][19]++;
+ currentLevel = (level * 1);
+ _$jscoverage['plugins/elementpath.js'][20]++;
+ range.selectNode(start).select();
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/elementpath.js'][24]++;
+ var parents = [].concat(this.selection.getStartElementPath()).reverse(), names = [];
+ _$jscoverage['plugins/elementpath.js'][26]++;
+ tagNames = parents;
+ _$jscoverage['plugins/elementpath.js'][27]++;
+ for (var i = 0, ci; (ci = parents[i]); (i++)) {
+ _$jscoverage['plugins/elementpath.js'][28]++;
+ if ((ci.nodeType == 3)) {
+ _$jscoverage['plugins/elementpath.js'][29]++;
+ continue;
+ }
+ _$jscoverage['plugins/elementpath.js'][31]++;
+ var name = ci.tagName.toLowerCase();
+ _$jscoverage['plugins/elementpath.js'][32]++;
+ if (((name == "img") && ci.getAttribute("anchorname"))) {
+ _$jscoverage['plugins/elementpath.js'][33]++;
+ name = "anchor";
+ }
+ _$jscoverage['plugins/elementpath.js'][35]++;
+ names[i] = name;
+ _$jscoverage['plugins/elementpath.js'][36]++;
+ if ((currentLevel == i)) {
+ _$jscoverage['plugins/elementpath.js'][37]++;
+ currentLevel = -1;
+ _$jscoverage['plugins/elementpath.js'][38]++;
+ break;
+ }
+}
+ _$jscoverage['plugins/elementpath.js'][41]++;
+ return names;
+})};
+});
diff --git a/_test/coverage/plugins/enterkey.js b/_test/coverage/plugins/enterkey.js
new file mode 100644
index 000000000..b016991c7
--- /dev/null
+++ b/_test/coverage/plugins/enterkey.js
@@ -0,0 +1,352 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/enterkey.js']) {
+ _$jscoverage['plugins/enterkey.js'] = [];
+ _$jscoverage['plugins/enterkey.js'][10] = 0;
+ _$jscoverage['plugins/enterkey.js'][11] = 0;
+ _$jscoverage['plugins/enterkey.js'][14] = 0;
+ _$jscoverage['plugins/enterkey.js'][16] = 0;
+ _$jscoverage['plugins/enterkey.js'][17] = 0;
+ _$jscoverage['plugins/enterkey.js'][18] = 0;
+ _$jscoverage['plugins/enterkey.js'][23] = 0;
+ _$jscoverage['plugins/enterkey.js'][25] = 0;
+ _$jscoverage['plugins/enterkey.js'][26] = 0;
+ _$jscoverage['plugins/enterkey.js'][27] = 0;
+ _$jscoverage['plugins/enterkey.js'][28] = 0;
+ _$jscoverage['plugins/enterkey.js'][29] = 0;
+ _$jscoverage['plugins/enterkey.js'][30] = 0;
+ _$jscoverage['plugins/enterkey.js'][34] = 0;
+ _$jscoverage['plugins/enterkey.js'][35] = 0;
+ _$jscoverage['plugins/enterkey.js'][36] = 0;
+ _$jscoverage['plugins/enterkey.js'][37] = 0;
+ _$jscoverage['plugins/enterkey.js'][38] = 0;
+ _$jscoverage['plugins/enterkey.js'][39] = 0;
+ _$jscoverage['plugins/enterkey.js'][40] = 0;
+ _$jscoverage['plugins/enterkey.js'][41] = 0;
+ _$jscoverage['plugins/enterkey.js'][43] = 0;
+ _$jscoverage['plugins/enterkey.js'][44] = 0;
+ _$jscoverage['plugins/enterkey.js'][45] = 0;
+ _$jscoverage['plugins/enterkey.js'][46] = 0;
+ _$jscoverage['plugins/enterkey.js'][48] = 0;
+ _$jscoverage['plugins/enterkey.js'][53] = 0;
+ _$jscoverage['plugins/enterkey.js'][54] = 0;
+ _$jscoverage['plugins/enterkey.js'][58] = 0;
+ _$jscoverage['plugins/enterkey.js'][60] = 0;
+ _$jscoverage['plugins/enterkey.js'][65] = 0;
+ _$jscoverage['plugins/enterkey.js'][66] = 0;
+ _$jscoverage['plugins/enterkey.js'][67] = 0;
+ _$jscoverage['plugins/enterkey.js'][68] = 0;
+ _$jscoverage['plugins/enterkey.js'][69] = 0;
+ _$jscoverage['plugins/enterkey.js'][70] = 0;
+ _$jscoverage['plugins/enterkey.js'][72] = 0;
+ _$jscoverage['plugins/enterkey.js'][73] = 0;
+ _$jscoverage['plugins/enterkey.js'][76] = 0;
+ _$jscoverage['plugins/enterkey.js'][78] = 0;
+ _$jscoverage['plugins/enterkey.js'][80] = 0;
+ _$jscoverage['plugins/enterkey.js'][84] = 0;
+ _$jscoverage['plugins/enterkey.js'][85] = 0;
+ _$jscoverage['plugins/enterkey.js'][86] = 0;
+ _$jscoverage['plugins/enterkey.js'][89] = 0;
+ _$jscoverage['plugins/enterkey.js'][92] = 0;
+ _$jscoverage['plugins/enterkey.js'][94] = 0;
+ _$jscoverage['plugins/enterkey.js'][98] = 0;
+ _$jscoverage['plugins/enterkey.js'][100] = 0;
+ _$jscoverage['plugins/enterkey.js'][102] = 0;
+ _$jscoverage['plugins/enterkey.js'][103] = 0;
+ _$jscoverage['plugins/enterkey.js'][104] = 0;
+ _$jscoverage['plugins/enterkey.js'][105] = 0;
+ _$jscoverage['plugins/enterkey.js'][110] = 0;
+ _$jscoverage['plugins/enterkey.js'][111] = 0;
+ _$jscoverage['plugins/enterkey.js'][117] = 0;
+ _$jscoverage['plugins/enterkey.js'][119] = 0;
+ _$jscoverage['plugins/enterkey.js'][120] = 0;
+ _$jscoverage['plugins/enterkey.js'][121] = 0;
+ _$jscoverage['plugins/enterkey.js'][122] = 0;
+ _$jscoverage['plugins/enterkey.js'][123] = 0;
+ _$jscoverage['plugins/enterkey.js'][124] = 0;
+ _$jscoverage['plugins/enterkey.js'][125] = 0;
+ _$jscoverage['plugins/enterkey.js'][126] = 0;
+ _$jscoverage['plugins/enterkey.js'][127] = 0;
+ _$jscoverage['plugins/enterkey.js'][129] = 0;
+ _$jscoverage['plugins/enterkey.js'][131] = 0;
+ _$jscoverage['plugins/enterkey.js'][132] = 0;
+ _$jscoverage['plugins/enterkey.js'][133] = 0;
+ _$jscoverage['plugins/enterkey.js'][134] = 0;
+ _$jscoverage['plugins/enterkey.js'][135] = 0;
+ _$jscoverage['plugins/enterkey.js'][136] = 0;
+ _$jscoverage['plugins/enterkey.js'][138] = 0;
+ _$jscoverage['plugins/enterkey.js'][140] = 0;
+ _$jscoverage['plugins/enterkey.js'][142] = 0;
+ _$jscoverage['plugins/enterkey.js'][143] = 0;
+ _$jscoverage['plugins/enterkey.js'][144] = 0;
+ _$jscoverage['plugins/enterkey.js'][147] = 0;
+ _$jscoverage['plugins/enterkey.js'][152] = 0;
+ _$jscoverage['plugins/enterkey.js'][153] = 0;
+ _$jscoverage['plugins/enterkey.js'][158] = 0;
+ _$jscoverage['plugins/enterkey.js'][159] = 0;
+ _$jscoverage['plugins/enterkey.js'][160] = 0;
+ _$jscoverage['plugins/enterkey.js'][161] = 0;
+ _$jscoverage['plugins/enterkey.js'][162] = 0;
+ _$jscoverage['plugins/enterkey.js'][163] = 0;
+ _$jscoverage['plugins/enterkey.js'][165] = 0;
+ _$jscoverage['plugins/enterkey.js'][167] = 0;
+}
+_$jscoverage['plugins/enterkey.js'].source = ["///import core ","///import plugins/undo.js ","///commands 设置回车标签p或br ","///commandsName EnterKey ","///commandsTitle 设置回车标签p或br ","/* "," * @description 处理回车 "," * @author zhanyi "," */ ","UE. plugins[ 'enterkey' ] = function () { "," var hTag, "," me = this , "," tag = me. options. enterTag; "," me. addListener( 'keyup' , function ( type, evt) { ",""," var keyCode = evt. keyCode || evt. which; "," if ( keyCode == 13 ) { "," var range = me. selection. getRange(), "," start = range. startContainer, "," doSave; ",""," //修正在h1-h6里边回车后不能嵌套p的问题 "," if (! browser. ie) { ",""," if ( /h\\d/i . test( hTag)) { "," if ( browser. gecko) { "," var h = domUtils. findParentByTagName( start, [ 'h1' , 'h2' , 'h3' , 'h4' , 'h5' , 'h6' , 'blockquote' , 'caption' , 'table' ], true ); "," if (! h) { "," me. document. execCommand( 'formatBlock' , false , '<p>' ); "," doSave = 1 ; "," } "," } else { "," //chrome remove div "," if ( start. nodeType == 1 ) { "," var tmp = me. document. createTextNode( '' ), div; "," range. insertNode( tmp); "," div = domUtils. findParentByTagName( tmp, 'div' , true ); "," if ( div) { "," var p = me. document. createElement( 'p' ); "," while ( div. firstChild) { "," p. appendChild( div. firstChild); "," } "," div. parentNode. insertBefore( p, div); "," domUtils. remove( div); "," range. setStartBefore( tmp). setCursor(); "," doSave = 1 ; "," } "," domUtils. remove( tmp); ",""," } "," } ",""," if ( me. undoManger && doSave) { "," me. undoManger. save(); "," } "," } "," //没有站位符,会出现多行的问题 "," browser. opera && range. select(); "," } else { "," me. fireEvent( 'saveScene' , true , true ) "," } "," } "," } ); ",""," me. addListener( 'keydown' , function ( type, evt) { "," var keyCode = evt. keyCode || evt. which; "," if ( keyCode == 13 ) { //回车 "," if ( me. fireEvent( 'beforeenterkeydown' )) { "," domUtils. preventDefault( evt); "," return ; "," } "," me. fireEvent( 'saveScene' , true , true ); "," hTag = '' ; ","",""," var range = me. selection. getRange(); ",""," if (! range. collapsed) { "," //跨td不能删 "," var start = range. startContainer, "," end = range. endContainer, "," startTd = domUtils. findParentByTagName( start, 'td' , true ), "," endTd = domUtils. findParentByTagName( end, 'td' , true ); "," if ( startTd && endTd && startTd !== endTd || ! startTd && endTd || startTd && ! endTd) { "," evt. preventDefault ? evt. preventDefault() : ( evt. returnValue = false ); "," return ; "," } "," } "," if ( tag == 'p' ) { ","",""," if (! browser. ie) { ",""," start = domUtils. findParentByTagName( range. startContainer, [ 'ol' , 'ul' , 'p' , 'h1' , 'h2' , 'h3' , 'h4' , 'h5' , 'h6' , 'blockquote' , 'caption' ], true ); ",""," //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command "," //trace:2431 "," if (! start && ! browser. opera) { ",""," me. document. execCommand( 'formatBlock' , false , '<p>' ); ",""," if ( browser. gecko) { "," range = me. selection. getRange(); "," start = domUtils. findParentByTagName( range. startContainer, 'p' , true ); "," start && domUtils. removeDirtyAttr( start); "," } ","",""," } else { "," hTag = start. tagName; "," start. tagName. toLowerCase() == 'p' && browser. gecko && domUtils. removeDirtyAttr( start); "," } ",""," } ",""," } else { "," evt. preventDefault ? evt. preventDefault() : ( evt. returnValue = false ); ",""," if (! range. collapsed) { "," range. deleteContents(); "," start = range. startContainer; "," if ( start. nodeType == 1 && ( start = start. childNodes[ range. startOffset])) { "," while ( start. nodeType == 1 ) { "," if ( dtd. $empty[ start. tagName]) { "," range. setStartBefore( start). setCursor(); "," if ( me. undoManger) { "," me. undoManger. save(); "," } "," return false ; "," } "," if (! start. firstChild) { "," var br = range. document. createElement( 'br' ); "," start. appendChild( br); "," range. setStart( start, 0 ). setCursor(); "," if ( me. undoManger) { "," me. undoManger. save(); "," } "," return false ; "," } "," start = start. firstChild; "," } "," if ( start === range. startContainer. childNodes[ range. startOffset]) { "," br = range. document. createElement( 'br' ); "," range. insertNode( br). setCursor(); ",""," } else { "," range. setStart( start, 0 ). setCursor(); "," } ","",""," } else { "," br = range. document. createElement( 'br' ); "," range. insertNode( br). setStartAfter( br). setCursor(); "," } ","",""," } else { "," br = range. document. createElement( 'br' ); "," range. insertNode( br); "," var parent = br. parentNode; "," if ( parent. lastChild === br) { "," br. parentNode. insertBefore( br. cloneNode( true ), br); "," range. setStartBefore( br); "," } else { "," range. setStartAfter( br); "," } "," range. setCursor(); ",""," } ",""," } ",""," } "," } ); ","} ; "];
+_$jscoverage['plugins/enterkey.js'][10]++;
+UE.plugins.enterkey = (function () {
+ _$jscoverage['plugins/enterkey.js'][11]++;
+ var hTag, me = this, tag = me.options.enterTag;
+ _$jscoverage['plugins/enterkey.js'][14]++;
+ me.addListener("keyup", (function (type, evt) {
+ _$jscoverage['plugins/enterkey.js'][16]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/enterkey.js'][17]++;
+ if ((keyCode == 13)) {
+ _$jscoverage['plugins/enterkey.js'][18]++;
+ var range = me.selection.getRange(), start = range.startContainer, doSave;
+ _$jscoverage['plugins/enterkey.js'][23]++;
+ if ((! browser.ie)) {
+ _$jscoverage['plugins/enterkey.js'][25]++;
+ if (/h\d/i.test(hTag)) {
+ _$jscoverage['plugins/enterkey.js'][26]++;
+ if (browser.gecko) {
+ _$jscoverage['plugins/enterkey.js'][27]++;
+ var h = domUtils.findParentByTagName(start, ["h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "caption", "table"], true);
+ _$jscoverage['plugins/enterkey.js'][28]++;
+ if ((! h)) {
+ _$jscoverage['plugins/enterkey.js'][29]++;
+ me.document.execCommand("formatBlock", false, "");
+ _$jscoverage['plugins/enterkey.js'][30]++;
+ doSave = 1;
+ }
+ }
+ else {
+ _$jscoverage['plugins/enterkey.js'][34]++;
+ if ((start.nodeType == 1)) {
+ _$jscoverage['plugins/enterkey.js'][35]++;
+ var tmp = me.document.createTextNode(""), div;
+ _$jscoverage['plugins/enterkey.js'][36]++;
+ range.insertNode(tmp);
+ _$jscoverage['plugins/enterkey.js'][37]++;
+ div = domUtils.findParentByTagName(tmp, "div", true);
+ _$jscoverage['plugins/enterkey.js'][38]++;
+ if (div) {
+ _$jscoverage['plugins/enterkey.js'][39]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/enterkey.js'][40]++;
+ while (div.firstChild) {
+ _$jscoverage['plugins/enterkey.js'][41]++;
+ p.appendChild(div.firstChild);
+}
+ _$jscoverage['plugins/enterkey.js'][43]++;
+ div.parentNode.insertBefore(p, div);
+ _$jscoverage['plugins/enterkey.js'][44]++;
+ domUtils.remove(div);
+ _$jscoverage['plugins/enterkey.js'][45]++;
+ range.setStartBefore(tmp).setCursor();
+ _$jscoverage['plugins/enterkey.js'][46]++;
+ doSave = 1;
+ }
+ _$jscoverage['plugins/enterkey.js'][48]++;
+ domUtils.remove(tmp);
+ }
+ }
+ _$jscoverage['plugins/enterkey.js'][53]++;
+ if ((me.undoManger && doSave)) {
+ _$jscoverage['plugins/enterkey.js'][54]++;
+ me.undoManger.save();
+ }
+ }
+ _$jscoverage['plugins/enterkey.js'][58]++;
+ (browser.opera && range.select());
+ }
+ else {
+ _$jscoverage['plugins/enterkey.js'][60]++;
+ me.fireEvent("saveScene", true, true);
+ }
+ }
+}));
+ _$jscoverage['plugins/enterkey.js'][65]++;
+ me.addListener("keydown", (function (type, evt) {
+ _$jscoverage['plugins/enterkey.js'][66]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/enterkey.js'][67]++;
+ if ((keyCode == 13)) {
+ _$jscoverage['plugins/enterkey.js'][68]++;
+ if (me.fireEvent("beforeenterkeydown")) {
+ _$jscoverage['plugins/enterkey.js'][69]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/enterkey.js'][70]++;
+ return;
+ }
+ _$jscoverage['plugins/enterkey.js'][72]++;
+ me.fireEvent("saveScene", true, true);
+ _$jscoverage['plugins/enterkey.js'][73]++;
+ hTag = "";
+ _$jscoverage['plugins/enterkey.js'][76]++;
+ var range = me.selection.getRange();
+ _$jscoverage['plugins/enterkey.js'][78]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/enterkey.js'][80]++;
+ var start = range.startContainer, end = range.endContainer, startTd = domUtils.findParentByTagName(start, "td", true), endTd = domUtils.findParentByTagName(end, "td", true);
+ _$jscoverage['plugins/enterkey.js'][84]++;
+ if (((startTd && endTd && (startTd !== endTd)) || ((! startTd) && endTd) || (startTd && (! endTd)))) {
+ _$jscoverage['plugins/enterkey.js'][85]++;
+ (evt.preventDefault? evt.preventDefault(): (evt.returnValue = false));
+ _$jscoverage['plugins/enterkey.js'][86]++;
+ return;
+ }
+ }
+ _$jscoverage['plugins/enterkey.js'][89]++;
+ if ((tag == "p")) {
+ _$jscoverage['plugins/enterkey.js'][92]++;
+ if ((! browser.ie)) {
+ _$jscoverage['plugins/enterkey.js'][94]++;
+ start = domUtils.findParentByTagName(range.startContainer, ["ol", "ul", "p", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "caption"], true);
+ _$jscoverage['plugins/enterkey.js'][98]++;
+ if (((! start) && (! browser.opera))) {
+ _$jscoverage['plugins/enterkey.js'][100]++;
+ me.document.execCommand("formatBlock", false, "
");
+ _$jscoverage['plugins/enterkey.js'][102]++;
+ if (browser.gecko) {
+ _$jscoverage['plugins/enterkey.js'][103]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/enterkey.js'][104]++;
+ start = domUtils.findParentByTagName(range.startContainer, "p", true);
+ _$jscoverage['plugins/enterkey.js'][105]++;
+ (start && domUtils.removeDirtyAttr(start));
+ }
+ }
+ else {
+ _$jscoverage['plugins/enterkey.js'][110]++;
+ hTag = start.tagName;
+ _$jscoverage['plugins/enterkey.js'][111]++;
+ ((start.tagName.toLowerCase() == "p") && browser.gecko && domUtils.removeDirtyAttr(start));
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/enterkey.js'][117]++;
+ (evt.preventDefault? evt.preventDefault(): (evt.returnValue = false));
+ _$jscoverage['plugins/enterkey.js'][119]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/enterkey.js'][120]++;
+ range.deleteContents();
+ _$jscoverage['plugins/enterkey.js'][121]++;
+ start = range.startContainer;
+ _$jscoverage['plugins/enterkey.js'][122]++;
+ if (((start.nodeType == 1) && (start = start.childNodes[range.startOffset]))) {
+ _$jscoverage['plugins/enterkey.js'][123]++;
+ while ((start.nodeType == 1)) {
+ _$jscoverage['plugins/enterkey.js'][124]++;
+ if (dtd.$empty[start.tagName]) {
+ _$jscoverage['plugins/enterkey.js'][125]++;
+ range.setStartBefore(start).setCursor();
+ _$jscoverage['plugins/enterkey.js'][126]++;
+ if (me.undoManger) {
+ _$jscoverage['plugins/enterkey.js'][127]++;
+ me.undoManger.save();
+ }
+ _$jscoverage['plugins/enterkey.js'][129]++;
+ return false;
+ }
+ _$jscoverage['plugins/enterkey.js'][131]++;
+ if ((! start.firstChild)) {
+ _$jscoverage['plugins/enterkey.js'][132]++;
+ var br = range.document.createElement("br");
+ _$jscoverage['plugins/enterkey.js'][133]++;
+ start.appendChild(br);
+ _$jscoverage['plugins/enterkey.js'][134]++;
+ range.setStart(start, 0).setCursor();
+ _$jscoverage['plugins/enterkey.js'][135]++;
+ if (me.undoManger) {
+ _$jscoverage['plugins/enterkey.js'][136]++;
+ me.undoManger.save();
+ }
+ _$jscoverage['plugins/enterkey.js'][138]++;
+ return false;
+ }
+ _$jscoverage['plugins/enterkey.js'][140]++;
+ start = start.firstChild;
+}
+ _$jscoverage['plugins/enterkey.js'][142]++;
+ if ((start === range.startContainer.childNodes[range.startOffset])) {
+ _$jscoverage['plugins/enterkey.js'][143]++;
+ br = range.document.createElement("br");
+ _$jscoverage['plugins/enterkey.js'][144]++;
+ range.insertNode(br).setCursor();
+ }
+ else {
+ _$jscoverage['plugins/enterkey.js'][147]++;
+ range.setStart(start, 0).setCursor();
+ }
+ }
+ else {
+ _$jscoverage['plugins/enterkey.js'][152]++;
+ br = range.document.createElement("br");
+ _$jscoverage['plugins/enterkey.js'][153]++;
+ range.insertNode(br).setStartAfter(br).setCursor();
+ }
+ }
+ else {
+ _$jscoverage['plugins/enterkey.js'][158]++;
+ br = range.document.createElement("br");
+ _$jscoverage['plugins/enterkey.js'][159]++;
+ range.insertNode(br);
+ _$jscoverage['plugins/enterkey.js'][160]++;
+ var parent = br.parentNode;
+ _$jscoverage['plugins/enterkey.js'][161]++;
+ if ((parent.lastChild === br)) {
+ _$jscoverage['plugins/enterkey.js'][162]++;
+ br.parentNode.insertBefore(br.cloneNode(true), br);
+ _$jscoverage['plugins/enterkey.js'][163]++;
+ range.setStartBefore(br);
+ }
+ else {
+ _$jscoverage['plugins/enterkey.js'][165]++;
+ range.setStartAfter(br);
+ }
+ _$jscoverage['plugins/enterkey.js'][167]++;
+ range.setCursor();
+ }
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/fiximgclick.js b/_test/coverage/plugins/fiximgclick.js
new file mode 100644
index 000000000..b32a5f225
--- /dev/null
+++ b/_test/coverage/plugins/fiximgclick.js
@@ -0,0 +1,68 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/fiximgclick.js']) {
+ _$jscoverage['plugins/fiximgclick.js'] = [];
+ _$jscoverage['plugins/fiximgclick.js'][7] = 0;
+ _$jscoverage['plugins/fiximgclick.js'][8] = 0;
+ _$jscoverage['plugins/fiximgclick.js'][9] = 0;
+ _$jscoverage['plugins/fiximgclick.js'][10] = 0;
+ _$jscoverage['plugins/fiximgclick.js'][11] = 0;
+ _$jscoverage['plugins/fiximgclick.js'][12] = 0;
+ _$jscoverage['plugins/fiximgclick.js'][13] = 0;
+}
+_$jscoverage['plugins/fiximgclick.js'].source = ["///import core ","///commands 修复chrome下图片不能点击的问题 ","///commandsName FixImgClick ","///commandsTitle 修复chrome下图片不能点击的问题 ","//修复chrome下图片不能点击的问题 ","//todo 可以改大小 ","UE. plugins[ 'fiximgclick' ] = function () { "," var me = this ; "," if ( browser. webkit ) { "," me. addListener( 'click' , function ( type, e ) { "," if ( e. target. tagName == 'IMG' ) { "," var range = new dom. Range( me. document ); "," range. selectNode( e. target ). select(); ",""," } "," } ); "," } ","} ; "];
+_$jscoverage['plugins/fiximgclick.js'][7]++;
+UE.plugins.fiximgclick = (function () {
+ _$jscoverage['plugins/fiximgclick.js'][8]++;
+ var me = this;
+ _$jscoverage['plugins/fiximgclick.js'][9]++;
+ if (browser.webkit) {
+ _$jscoverage['plugins/fiximgclick.js'][10]++;
+ me.addListener("click", (function (type, e) {
+ _$jscoverage['plugins/fiximgclick.js'][11]++;
+ if ((e.target.tagName == "IMG")) {
+ _$jscoverage['plugins/fiximgclick.js'][12]++;
+ var range = new (dom.Range)(me.document);
+ _$jscoverage['plugins/fiximgclick.js'][13]++;
+ range.selectNode(e.target).select();
+ }
+}));
+ }
+});
diff --git a/_test/coverage/plugins/font.js b/_test/coverage/plugins/font.js
new file mode 100644
index 000000000..7cfdc6709
--- /dev/null
+++ b/_test/coverage/plugins/font.js
@@ -0,0 +1,646 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/font.js']) {
+ _$jscoverage['plugins/font.js'] = [];
+ _$jscoverage['plugins/font.js'][197] = 0;
+ _$jscoverage['plugins/font.js'][198] = 0;
+ _$jscoverage['plugins/font.js'][216] = 0;
+ _$jscoverage['plugins/font.js'][233] = 0;
+ _$jscoverage['plugins/font.js'][234] = 0;
+ _$jscoverage['plugins/font.js'][235] = 0;
+ _$jscoverage['plugins/font.js'][236] = 0;
+ _$jscoverage['plugins/font.js'][237] = 0;
+ _$jscoverage['plugins/font.js'][239] = 0;
+ _$jscoverage['plugins/font.js'][240] = 0;
+ _$jscoverage['plugins/font.js'][241] = 0;
+ _$jscoverage['plugins/font.js'][244] = 0;
+ _$jscoverage['plugins/font.js'][249] = 0;
+ _$jscoverage['plugins/font.js'][250] = 0;
+ _$jscoverage['plugins/font.js'][251] = 0;
+ _$jscoverage['plugins/font.js'][252] = 0;
+ _$jscoverage['plugins/font.js'][253] = 0;
+ _$jscoverage['plugins/font.js'][254] = 0;
+ _$jscoverage['plugins/font.js'][255] = 0;
+ _$jscoverage['plugins/font.js'][256] = 0;
+ _$jscoverage['plugins/font.js'][257] = 0;
+ _$jscoverage['plugins/font.js'][258] = 0;
+ _$jscoverage['plugins/font.js'][259] = 0;
+ _$jscoverage['plugins/font.js'][261] = 0;
+ _$jscoverage['plugins/font.js'][262] = 0;
+ _$jscoverage['plugins/font.js'][263] = 0;
+ _$jscoverage['plugins/font.js'][266] = 0;
+ _$jscoverage['plugins/font.js'][272] = 0;
+ _$jscoverage['plugins/font.js'][273] = 0;
+ _$jscoverage['plugins/font.js'][275] = 0;
+ _$jscoverage['plugins/font.js'][276] = 0;
+ _$jscoverage['plugins/font.js'][277] = 0;
+ _$jscoverage['plugins/font.js'][278] = 0;
+ _$jscoverage['plugins/font.js'][281] = 0;
+ _$jscoverage['plugins/font.js'][283] = 0;
+ _$jscoverage['plugins/font.js'][284] = 0;
+ _$jscoverage['plugins/font.js'][285] = 0;
+ _$jscoverage['plugins/font.js'][286] = 0;
+ _$jscoverage['plugins/font.js'][287] = 0;
+ _$jscoverage['plugins/font.js'][289] = 0;
+ _$jscoverage['plugins/font.js'][291] = 0;
+ _$jscoverage['plugins/font.js'][293] = 0;
+ _$jscoverage['plugins/font.js'][294] = 0;
+ _$jscoverage['plugins/font.js'][296] = 0;
+ _$jscoverage['plugins/font.js'][297] = 0;
+ _$jscoverage['plugins/font.js'][298] = 0;
+ _$jscoverage['plugins/font.js'][299] = 0;
+ _$jscoverage['plugins/font.js'][300] = 0;
+ _$jscoverage['plugins/font.js'][301] = 0;
+ _$jscoverage['plugins/font.js'][302] = 0;
+ _$jscoverage['plugins/font.js'][304] = 0;
+ _$jscoverage['plugins/font.js'][305] = 0;
+ _$jscoverage['plugins/font.js'][306] = 0;
+ _$jscoverage['plugins/font.js'][308] = 0;
+ _$jscoverage['plugins/font.js'][309] = 0;
+ _$jscoverage['plugins/font.js'][310] = 0;
+ _$jscoverage['plugins/font.js'][315] = 0;
+ _$jscoverage['plugins/font.js'][316] = 0;
+ _$jscoverage['plugins/font.js'][318] = 0;
+ _$jscoverage['plugins/font.js'][319] = 0;
+ _$jscoverage['plugins/font.js'][320] = 0;
+ _$jscoverage['plugins/font.js'][325] = 0;
+ _$jscoverage['plugins/font.js'][326] = 0;
+ _$jscoverage['plugins/font.js'][329] = 0;
+ _$jscoverage['plugins/font.js'][330] = 0;
+ _$jscoverage['plugins/font.js'][331] = 0;
+ _$jscoverage['plugins/font.js'][332] = 0;
+ _$jscoverage['plugins/font.js'][333] = 0;
+ _$jscoverage['plugins/font.js'][334] = 0;
+ _$jscoverage['plugins/font.js'][336] = 0;
+ _$jscoverage['plugins/font.js'][337] = 0;
+ _$jscoverage['plugins/font.js'][339] = 0;
+ _$jscoverage['plugins/font.js'][340] = 0;
+ _$jscoverage['plugins/font.js'][342] = 0;
+ _$jscoverage['plugins/font.js'][343] = 0;
+ _$jscoverage['plugins/font.js'][345] = 0;
+ _$jscoverage['plugins/font.js'][348] = 0;
+ _$jscoverage['plugins/font.js'][352] = 0;
+ _$jscoverage['plugins/font.js'][353] = 0;
+ _$jscoverage['plugins/font.js'][357] = 0;
+ _$jscoverage['plugins/font.js'][409] = 0;
+ _$jscoverage['plugins/font.js'][410] = 0;
+ _$jscoverage['plugins/font.js'][411] = 0;
+ _$jscoverage['plugins/font.js'][413] = 0;
+ _$jscoverage['plugins/font.js'][416] = 0;
+ _$jscoverage['plugins/font.js'][420] = 0;
+ _$jscoverage['plugins/font.js'][422] = 0;
+ _$jscoverage['plugins/font.js'][423] = 0;
+ _$jscoverage['plugins/font.js'][424] = 0;
+ _$jscoverage['plugins/font.js'][427] = 0;
+ _$jscoverage['plugins/font.js'][428] = 0;
+ _$jscoverage['plugins/font.js'][429] = 0;
+ _$jscoverage['plugins/font.js'][430] = 0;
+ _$jscoverage['plugins/font.js'][432] = 0;
+ _$jscoverage['plugins/font.js'][433] = 0;
+ _$jscoverage['plugins/font.js'][435] = 0;
+ _$jscoverage['plugins/font.js'][436] = 0;
+ _$jscoverage['plugins/font.js'][437] = 0;
+ _$jscoverage['plugins/font.js'][439] = 0;
+ _$jscoverage['plugins/font.js'][441] = 0;
+ _$jscoverage['plugins/font.js'][442] = 0;
+ _$jscoverage['plugins/font.js'][443] = 0;
+ _$jscoverage['plugins/font.js'][446] = 0;
+ _$jscoverage['plugins/font.js'][447] = 0;
+ _$jscoverage['plugins/font.js'][448] = 0;
+ _$jscoverage['plugins/font.js'][450] = 0;
+ _$jscoverage['plugins/font.js'][451] = 0;
+ _$jscoverage['plugins/font.js'][452] = 0;
+ _$jscoverage['plugins/font.js'][453] = 0;
+ _$jscoverage['plugins/font.js'][455] = 0;
+ _$jscoverage['plugins/font.js'][456] = 0;
+ _$jscoverage['plugins/font.js'][459] = 0;
+ _$jscoverage['plugins/font.js'][460] = 0;
+ _$jscoverage['plugins/font.js'][464] = 0;
+ _$jscoverage['plugins/font.js'][465] = 0;
+ _$jscoverage['plugins/font.js'][466] = 0;
+ _$jscoverage['plugins/font.js'][468] = 0;
+ _$jscoverage['plugins/font.js'][470] = 0;
+ _$jscoverage['plugins/font.js'][471] = 0;
+ _$jscoverage['plugins/font.js'][472] = 0;
+ _$jscoverage['plugins/font.js'][473] = 0;
+ _$jscoverage['plugins/font.js'][475] = 0;
+ _$jscoverage['plugins/font.js'][478] = 0;
+ _$jscoverage['plugins/font.js'][481] = 0;
+ _$jscoverage['plugins/font.js'][483] = 0;
+ _$jscoverage['plugins/font.js'][484] = 0;
+ _$jscoverage['plugins/font.js'][485] = 0;
+ _$jscoverage['plugins/font.js'][486] = 0;
+ _$jscoverage['plugins/font.js'][488] = 0;
+ _$jscoverage['plugins/font.js'][490] = 0;
+ _$jscoverage['plugins/font.js'][495] = 0;
+ _$jscoverage['plugins/font.js'][496] = 0;
+ _$jscoverage['plugins/font.js'][497] = 0;
+ _$jscoverage['plugins/font.js'][498] = 0;
+ _$jscoverage['plugins/font.js'][499] = 0;
+ _$jscoverage['plugins/font.js'][502] = 0;
+ _$jscoverage['plugins/font.js'][503] = 0;
+ _$jscoverage['plugins/font.js'][504] = 0;
+ _$jscoverage['plugins/font.js'][510] = 0;
+ _$jscoverage['plugins/font.js'][515] = 0;
+ _$jscoverage['plugins/font.js'][518] = 0;
+ _$jscoverage['plugins/font.js'][521] = 0;
+ _$jscoverage['plugins/font.js'][522] = 0;
+ _$jscoverage['plugins/font.js'][523] = 0;
+ _$jscoverage['plugins/font.js'][524] = 0;
+ _$jscoverage['plugins/font.js'][525] = 0;
+ _$jscoverage['plugins/font.js'][527] = 0;
+ _$jscoverage['plugins/font.js'][528] = 0;
+ _$jscoverage['plugins/font.js'][532] = 0;
+ _$jscoverage['plugins/font.js'][534] = 0;
+ _$jscoverage['plugins/font.js'][536] = 0;
+ _$jscoverage['plugins/font.js'][537] = 0;
+ _$jscoverage['plugins/font.js'][538] = 0;
+ _$jscoverage['plugins/font.js'][539] = 0;
+ _$jscoverage['plugins/font.js'][540] = 0;
+ _$jscoverage['plugins/font.js'][541] = 0;
+ _$jscoverage['plugins/font.js'][544] = 0;
+ _$jscoverage['plugins/font.js'][546] = 0;
+ _$jscoverage['plugins/font.js'][549] = 0;
+ _$jscoverage['plugins/font.js'][550] = 0;
+ _$jscoverage['plugins/font.js'][553] = 0;
+ _$jscoverage['plugins/font.js'][555] = 0;
+ _$jscoverage['plugins/font.js'][559] = 0;
+ _$jscoverage['plugins/font.js'][563] = 0;
+ _$jscoverage['plugins/font.js'][566] = 0;
+ _$jscoverage['plugins/font.js'][567] = 0;
+ _$jscoverage['plugins/font.js'][568] = 0;
+ _$jscoverage['plugins/font.js'][569] = 0;
+ _$jscoverage['plugins/font.js'][570] = 0;
+ _$jscoverage['plugins/font.js'][572] = 0;
+}
+_$jscoverage['plugins/font.js'].source = ["/** "," * 字体颜色,背景色,字号,字体,下划线,删除线 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 设置字体颜色 "," * @command forecolor "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } value 色值 "," * @example "," * ```javascript "," * editor.execCommand( 'forecolor', '#000' ); "," * ``` "," */ ","/** "," * 返回选区字体颜色 "," * @command forecolor "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回字体颜色 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'forecolor' ); "," * ``` "," */ ","","/** "," * 设置字体背景颜色 "," * @command backcolor "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } value 色值 "," * @example "," * ```javascript "," * editor.execCommand( 'backcolor', '#000' ); "," * ``` "," */ ","/** "," * 返回选区字体颜色 "," * @command backcolor "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回字体背景颜色 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'backcolor' ); "," * ``` "," */ ","","/** "," * 设置字体大小 "," * @command fontsize "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } value 字体大小 "," * @example "," * ```javascript "," * editor.execCommand( 'fontsize', '14px' ); "," * ``` "," */ ","/** "," * 返回选区字体大小 "," * @command fontsize "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回字体大小 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'fontsize' ); "," * ``` "," */ ","","/** "," * 设置字体样式 "," * @command fontfamily "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } value 字体大小 "," * @example "," * ```javascript "," * editor.execCommand( 'fontfamily', '微软雅黑' ); "," * ``` "," */ ","/** "," * 返回选区字体样式 "," * @command fontfamily "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回字体样式 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'fontfamily' ); "," * ``` "," */ ","","/** "," * 根据选区内文本有无下划线设置字体下划线 "," * @command underline "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'underline' ); "," * ``` "," */ ","/** "," * 返回选区下划线样式 "," * @command underline "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } underline|default "," * @example "," * ```javascript "," * editor.queryCommandValue( 'underline' ); "," * ``` "," */ ","/** "," * 返回选区有无下划线 "," * @command underline "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { Bool }true为有下划线,反之则无 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'underline' ); "," * ``` "," */ ","","/** "," * 根据选区内文本有无删除线设置字体删除线 "," * @command strikethrough "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'strikethrough' ); "," * ``` "," */ ","/** "," * 返回选区删除线样式 "," * @command strikethrough "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } line-through|default "," * @example "," * ```javascript "," * editor.queryCommandValue( 'strikethrough' ); "," * ``` "," */ ","/** "," * 返回选区有无删除线 "," * @command strikethrough "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { Bool }true为有删除线,反之则无 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'strikethrough' ); "," * ``` "," */ ","","/** "," * 根据选区内文本有无字体边框设置字体边框 "," * @command fontborder "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'fontborder' ); "," * ``` "," */ ","/** "," * 返回选区字体边框样式 "," * @command fontborder "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 字体边框样式 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'fontborder' ); "," * ``` "," */ ","/** "," * 返回选区有无字体边框 "," * @command fontborder "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { Bool }true为有字体边框,反之则无 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'fontborder' ); "," * ``` "," */ ","UE. plugins[ 'font' ] = function () { "," var me = this , "," fonts = { "," 'forecolor' : 'color' , "," 'backcolor' : 'background-color' , "," 'fontsize' : 'font-size' , "," 'fontfamily' : 'font-family' , "," 'underline' : 'text-decoration' , "," 'strikethrough' : 'text-decoration' , "," 'fontborder' : 'border' "," } , "," needCmd = { 'underline' : 1 , 'strikethrough' : 1 , 'fontborder' : 1 } , "," needSetChild = { "," 'forecolor' : 'color' , "," 'backcolor' : 'background-color' , "," 'fontsize' : 'font-size' , "," 'fontfamily' : 'font-family' ",""," } ; "," me. setOpt( { "," 'fontfamily' : [ "," { name: 'songti' , val: '宋体,SimSun' } , "," { name: 'yahei' , val: '微软雅黑,Microsoft YaHei' } , "," { name: 'kaiti' , val: '楷体,楷体_GB2312, SimKai' } , "," { name: 'heiti' , val: '黑体, SimHei' } , "," { name: 'lishu' , val: '隶书, SimLi' } , "," { name: 'andaleMono' , val: 'andale mono' } , "," { name: 'arial' , val: 'arial, helvetica,sans-serif' } , "," { name: 'arialBlack' , val: 'arial black,avant garde' } , "," { name: 'comicSansMs' , val: 'comic sans ms' } , "," { name: 'impact' , val: 'impact,chicago' } , "," { name: 'timesNewRoman' , val: 'times new roman' } "," ], "," 'fontsize' : [ 10 , 11 , 12 , 14 , 16 , 18 , 20 , 24 , 36 ] "," } ); ",""," function mergeWithParent( node) { "," var parent; "," while ( parent = node. parentNode) { "," if ( parent. tagName == 'SPAN' && domUtils. getChildCount( parent, function ( child) { "," return ! domUtils. isBookmarkNode( child) && ! domUtils. isBr( child) "," } ) == 1 ) { "," parent. style. cssText += node. style. cssText; "," domUtils. remove( node, true ); "," node = parent; ",""," } else { "," break ; "," } "," } ",""," } "," function mergeChild( rng, cmdName, value) { "," if ( needSetChild[ cmdName]) { "," rng. adjustmentBoundary(); "," if (! rng. collapsed && rng. startContainer. nodeType == 1 ) { "," var start = rng. startContainer. childNodes[ rng. startOffset]; "," if ( start && domUtils. isTagNode( start, 'span' )) { "," var bk = rng. createBookmark(); "," utils. each( domUtils. getElementsByTagName( start, 'span' ), function ( span) { "," if (! span. parentNode || domUtils. isBookmarkNode( span)) return ; "," if ( cmdName == 'backcolor' && domUtils. getComputedStyle( span, 'background-color' ). toLowerCase() === value) { "," return ; "," } "," domUtils. removeStyle( span, needSetChild[ cmdName]); "," if ( span. style. cssText. replace( /^\\s+$/ , '' ). length == 0 ) { "," domUtils. remove( span, true ) "," } "," } ); "," rng. moveToBookmark( bk) "," } "," } "," } ",""," } "," function mergesibling( rng, cmdName, value) { "," var collapsed = rng. collapsed, "," bk = rng. createBookmark(), common; "," if ( collapsed) { "," common = bk. start. parentNode; "," while ( dtd. $inline[ common. tagName]) { "," common = common. parentNode; "," } "," } else { "," common = domUtils. getCommonAncestor( bk. start, bk. end); "," } "," utils. each( domUtils. getElementsByTagName( common, 'span' ), function ( span) { "," if (! span. parentNode || domUtils. isBookmarkNode( span)) return ; "," if ( /\\s*border\\s*:\\s*none;?\\s*/i . test( span. style. cssText)) { "," if ( /^\\s*border\\s*:\\s*none;?\\s*$/ . test( span. style. cssText)) { "," domUtils. remove( span, true ); "," } else { "," domUtils. removeStyle( span, 'border' ); "," } "," return "," } "," if ( /border/i . test( span. style. cssText) && span. parentNode. tagName == 'SPAN' && /border/i . test( span. parentNode. style. cssText)) { "," span. style. cssText = span. style. cssText. replace( /border[^:]*:[^;]+;?/gi , '' ); "," } "," if (!( cmdName== 'fontborder' && value== 'none' )) { "," var next = span. nextSibling; "," while ( next && next. nodeType == 1 && next. tagName == 'SPAN' ) { "," if ( domUtils. isBookmarkNode( next) && cmdName == 'fontborder' ) { "," span. appendChild( next); "," next = span. nextSibling; "," continue ; "," } "," if ( next. style. cssText == span. style. cssText) { "," domUtils. moveChild( next, span); "," domUtils. remove( next); "," } "," if ( span. nextSibling === next) "," break ; "," next = span. nextSibling; "," } "," } ","",""," mergeWithParent( span); "," if ( browser. ie && browser. version > 8 ) { "," //拷贝父亲们的特别的属性,这里只做背景颜色的处理 "," var parent = domUtils. findParent( span, function ( n) { return n. tagName == 'SPAN' && /background-color/ . test( n. style. cssText) } ); "," if ( parent && ! /background-color/ . test( span. style. cssText)) { "," span. style. backgroundColor = parent. style. backgroundColor; "," } "," } ",""," } ); "," rng. moveToBookmark( bk); "," mergeChild( rng, cmdName, value) "," } ",""," me. addInputRule( function ( root) { "," utils. each( root. getNodesByTagName( 'u s del font strike' ), function ( node) { "," if ( node. tagName == 'font' ) { "," var cssStyle = []; "," for ( var p in node. attrs) { "," switch ( p) { "," case 'size' : "," cssStyle. push( 'font-size:' + node. attrs[ p] + 'px' ); "," break ; "," case 'color' : "," cssStyle. push( 'color:' + node. attrs[ p]); "," break ; "," case 'face' : "," cssStyle. push( 'font-family:' + node. attrs[ p]); "," break ; "," case 'style' : "," cssStyle. push( node. attrs[ p]); "," } "," } "," node. attrs = { "," 'style' : cssStyle. join( ';' ) "," } ; "," } else { "," var val = node. tagName == 'u' ? 'underline' : 'line-through' ; "," node. attrs = { "," 'style' : ( node. getAttr( 'style' ) || '' ) + 'text-decoration:' + val + ';' "," } "," } "," node. tagName = 'span' ; "," } ); ","// utils.each(root.getNodesByTagName('span'), function (node) { ","// var val; ","// if(val = node.getAttr('class')){ ","// if(/fontstrikethrough/.test(val)){ ","// node.setStyle('text-decoration','line-through'); ","// if(node.attrs['class']){ ","// node.attrs['class'] = node.attrs['class'].replace(/fontstrikethrough/,''); ","// }else{ ","// node.setAttr('class') ","// } ","// } ","// if(/fontborder/.test(val)){ ","// node.setStyle('border','1px solid #000'); ","// if(node.attrs['class']){ ","// node.attrs['class'] = node.attrs['class'].replace(/fontborder/,''); ","// }else{ ","// node.setAttr('class') ","// } ","// } ","// } ","// }); "," } ); ","// me.addOutputRule(function(root){ ","// utils.each(root.getNodesByTagName('span'), function (node) { ","// var val; ","// if(val = node.getStyle('text-decoration')){ ","// if(/line-through/.test(val)){ ","// if(node.attrs['class']){ ","// node.attrs['class'] += ' fontstrikethrough'; ","// }else{ ","// node.setAttr('class','fontstrikethrough') ","// } ","// } ","// ","// node.setStyle('text-decoration') ","// } ","// if(val = node.getStyle('border')){ ","// if(/1px/.test(val) && /solid/.test(val)){ ","// if(node.attrs['class']){ ","// node.attrs['class'] += ' fontborder'; ","// ","// }else{ ","// node.setAttr('class','fontborder') ","// } ","// } ","// node.setStyle('border') ","// ","// } ","// }); ","// }); "," for ( var p in fonts) { "," ( function ( cmd, style) { "," UE. commands[ cmd] = { "," execCommand: function ( cmdName, value) { "," value = value || ( this . queryCommandState( cmdName) ? 'none' : cmdName == 'underline' ? 'underline' : "," cmdName == 'fontborder' ? '1px solid #000' : "," 'line-through' ); "," var me = this , "," range = this . selection. getRange(), "," text; ",""," if ( value == 'default' ) { ",""," if ( range. collapsed) { "," text = me. document. createTextNode( 'font' ); "," range. insertNode( text). select(); ",""," } "," me. execCommand( 'removeFormat' , 'span,a' , style); "," if ( text) { "," range. setStartBefore( text). collapse( true ); "," domUtils. remove( text); "," } "," mergesibling( range, cmdName, value); "," range. select() "," } else { "," if (! range. collapsed) { "," if ( needCmd[ cmd] && me. queryCommandValue( cmd)) { "," me. execCommand( 'removeFormat' , 'span,a' , style); "," } "," range = me. selection. getRange(); ",""," range. applyInlineStyle( 'span' , { 'style' : style + ':' + value} ); "," mergesibling( range, cmdName, value); "," range. select(); "," } else { ",""," var span = domUtils. findParentByTagName( range. startContainer, 'span' , true ); "," text = me. document. createTextNode( 'font' ); "," if ( span && ! span. children. length && ! span[ browser. ie ? 'innerText' : 'textContent' ]. replace( fillCharReg, '' ). length) { "," //for ie hack when enter "," range. insertNode( text); "," if ( needCmd[ cmd]) { "," range. selectNode( text). select(); "," me. execCommand( 'removeFormat' , 'span,a' , style, null ); ",""," span = domUtils. findParentByTagName( text, 'span' , true ); "," range. setStartBefore( text); ",""," } "," span && ( span. style. cssText += ';' + style + ':' + value); "," range. collapse( true ). select(); ","",""," } else { "," range. insertNode( text); "," range. selectNode( text). select(); "," span = range. document. createElement( 'span' ); ",""," if ( needCmd[ cmd]) { "," //a标签内的不处理跳过 "," if ( domUtils. findParentByTagName( text, 'a' , true )) { "," range. setStartBefore( text). setCursor(); "," domUtils. remove( text); "," return ; "," } "," me. execCommand( 'removeFormat' , 'span,a' , style); "," } ",""," span. style. cssText = style + ':' + value; ","",""," text. parentNode. insertBefore( span, text); "," //修复,span套span 但样式不继承的问题 "," if (! browser. ie || browser. ie && browser. version == 9 ) { "," var spanParent = span. parentNode; "," while (! domUtils. isBlockElm( spanParent)) { "," if ( spanParent. tagName == 'SPAN' ) { "," //opera合并style不会加入\";\" "," span. style. cssText = spanParent. style. cssText + \";\" + span. style. cssText; "," } "," spanParent = spanParent. parentNode; "," } "," } ","",""," if ( opera) { "," setTimeout( function () { "," range. setStart( span, 0 ). collapse( true ); "," mergesibling( range, cmdName, value); "," range. select(); "," } ); "," } else { "," range. setStart( span, 0 ). collapse( true ); "," mergesibling( range, cmdName, value); "," range. select(); "," } ",""," //trace:981 "," //domUtils.mergeToParent(span) "," } "," domUtils. remove( text); "," } ","",""," } "," return true ; "," } , "," queryCommandValue: function ( cmdName) { "," var startNode = this . selection. getStart(); ",""," //trace:946 "," if ( cmdName == 'underline' || cmdName == 'strikethrough' ) { "," var tmpNode = startNode, value; "," while ( tmpNode && ! domUtils. isBlockElm( tmpNode) && ! domUtils. isBody( tmpNode)) { "," if ( tmpNode. nodeType == 1 ) { "," value = domUtils. getComputedStyle( tmpNode, style); ",""," if ( value != 'none' ) { "," return value; "," } "," } ",""," tmpNode = tmpNode. parentNode; "," } "," return 'none' ; "," } "," if ( cmdName == 'fontborder' ) { "," var tmp = startNode, val; "," while ( tmp && dtd. $inline[ tmp. tagName]) { "," if ( val = domUtils. getComputedStyle( tmp, 'border' )) { "," if ( /1px/ . test( val) && /solid/ . test( val)) { "," return val; "," } "," } "," tmp = tmp. parentNode; "," } "," return '' "," } ",""," if ( cmdName == 'FontSize' ) { "," var styleVal = domUtils. getComputedStyle( startNode, style), "," tmp = /^([\\d\\.]+)(\\w+)$/ . exec( styleVal ); ",""," if ( tmp ) { ",""," return Math. floor( tmp[ 1 ] ) + tmp[ 2 ]; ",""," } ",""," return styleVal; ",""," } ",""," return domUtils. getComputedStyle( startNode, style); "," } , "," queryCommandState: function ( cmdName) { "," if (! needCmd[ cmdName]) "," return 0 ; "," var val = this . queryCommandValue( cmdName); "," if ( cmdName == 'fontborder' ) { "," return /1px/ . test( val) && /solid/ . test( val) "," } else { "," return val == ( cmdName == 'underline' ? "," 'underline' : 'line-through' ); "," } ",""," } "," } ; "," } )( p, fonts[ p]); "," } ","} ; "];
+_$jscoverage['plugins/font.js'][197]++;
+UE.plugins.font = (function () {
+ _$jscoverage['plugins/font.js'][198]++;
+ var me = this, fonts = {"forecolor": "color", "backcolor": "background-color", "fontsize": "font-size", "fontfamily": "font-family", "underline": "text-decoration", "strikethrough": "text-decoration", "fontborder": "border"}, needCmd = {"underline": 1, "strikethrough": 1, "fontborder": 1}, needSetChild = {"forecolor": "color", "backcolor": "background-color", "fontsize": "font-size", "fontfamily": "font-family"};
+ _$jscoverage['plugins/font.js'][216]++;
+ me.setOpt({"fontfamily": [{name: "songti", val: "\u5b8b\u4f53,SimSun"}, {name: "yahei", val: "\u5fae\u8f6f\u96c5\u9ed1,Microsoft YaHei"}, {name: "kaiti", val: "\u6977\u4f53,\u6977\u4f53_GB2312, SimKai"}, {name: "heiti", val: "\u9ed1\u4f53, SimHei"}, {name: "lishu", val: "\u96b6\u4e66, SimLi"}, {name: "andaleMono", val: "andale mono"}, {name: "arial", val: "arial, helvetica,sans-serif"}, {name: "arialBlack", val: "arial black,avant garde"}, {name: "comicSansMs", val: "comic sans ms"}, {name: "impact", val: "impact,chicago"}, {name: "timesNewRoman", val: "times new roman"}], "fontsize": [10, 11, 12, 14, 16, 18, 20, 24, 36]});
+ _$jscoverage['plugins/font.js'][233]++;
+ function mergeWithParent(node) {
+ _$jscoverage['plugins/font.js'][234]++;
+ var parent;
+ _$jscoverage['plugins/font.js'][235]++;
+ while ((parent = node.parentNode)) {
+ _$jscoverage['plugins/font.js'][236]++;
+ if (((parent.tagName == "SPAN") && (domUtils.getChildCount(parent, (function (child) {
+ _$jscoverage['plugins/font.js'][237]++;
+ return ((! domUtils.isBookmarkNode(child)) && (! domUtils.isBr(child)));
+})) == 1))) {
+ _$jscoverage['plugins/font.js'][239]++;
+ parent.style.cssText += node.style.cssText;
+ _$jscoverage['plugins/font.js'][240]++;
+ domUtils.remove(node, true);
+ _$jscoverage['plugins/font.js'][241]++;
+ node = parent;
+ }
+ else {
+ _$jscoverage['plugins/font.js'][244]++;
+ break;
+ }
+}
+}
+ _$jscoverage['plugins/font.js'][249]++;
+ function mergeChild(rng, cmdName, value) {
+ _$jscoverage['plugins/font.js'][250]++;
+ if (needSetChild[cmdName]) {
+ _$jscoverage['plugins/font.js'][251]++;
+ rng.adjustmentBoundary();
+ _$jscoverage['plugins/font.js'][252]++;
+ if (((! rng.collapsed) && (rng.startContainer.nodeType == 1))) {
+ _$jscoverage['plugins/font.js'][253]++;
+ var start = rng.startContainer.childNodes[rng.startOffset];
+ _$jscoverage['plugins/font.js'][254]++;
+ if ((start && domUtils.isTagNode(start, "span"))) {
+ _$jscoverage['plugins/font.js'][255]++;
+ var bk = rng.createBookmark();
+ _$jscoverage['plugins/font.js'][256]++;
+ utils.each(domUtils.getElementsByTagName(start, "span"), (function (span) {
+ _$jscoverage['plugins/font.js'][257]++;
+ if (((! span.parentNode) || domUtils.isBookmarkNode(span))) {
+ _$jscoverage['plugins/font.js'][257]++;
+ return;
+ }
+ _$jscoverage['plugins/font.js'][258]++;
+ if (((cmdName == "backcolor") && (domUtils.getComputedStyle(span, "background-color").toLowerCase() === value))) {
+ _$jscoverage['plugins/font.js'][259]++;
+ return;
+ }
+ _$jscoverage['plugins/font.js'][261]++;
+ domUtils.removeStyle(span, needSetChild[cmdName]);
+ _$jscoverage['plugins/font.js'][262]++;
+ if ((span.style.cssText.replace(/^\s+$/, "").length == 0)) {
+ _$jscoverage['plugins/font.js'][263]++;
+ domUtils.remove(span, true);
+ }
+}));
+ _$jscoverage['plugins/font.js'][266]++;
+ rng.moveToBookmark(bk);
+ }
+ }
+ }
+}
+ _$jscoverage['plugins/font.js'][272]++;
+ function mergesibling(rng, cmdName, value) {
+ _$jscoverage['plugins/font.js'][273]++;
+ var collapsed = rng.collapsed, bk = rng.createBookmark(), common;
+ _$jscoverage['plugins/font.js'][275]++;
+ if (collapsed) {
+ _$jscoverage['plugins/font.js'][276]++;
+ common = bk.start.parentNode;
+ _$jscoverage['plugins/font.js'][277]++;
+ while (dtd.$inline[common.tagName]) {
+ _$jscoverage['plugins/font.js'][278]++;
+ common = common.parentNode;
+}
+ }
+ else {
+ _$jscoverage['plugins/font.js'][281]++;
+ common = domUtils.getCommonAncestor(bk.start, bk.end);
+ }
+ _$jscoverage['plugins/font.js'][283]++;
+ utils.each(domUtils.getElementsByTagName(common, "span"), (function (span) {
+ _$jscoverage['plugins/font.js'][284]++;
+ if (((! span.parentNode) || domUtils.isBookmarkNode(span))) {
+ _$jscoverage['plugins/font.js'][284]++;
+ return;
+ }
+ _$jscoverage['plugins/font.js'][285]++;
+ if (/\s*border\s*:\s*none;?\s*/i.test(span.style.cssText)) {
+ _$jscoverage['plugins/font.js'][286]++;
+ if (/^\s*border\s*:\s*none;?\s*$/.test(span.style.cssText)) {
+ _$jscoverage['plugins/font.js'][287]++;
+ domUtils.remove(span, true);
+ }
+ else {
+ _$jscoverage['plugins/font.js'][289]++;
+ domUtils.removeStyle(span, "border");
+ }
+ _$jscoverage['plugins/font.js'][291]++;
+ return;
+ }
+ _$jscoverage['plugins/font.js'][293]++;
+ if ((/border/i.test(span.style.cssText) && (span.parentNode.tagName == "SPAN") && /border/i.test(span.parentNode.style.cssText))) {
+ _$jscoverage['plugins/font.js'][294]++;
+ span.style.cssText = span.style.cssText.replace(/border[^:]*:[^;]+;?/gi, "");
+ }
+ _$jscoverage['plugins/font.js'][296]++;
+ if ((! ((cmdName == "fontborder") && (value == "none")))) {
+ _$jscoverage['plugins/font.js'][297]++;
+ var next = span.nextSibling;
+ _$jscoverage['plugins/font.js'][298]++;
+ while ((next && (next.nodeType == 1) && (next.tagName == "SPAN"))) {
+ _$jscoverage['plugins/font.js'][299]++;
+ if ((domUtils.isBookmarkNode(next) && (cmdName == "fontborder"))) {
+ _$jscoverage['plugins/font.js'][300]++;
+ span.appendChild(next);
+ _$jscoverage['plugins/font.js'][301]++;
+ next = span.nextSibling;
+ _$jscoverage['plugins/font.js'][302]++;
+ continue;
+ }
+ _$jscoverage['plugins/font.js'][304]++;
+ if ((next.style.cssText == span.style.cssText)) {
+ _$jscoverage['plugins/font.js'][305]++;
+ domUtils.moveChild(next, span);
+ _$jscoverage['plugins/font.js'][306]++;
+ domUtils.remove(next);
+ }
+ _$jscoverage['plugins/font.js'][308]++;
+ if ((span.nextSibling === next)) {
+ _$jscoverage['plugins/font.js'][309]++;
+ break;
+ }
+ _$jscoverage['plugins/font.js'][310]++;
+ next = span.nextSibling;
+}
+ }
+ _$jscoverage['plugins/font.js'][315]++;
+ mergeWithParent(span);
+ _$jscoverage['plugins/font.js'][316]++;
+ if ((browser.ie && (browser.version > 8))) {
+ _$jscoverage['plugins/font.js'][318]++;
+ var parent = domUtils.findParent(span, (function (n) {
+ _$jscoverage['plugins/font.js'][318]++;
+ return ((n.tagName == "SPAN") && /background-color/.test(n.style.cssText));
+}));
+ _$jscoverage['plugins/font.js'][319]++;
+ if ((parent && (! /background-color/.test(span.style.cssText)))) {
+ _$jscoverage['plugins/font.js'][320]++;
+ span.style.backgroundColor = parent.style.backgroundColor;
+ }
+ }
+}));
+ _$jscoverage['plugins/font.js'][325]++;
+ rng.moveToBookmark(bk);
+ _$jscoverage['plugins/font.js'][326]++;
+ mergeChild(rng, cmdName, value);
+}
+ _$jscoverage['plugins/font.js'][329]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/font.js'][330]++;
+ utils.each(root.getNodesByTagName("u s del font strike"), (function (node) {
+ _$jscoverage['plugins/font.js'][331]++;
+ if ((node.tagName == "font")) {
+ _$jscoverage['plugins/font.js'][332]++;
+ var cssStyle = [];
+ _$jscoverage['plugins/font.js'][333]++;
+ for (var p in node.attrs) {
+ _$jscoverage['plugins/font.js'][334]++;
+ switch (p) {
+ case "size":
+ _$jscoverage['plugins/font.js'][336]++;
+ cssStyle.push(("font-size:" + node.attrs[p] + "px"));
+ _$jscoverage['plugins/font.js'][337]++;
+ break;
+ case "color":
+ _$jscoverage['plugins/font.js'][339]++;
+ cssStyle.push(("color:" + node.attrs[p]));
+ _$jscoverage['plugins/font.js'][340]++;
+ break;
+ case "face":
+ _$jscoverage['plugins/font.js'][342]++;
+ cssStyle.push(("font-family:" + node.attrs[p]));
+ _$jscoverage['plugins/font.js'][343]++;
+ break;
+ case "style":
+ _$jscoverage['plugins/font.js'][345]++;
+ cssStyle.push(node.attrs[p]);
+ }
+}
+ _$jscoverage['plugins/font.js'][348]++;
+ node.attrs = {"style": cssStyle.join(";")};
+ }
+ else {
+ _$jscoverage['plugins/font.js'][352]++;
+ var val = ((node.tagName == "u")? "underline": "line-through");
+ _$jscoverage['plugins/font.js'][353]++;
+ node.attrs = {"style": ((node.getAttr("style") || "") + "text-decoration:" + val + ";")};
+ }
+ _$jscoverage['plugins/font.js'][357]++;
+ node.tagName = "span";
+}));
+}));
+ _$jscoverage['plugins/font.js'][409]++;
+ for (var p in fonts) {
+ _$jscoverage['plugins/font.js'][410]++;
+ (function (cmd, style) {
+ _$jscoverage['plugins/font.js'][411]++;
+ UE.commands[cmd] = {execCommand: (function (cmdName, value) {
+ _$jscoverage['plugins/font.js'][413]++;
+ value = (value || (this.queryCommandState(cmdName)? "none": ((cmdName == "underline")? "underline": ((cmdName == "fontborder")? "1px solid #000": "line-through"))));
+ _$jscoverage['plugins/font.js'][416]++;
+ var me = this, range = this.selection.getRange(), text;
+ _$jscoverage['plugins/font.js'][420]++;
+ if ((value == "default")) {
+ _$jscoverage['plugins/font.js'][422]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/font.js'][423]++;
+ text = me.document.createTextNode("font");
+ _$jscoverage['plugins/font.js'][424]++;
+ range.insertNode(text).select();
+ }
+ _$jscoverage['plugins/font.js'][427]++;
+ me.execCommand("removeFormat", "span,a", style);
+ _$jscoverage['plugins/font.js'][428]++;
+ if (text) {
+ _$jscoverage['plugins/font.js'][429]++;
+ range.setStartBefore(text).collapse(true);
+ _$jscoverage['plugins/font.js'][430]++;
+ domUtils.remove(text);
+ }
+ _$jscoverage['plugins/font.js'][432]++;
+ mergesibling(range, cmdName, value);
+ _$jscoverage['plugins/font.js'][433]++;
+ range.select();
+ }
+ else {
+ _$jscoverage['plugins/font.js'][435]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/font.js'][436]++;
+ if ((needCmd[cmd] && me.queryCommandValue(cmd))) {
+ _$jscoverage['plugins/font.js'][437]++;
+ me.execCommand("removeFormat", "span,a", style);
+ }
+ _$jscoverage['plugins/font.js'][439]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/font.js'][441]++;
+ range.applyInlineStyle("span", {"style": (style + ":" + value)});
+ _$jscoverage['plugins/font.js'][442]++;
+ mergesibling(range, cmdName, value);
+ _$jscoverage['plugins/font.js'][443]++;
+ range.select();
+ }
+ else {
+ _$jscoverage['plugins/font.js'][446]++;
+ var span = domUtils.findParentByTagName(range.startContainer, "span", true);
+ _$jscoverage['plugins/font.js'][447]++;
+ text = me.document.createTextNode("font");
+ _$jscoverage['plugins/font.js'][448]++;
+ if ((span && (! span.children.length) && (! span[(browser.ie? "innerText": "textContent")].replace(fillCharReg, "").length))) {
+ _$jscoverage['plugins/font.js'][450]++;
+ range.insertNode(text);
+ _$jscoverage['plugins/font.js'][451]++;
+ if (needCmd[cmd]) {
+ _$jscoverage['plugins/font.js'][452]++;
+ range.selectNode(text).select();
+ _$jscoverage['plugins/font.js'][453]++;
+ me.execCommand("removeFormat", "span,a", style, null);
+ _$jscoverage['plugins/font.js'][455]++;
+ span = domUtils.findParentByTagName(text, "span", true);
+ _$jscoverage['plugins/font.js'][456]++;
+ range.setStartBefore(text);
+ }
+ _$jscoverage['plugins/font.js'][459]++;
+ (span && (span.style.cssText += (";" + style + ":" + value)));
+ _$jscoverage['plugins/font.js'][460]++;
+ range.collapse(true).select();
+ }
+ else {
+ _$jscoverage['plugins/font.js'][464]++;
+ range.insertNode(text);
+ _$jscoverage['plugins/font.js'][465]++;
+ range.selectNode(text).select();
+ _$jscoverage['plugins/font.js'][466]++;
+ span = range.document.createElement("span");
+ _$jscoverage['plugins/font.js'][468]++;
+ if (needCmd[cmd]) {
+ _$jscoverage['plugins/font.js'][470]++;
+ if (domUtils.findParentByTagName(text, "a", true)) {
+ _$jscoverage['plugins/font.js'][471]++;
+ range.setStartBefore(text).setCursor();
+ _$jscoverage['plugins/font.js'][472]++;
+ domUtils.remove(text);
+ _$jscoverage['plugins/font.js'][473]++;
+ return;
+ }
+ _$jscoverage['plugins/font.js'][475]++;
+ me.execCommand("removeFormat", "span,a", style);
+ }
+ _$jscoverage['plugins/font.js'][478]++;
+ span.style.cssText = (style + ":" + value);
+ _$jscoverage['plugins/font.js'][481]++;
+ text.parentNode.insertBefore(span, text);
+ _$jscoverage['plugins/font.js'][483]++;
+ if (((! browser.ie) || (browser.ie && (browser.version == 9)))) {
+ _$jscoverage['plugins/font.js'][484]++;
+ var spanParent = span.parentNode;
+ _$jscoverage['plugins/font.js'][485]++;
+ while ((! domUtils.isBlockElm(spanParent))) {
+ _$jscoverage['plugins/font.js'][486]++;
+ if ((spanParent.tagName == "SPAN")) {
+ _$jscoverage['plugins/font.js'][488]++;
+ span.style.cssText = (spanParent.style.cssText + ";" + span.style.cssText);
+ }
+ _$jscoverage['plugins/font.js'][490]++;
+ spanParent = spanParent.parentNode;
+}
+ }
+ _$jscoverage['plugins/font.js'][495]++;
+ if (opera) {
+ _$jscoverage['plugins/font.js'][496]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/font.js'][497]++;
+ range.setStart(span, 0).collapse(true);
+ _$jscoverage['plugins/font.js'][498]++;
+ mergesibling(range, cmdName, value);
+ _$jscoverage['plugins/font.js'][499]++;
+ range.select();
+}));
+ }
+ else {
+ _$jscoverage['plugins/font.js'][502]++;
+ range.setStart(span, 0).collapse(true);
+ _$jscoverage['plugins/font.js'][503]++;
+ mergesibling(range, cmdName, value);
+ _$jscoverage['plugins/font.js'][504]++;
+ range.select();
+ }
+ }
+ _$jscoverage['plugins/font.js'][510]++;
+ domUtils.remove(text);
+ }
+ }
+ _$jscoverage['plugins/font.js'][515]++;
+ return true;
+}), queryCommandValue: (function (cmdName) {
+ _$jscoverage['plugins/font.js'][518]++;
+ var startNode = this.selection.getStart();
+ _$jscoverage['plugins/font.js'][521]++;
+ if (((cmdName == "underline") || (cmdName == "strikethrough"))) {
+ _$jscoverage['plugins/font.js'][522]++;
+ var tmpNode = startNode, value;
+ _$jscoverage['plugins/font.js'][523]++;
+ while ((tmpNode && (! domUtils.isBlockElm(tmpNode)) && (! domUtils.isBody(tmpNode)))) {
+ _$jscoverage['plugins/font.js'][524]++;
+ if ((tmpNode.nodeType == 1)) {
+ _$jscoverage['plugins/font.js'][525]++;
+ value = domUtils.getComputedStyle(tmpNode, style);
+ _$jscoverage['plugins/font.js'][527]++;
+ if ((value != "none")) {
+ _$jscoverage['plugins/font.js'][528]++;
+ return value;
+ }
+ }
+ _$jscoverage['plugins/font.js'][532]++;
+ tmpNode = tmpNode.parentNode;
+}
+ _$jscoverage['plugins/font.js'][534]++;
+ return "none";
+ }
+ _$jscoverage['plugins/font.js'][536]++;
+ if ((cmdName == "fontborder")) {
+ _$jscoverage['plugins/font.js'][537]++;
+ var tmp = startNode, val;
+ _$jscoverage['plugins/font.js'][538]++;
+ while ((tmp && dtd.$inline[tmp.tagName])) {
+ _$jscoverage['plugins/font.js'][539]++;
+ if ((val = domUtils.getComputedStyle(tmp, "border"))) {
+ _$jscoverage['plugins/font.js'][540]++;
+ if ((/1px/.test(val) && /solid/.test(val))) {
+ _$jscoverage['plugins/font.js'][541]++;
+ return val;
+ }
+ }
+ _$jscoverage['plugins/font.js'][544]++;
+ tmp = tmp.parentNode;
+}
+ _$jscoverage['plugins/font.js'][546]++;
+ return "";
+ }
+ _$jscoverage['plugins/font.js'][549]++;
+ if ((cmdName == "FontSize")) {
+ _$jscoverage['plugins/font.js'][550]++;
+ var styleVal = domUtils.getComputedStyle(startNode, style), tmp = /^([\d\.]+)(\w+)$/.exec(styleVal);
+ _$jscoverage['plugins/font.js'][553]++;
+ if (tmp) {
+ _$jscoverage['plugins/font.js'][555]++;
+ return (Math.floor(tmp[1]) + tmp[2]);
+ }
+ _$jscoverage['plugins/font.js'][559]++;
+ return styleVal;
+ }
+ _$jscoverage['plugins/font.js'][563]++;
+ return domUtils.getComputedStyle(startNode, style);
+}), queryCommandState: (function (cmdName) {
+ _$jscoverage['plugins/font.js'][566]++;
+ if ((! needCmd[cmdName])) {
+ _$jscoverage['plugins/font.js'][567]++;
+ return 0;
+ }
+ _$jscoverage['plugins/font.js'][568]++;
+ var val = this.queryCommandValue(cmdName);
+ _$jscoverage['plugins/font.js'][569]++;
+ if ((cmdName == "fontborder")) {
+ _$jscoverage['plugins/font.js'][570]++;
+ return (/1px/.test(val) && /solid/.test(val));
+ }
+ else {
+ _$jscoverage['plugins/font.js'][572]++;
+ return (val == ((cmdName == "underline")? "underline": "line-through"));
+ }
+})};
+})(p, fonts[p]);
+}
+});
diff --git a/_test/coverage/plugins/formatmatch.js b/_test/coverage/plugins/formatmatch.js
new file mode 100644
index 000000000..0dbe004f9
--- /dev/null
+++ b/_test/coverage/plugins/formatmatch.js
@@ -0,0 +1,237 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/formatmatch.js']) {
+ _$jscoverage['plugins/formatmatch.js'] = [];
+ _$jscoverage['plugins/formatmatch.js'][39] = 0;
+ _$jscoverage['plugins/formatmatch.js'][41] = 0;
+ _$jscoverage['plugins/formatmatch.js'][45] = 0;
+ _$jscoverage['plugins/formatmatch.js'][46] = 0;
+ _$jscoverage['plugins/formatmatch.js'][47] = 0;
+ _$jscoverage['plugins/formatmatch.js'][50] = 0;
+ _$jscoverage['plugins/formatmatch.js'][52] = 0;
+ _$jscoverage['plugins/formatmatch.js'][53] = 0;
+ _$jscoverage['plugins/formatmatch.js'][56] = 0;
+ _$jscoverage['plugins/formatmatch.js'][58] = 0;
+ _$jscoverage['plugins/formatmatch.js'][59] = 0;
+ _$jscoverage['plugins/formatmatch.js'][61] = 0;
+ _$jscoverage['plugins/formatmatch.js'][65] = 0;
+ _$jscoverage['plugins/formatmatch.js'][67] = 0;
+ _$jscoverage['plugins/formatmatch.js'][69] = 0;
+ _$jscoverage['plugins/formatmatch.js'][72] = 0;
+ _$jscoverage['plugins/formatmatch.js'][74] = 0;
+ _$jscoverage['plugins/formatmatch.js'][76] = 0;
+ _$jscoverage['plugins/formatmatch.js'][77] = 0;
+ _$jscoverage['plugins/formatmatch.js'][78] = 0;
+ _$jscoverage['plugins/formatmatch.js'][79] = 0;
+ _$jscoverage['plugins/formatmatch.js'][80] = 0;
+ _$jscoverage['plugins/formatmatch.js'][84] = 0;
+ _$jscoverage['plugins/formatmatch.js'][87] = 0;
+ _$jscoverage['plugins/formatmatch.js'][88] = 0;
+ _$jscoverage['plugins/formatmatch.js'][89] = 0;
+ _$jscoverage['plugins/formatmatch.js'][90] = 0;
+ _$jscoverage['plugins/formatmatch.js'][91] = 0;
+ _$jscoverage['plugins/formatmatch.js'][93] = 0;
+ _$jscoverage['plugins/formatmatch.js'][94] = 0;
+ _$jscoverage['plugins/formatmatch.js'][95] = 0;
+ _$jscoverage['plugins/formatmatch.js'][97] = 0;
+ _$jscoverage['plugins/formatmatch.js'][98] = 0;
+ _$jscoverage['plugins/formatmatch.js'][101] = 0;
+ _$jscoverage['plugins/formatmatch.js'][102] = 0;
+ _$jscoverage['plugins/formatmatch.js'][110] = 0;
+ _$jscoverage['plugins/formatmatch.js'][111] = 0;
+ _$jscoverage['plugins/formatmatch.js'][112] = 0;
+ _$jscoverage['plugins/formatmatch.js'][115] = 0;
+ _$jscoverage['plugins/formatmatch.js'][118] = 0;
+ _$jscoverage['plugins/formatmatch.js'][119] = 0;
+ _$jscoverage['plugins/formatmatch.js'][120] = 0;
+ _$jscoverage['plugins/formatmatch.js'][121] = 0;
+ _$jscoverage['plugins/formatmatch.js'][122] = 0;
+ _$jscoverage['plugins/formatmatch.js'][127] = 0;
+ _$jscoverage['plugins/formatmatch.js'][128] = 0;
+ _$jscoverage['plugins/formatmatch.js'][129] = 0;
+ _$jscoverage['plugins/formatmatch.js'][130] = 0;
+ _$jscoverage['plugins/formatmatch.js'][131] = 0;
+ _$jscoverage['plugins/formatmatch.js'][132] = 0;
+ _$jscoverage['plugins/formatmatch.js'][133] = 0;
+ _$jscoverage['plugins/formatmatch.js'][136] = 0;
+ _$jscoverage['plugins/formatmatch.js'][137] = 0;
+ _$jscoverage['plugins/formatmatch.js'][138] = 0;
+ _$jscoverage['plugins/formatmatch.js'][139] = 0;
+ _$jscoverage['plugins/formatmatch.js'][145] = 0;
+ _$jscoverage['plugins/formatmatch.js'][146] = 0;
+ _$jscoverage['plugins/formatmatch.js'][151] = 0;
+}
+_$jscoverage['plugins/formatmatch.js'].source = ["///import core ","///import plugins\\removeformat.js ","///commands 格式刷 ","///commandsName FormatMatch ","///commandsTitle 格式刷 ","/** "," * 格式刷,只格式inline的 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 格式刷,对inline类型的文本内容执行格式刷操作 "," * @command formatmatch "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //获取格式刷 "," * editor.execCommand( 'formatmatch' ); "," * ``` "," */ ","","/** "," * 获取当前的格式状态 "," * @command formatmatch "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 如果当前的格式刷处于可用状态, 则返回1, 否则返回0 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //获取当前选中的文本内容的上标状态 "," * //output: 1 或者 0 "," * console.log( editor.queryCommandState( 'formatmatch' ) ); "," * ``` "," */ ","UE. plugins[ 'formatmatch' ] = function () { ",""," var me = this , "," list = [], img, "," flag = 0 ; ",""," me. addListener( 'reset' , function () { "," list = []; "," flag = 0 ; "," } ); ",""," function addList( type, evt) { "," "," if ( browser. webkit) { "," var target = evt. target. tagName == 'IMG' ? evt. target : null ; "," } ",""," function addFormat( range) { ",""," if ( text) { "," range. selectNode( text); "," } "," return range. applyInlineStyle( list[ list. length- 1 ]. tagName, null , list); ",""," } ",""," me. undoManger && me. undoManger. save(); ",""," var range = me. selection. getRange(), "," imgT = target || range. getClosedNode(); "," if ( img && imgT && imgT. tagName == 'IMG' ) { "," //trace:964 ",""," imgT. style. cssText += ';float:' + ( img. style. cssFloat || img. style. styleFloat || 'none' ) + ';display:' + ( img. style. display|| 'inline' ); ",""," img = null ; "," } else { "," if (! img) { "," var collapsed = range. collapsed; "," if ( collapsed) { "," var text = me. document. createTextNode( 'match' ); "," range. insertNode( text). select(); ","",""," } "," me. __hasEnterExecCommand = true ; "," //不能把block上的属性干掉 "," //trace:1553 "," var removeFormatAttributes = me. options. removeFormatAttributes; "," me. options. removeFormatAttributes = '' ; "," me. execCommand( 'removeformat' ); "," me. options. removeFormatAttributes = removeFormatAttributes; "," me. __hasEnterExecCommand = false ; "," //trace:969 "," range = me. selection. getRange(); "," if ( list. length) { "," addFormat( range); "," } "," if ( text) { "," range. setStartBefore( text). collapse( true ); ",""," } "," range. select(); "," text && domUtils. remove( text); "," } ",""," } ","","","",""," me. undoManger && me. undoManger. save(); "," me. removeListener( 'mouseup' , addList); "," flag = 0 ; "," } ",""," me. commands[ 'formatmatch' ] = { "," execCommand : function ( cmdName ) { "," "," if ( flag) { "," flag = 0 ; "," list = []; "," me. removeListener( 'mouseup' , addList); "," return ; "," } ","",""," "," var range = me. selection. getRange(); "," img = range. getClosedNode(); "," if (! img || img. tagName != 'IMG' ) { "," range. collapse( true ). shrinkBoundary(); "," var start = range. startContainer; "," list = domUtils. findParents( start, true , function ( node) { "," return ! domUtils. isBlockElm( node) && node. nodeType == 1 ; "," } ); "," //a不能加入格式刷, 并且克隆节点 "," for ( var i= 0 , ci; ci= list[ i]; i++) { "," if ( ci. tagName == 'A' ) { "," list. splice( i, 1 ); "," break ; "," } "," } ",""," } ",""," me. addListener( 'mouseup' , addList); "," flag = 1 ; ","",""," } , "," queryCommandState : function () { "," return flag; "," } , "," notNeedUndo : 1 "," } ; ","} ; ",""];
+_$jscoverage['plugins/formatmatch.js'][39]++;
+UE.plugins.formatmatch = (function () {
+ _$jscoverage['plugins/formatmatch.js'][41]++;
+ var me = this, list = [], img, flag = 0;
+ _$jscoverage['plugins/formatmatch.js'][45]++;
+ me.addListener("reset", (function () {
+ _$jscoverage['plugins/formatmatch.js'][46]++;
+ list = [];
+ _$jscoverage['plugins/formatmatch.js'][47]++;
+ flag = 0;
+}));
+ _$jscoverage['plugins/formatmatch.js'][50]++;
+ function addList(type, evt) {
+ _$jscoverage['plugins/formatmatch.js'][52]++;
+ if (browser.webkit) {
+ _$jscoverage['plugins/formatmatch.js'][53]++;
+ var target = ((evt.target.tagName == "IMG")? evt.target: null);
+ }
+ _$jscoverage['plugins/formatmatch.js'][56]++;
+ function addFormat(range) {
+ _$jscoverage['plugins/formatmatch.js'][58]++;
+ if (text) {
+ _$jscoverage['plugins/formatmatch.js'][59]++;
+ range.selectNode(text);
+ }
+ _$jscoverage['plugins/formatmatch.js'][61]++;
+ return range.applyInlineStyle(list[(list.length - 1)].tagName, null, list);
+}
+ _$jscoverage['plugins/formatmatch.js'][65]++;
+ (me.undoManger && me.undoManger.save());
+ _$jscoverage['plugins/formatmatch.js'][67]++;
+ var range = me.selection.getRange(), imgT = (target || range.getClosedNode());
+ _$jscoverage['plugins/formatmatch.js'][69]++;
+ if ((img && imgT && (imgT.tagName == "IMG"))) {
+ _$jscoverage['plugins/formatmatch.js'][72]++;
+ imgT.style.cssText += (";float:" + (img.style.cssFloat || img.style.styleFloat || "none") + ";display:" + (img.style.display || "inline"));
+ _$jscoverage['plugins/formatmatch.js'][74]++;
+ img = null;
+ }
+ else {
+ _$jscoverage['plugins/formatmatch.js'][76]++;
+ if ((! img)) {
+ _$jscoverage['plugins/formatmatch.js'][77]++;
+ var collapsed = range.collapsed;
+ _$jscoverage['plugins/formatmatch.js'][78]++;
+ if (collapsed) {
+ _$jscoverage['plugins/formatmatch.js'][79]++;
+ var text = me.document.createTextNode("match");
+ _$jscoverage['plugins/formatmatch.js'][80]++;
+ range.insertNode(text).select();
+ }
+ _$jscoverage['plugins/formatmatch.js'][84]++;
+ me.__hasEnterExecCommand = true;
+ _$jscoverage['plugins/formatmatch.js'][87]++;
+ var removeFormatAttributes = me.options.removeFormatAttributes;
+ _$jscoverage['plugins/formatmatch.js'][88]++;
+ me.options.removeFormatAttributes = "";
+ _$jscoverage['plugins/formatmatch.js'][89]++;
+ me.execCommand("removeformat");
+ _$jscoverage['plugins/formatmatch.js'][90]++;
+ me.options.removeFormatAttributes = removeFormatAttributes;
+ _$jscoverage['plugins/formatmatch.js'][91]++;
+ me.__hasEnterExecCommand = false;
+ _$jscoverage['plugins/formatmatch.js'][93]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/formatmatch.js'][94]++;
+ if (list.length) {
+ _$jscoverage['plugins/formatmatch.js'][95]++;
+ addFormat(range);
+ }
+ _$jscoverage['plugins/formatmatch.js'][97]++;
+ if (text) {
+ _$jscoverage['plugins/formatmatch.js'][98]++;
+ range.setStartBefore(text).collapse(true);
+ }
+ _$jscoverage['plugins/formatmatch.js'][101]++;
+ range.select();
+ _$jscoverage['plugins/formatmatch.js'][102]++;
+ (text && domUtils.remove(text));
+ }
+ }
+ _$jscoverage['plugins/formatmatch.js'][110]++;
+ (me.undoManger && me.undoManger.save());
+ _$jscoverage['plugins/formatmatch.js'][111]++;
+ me.removeListener("mouseup", addList);
+ _$jscoverage['plugins/formatmatch.js'][112]++;
+ flag = 0;
+}
+ _$jscoverage['plugins/formatmatch.js'][115]++;
+ me.commands.formatmatch = {execCommand: (function (cmdName) {
+ _$jscoverage['plugins/formatmatch.js'][118]++;
+ if (flag) {
+ _$jscoverage['plugins/formatmatch.js'][119]++;
+ flag = 0;
+ _$jscoverage['plugins/formatmatch.js'][120]++;
+ list = [];
+ _$jscoverage['plugins/formatmatch.js'][121]++;
+ me.removeListener("mouseup", addList);
+ _$jscoverage['plugins/formatmatch.js'][122]++;
+ return;
+ }
+ _$jscoverage['plugins/formatmatch.js'][127]++;
+ var range = me.selection.getRange();
+ _$jscoverage['plugins/formatmatch.js'][128]++;
+ img = range.getClosedNode();
+ _$jscoverage['plugins/formatmatch.js'][129]++;
+ if (((! img) || (img.tagName != "IMG"))) {
+ _$jscoverage['plugins/formatmatch.js'][130]++;
+ range.collapse(true).shrinkBoundary();
+ _$jscoverage['plugins/formatmatch.js'][131]++;
+ var start = range.startContainer;
+ _$jscoverage['plugins/formatmatch.js'][132]++;
+ list = domUtils.findParents(start, true, (function (node) {
+ _$jscoverage['plugins/formatmatch.js'][133]++;
+ return ((! domUtils.isBlockElm(node)) && (node.nodeType == 1));
+}));
+ _$jscoverage['plugins/formatmatch.js'][136]++;
+ for (var i = 0, ci; (ci = list[i]); (i++)) {
+ _$jscoverage['plugins/formatmatch.js'][137]++;
+ if ((ci.tagName == "A")) {
+ _$jscoverage['plugins/formatmatch.js'][138]++;
+ list.splice(i, 1);
+ _$jscoverage['plugins/formatmatch.js'][139]++;
+ break;
+ }
+}
+ }
+ _$jscoverage['plugins/formatmatch.js'][145]++;
+ me.addListener("mouseup", addList);
+ _$jscoverage['plugins/formatmatch.js'][146]++;
+ flag = 1;
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/formatmatch.js'][151]++;
+ return flag;
+}), notNeedUndo: 1};
+});
diff --git a/_test/coverage/plugins/horizontal.js b/_test/coverage/plugins/horizontal.js
new file mode 100644
index 000000000..f619da64d
--- /dev/null
+++ b/_test/coverage/plugins/horizontal.js
@@ -0,0 +1,149 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/horizontal.js']) {
+ _$jscoverage['plugins/horizontal.js'] = [];
+ _$jscoverage['plugins/horizontal.js'][28] = 0;
+ _$jscoverage['plugins/horizontal.js'][29] = 0;
+ _$jscoverage['plugins/horizontal.js'][30] = 0;
+ _$jscoverage['plugins/horizontal.js'][32] = 0;
+ _$jscoverage['plugins/horizontal.js'][33] = 0;
+ _$jscoverage['plugins/horizontal.js'][34] = 0;
+ _$jscoverage['plugins/horizontal.js'][35] = 0;
+ _$jscoverage['plugins/horizontal.js'][37] = 0;
+ _$jscoverage['plugins/horizontal.js'][39] = 0;
+ _$jscoverage['plugins/horizontal.js'][40] = 0;
+ _$jscoverage['plugins/horizontal.js'][41] = 0;
+ _$jscoverage['plugins/horizontal.js'][42] = 0;
+ _$jscoverage['plugins/horizontal.js'][43] = 0;
+ _$jscoverage['plugins/horizontal.js'][44] = 0;
+ _$jscoverage['plugins/horizontal.js'][45] = 0;
+ _$jscoverage['plugins/horizontal.js'][48] = 0;
+ _$jscoverage['plugins/horizontal.js'][49] = 0;
+ _$jscoverage['plugins/horizontal.js'][50] = 0;
+ _$jscoverage['plugins/horizontal.js'][56] = 0;
+ _$jscoverage['plugins/horizontal.js'][62] = 0;
+ _$jscoverage['plugins/horizontal.js'][98] = 0;
+ _$jscoverage['plugins/horizontal.js'][99] = 0;
+ _$jscoverage['plugins/horizontal.js'][100] = 0;
+ _$jscoverage['plugins/horizontal.js'][101] = 0;
+ _$jscoverage['plugins/horizontal.js'][102] = 0;
+ _$jscoverage['plugins/horizontal.js'][103] = 0;
+ _$jscoverage['plugins/horizontal.js'][104] = 0;
+ _$jscoverage['plugins/horizontal.js'][105] = 0;
+ _$jscoverage['plugins/horizontal.js'][106] = 0;
+ _$jscoverage['plugins/horizontal.js'][107] = 0;
+ _$jscoverage['plugins/horizontal.js'][108] = 0;
+}
+_$jscoverage['plugins/horizontal.js'].source = ["/** "," * 插入分割线插件 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 插入分割线,分割线是hr标签 "," * @command horizontal "," * @method execCommand "," * @param { String } cmdName 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'horizontal' ); "," * ``` "," */ ","","/** "," * 查询当前是否允许插入分割线 "," * @command horizontal "," * @method queryCommandState "," * @return { Int } 如果选区在表格里面,返回0,否则返回1 "," * @example "," * ```javascript "," * editor.queryCommandState( 'horizontal' ); "," * ``` "," */ ","UE. plugins[ 'horizontal' ] = function () { "," var me = this ; "," me. commands[ 'horizontal' ] = { "," execCommand : function ( cmdName ) { "," var me = this ; "," if ( me. queryCommandState( cmdName)!==- 1 ) { "," me. execCommand( 'insertHtml' , '<hr>' ); "," var range = me. selection. getRange(), "," start = range. startContainer; "," if ( start. nodeType == 1 && ! start. childNodes[ range. startOffset] ) { ",""," var tmp; "," if ( tmp = start. childNodes[ range. startOffset - 1 ]) { "," if ( tmp. nodeType == 1 && tmp. tagName == 'HR' ) { "," if ( me. options. enterTag == 'p' ) { "," tmp = me. document. createElement( 'p' ); "," range. insertNode( tmp); "," range. setStart( tmp, 0 ). setCursor(); ",""," } else { "," tmp = me. document. createElement( 'br' ); "," range. insertNode( tmp); "," range. setStartBefore( tmp). setCursor(); "," } "," } "," } ",""," } "," return true ; "," } ",""," } , "," //边界在table里不能加分隔线 "," queryCommandState : function () { "," return domUtils. filterNodeList( this . selection. getStartElementPath(), 'table' ) ? - 1 : 0 ; "," } "," } ; ","// me.addListener('delkeyup',function(){ ","// var rng = this.selection.getRange(); ","// if(browser.ie && browser.version > 8){ ","// rng.txtToElmBoundary(true); ","// if(domUtils.isStartInblock(rng)){ ","// var tmpNode = rng.startContainer; ","// var pre = tmpNode.previousSibling; ","// if(pre && domUtils.isTagNode(pre,'hr')){ ","// domUtils.remove(pre); ","// rng.select(); ","// return; ","// } ","// } ","// } ","// if(domUtils.isBody(rng.startContainer)){ ","// var hr = rng.startContainer.childNodes[rng.startOffset -1]; ","// if(hr && hr.nodeName == 'HR'){ ","// var next = hr.nextSibling; ","// if(next){ ","// rng.setStart(next,0) ","// }else if(hr.previousSibling){ ","// rng.setStartAtLast(hr.previousSibling) ","// }else{ ","// var p = this.document.createElement('p'); ","// hr.parentNode.insertBefore(p,hr); ","// domUtils.fillNode(this.document,p); ","// rng.setStart(p,0); ","// } ","// domUtils.remove(hr); ","// rng.setCursor(false,true); ","// } ","// } ","// }) "," me. addListener( 'delkeydown' , function ( name, evt) { "," var rng = this . selection. getRange(); "," rng. txtToElmBoundary( true ); "," if ( domUtils. isStartInblock( rng)) { "," var tmpNode = rng. startContainer; "," var pre = tmpNode. previousSibling; "," if ( pre && domUtils. isTagNode( pre, 'hr' )) { "," domUtils. remove( pre); "," rng. select(); "," domUtils. preventDefault( evt); "," return true ; ",""," } "," } ",""," } ) ","} ; ",""];
+_$jscoverage['plugins/horizontal.js'][28]++;
+UE.plugins.horizontal = (function () {
+ _$jscoverage['plugins/horizontal.js'][29]++;
+ var me = this;
+ _$jscoverage['plugins/horizontal.js'][30]++;
+ me.commands.horizontal = {execCommand: (function (cmdName) {
+ _$jscoverage['plugins/horizontal.js'][32]++;
+ var me = this;
+ _$jscoverage['plugins/horizontal.js'][33]++;
+ if ((me.queryCommandState(cmdName) !== -1)) {
+ _$jscoverage['plugins/horizontal.js'][34]++;
+ me.execCommand("insertHtml", "
");
+ _$jscoverage['plugins/horizontal.js'][35]++;
+ var range = me.selection.getRange(), start = range.startContainer;
+ _$jscoverage['plugins/horizontal.js'][37]++;
+ if (((start.nodeType == 1) && (! start.childNodes[range.startOffset]))) {
+ _$jscoverage['plugins/horizontal.js'][39]++;
+ var tmp;
+ _$jscoverage['plugins/horizontal.js'][40]++;
+ if ((tmp = start.childNodes[(range.startOffset - 1)])) {
+ _$jscoverage['plugins/horizontal.js'][41]++;
+ if (((tmp.nodeType == 1) && (tmp.tagName == "HR"))) {
+ _$jscoverage['plugins/horizontal.js'][42]++;
+ if ((me.options.enterTag == "p")) {
+ _$jscoverage['plugins/horizontal.js'][43]++;
+ tmp = me.document.createElement("p");
+ _$jscoverage['plugins/horizontal.js'][44]++;
+ range.insertNode(tmp);
+ _$jscoverage['plugins/horizontal.js'][45]++;
+ range.setStart(tmp, 0).setCursor();
+ }
+ else {
+ _$jscoverage['plugins/horizontal.js'][48]++;
+ tmp = me.document.createElement("br");
+ _$jscoverage['plugins/horizontal.js'][49]++;
+ range.insertNode(tmp);
+ _$jscoverage['plugins/horizontal.js'][50]++;
+ range.setStartBefore(tmp).setCursor();
+ }
+ }
+ }
+ }
+ _$jscoverage['plugins/horizontal.js'][56]++;
+ return true;
+ }
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/horizontal.js'][62]++;
+ return (domUtils.filterNodeList(this.selection.getStartElementPath(), "table")? -1: 0);
+})};
+ _$jscoverage['plugins/horizontal.js'][98]++;
+ me.addListener("delkeydown", (function (name, evt) {
+ _$jscoverage['plugins/horizontal.js'][99]++;
+ var rng = this.selection.getRange();
+ _$jscoverage['plugins/horizontal.js'][100]++;
+ rng.txtToElmBoundary(true);
+ _$jscoverage['plugins/horizontal.js'][101]++;
+ if (domUtils.isStartInblock(rng)) {
+ _$jscoverage['plugins/horizontal.js'][102]++;
+ var tmpNode = rng.startContainer;
+ _$jscoverage['plugins/horizontal.js'][103]++;
+ var pre = tmpNode.previousSibling;
+ _$jscoverage['plugins/horizontal.js'][104]++;
+ if ((pre && domUtils.isTagNode(pre, "hr"))) {
+ _$jscoverage['plugins/horizontal.js'][105]++;
+ domUtils.remove(pre);
+ _$jscoverage['plugins/horizontal.js'][106]++;
+ rng.select();
+ _$jscoverage['plugins/horizontal.js'][107]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/horizontal.js'][108]++;
+ return true;
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/iframe.js b/_test/coverage/plugins/iframe.js
new file mode 100644
index 000000000..33406b245
--- /dev/null
+++ b/_test/coverage/plugins/iframe.js
@@ -0,0 +1,64 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/iframe.js']) {
+ _$jscoverage['plugins/iframe.js'] = [];
+ _$jscoverage['plugins/iframe.js'][8] = 0;
+ _$jscoverage['plugins/iframe.js'][9] = 0;
+ _$jscoverage['plugins/iframe.js'][10] = 0;
+ _$jscoverage['plugins/iframe.js'][11] = 0;
+ _$jscoverage['plugins/iframe.js'][14] = 0;
+ _$jscoverage['plugins/iframe.js'][15] = 0;
+}
+_$jscoverage['plugins/iframe.js'].source = ["///import core ","///import plugins\\inserthtml.js ","///commands 插入框架 ","///commandsName InsertFrame ","///commandsTitle 插入Iframe ","///commandsDialog dialogs\\insertframe ","","UE. plugins[ 'insertframe' ] = function () { "," var me = this ; "," function deleteIframe() { "," me. _iframe && delete me. _iframe; "," } ",""," me. addListener( \"selectionchange\" , function () { "," deleteIframe(); "," } ); ","","} ; ",""];
+_$jscoverage['plugins/iframe.js'][8]++;
+UE.plugins.insertframe = (function () {
+ _$jscoverage['plugins/iframe.js'][9]++;
+ var me = this;
+ _$jscoverage['plugins/iframe.js'][10]++;
+ function deleteIframe() {
+ _$jscoverage['plugins/iframe.js'][11]++;
+ (me._iframe && (delete me._iframe));
+}
+ _$jscoverage['plugins/iframe.js'][14]++;
+ me.addListener("selectionchange", (function () {
+ _$jscoverage['plugins/iframe.js'][15]++;
+ deleteIframe();
+}));
+});
diff --git a/_test/coverage/plugins/image.js b/_test/coverage/plugins/image.js
new file mode 100644
index 000000000..5c6b26110
--- /dev/null
+++ b/_test/coverage/plugins/image.js
@@ -0,0 +1,354 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/image.js']) {
+ _$jscoverage['plugins/image.js'] = [];
+ _$jscoverage['plugins/image.js'][41] = 0;
+ _$jscoverage['plugins/image.js'][43] = 0;
+ _$jscoverage['plugins/image.js'][45] = 0;
+ _$jscoverage['plugins/image.js'][46] = 0;
+ _$jscoverage['plugins/image.js'][47] = 0;
+ _$jscoverage['plugins/image.js'][48] = 0;
+ _$jscoverage['plugins/image.js'][52] = 0;
+ _$jscoverage['plugins/image.js'][53] = 0;
+ _$jscoverage['plugins/image.js'][54] = 0;
+ _$jscoverage['plugins/image.js'][56] = 0;
+ _$jscoverage['plugins/image.js'][57] = 0;
+ _$jscoverage['plugins/image.js'][58] = 0;
+ _$jscoverage['plugins/image.js'][59] = 0;
+ _$jscoverage['plugins/image.js'][61] = 0;
+ _$jscoverage['plugins/image.js'][62] = 0;
+ _$jscoverage['plugins/image.js'][63] = 0;
+ _$jscoverage['plugins/image.js'][64] = 0;
+ _$jscoverage['plugins/image.js'][65] = 0;
+ _$jscoverage['plugins/image.js'][66] = 0;
+ _$jscoverage['plugins/image.js'][68] = 0;
+ _$jscoverage['plugins/image.js'][69] = 0;
+ _$jscoverage['plugins/image.js'][71] = 0;
+ _$jscoverage['plugins/image.js'][77] = 0;
+ _$jscoverage['plugins/image.js'][79] = 0;
+ _$jscoverage['plugins/image.js'][80] = 0;
+ _$jscoverage['plugins/image.js'][81] = 0;
+ _$jscoverage['plugins/image.js'][84] = 0;
+ _$jscoverage['plugins/image.js'][86] = 0;
+ _$jscoverage['plugins/image.js'][87] = 0;
+ _$jscoverage['plugins/image.js'][88] = 0;
+ _$jscoverage['plugins/image.js'][89] = 0;
+ _$jscoverage['plugins/image.js'][90] = 0;
+ _$jscoverage['plugins/image.js'][91] = 0;
+ _$jscoverage['plugins/image.js'][92] = 0;
+ _$jscoverage['plugins/image.js'][95] = 0;
+ _$jscoverage['plugins/image.js'][96] = 0;
+ _$jscoverage['plugins/image.js'][98] = 0;
+ _$jscoverage['plugins/image.js'][99] = 0;
+ _$jscoverage['plugins/image.js'][100] = 0;
+ _$jscoverage['plugins/image.js'][101] = 0;
+ _$jscoverage['plugins/image.js'][103] = 0;
+ _$jscoverage['plugins/image.js'][105] = 0;
+ _$jscoverage['plugins/image.js'][106] = 0;
+ _$jscoverage['plugins/image.js'][107] = 0;
+ _$jscoverage['plugins/image.js'][108] = 0;
+ _$jscoverage['plugins/image.js'][110] = 0;
+ _$jscoverage['plugins/image.js'][111] = 0;
+ _$jscoverage['plugins/image.js'][112] = 0;
+ _$jscoverage['plugins/image.js'][117] = 0;
+ _$jscoverage['plugins/image.js'][124] = 0;
+ _$jscoverage['plugins/image.js'][126] = 0;
+ _$jscoverage['plugins/image.js'][127] = 0;
+ _$jscoverage['plugins/image.js'][129] = 0;
+ _$jscoverage['plugins/image.js'][130] = 0;
+ _$jscoverage['plugins/image.js'][131] = 0;
+ _$jscoverage['plugins/image.js'][132] = 0;
+ _$jscoverage['plugins/image.js'][133] = 0;
+ _$jscoverage['plugins/image.js'][135] = 0;
+ _$jscoverage['plugins/image.js'][141] = 0;
+ _$jscoverage['plugins/image.js'][146] = 0;
+ _$jscoverage['plugins/image.js'][149] = 0;
+ _$jscoverage['plugins/image.js'][151] = 0;
+ _$jscoverage['plugins/image.js'][152] = 0;
+ _$jscoverage['plugins/image.js'][153] = 0;
+ _$jscoverage['plugins/image.js'][155] = 0;
+ _$jscoverage['plugins/image.js'][173] = 0;
+ _$jscoverage['plugins/image.js'][176] = 0;
+ _$jscoverage['plugins/image.js'][177] = 0;
+ _$jscoverage['plugins/image.js'][178] = 0;
+ _$jscoverage['plugins/image.js'][180] = 0;
+ _$jscoverage['plugins/image.js'][183] = 0;
+ _$jscoverage['plugins/image.js'][184] = 0;
+ _$jscoverage['plugins/image.js'][185] = 0;
+ _$jscoverage['plugins/image.js'][186] = 0;
+ _$jscoverage['plugins/image.js'][190] = 0;
+ _$jscoverage['plugins/image.js'][191] = 0;
+ _$jscoverage['plugins/image.js'][192] = 0;
+ _$jscoverage['plugins/image.js'][193] = 0;
+ _$jscoverage['plugins/image.js'][194] = 0;
+ _$jscoverage['plugins/image.js'][198] = 0;
+ _$jscoverage['plugins/image.js'][199] = 0;
+ _$jscoverage['plugins/image.js'][200] = 0;
+ _$jscoverage['plugins/image.js'][201] = 0;
+ _$jscoverage['plugins/image.js'][210] = 0;
+ _$jscoverage['plugins/image.js'][211] = 0;
+ _$jscoverage['plugins/image.js'][213] = 0;
+ _$jscoverage['plugins/image.js'][216] = 0;
+ _$jscoverage['plugins/image.js'][217] = 0;
+ _$jscoverage['plugins/image.js'][223] = 0;
+ _$jscoverage['plugins/image.js'][227] = 0;
+}
+_$jscoverage['plugins/image.js'].source = ["/** "," * 图片插入、排版插件 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 对图片居左居中居右排版 "," * @command imagefloat "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } align 对齐方式,可传left、right、none、center "," * @example "," * ```javascript "," * editor.execCommand( 'imagefloat', 'center' ); "," * ``` "," */ ","","/** "," * 如果选区所在位置是图片区域 "," * @command imagefloat "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回图片对齐方式 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'imagefloat' ); "," * ``` "," */ ","/** "," * 返回当前选区位置是否是图片 "," * @command imagefloat "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 0为是,-1为不是 "," * @example "," * ```javascript "," * editor.queryCommandState( 'imagefloat' ); "," * ``` "," */ ","UE. commands[ 'imagefloat' ] = { "," execCommand: function ( cmd, align) { "," var me = this , "," range = me. selection. getRange(); "," if (! range. collapsed) { "," var img = range. getClosedNode(); "," if ( img && img. tagName == 'IMG' ) { "," switch ( align) { "," case 'left' : "," case 'right' : "," case 'none' : "," var pN = img. parentNode, tmpNode, pre, next; "," while ( dtd. $inline[ pN. tagName] || pN. tagName == 'A' ) { "," pN = pN. parentNode; "," } "," tmpNode = pN; "," if ( tmpNode. tagName == 'P' && domUtils. getStyle( tmpNode, 'text-align' ) == 'center' ) { "," if (! domUtils. isBody( tmpNode) && domUtils. getChildCount( tmpNode, function ( node) { "," return ! domUtils. isBr( node) && ! domUtils. isWhitespace( node); "," } ) == 1 ) { "," pre = tmpNode. previousSibling; "," next = tmpNode. nextSibling; "," if ( pre && next && pre. nodeType == 1 && next. nodeType == 1 && pre. tagName == next. tagName && domUtils. isBlockElm( pre)) { "," pre. appendChild( tmpNode. firstChild); "," while ( next. firstChild) { "," pre. appendChild( next. firstChild); "," } "," domUtils. remove( tmpNode); "," domUtils. remove( next); "," } else { "," domUtils. setStyle( tmpNode, 'text-align' , '' ); "," } ","",""," } ",""," range. selectNode( img). select(); "," } "," domUtils. setStyle( img, 'float' , align == 'none' ? '' : align); "," if ( align == 'none' ) { "," domUtils. removeAttributes( img, 'align' ); "," } ",""," break ; "," case 'center' : "," if ( me. queryCommandValue( 'imagefloat' ) != 'center' ) { "," pN = img. parentNode; "," domUtils. setStyle( img, 'float' , '' ); "," domUtils. removeAttributes( img, 'align' ); "," tmpNode = img; "," while ( pN && domUtils. getChildCount( pN, function ( node) { "," return ! domUtils. isBr( node) && ! domUtils. isWhitespace( node); "," } ) == 1 "," && ( dtd. $inline[ pN. tagName] || pN. tagName == 'A' )) { "," tmpNode = pN; "," pN = pN. parentNode; "," } "," range. setStartBefore( tmpNode). setCursor( false ); "," pN = me. document. createElement( 'div' ); "," pN. appendChild( tmpNode); "," domUtils. setStyle( tmpNode, 'float' , '' ); ",""," me. execCommand( 'insertHtml' , '<p id=\"_img_parent_tmp\" style=\"text-align:center\">' + pN. innerHTML + '</p>' ); ",""," tmpNode = me. document. getElementById( '_img_parent_tmp' ); "," tmpNode. removeAttribute( 'id' ); "," tmpNode = tmpNode. firstChild; "," range. selectNode( tmpNode). select(); "," //去掉后边多余的元素 "," next = tmpNode. parentNode. nextSibling; "," if ( next && domUtils. isEmptyNode( next)) { "," domUtils. remove( next); "," } ",""," } ",""," break ; "," } ",""," } "," } "," } , "," queryCommandValue: function () { "," var range = this . selection. getRange(), "," startNode, floatStyle; "," if ( range. collapsed) { "," return 'none' ; "," } "," startNode = range. getClosedNode(); "," if ( startNode && startNode. nodeType == 1 && startNode. tagName == 'IMG' ) { "," floatStyle = startNode. getAttribute( 'align' )|| domUtils. getComputedStyle( startNode, 'float' ); "," if ( floatStyle == 'none' ) { "," floatStyle = domUtils. getComputedStyle( startNode. parentNode, 'text-align' ) == 'center' ? 'center' : floatStyle; "," } "," return { "," left: 1 , "," right: 1 , "," center: 1 "," } [ floatStyle] ? floatStyle : 'none' ; "," } "," return 'none' ; ","",""," } , "," queryCommandState: function () { "," var range = this . selection. getRange(), "," startNode; ",""," if ( range. collapsed) return - 1 ; ",""," startNode = range. getClosedNode(); "," if ( startNode && startNode. nodeType == 1 && startNode. tagName == 'IMG' ) { "," return 0 ; "," } "," return - 1 ; "," } ","} ; ","/** "," * 向编辑器插入图片 "," * @command insertimage "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { Object } opt 属性键值对,这些属性都将被复制到当前插入图片 "," * @example "," * ```javascript "," * editor.execCommand( 'insertimage', { "," * src:'a/b/c.jpg', "," * width:'100', "," * height:'100' "," * } ); "," * ``` "," */ ","UE. commands[ 'insertimage' ] = { "," execCommand: function ( cmd, opt) { ",""," opt = utils. isArray( opt) ? opt : [ opt]; "," if (! opt. length) { "," return ; "," } "," var me = this , "," range = me. selection. getRange(), "," img = range. getClosedNode(); "," if ( img && /img/i . test( img. tagName) && img. className != \"edui-faked-video\" && ! img. getAttribute( \"word_img\" )) { "," var first = opt. shift(); "," var floatStyle = first[ 'floatStyle' ]; "," delete first[ 'floatStyle' ]; ","//// img.style.border = (first.border||0) +\"px solid #000\"; ","//// img.style.margin = (first.margin||0) +\"px\"; ","// img.style.cssText += ';margin:' + (first.margin||0) +\"px;\" + 'border:' + (first.border||0) +\"px solid #000\"; "," domUtils. setAttributes( img, first); "," me. execCommand( 'imagefloat' , floatStyle); "," if ( opt. length > 0 ) { "," range. setStartAfter( img). setCursor( false , true ); "," me. execCommand( 'insertimage' , opt); "," } ",""," } else { "," var html = [], str = '' , ci; "," ci = opt[ 0 ]; "," if ( opt. length == 1 ) { "," str = '<img src=\"' + ci. src + '\" ' + ( ci. _src ? ' _src=\"' + ci. _src + '\" ' : '' ) + "," ( ci. width ? 'width=\"' + ci. width + '\" ' : '' ) + "," ( ci. height ? ' height=\"' + ci. height + '\" ' : '' ) + "," ( ci[ 'floatStyle' ] == 'left' || ci[ 'floatStyle' ] == 'right' ? ' style=\"float:' + ci[ 'floatStyle' ] + ';\"' : '' ) + "," ( ci. title && ci. title != \"\" ? ' title=\"' + ci. title + '\"' : '' ) + "," ( ci. border && ci. border != \"0\" ? ' border=\"' + ci. border + '\"' : '' ) + "," ( ci. alt && ci. alt != \"\" ? ' alt=\"' + ci. alt + '\"' : '' ) + "," ( ci. hspace && ci. hspace != \"0\" ? ' hspace = \"' + ci. hspace + '\"' : '' ) + "," ( ci. vspace && ci. vspace != \"0\" ? ' vspace = \"' + ci. vspace + '\"' : '' ) + '/>' ; "," if ( ci[ 'floatStyle' ] == 'center' ) { "," str = '<p style=\"text-align: center\">' + str + '</p>' ; "," } "," html. push( str); ",""," } else { "," for ( var i = 0 ; ci = opt[ i++];) { "," str = '<p ' + ( ci[ 'floatStyle' ] == 'center' ? 'style=\"text-align: center\" ' : '' ) + '><img src=\"' + ci. src + '\" ' + "," ( ci. width ? 'width=\"' + ci. width + '\" ' : '' ) + ( ci. _src ? ' _src=\"' + ci. _src + '\" ' : '' ) + "," ( ci. height ? ' height=\"' + ci. height + '\" ' : '' ) + "," ' style=\"' + ( ci[ 'floatStyle' ] && ci[ 'floatStyle' ] != 'center' ? 'float:' + ci[ 'floatStyle' ] + ';' : '' ) + "," ( ci. border || '' ) + '\" ' + "," ( ci. title ? ' title=\"' + ci. title + '\"' : '' ) + ' /></p>' ; "," html. push( str); "," } "," } ",""," me. execCommand( 'insertHtml' , html. join( '' )); "," } "," } ","} ; "];
+_$jscoverage['plugins/image.js'][41]++;
+UE.commands.imagefloat = {execCommand: (function (cmd, align) {
+ _$jscoverage['plugins/image.js'][43]++;
+ var me = this, range = me.selection.getRange();
+ _$jscoverage['plugins/image.js'][45]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/image.js'][46]++;
+ var img = range.getClosedNode();
+ _$jscoverage['plugins/image.js'][47]++;
+ if ((img && (img.tagName == "IMG"))) {
+ _$jscoverage['plugins/image.js'][48]++;
+ switch (align) {
+ case "left":
+ case "right":
+ case "none":
+ _$jscoverage['plugins/image.js'][52]++;
+ var pN = img.parentNode, tmpNode, pre, next;
+ _$jscoverage['plugins/image.js'][53]++;
+ while ((dtd.$inline[pN.tagName] || (pN.tagName == "A"))) {
+ _$jscoverage['plugins/image.js'][54]++;
+ pN = pN.parentNode;
+}
+ _$jscoverage['plugins/image.js'][56]++;
+ tmpNode = pN;
+ _$jscoverage['plugins/image.js'][57]++;
+ if (((tmpNode.tagName == "P") && (domUtils.getStyle(tmpNode, "text-align") == "center"))) {
+ _$jscoverage['plugins/image.js'][58]++;
+ if (((! domUtils.isBody(tmpNode)) && (domUtils.getChildCount(tmpNode, (function (node) {
+ _$jscoverage['plugins/image.js'][59]++;
+ return ((! domUtils.isBr(node)) && (! domUtils.isWhitespace(node)));
+})) == 1))) {
+ _$jscoverage['plugins/image.js'][61]++;
+ pre = tmpNode.previousSibling;
+ _$jscoverage['plugins/image.js'][62]++;
+ next = tmpNode.nextSibling;
+ _$jscoverage['plugins/image.js'][63]++;
+ if ((pre && next && (pre.nodeType == 1) && (next.nodeType == 1) && (pre.tagName == next.tagName) && domUtils.isBlockElm(pre))) {
+ _$jscoverage['plugins/image.js'][64]++;
+ pre.appendChild(tmpNode.firstChild);
+ _$jscoverage['plugins/image.js'][65]++;
+ while (next.firstChild) {
+ _$jscoverage['plugins/image.js'][66]++;
+ pre.appendChild(next.firstChild);
+}
+ _$jscoverage['plugins/image.js'][68]++;
+ domUtils.remove(tmpNode);
+ _$jscoverage['plugins/image.js'][69]++;
+ domUtils.remove(next);
+ }
+ else {
+ _$jscoverage['plugins/image.js'][71]++;
+ domUtils.setStyle(tmpNode, "text-align", "");
+ }
+ }
+ _$jscoverage['plugins/image.js'][77]++;
+ range.selectNode(img).select();
+ }
+ _$jscoverage['plugins/image.js'][79]++;
+ domUtils.setStyle(img, "float", ((align == "none")? "": align));
+ _$jscoverage['plugins/image.js'][80]++;
+ if ((align == "none")) {
+ _$jscoverage['plugins/image.js'][81]++;
+ domUtils.removeAttributes(img, "align");
+ }
+ _$jscoverage['plugins/image.js'][84]++;
+ break;
+ case "center":
+ _$jscoverage['plugins/image.js'][86]++;
+ if ((me.queryCommandValue("imagefloat") != "center")) {
+ _$jscoverage['plugins/image.js'][87]++;
+ pN = img.parentNode;
+ _$jscoverage['plugins/image.js'][88]++;
+ domUtils.setStyle(img, "float", "");
+ _$jscoverage['plugins/image.js'][89]++;
+ domUtils.removeAttributes(img, "align");
+ _$jscoverage['plugins/image.js'][90]++;
+ tmpNode = img;
+ _$jscoverage['plugins/image.js'][91]++;
+ while ((pN && (domUtils.getChildCount(pN, (function (node) {
+ _$jscoverage['plugins/image.js'][92]++;
+ return ((! domUtils.isBr(node)) && (! domUtils.isWhitespace(node)));
+})) == 1) && (dtd.$inline[pN.tagName] || (pN.tagName == "A")))) {
+ _$jscoverage['plugins/image.js'][95]++;
+ tmpNode = pN;
+ _$jscoverage['plugins/image.js'][96]++;
+ pN = pN.parentNode;
+}
+ _$jscoverage['plugins/image.js'][98]++;
+ range.setStartBefore(tmpNode).setCursor(false);
+ _$jscoverage['plugins/image.js'][99]++;
+ pN = me.document.createElement("div");
+ _$jscoverage['plugins/image.js'][100]++;
+ pN.appendChild(tmpNode);
+ _$jscoverage['plugins/image.js'][101]++;
+ domUtils.setStyle(tmpNode, "float", "");
+ _$jscoverage['plugins/image.js'][103]++;
+ me.execCommand("insertHtml", ("" + pN.innerHTML + "
"));
+ _$jscoverage['plugins/image.js'][105]++;
+ tmpNode = me.document.getElementById("_img_parent_tmp");
+ _$jscoverage['plugins/image.js'][106]++;
+ tmpNode.removeAttribute("id");
+ _$jscoverage['plugins/image.js'][107]++;
+ tmpNode = tmpNode.firstChild;
+ _$jscoverage['plugins/image.js'][108]++;
+ range.selectNode(tmpNode).select();
+ _$jscoverage['plugins/image.js'][110]++;
+ next = tmpNode.parentNode.nextSibling;
+ _$jscoverage['plugins/image.js'][111]++;
+ if ((next && domUtils.isEmptyNode(next))) {
+ _$jscoverage['plugins/image.js'][112]++;
+ domUtils.remove(next);
+ }
+ }
+ _$jscoverage['plugins/image.js'][117]++;
+ break;
+ }
+ }
+ }
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/image.js'][124]++;
+ var range = this.selection.getRange(), startNode, floatStyle;
+ _$jscoverage['plugins/image.js'][126]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/image.js'][127]++;
+ return "none";
+ }
+ _$jscoverage['plugins/image.js'][129]++;
+ startNode = range.getClosedNode();
+ _$jscoverage['plugins/image.js'][130]++;
+ if ((startNode && (startNode.nodeType == 1) && (startNode.tagName == "IMG"))) {
+ _$jscoverage['plugins/image.js'][131]++;
+ floatStyle = (startNode.getAttribute("align") || domUtils.getComputedStyle(startNode, "float"));
+ _$jscoverage['plugins/image.js'][132]++;
+ if ((floatStyle == "none")) {
+ _$jscoverage['plugins/image.js'][133]++;
+ floatStyle = ((domUtils.getComputedStyle(startNode.parentNode, "text-align") == "center")? "center": floatStyle);
+ }
+ _$jscoverage['plugins/image.js'][135]++;
+ return ({left: 1, right: 1, center: 1}[floatStyle]? floatStyle: "none");
+ }
+ _$jscoverage['plugins/image.js'][141]++;
+ return "none";
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/image.js'][146]++;
+ var range = this.selection.getRange(), startNode;
+ _$jscoverage['plugins/image.js'][149]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/image.js'][149]++;
+ return -1;
+ }
+ _$jscoverage['plugins/image.js'][151]++;
+ startNode = range.getClosedNode();
+ _$jscoverage['plugins/image.js'][152]++;
+ if ((startNode && (startNode.nodeType == 1) && (startNode.tagName == "IMG"))) {
+ _$jscoverage['plugins/image.js'][153]++;
+ return 0;
+ }
+ _$jscoverage['plugins/image.js'][155]++;
+ return -1;
+})};
+_$jscoverage['plugins/image.js'][173]++;
+UE.commands.insertimage = {execCommand: (function (cmd, opt) {
+ _$jscoverage['plugins/image.js'][176]++;
+ opt = (utils.isArray(opt)? opt: [opt]);
+ _$jscoverage['plugins/image.js'][177]++;
+ if ((! opt.length)) {
+ _$jscoverage['plugins/image.js'][178]++;
+ return;
+ }
+ _$jscoverage['plugins/image.js'][180]++;
+ var me = this, range = me.selection.getRange(), img = range.getClosedNode();
+ _$jscoverage['plugins/image.js'][183]++;
+ if ((img && /img/i.test(img.tagName) && (img.className != "edui-faked-video") && (! img.getAttribute("word_img")))) {
+ _$jscoverage['plugins/image.js'][184]++;
+ var first = opt.shift();
+ _$jscoverage['plugins/image.js'][185]++;
+ var floatStyle = first.floatStyle;
+ _$jscoverage['plugins/image.js'][186]++;
+ (delete first.floatStyle);
+ _$jscoverage['plugins/image.js'][190]++;
+ domUtils.setAttributes(img, first);
+ _$jscoverage['plugins/image.js'][191]++;
+ me.execCommand("imagefloat", floatStyle);
+ _$jscoverage['plugins/image.js'][192]++;
+ if ((opt.length > 0)) {
+ _$jscoverage['plugins/image.js'][193]++;
+ range.setStartAfter(img).setCursor(false, true);
+ _$jscoverage['plugins/image.js'][194]++;
+ me.execCommand("insertimage", opt);
+ }
+ }
+ else {
+ _$jscoverage['plugins/image.js'][198]++;
+ var html = [], str = "", ci;
+ _$jscoverage['plugins/image.js'][199]++;
+ ci = opt[0];
+ _$jscoverage['plugins/image.js'][200]++;
+ if ((opt.length == 1)) {
+ _$jscoverage['plugins/image.js'][201]++;
+ str = (" ");
+ _$jscoverage['plugins/image.js'][210]++;
+ if ((ci.floatStyle == "center")) {
+ _$jscoverage['plugins/image.js'][211]++;
+ str = ("" + str + "
");
+ }
+ _$jscoverage['plugins/image.js'][213]++;
+ html.push(str);
+ }
+ else {
+ _$jscoverage['plugins/image.js'][216]++;
+ for (var i = 0; (ci = opt[(i++)]);) {
+ _$jscoverage['plugins/image.js'][217]++;
+ str = ("
");
+ _$jscoverage['plugins/image.js'][223]++;
+ html.push(str);
+}
+ }
+ _$jscoverage['plugins/image.js'][227]++;
+ me.execCommand("insertHtml", html.join(""));
+ }
+})};
diff --git a/_test/coverage/plugins/indent.js b/_test/coverage/plugins/indent.js
new file mode 100644
index 000000000..83ae81e5c
--- /dev/null
+++ b/_test/coverage/plugins/indent.js
@@ -0,0 +1,60 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/indent.js']) {
+ _$jscoverage['plugins/indent.js'] = [];
+ _$jscoverage['plugins/indent.js'][30] = 0;
+ _$jscoverage['plugins/indent.js'][32] = 0;
+ _$jscoverage['plugins/indent.js'][33] = 0;
+ _$jscoverage['plugins/indent.js'][36] = 0;
+ _$jscoverage['plugins/indent.js'][37] = 0;
+}
+_$jscoverage['plugins/indent.js'].source = ["/** "," * 缩进 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 给选区内文本添加缩进 "," * @command indent "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'indent' ); "," * ``` "," */ ","","/** "," * 返回当前选区位置是否有缩进 "," * @command indent "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 0为不是,1为是 "," * @example "," * ```javascript "," * editor.queryCommandState( 'indent' ); "," * ``` "," */ ","","UE. commands[ 'indent' ] = { "," execCommand : function () { "," var me = this , value = me. queryCommandState( \"indent\" ) ? \"0em\" : ( me. options. indentValue || '2em' ); "," me. execCommand( 'Paragraph' , 'p' , { style: 'text-indent:' + value} ); "," } , "," queryCommandState : function () { "," var pN = domUtils. filterNodeList( this . selection. getStartElementPath(), 'p h1 h2 h3 h4 h5 h6' ); "," return pN && pN. style. textIndent && parseInt( pN. style. textIndent) ? 1 : 0 ; "," } ","","} ; "];
+_$jscoverage['plugins/indent.js'][30]++;
+UE.commands.indent = {execCommand: (function () {
+ _$jscoverage['plugins/indent.js'][32]++;
+ var me = this, value = (me.queryCommandState("indent")? "0em": (me.options.indentValue || "2em"));
+ _$jscoverage['plugins/indent.js'][33]++;
+ me.execCommand("Paragraph", "p", {style: ("text-indent:" + value)});
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/indent.js'][36]++;
+ var pN = domUtils.filterNodeList(this.selection.getStartElementPath(), "p h1 h2 h3 h4 h5 h6");
+ _$jscoverage['plugins/indent.js'][37]++;
+ return ((pN && pN.style.textIndent && parseInt(pN.style.textIndent))? 1: 0);
+})};
diff --git a/_test/coverage/plugins/insertcode.js b/_test/coverage/plugins/insertcode.js
new file mode 100644
index 000000000..a870678b8
--- /dev/null
+++ b/_test/coverage/plugins/insertcode.js
@@ -0,0 +1,1066 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/insertcode.js']) {
+ _$jscoverage['plugins/insertcode.js'] = [];
+ _$jscoverage['plugins/insertcode.js'][7] = 0;
+ _$jscoverage['plugins/insertcode.js'][8] = 0;
+ _$jscoverage['plugins/insertcode.js'][9] = 0;
+ _$jscoverage['plugins/insertcode.js'][10] = 0;
+ _$jscoverage['plugins/insertcode.js'][13] = 0;
+ _$jscoverage['plugins/insertcode.js'][63] = 0;
+ _$jscoverage['plugins/insertcode.js'][65] = 0;
+ _$jscoverage['plugins/insertcode.js'][68] = 0;
+ _$jscoverage['plugins/insertcode.js'][69] = 0;
+ _$jscoverage['plugins/insertcode.js'][71] = 0;
+ _$jscoverage['plugins/insertcode.js'][72] = 0;
+ _$jscoverage['plugins/insertcode.js'][73] = 0;
+ _$jscoverage['plugins/insertcode.js'][75] = 0;
+ _$jscoverage['plugins/insertcode.js'][76] = 0;
+ _$jscoverage['plugins/insertcode.js'][77] = 0;
+ _$jscoverage['plugins/insertcode.js'][79] = 0;
+ _$jscoverage['plugins/insertcode.js'][80] = 0;
+ _$jscoverage['plugins/insertcode.js'][82] = 0;
+ _$jscoverage['plugins/insertcode.js'][83] = 0;
+ _$jscoverage['plugins/insertcode.js'][84] = 0;
+ _$jscoverage['plugins/insertcode.js'][85] = 0;
+ _$jscoverage['plugins/insertcode.js'][86] = 0;
+ _$jscoverage['plugins/insertcode.js'][87] = 0;
+ _$jscoverage['plugins/insertcode.js'][88] = 0;
+ _$jscoverage['plugins/insertcode.js'][89] = 0;
+ _$jscoverage['plugins/insertcode.js'][90] = 0;
+ _$jscoverage['plugins/insertcode.js'][91] = 0;
+ _$jscoverage['plugins/insertcode.js'][94] = 0;
+ _$jscoverage['plugins/insertcode.js'][97] = 0;
+ _$jscoverage['plugins/insertcode.js'][98] = 0;
+ _$jscoverage['plugins/insertcode.js'][102] = 0;
+ _$jscoverage['plugins/insertcode.js'][104] = 0;
+ _$jscoverage['plugins/insertcode.js'][105] = 0;
+ _$jscoverage['plugins/insertcode.js'][108] = 0;
+ _$jscoverage['plugins/insertcode.js'][110] = 0;
+ _$jscoverage['plugins/insertcode.js'][111] = 0;
+ _$jscoverage['plugins/insertcode.js'][112] = 0;
+ _$jscoverage['plugins/insertcode.js'][113] = 0;
+ _$jscoverage['plugins/insertcode.js'][114] = 0;
+ _$jscoverage['plugins/insertcode.js'][115] = 0;
+ _$jscoverage['plugins/insertcode.js'][116] = 0;
+ _$jscoverage['plugins/insertcode.js'][117] = 0;
+ _$jscoverage['plugins/insertcode.js'][118] = 0;
+ _$jscoverage['plugins/insertcode.js'][119] = 0;
+ _$jscoverage['plugins/insertcode.js'][122] = 0;
+ _$jscoverage['plugins/insertcode.js'][125] = 0;
+ _$jscoverage['plugins/insertcode.js'][126] = 0;
+ _$jscoverage['plugins/insertcode.js'][130] = 0;
+ _$jscoverage['plugins/insertcode.js'][132] = 0;
+ _$jscoverage['plugins/insertcode.js'][133] = 0;
+ _$jscoverage['plugins/insertcode.js'][137] = 0;
+ _$jscoverage['plugins/insertcode.js'][138] = 0;
+ _$jscoverage['plugins/insertcode.js'][139] = 0;
+ _$jscoverage['plugins/insertcode.js'][140] = 0;
+ _$jscoverage['plugins/insertcode.js'][141] = 0;
+ _$jscoverage['plugins/insertcode.js'][149] = 0;
+ _$jscoverage['plugins/insertcode.js'][151] = 0;
+ _$jscoverage['plugins/insertcode.js'][152] = 0;
+ _$jscoverage['plugins/insertcode.js'][153] = 0;
+ _$jscoverage['plugins/insertcode.js'][155] = 0;
+ _$jscoverage['plugins/insertcode.js'][157] = 0;
+ _$jscoverage['plugins/insertcode.js'][159] = 0;
+ _$jscoverage['plugins/insertcode.js'][160] = 0;
+ _$jscoverage['plugins/insertcode.js'][161] = 0;
+ _$jscoverage['plugins/insertcode.js'][163] = 0;
+ _$jscoverage['plugins/insertcode.js'][171] = 0;
+ _$jscoverage['plugins/insertcode.js'][172] = 0;
+ _$jscoverage['plugins/insertcode.js'][173] = 0;
+ _$jscoverage['plugins/insertcode.js'][174] = 0;
+ _$jscoverage['plugins/insertcode.js'][175] = 0;
+ _$jscoverage['plugins/insertcode.js'][176] = 0;
+ _$jscoverage['plugins/insertcode.js'][177] = 0;
+ _$jscoverage['plugins/insertcode.js'][180] = 0;
+ _$jscoverage['plugins/insertcode.js'][184] = 0;
+ _$jscoverage['plugins/insertcode.js'][185] = 0;
+ _$jscoverage['plugins/insertcode.js'][186] = 0;
+ _$jscoverage['plugins/insertcode.js'][187] = 0;
+ _$jscoverage['plugins/insertcode.js'][188] = 0;
+ _$jscoverage['plugins/insertcode.js'][189] = 0;
+ _$jscoverage['plugins/insertcode.js'][190] = 0;
+ _$jscoverage['plugins/insertcode.js'][191] = 0;
+ _$jscoverage['plugins/insertcode.js'][193] = 0;
+ _$jscoverage['plugins/insertcode.js'][195] = 0;
+ _$jscoverage['plugins/insertcode.js'][196] = 0;
+ _$jscoverage['plugins/insertcode.js'][197] = 0;
+ _$jscoverage['plugins/insertcode.js'][198] = 0;
+ _$jscoverage['plugins/insertcode.js'][199] = 0;
+ _$jscoverage['plugins/insertcode.js'][200] = 0;
+ _$jscoverage['plugins/insertcode.js'][201] = 0;
+ _$jscoverage['plugins/insertcode.js'][203] = 0;
+ _$jscoverage['plugins/insertcode.js'][207] = 0;
+ _$jscoverage['plugins/insertcode.js'][208] = 0;
+ _$jscoverage['plugins/insertcode.js'][209] = 0;
+ _$jscoverage['plugins/insertcode.js'][210] = 0;
+ _$jscoverage['plugins/insertcode.js'][211] = 0;
+ _$jscoverage['plugins/insertcode.js'][214] = 0;
+ _$jscoverage['plugins/insertcode.js'][216] = 0;
+ _$jscoverage['plugins/insertcode.js'][217] = 0;
+ _$jscoverage['plugins/insertcode.js'][219] = 0;
+ _$jscoverage['plugins/insertcode.js'][226] = 0;
+ _$jscoverage['plugins/insertcode.js'][230] = 0;
+ _$jscoverage['plugins/insertcode.js'][247] = 0;
+ _$jscoverage['plugins/insertcode.js'][248] = 0;
+ _$jscoverage['plugins/insertcode.js'][249] = 0;
+ _$jscoverage['plugins/insertcode.js'][251] = 0;
+ _$jscoverage['plugins/insertcode.js'][252] = 0;
+ _$jscoverage['plugins/insertcode.js'][254] = 0;
+ _$jscoverage['plugins/insertcode.js'][256] = 0;
+ _$jscoverage['plugins/insertcode.js'][257] = 0;
+ _$jscoverage['plugins/insertcode.js'][258] = 0;
+ _$jscoverage['plugins/insertcode.js'][259] = 0;
+ _$jscoverage['plugins/insertcode.js'][260] = 0;
+ _$jscoverage['plugins/insertcode.js'][261] = 0;
+ _$jscoverage['plugins/insertcode.js'][262] = 0;
+ _$jscoverage['plugins/insertcode.js'][264] = 0;
+ _$jscoverage['plugins/insertcode.js'][265] = 0;
+ _$jscoverage['plugins/insertcode.js'][266] = 0;
+ _$jscoverage['plugins/insertcode.js'][267] = 0;
+ _$jscoverage['plugins/insertcode.js'][268] = 0;
+ _$jscoverage['plugins/insertcode.js'][269] = 0;
+ _$jscoverage['plugins/insertcode.js'][271] = 0;
+ _$jscoverage['plugins/insertcode.js'][273] = 0;
+ _$jscoverage['plugins/insertcode.js'][274] = 0;
+ _$jscoverage['plugins/insertcode.js'][275] = 0;
+ _$jscoverage['plugins/insertcode.js'][276] = 0;
+ _$jscoverage['plugins/insertcode.js'][277] = 0;
+ _$jscoverage['plugins/insertcode.js'][278] = 0;
+ _$jscoverage['plugins/insertcode.js'][279] = 0;
+ _$jscoverage['plugins/insertcode.js'][280] = 0;
+ _$jscoverage['plugins/insertcode.js'][283] = 0;
+ _$jscoverage['plugins/insertcode.js'][284] = 0;
+ _$jscoverage['plugins/insertcode.js'][285] = 0;
+ _$jscoverage['plugins/insertcode.js'][286] = 0;
+ _$jscoverage['plugins/insertcode.js'][287] = 0;
+ _$jscoverage['plugins/insertcode.js'][289] = 0;
+ _$jscoverage['plugins/insertcode.js'][290] = 0;
+ _$jscoverage['plugins/insertcode.js'][291] = 0;
+ _$jscoverage['plugins/insertcode.js'][292] = 0;
+ _$jscoverage['plugins/insertcode.js'][296] = 0;
+ _$jscoverage['plugins/insertcode.js'][297] = 0;
+ _$jscoverage['plugins/insertcode.js'][298] = 0;
+ _$jscoverage['plugins/insertcode.js'][301] = 0;
+ _$jscoverage['plugins/insertcode.js'][303] = 0;
+ _$jscoverage['plugins/insertcode.js'][305] = 0;
+ _$jscoverage['plugins/insertcode.js'][306] = 0;
+ _$jscoverage['plugins/insertcode.js'][307] = 0;
+ _$jscoverage['plugins/insertcode.js'][308] = 0;
+ _$jscoverage['plugins/insertcode.js'][309] = 0;
+ _$jscoverage['plugins/insertcode.js'][310] = 0;
+ _$jscoverage['plugins/insertcode.js'][311] = 0;
+ _$jscoverage['plugins/insertcode.js'][312] = 0;
+ _$jscoverage['plugins/insertcode.js'][315] = 0;
+ _$jscoverage['plugins/insertcode.js'][316] = 0;
+ _$jscoverage['plugins/insertcode.js'][317] = 0;
+ _$jscoverage['plugins/insertcode.js'][318] = 0;
+ _$jscoverage['plugins/insertcode.js'][319] = 0;
+ _$jscoverage['plugins/insertcode.js'][321] = 0;
+ _$jscoverage['plugins/insertcode.js'][325] = 0;
+ _$jscoverage['plugins/insertcode.js'][326] = 0;
+ _$jscoverage['plugins/insertcode.js'][327] = 0;
+ _$jscoverage['plugins/insertcode.js'][328] = 0;
+ _$jscoverage['plugins/insertcode.js'][329] = 0;
+ _$jscoverage['plugins/insertcode.js'][330] = 0;
+ _$jscoverage['plugins/insertcode.js'][331] = 0;
+ _$jscoverage['plugins/insertcode.js'][332] = 0;
+ _$jscoverage['plugins/insertcode.js'][333] = 0;
+ _$jscoverage['plugins/insertcode.js'][334] = 0;
+ _$jscoverage['plugins/insertcode.js'][335] = 0;
+ _$jscoverage['plugins/insertcode.js'][336] = 0;
+ _$jscoverage['plugins/insertcode.js'][339] = 0;
+ _$jscoverage['plugins/insertcode.js'][340] = 0;
+ _$jscoverage['plugins/insertcode.js'][341] = 0;
+ _$jscoverage['plugins/insertcode.js'][342] = 0;
+ _$jscoverage['plugins/insertcode.js'][343] = 0;
+ _$jscoverage['plugins/insertcode.js'][345] = 0;
+ _$jscoverage['plugins/insertcode.js'][346] = 0;
+ _$jscoverage['plugins/insertcode.js'][347] = 0;
+ _$jscoverage['plugins/insertcode.js'][348] = 0;
+ _$jscoverage['plugins/insertcode.js'][353] = 0;
+ _$jscoverage['plugins/insertcode.js'][354] = 0;
+ _$jscoverage['plugins/insertcode.js'][356] = 0;
+ _$jscoverage['plugins/insertcode.js'][361] = 0;
+ _$jscoverage['plugins/insertcode.js'][362] = 0;
+ _$jscoverage['plugins/insertcode.js'][368] = 0;
+ _$jscoverage['plugins/insertcode.js'][369] = 0;
+ _$jscoverage['plugins/insertcode.js'][370] = 0;
+ _$jscoverage['plugins/insertcode.js'][371] = 0;
+ _$jscoverage['plugins/insertcode.js'][372] = 0;
+ _$jscoverage['plugins/insertcode.js'][373] = 0;
+ _$jscoverage['plugins/insertcode.js'][436] = 0;
+ _$jscoverage['plugins/insertcode.js'][437] = 0;
+ _$jscoverage['plugins/insertcode.js'][438] = 0;
+ _$jscoverage['plugins/insertcode.js'][440] = 0;
+ _$jscoverage['plugins/insertcode.js'][441] = 0;
+ _$jscoverage['plugins/insertcode.js'][442] = 0;
+ _$jscoverage['plugins/insertcode.js'][444] = 0;
+ _$jscoverage['plugins/insertcode.js'][446] = 0;
+ _$jscoverage['plugins/insertcode.js'][447] = 0;
+ _$jscoverage['plugins/insertcode.js'][449] = 0;
+ _$jscoverage['plugins/insertcode.js'][451] = 0;
+ _$jscoverage['plugins/insertcode.js'][453] = 0;
+ _$jscoverage['plugins/insertcode.js'][454] = 0;
+ _$jscoverage['plugins/insertcode.js'][455] = 0;
+ _$jscoverage['plugins/insertcode.js'][456] = 0;
+ _$jscoverage['plugins/insertcode.js'][459] = 0;
+ _$jscoverage['plugins/insertcode.js'][460] = 0;
+ _$jscoverage['plugins/insertcode.js'][461] = 0;
+ _$jscoverage['plugins/insertcode.js'][462] = 0;
+ _$jscoverage['plugins/insertcode.js'][464] = 0;
+ _$jscoverage['plugins/insertcode.js'][467] = 0;
+ _$jscoverage['plugins/insertcode.js'][469] = 0;
+ _$jscoverage['plugins/insertcode.js'][471] = 0;
+ _$jscoverage['plugins/insertcode.js'][472] = 0;
+ _$jscoverage['plugins/insertcode.js'][477] = 0;
+ _$jscoverage['plugins/insertcode.js'][478] = 0;
+ _$jscoverage['plugins/insertcode.js'][485] = 0;
+ _$jscoverage['plugins/insertcode.js'][486] = 0;
+ _$jscoverage['plugins/insertcode.js'][489] = 0;
+ _$jscoverage['plugins/insertcode.js'][490] = 0;
+ _$jscoverage['plugins/insertcode.js'][491] = 0;
+ _$jscoverage['plugins/insertcode.js'][493] = 0;
+ _$jscoverage['plugins/insertcode.js'][494] = 0;
+ _$jscoverage['plugins/insertcode.js'][496] = 0;
+ _$jscoverage['plugins/insertcode.js'][497] = 0;
+ _$jscoverage['plugins/insertcode.js'][498] = 0;
+ _$jscoverage['plugins/insertcode.js'][499] = 0;
+ _$jscoverage['plugins/insertcode.js'][500] = 0;
+ _$jscoverage['plugins/insertcode.js'][501] = 0;
+ _$jscoverage['plugins/insertcode.js'][502] = 0;
+ _$jscoverage['plugins/insertcode.js'][503] = 0;
+ _$jscoverage['plugins/insertcode.js'][504] = 0;
+ _$jscoverage['plugins/insertcode.js'][505] = 0;
+ _$jscoverage['plugins/insertcode.js'][506] = 0;
+ _$jscoverage['plugins/insertcode.js'][509] = 0;
+ _$jscoverage['plugins/insertcode.js'][512] = 0;
+ _$jscoverage['plugins/insertcode.js'][513] = 0;
+ _$jscoverage['plugins/insertcode.js'][517] = 0;
+ _$jscoverage['plugins/insertcode.js'][519] = 0;
+ _$jscoverage['plugins/insertcode.js'][520] = 0;
+ _$jscoverage['plugins/insertcode.js'][523] = 0;
+ _$jscoverage['plugins/insertcode.js'][524] = 0;
+ _$jscoverage['plugins/insertcode.js'][526] = 0;
+ _$jscoverage['plugins/insertcode.js'][528] = 0;
+ _$jscoverage['plugins/insertcode.js'][529] = 0;
+ _$jscoverage['plugins/insertcode.js'][530] = 0;
+ _$jscoverage['plugins/insertcode.js'][531] = 0;
+ _$jscoverage['plugins/insertcode.js'][532] = 0;
+ _$jscoverage['plugins/insertcode.js'][533] = 0;
+ _$jscoverage['plugins/insertcode.js'][534] = 0;
+ _$jscoverage['plugins/insertcode.js'][535] = 0;
+ _$jscoverage['plugins/insertcode.js'][537] = 0;
+ _$jscoverage['plugins/insertcode.js'][538] = 0;
+ _$jscoverage['plugins/insertcode.js'][539] = 0;
+ _$jscoverage['plugins/insertcode.js'][543] = 0;
+ _$jscoverage['plugins/insertcode.js'][547] = 0;
+ _$jscoverage['plugins/insertcode.js'][548] = 0;
+ _$jscoverage['plugins/insertcode.js'][552] = 0;
+ _$jscoverage['plugins/insertcode.js'][554] = 0;
+ _$jscoverage['plugins/insertcode.js'][555] = 0;
+ _$jscoverage['plugins/insertcode.js'][560] = 0;
+ _$jscoverage['plugins/insertcode.js'][564] = 0;
+ _$jscoverage['plugins/insertcode.js'][568] = 0;
+ _$jscoverage['plugins/insertcode.js'][569] = 0;
+ _$jscoverage['plugins/insertcode.js'][570] = 0;
+ _$jscoverage['plugins/insertcode.js'][571] = 0;
+ _$jscoverage['plugins/insertcode.js'][572] = 0;
+ _$jscoverage['plugins/insertcode.js'][573] = 0;
+ _$jscoverage['plugins/insertcode.js'][574] = 0;
+ _$jscoverage['plugins/insertcode.js'][575] = 0;
+ _$jscoverage['plugins/insertcode.js'][577] = 0;
+ _$jscoverage['plugins/insertcode.js'][578] = 0;
+ _$jscoverage['plugins/insertcode.js'][579] = 0;
+ _$jscoverage['plugins/insertcode.js'][586] = 0;
+ _$jscoverage['plugins/insertcode.js'][587] = 0;
+ _$jscoverage['plugins/insertcode.js'][588] = 0;
+ _$jscoverage['plugins/insertcode.js'][589] = 0;
+ _$jscoverage['plugins/insertcode.js'][590] = 0;
+ _$jscoverage['plugins/insertcode.js'][591] = 0;
+ _$jscoverage['plugins/insertcode.js'][592] = 0;
+ _$jscoverage['plugins/insertcode.js'][593] = 0;
+ _$jscoverage['plugins/insertcode.js'][594] = 0;
+ _$jscoverage['plugins/insertcode.js'][595] = 0;
+ _$jscoverage['plugins/insertcode.js'][596] = 0;
+ _$jscoverage['plugins/insertcode.js'][597] = 0;
+}
+_$jscoverage['plugins/insertcode.js'].source = ["/** "," * 插入代码插件 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ 'insertcode' ] = function () { "," var me = this ; "," me. ready( function () { "," utils. cssRule( 'pre' , 'pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}' , "," me. document) "," } ); "," me. setOpt( 'insertcode' , { "," 'as3' : 'ActionScript3' , "," 'bash' : 'Bash/Shell' , "," 'cpp' : 'C/C++' , "," 'css' : 'Css' , "," 'cf' : 'CodeFunction' , "," 'c#' : 'C#' , "," 'delphi' : 'Delphi' , "," 'diff' : 'Diff' , "," 'erlang' : 'Erlang' , "," 'groovy' : 'Groovy' , "," 'html' : 'Html' , "," 'java' : 'Java' , "," 'jfx' : 'JavaFx' , "," 'js' : 'Javascript' , "," 'pl' : 'Perl' , "," 'php' : 'Php' , "," 'plain' : 'Plain Text' , "," 'ps' : 'PowerShell' , "," 'python' : 'Python' , "," 'ruby' : 'Ruby' , "," 'scala' : 'Scala' , "," 'sql' : 'Sql' , "," 'vb' : 'Vb' , "," 'xml' : 'Xml' "," } ); ",""," /** "," * 根据选择的语言,插入代码编辑块 "," * @command insertcode "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } lang 插入代码的语言 "," * @example "," * ```javascript "," * editor.execCommand( 'insertcode', 'javascript' ); "," * ``` "," */ ",""," /** "," * 如果选区所在位置是插入插入代码区域,返回代码的语言 "," * @command insertcode "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回代码的语言 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'insertcode' ); "," * ``` "," */ "," me. commands[ 'insertcode' ] = { "," execCommand : function ( cmd, lang) { "," var me = this , "," rng = me. selection. getRange(), "," pre = domUtils. findParentByTagName( rng. startContainer, 'pre' , true ); "," if ( pre) { "," pre. className = 'brush:' + lang+ ';toolbar:false;' ; "," } else { "," var code = '' ; "," if ( rng. collapsed) { "," code = browser. ie? ( browser. version > 8 ? '' : ' ' ): '<br/>' ; "," } else { "," var frag = rng. extractContents(); "," var div = me. document. createElement( 'div' ); "," div. appendChild( frag); ",""," utils. each( UE. filterNode( UE. htmlparser( div. innerHTML. replace( /[\\r\\t]/g , '' )), me. options. filterTxtRules). children, function ( node) { "," if ( browser. ie && browser. version > 8 ) { ",""," if ( node. type == 'element' ) { "," if ( node. tagName == 'br' ) { "," code += ' \\n ' "," } else if (! dtd. $empty[ node. tagName]) { "," utils. each( node. children, function ( cn) { "," if ( cn. type == 'element' ) { "," if ( cn. tagName == 'br' ) { "," code += ' \\n ' "," } else if (! dtd. $empty[ node. tagName]) { "," code += cn. innerText(); "," } "," } else { "," code += cn. data"," } "," } ) "," if (! /\\n$/ . test( code)) { "," code += ' \\n ' ; "," } "," } "," } else { "," code += node. data + ' \\n ' "," } "," if (! node. nextSibling() && /\\n$/ . test( code)) { "," code = code. replace( /\\n$/ , '' ); "," } "," } else { "," if ( browser. ie) { ",""," if ( node. type == 'element' ) { "," if ( node. tagName == 'br' ) { "," code += '<br>' "," } else if (! dtd. $empty[ node. tagName]) { "," utils. each( node. children, function ( cn) { "," if ( cn. type == 'element' ) { "," if ( cn. tagName == 'br' ) { "," code += '<br>' "," } else if (! dtd. $empty[ node. tagName]) { "," code += cn. innerText(); "," } "," } else { "," code += cn. data"," } "," } ); "," if (! /br>$/ . test( code)) { "," code += '<br>' ; "," } "," } "," } else { "," code += node. data + '<br>' "," } "," if (! node. nextSibling() && /<br>$/ . test( code)) { "," code = code. replace( /<br>$/ , '' ); "," } ",""," } else { "," code += ( node. type == 'element' ? ( dtd. $empty[ node. tagName] ? '' : node. innerText()) : node. data); "," if (! /br\\/?\\s*>$/ . test( code)) { "," if (! node. nextSibling()) "," return ; "," code += '<br>' "," } "," } ",""," } ",""," } ); "," } "," me. execCommand( 'inserthtml' , '<pre id=\"coder\"class=\"brush:' + lang+ ';toolbar:false\">' + code+ '</pre>' , true ); ",""," pre = me. document. getElementById( 'coder' ); "," domUtils. removeAttributes( pre, 'id' ); "," var tmpNode = pre. previousSibling; ",""," if ( tmpNode && ( tmpNode. nodeType == 3 && tmpNode. nodeValue. length == 1 && browser. ie && browser. version == 6 || domUtils. isEmptyBlock( tmpNode))) { ",""," domUtils. remove( tmpNode) "," } "," var rng = me. selection. getRange(); "," if ( domUtils. isEmptyBlock( pre)) { "," rng. setStart( pre, 0 ). setCursor( false , true ) "," } else { "," rng. selectNodeContents( pre). select() "," } "," } ","","",""," } , "," queryCommandValue : function () { "," var path = this . selection. getStartElementPath(); "," var lang = '' ; "," utils. each( path, function ( node) { "," if ( node. nodeName == 'PRE' ) { "," var match = node. className. match( /brush:([^;]+)/ ); "," lang = match && match[ 1 ] ? match[ 1 ] : '' ; "," return false ; "," } "," } ); "," return lang; "," } "," } ; ",""," me. addInputRule( function ( root) { "," utils. each( root. getNodesByTagName( 'pre' ), function ( pre) { "," var brs = pre. getNodesByTagName( 'br' ); "," if ( brs. length) { "," browser. ie && browser. version > 8 && utils. each( brs, function ( br) { "," var txt = UE. uNode. createText( ' \\n ' ); "," br. parentNode. insertBefore( txt, br); "," br. parentNode. removeChild( br); "," } ); "," return ; "," } "," if ( browser. ie && browser. version > 8 ) "," return ; "," var code = pre. innerText(). split( /\\n/ ); "," pre. innerHTML( '' ); "," utils. each( code, function ( c) { "," if ( c. length) { "," pre. appendChild( UE. uNode. createText( c)); "," } "," pre. appendChild( UE. uNode. createElement( 'br' )) "," } ) "," } ) "," } ); "," me. addOutputRule( function ( root) { "," utils. each( root. getNodesByTagName( 'pre' ), function ( pre) { "," var code = '' ; "," utils. each( pre. children, function ( n) { "," if ( n. type == 'text' ) { "," //在ie下文本内容有可能末尾带有\\n要去掉 "," //trace:3396 "," code += n. data. replace( /[ ]/g , ' ' ). replace( /\\n$/ , '' ); "," } else { "," if ( n. tagName == 'br' ) { "," code += ' \\n ' "," } else { "," code += (! dtd. $empty[ n. tagName] ? '' : n. innerText()); "," } ",""," } ",""," } ); ",""," pre. innerText( code. replace( /( |\\n)+$/ , '' )) "," } ) "," } ); "," //不需要判断highlight的command列表 "," me. notNeedCodeQuery = { "," help: 1 , "," undo: 1 , "," redo: 1 , "," source: 1 , "," print: 1 , "," searchreplace: 1 , "," fullscreen: 1 , "," preview: 1 , "," insertparagraph: 1 , "," elementpath: 1 , "," highlightcode: 1 , "," insertcode: 1 , "," inserthtml: 1 , "," selectall: 1 "," } ; "," //将queyCommamndState重置 "," var orgQuery = me. queryCommandState; "," me. queryCommandState = function ( cmd) { "," var me = this ; ",""," if (! me. notNeedCodeQuery[ cmd. toLowerCase()] && me. selection && me. queryCommandValue( 'insertcode' )) { "," return - 1 ; "," } "," return UE. Editor. prototype. queryCommandState. apply( this , arguments) "," } ; "," me. addListener( 'beforeenterkeydown' , function () { "," var rng = me. selection. getRange(); "," var pre = domUtils. findParentByTagName( rng. startContainer, 'pre' , true ); "," if ( pre) { "," me. fireEvent( 'saveScene' ); "," if (! rng. collapsed) { "," rng. deleteContents(); "," } "," if (! browser. ie ) { "," var tmpNode = me. document. createElement( 'br' ), pre; "," rng. insertNode( tmpNode). setStartAfter( tmpNode). collapse( true ); "," var next = tmpNode. nextSibling; "," if (! next) { "," rng. insertNode( tmpNode. cloneNode( false )); "," } else { "," rng. setStartAfter( tmpNode); "," } "," pre = tmpNode. previousSibling; "," var tmp; "," while ( pre ) { "," tmp = pre; "," pre = pre. previousSibling; "," if (! pre || pre. nodeName == 'BR' ) { "," pre = tmp; "," break ; "," } "," } "," if ( pre) { "," var str = '' ; "," while ( pre && pre. nodeName != 'BR' && new RegExp( '^[ \\\\ s' + domUtils. fillChar+ ']*$' ). test( pre. nodeValue)) { "," str += pre. nodeValue; "," pre = pre. nextSibling; "," } "," if ( pre. nodeName != 'BR' ) { "," var match = pre. nodeValue. match( new RegExp( '^([ \\\\ s' + domUtils. fillChar+ ']+)' )); "," if ( match && match[ 1 ]) { "," str += match[ 1 ] "," } ",""," } "," if ( str) { "," str = me. document. createTextNode( str); "," rng. insertNode( str). setStartAfter( str); "," } "," } "," rng. collapse( true ). select( true ); "," } else { "," if ( browser. version > 8 ) { ",""," var txt = me. document. createTextNode( ' \\n ' ); "," var start = rng. startContainer; "," if ( rng. startOffset == 0 ) { "," var preNode = start. previousSibling; "," if ( preNode) { "," rng. insertNode( txt); "," var fillchar = me. document. createTextNode( ' ' ); "," rng. setStartAfter( txt). insertNode( fillchar). setStart( fillchar, 0 ). collapse( true ). select( true ) "," } "," } else { "," rng. insertNode( txt). setStartAfter( txt); "," var fillchar = me. document. createTextNode( ' ' ); "," start = rng. startContainer. childNodes[ rng. startOffset]; "," if ( start && ! /^\\n/ . test( start. nodeValue)) { "," rng. setStartBefore( txt) "," } "," rng. insertNode( fillchar). setStart( fillchar, 0 ). collapse( true ). select( true ) "," } ",""," } else { "," var tmpNode = me. document. createElement( 'br' ); "," rng. insertNode( tmpNode); "," rng. insertNode( me. document. createTextNode( domUtils. fillChar)); "," rng. setStartAfter( tmpNode); "," pre = tmpNode. previousSibling; "," var tmp; "," while ( pre ) { "," tmp = pre; "," pre = pre. previousSibling; "," if (! pre || pre. nodeName == 'BR' ) { "," pre = tmp; "," break ; "," } "," } "," if ( pre) { "," var str = '' ; "," while ( pre && pre. nodeName != 'BR' && new RegExp( '^[ ' + domUtils. fillChar+ ']*$' ). test( pre. nodeValue)) { "," str += pre. nodeValue; "," pre = pre. nextSibling; "," } "," if ( pre. nodeName != 'BR' ) { "," var match = pre. nodeValue. match( new RegExp( '^([ ' + domUtils. fillChar+ ']+)' )); "," if ( match && match[ 1 ]) { "," str += match[ 1 ] "," } ",""," } ",""," str = me. document. createTextNode( str); "," rng. insertNode( str). setStartAfter( str); "," } "," rng. collapse( true ). select(); "," } ","",""," } "," me. fireEvent( 'saveScene' ); "," return true ; "," } ","",""," } ); ",""," me. addListener( 'tabkeydown' , function ( cmd, evt) { "," var rng = me. selection. getRange(); "," var pre = domUtils. findParentByTagName( rng. startContainer, 'pre' , true ); "," if ( pre) { "," me. fireEvent( 'saveScene' ); "," if ( evt. shiftKey) { ","","// if(!rng.collapsed){ ","// var bk = rng.createBookmark(); ","// var start = bk.start.previousSibling; ","// if(start === pre.firstChild){ ","// start.nodeValue = start.nodeValue.replace(/^\\s{4}/,''); ","// }else{ ","// while(start){ ","// if(domUtils.isBr(start)){ ","// start = start.nextSibling; ","// start.nodeValue = start.nodeValue.replace(/^\\s{4}/,''); ","// break; ","// } ","// while(start.previousSibling && start.previousSibling.nodeType == 3){ ","// start.nodeValue = start.previousSibling.nodeValue + start.nodeValue; ","// domUtils.remove(start.previousSibling) ","// } ","// start = start.previousSibling; ","// } ","// } ","// ","// var end = bk.end; ","// start = bk.start.nextSibling; ","// ","// while(start && start !== end){ ","// if(domUtils.isBr(start) && start.nextSibling){ ","// if(start.nextSibling === end){ ","// break; ","// } ","// start = start.nextSibling; ","// while(start.nextSibling && start.nextSibling.nodeType == 3){ ","// start.nodeValue += start.nextSibling.nodeValue; ","// domUtils.remove(start.nextSibling) ","// } ","// ","// start.nodeValue = start.nodeValue.replace(/^\\s{4}/,''); ","// } ","// ","// start = start.nextSibling; ","// } ","// rng.moveToBookmark(bk).select(); ","// }else{ ","// var bk = rng.createBookmark(); ","// var start = bk.start.previousSibling; ","// if(start === pre.firstChild){ ","// start.nodeValue = start.nodeValue.replace(/^\\s{4}/,''); ","// }else{ ","// while(start){ ","// if(domUtils.isBr(start)){ ","// start = start.nextSibling; ","// start.nodeValue = start.nodeValue.replace(/^\\s{4}/,''); ","// break; ","// } ","// while(start.previousSibling && start.previousSibling.nodeType == 3){ ","// start.nodeValue = start.previousSibling.nodeValue + start.nodeValue; ","// domUtils.remove(start.previousSibling) ","// } ","// start = start.previousSibling; ","// } ","// } ","// } "," } else { "," if (! rng. collapsed) { "," var bk = rng. createBookmark(); "," var start = bk. start. previousSibling; ",""," while ( start) { "," if ( pre. firstChild === start && ! domUtils. isBr( start)) { "," pre. insertBefore( me. document. createTextNode( ' ' ), start); ",""," break ; "," } "," if ( domUtils. isBr( start)) { "," pre. insertBefore( me. document. createTextNode( ' ' ), start. nextSibling); ",""," break ; "," } "," start = start. previousSibling; "," } "," var end = bk. end; "," start = bk. start. nextSibling; "," if ( pre. firstChild === bk. start) { "," pre. insertBefore( me. document. createTextNode( ' ' ), start. nextSibling) ",""," } "," while ( start && start !== end) { "," if ( domUtils. isBr( start) && start. nextSibling) { "," if ( start. nextSibling === end) { "," break ; "," } "," pre. insertBefore( me. document. createTextNode( ' ' ), start. nextSibling) "," } ",""," start = start. nextSibling; "," } "," rng. moveToBookmark( bk). select(); "," } else { "," var tmpNode = me. document. createTextNode( ' ' ); "," rng. insertNode( tmpNode). setStartAfter( tmpNode). collapse( true ). select( true ); "," } "," } ","",""," me. fireEvent( 'saveScene' ); "," return true ; "," } ","",""," } ); ","",""," me. addListener( 'beforeinserthtml' , function ( evtName, html) { "," var me = this , "," rng = me. selection. getRange(), "," pre = domUtils. findParentByTagName( rng. startContainer, 'pre' , true ); "," if ( pre) { "," if (! rng. collapsed) { "," rng. deleteContents() "," } "," var htmlstr = '' ; "," if ( browser. ie && browser. version > 8 ) { ",""," utils. each( UE. filterNode( UE. htmlparser( html), me. options. filterTxtRules). children, function ( node) { "," if ( node. type == 'element' ) { "," if ( node. tagName == 'br' ) { "," htmlstr += ' \\n ' "," } else if (! dtd. $empty[ node. tagName]) { "," utils. each( node. children, function ( cn) { "," if ( cn. type == 'element' ) { "," if ( cn. tagName == 'br' ) { "," htmlstr += ' \\n ' "," } else if (! dtd. $empty[ node. tagName]) { "," htmlstr += cn. innerText(); "," } "," } else { "," htmlstr += cn. data"," } "," } ) "," if (! /\\n$/ . test( htmlstr)) { "," htmlstr += ' \\n ' ; "," } "," } "," } else { "," htmlstr += node. data + ' \\n ' "," } "," if (! node. nextSibling() && /\\n$/ . test( htmlstr)) { "," htmlstr = htmlstr. replace( /\\n$/ , '' ); "," } "," } ); "," var tmpNode = me. document. createTextNode( utils. html( htmlstr. replace( / /g , ' ' ))); "," rng. insertNode( tmpNode). selectNode( tmpNode). select(); "," } else { "," var frag = me. document. createDocumentFragment(); ",""," utils. each( UE. filterNode( UE. htmlparser( html), me. options. filterTxtRules). children, function ( node) { "," if ( node. type == 'element' ) { "," if ( node. tagName == 'br' ) { "," frag. appendChild( me. document. createElement( 'br' )) "," } else if (! dtd. $empty[ node. tagName]) { "," utils. each( node. children, function ( cn) { "," if ( cn. type == 'element' ) { "," if ( cn. tagName == 'br' ) { ",""," frag. appendChild( me. document. createElement( 'br' )) "," } else if (! dtd. $empty[ node. tagName]) { "," frag. appendChild( me. document. createTextNode( utils. html( cn. innerText(). replace( / /g , ' ' )))); ",""," } "," } else { "," frag. appendChild( me. document. createTextNode( utils. html( cn. data. replace( / /g , ' ' )))); ",""," } "," } ) "," if ( frag. lastChild. nodeName != 'BR' ) { "," frag. appendChild( me. document. createElement( 'br' )) "," } "," } "," } else { "," frag. appendChild( me. document. createTextNode( utils. html( node. data. replace( / /g , ' ' )))); "," } "," if (! node. nextSibling() && frag. lastChild. nodeName == 'BR' ) { "," frag. removeChild( frag. lastChild) "," } ","",""," } ); "," rng. insertNode( frag). select(); ",""," } ",""," return true ; "," } "," } ); "," //方向键的处理 "," me. addListener( 'keydown' , function ( cmd, evt) { "," var me = this , keyCode = evt. keyCode || evt. which; "," if ( keyCode == 40 ) { "," var rng = me. selection. getRange(), pre, start = rng. startContainer; "," if ( rng. collapsed && ( pre = domUtils. findParentByTagName( rng. startContainer, 'pre' , true )) && ! pre. nextSibling) { "," var last = pre. lastChild"," while ( last && last. nodeName == 'BR' ) { "," last = last. previousSibling; "," } "," if ( last === start || rng. startContainer === pre && rng. startOffset == pre. childNodes. length) { "," me. execCommand( 'insertparagraph' ); "," domUtils. preventDefault( evt) "," } ",""," } "," } "," } ); "," //trace:3395 "," me. addListener( 'delkeydown' , function ( type, evt) { "," var rng = this . selection. getRange(); "," rng. txtToElmBoundary( true ); "," var start = rng. startContainer; "," if ( domUtils. isTagNode( start, 'pre' ) && rng. collapsed && domUtils. isStartInblock( rng)) { "," var p = me. document. createElement( 'p' ); "," domUtils. fillNode( me. document, p); "," start. parentNode. insertBefore( p, start); "," domUtils. remove( start); "," rng. setStart( p, 0 ). setCursor( false , true ); "," domUtils. preventDefault( evt); "," return true ; "," } "," } ) ","} ; "];
+_$jscoverage['plugins/insertcode.js'][7]++;
+UE.plugins.insertcode = (function () {
+ _$jscoverage['plugins/insertcode.js'][8]++;
+ var me = this;
+ _$jscoverage['plugins/insertcode.js'][9]++;
+ me.ready((function () {
+ _$jscoverage['plugins/insertcode.js'][10]++;
+ utils.cssRule("pre", "pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}", me.document);
+}));
+ _$jscoverage['plugins/insertcode.js'][13]++;
+ me.setOpt("insertcode", {"as3": "ActionScript3", "bash": "Bash/Shell", "cpp": "C/C++", "css": "Css", "cf": "CodeFunction", "c#": "C#", "delphi": "Delphi", "diff": "Diff", "erlang": "Erlang", "groovy": "Groovy", "html": "Html", "java": "Java", "jfx": "JavaFx", "js": "Javascript", "pl": "Perl", "php": "Php", "plain": "Plain Text", "ps": "PowerShell", "python": "Python", "ruby": "Ruby", "scala": "Scala", "sql": "Sql", "vb": "Vb", "xml": "Xml"});
+ _$jscoverage['plugins/insertcode.js'][63]++;
+ me.commands.insertcode = {execCommand: (function (cmd, lang) {
+ _$jscoverage['plugins/insertcode.js'][65]++;
+ var me = this, rng = me.selection.getRange(), pre = domUtils.findParentByTagName(rng.startContainer, "pre", true);
+ _$jscoverage['plugins/insertcode.js'][68]++;
+ if (pre) {
+ _$jscoverage['plugins/insertcode.js'][69]++;
+ pre.className = ("brush:" + lang + ";toolbar:false;");
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][71]++;
+ var code = "";
+ _$jscoverage['plugins/insertcode.js'][72]++;
+ if (rng.collapsed) {
+ _$jscoverage['plugins/insertcode.js'][73]++;
+ code = (browser.ie? ((browser.version > 8)? "": " "): " ");
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][75]++;
+ var frag = rng.extractContents();
+ _$jscoverage['plugins/insertcode.js'][76]++;
+ var div = me.document.createElement("div");
+ _$jscoverage['plugins/insertcode.js'][77]++;
+ div.appendChild(frag);
+ _$jscoverage['plugins/insertcode.js'][79]++;
+ utils.each(UE.filterNode(UE.htmlparser(div.innerHTML.replace(/[\r\t]/g, "")), me.options.filterTxtRules).children, (function (node) {
+ _$jscoverage['plugins/insertcode.js'][80]++;
+ if ((browser.ie && (browser.version > 8))) {
+ _$jscoverage['plugins/insertcode.js'][82]++;
+ if ((node.type == "element")) {
+ _$jscoverage['plugins/insertcode.js'][83]++;
+ if ((node.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][84]++;
+ code += "\n";
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][85]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['plugins/insertcode.js'][86]++;
+ utils.each(node.children, (function (cn) {
+ _$jscoverage['plugins/insertcode.js'][87]++;
+ if ((cn.type == "element")) {
+ _$jscoverage['plugins/insertcode.js'][88]++;
+ if ((cn.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][89]++;
+ code += "\n";
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][90]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['plugins/insertcode.js'][91]++;
+ code += cn.innerText();
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][94]++;
+ code += cn.data;
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][97]++;
+ if ((! /\n$/.test(code))) {
+ _$jscoverage['plugins/insertcode.js'][98]++;
+ code += "\n";
+ }
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][102]++;
+ code += (node.data + "\n");
+ }
+ _$jscoverage['plugins/insertcode.js'][104]++;
+ if (((! node.nextSibling()) && /\n$/.test(code))) {
+ _$jscoverage['plugins/insertcode.js'][105]++;
+ code = code.replace(/\n$/, "");
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][108]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/insertcode.js'][110]++;
+ if ((node.type == "element")) {
+ _$jscoverage['plugins/insertcode.js'][111]++;
+ if ((node.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][112]++;
+ code += " ";
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][113]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['plugins/insertcode.js'][114]++;
+ utils.each(node.children, (function (cn) {
+ _$jscoverage['plugins/insertcode.js'][115]++;
+ if ((cn.type == "element")) {
+ _$jscoverage['plugins/insertcode.js'][116]++;
+ if ((cn.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][117]++;
+ code += " ";
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][118]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['plugins/insertcode.js'][119]++;
+ code += cn.innerText();
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][122]++;
+ code += cn.data;
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][125]++;
+ if ((! /br>$/.test(code))) {
+ _$jscoverage['plugins/insertcode.js'][126]++;
+ code += " ";
+ }
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][130]++;
+ code += (node.data + " ");
+ }
+ _$jscoverage['plugins/insertcode.js'][132]++;
+ if (((! node.nextSibling()) && / $/.test(code))) {
+ _$jscoverage['plugins/insertcode.js'][133]++;
+ code = code.replace(/ $/, "");
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][137]++;
+ code += ((node.type == "element")? (dtd.$empty[node.tagName]? "": node.innerText()): node.data);
+ _$jscoverage['plugins/insertcode.js'][138]++;
+ if ((! /br\/?\s*>$/.test(code))) {
+ _$jscoverage['plugins/insertcode.js'][139]++;
+ if ((! node.nextSibling())) {
+ _$jscoverage['plugins/insertcode.js'][140]++;
+ return;
+ }
+ _$jscoverage['plugins/insertcode.js'][141]++;
+ code += " ";
+ }
+ }
+ }
+}));
+ }
+ _$jscoverage['plugins/insertcode.js'][149]++;
+ me.execCommand("inserthtml", ("" + code + " "), true);
+ _$jscoverage['plugins/insertcode.js'][151]++;
+ pre = me.document.getElementById("coder");
+ _$jscoverage['plugins/insertcode.js'][152]++;
+ domUtils.removeAttributes(pre, "id");
+ _$jscoverage['plugins/insertcode.js'][153]++;
+ var tmpNode = pre.previousSibling;
+ _$jscoverage['plugins/insertcode.js'][155]++;
+ if ((tmpNode && (((tmpNode.nodeType == 3) && (tmpNode.nodeValue.length == 1) && browser.ie && (browser.version == 6)) || domUtils.isEmptyBlock(tmpNode)))) {
+ _$jscoverage['plugins/insertcode.js'][157]++;
+ domUtils.remove(tmpNode);
+ }
+ _$jscoverage['plugins/insertcode.js'][159]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/insertcode.js'][160]++;
+ if (domUtils.isEmptyBlock(pre)) {
+ _$jscoverage['plugins/insertcode.js'][161]++;
+ rng.setStart(pre, 0).setCursor(false, true);
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][163]++;
+ rng.selectNodeContents(pre).select();
+ }
+ }
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/insertcode.js'][171]++;
+ var path = this.selection.getStartElementPath();
+ _$jscoverage['plugins/insertcode.js'][172]++;
+ var lang = "";
+ _$jscoverage['plugins/insertcode.js'][173]++;
+ utils.each(path, (function (node) {
+ _$jscoverage['plugins/insertcode.js'][174]++;
+ if ((node.nodeName == "PRE")) {
+ _$jscoverage['plugins/insertcode.js'][175]++;
+ var match = node.className.match(/brush:([^;]+)/);
+ _$jscoverage['plugins/insertcode.js'][176]++;
+ lang = ((match && match[1])? match[1]: "");
+ _$jscoverage['plugins/insertcode.js'][177]++;
+ return false;
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][180]++;
+ return lang;
+})};
+ _$jscoverage['plugins/insertcode.js'][184]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/insertcode.js'][185]++;
+ utils.each(root.getNodesByTagName("pre"), (function (pre) {
+ _$jscoverage['plugins/insertcode.js'][186]++;
+ var brs = pre.getNodesByTagName("br");
+ _$jscoverage['plugins/insertcode.js'][187]++;
+ if (brs.length) {
+ _$jscoverage['plugins/insertcode.js'][188]++;
+ (browser.ie && (browser.version > 8) && utils.each(brs, (function (br) {
+ _$jscoverage['plugins/insertcode.js'][189]++;
+ var txt = UE.uNode.createText("\n");
+ _$jscoverage['plugins/insertcode.js'][190]++;
+ br.parentNode.insertBefore(txt, br);
+ _$jscoverage['plugins/insertcode.js'][191]++;
+ br.parentNode.removeChild(br);
+})));
+ _$jscoverage['plugins/insertcode.js'][193]++;
+ return;
+ }
+ _$jscoverage['plugins/insertcode.js'][195]++;
+ if ((browser.ie && (browser.version > 8))) {
+ _$jscoverage['plugins/insertcode.js'][196]++;
+ return;
+ }
+ _$jscoverage['plugins/insertcode.js'][197]++;
+ var code = pre.innerText().split(/\n/);
+ _$jscoverage['plugins/insertcode.js'][198]++;
+ pre.innerHTML("");
+ _$jscoverage['plugins/insertcode.js'][199]++;
+ utils.each(code, (function (c) {
+ _$jscoverage['plugins/insertcode.js'][200]++;
+ if (c.length) {
+ _$jscoverage['plugins/insertcode.js'][201]++;
+ pre.appendChild(UE.uNode.createText(c));
+ }
+ _$jscoverage['plugins/insertcode.js'][203]++;
+ pre.appendChild(UE.uNode.createElement("br"));
+}));
+}));
+}));
+ _$jscoverage['plugins/insertcode.js'][207]++;
+ me.addOutputRule((function (root) {
+ _$jscoverage['plugins/insertcode.js'][208]++;
+ utils.each(root.getNodesByTagName("pre"), (function (pre) {
+ _$jscoverage['plugins/insertcode.js'][209]++;
+ var code = "";
+ _$jscoverage['plugins/insertcode.js'][210]++;
+ utils.each(pre.children, (function (n) {
+ _$jscoverage['plugins/insertcode.js'][211]++;
+ if ((n.type == "text")) {
+ _$jscoverage['plugins/insertcode.js'][214]++;
+ code += n.data.replace(/[ ]/g, " ").replace(/\n$/, "");
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][216]++;
+ if ((n.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][217]++;
+ code += "\n";
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][219]++;
+ code += ((! dtd.$empty[n.tagName])? "": n.innerText());
+ }
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][226]++;
+ pre.innerText(code.replace(/( |\n)+$/, ""));
+}));
+}));
+ _$jscoverage['plugins/insertcode.js'][230]++;
+ me.notNeedCodeQuery = {help: 1, undo: 1, redo: 1, source: 1, print: 1, searchreplace: 1, fullscreen: 1, preview: 1, insertparagraph: 1, elementpath: 1, highlightcode: 1, insertcode: 1, inserthtml: 1, selectall: 1};
+ _$jscoverage['plugins/insertcode.js'][247]++;
+ var orgQuery = me.queryCommandState;
+ _$jscoverage['plugins/insertcode.js'][248]++;
+ me.queryCommandState = (function (cmd) {
+ _$jscoverage['plugins/insertcode.js'][249]++;
+ var me = this;
+ _$jscoverage['plugins/insertcode.js'][251]++;
+ if (((! me.notNeedCodeQuery[cmd.toLowerCase()]) && me.selection && me.queryCommandValue("insertcode"))) {
+ _$jscoverage['plugins/insertcode.js'][252]++;
+ return -1;
+ }
+ _$jscoverage['plugins/insertcode.js'][254]++;
+ return UE.Editor.prototype.queryCommandState.apply(this, arguments);
+});
+ _$jscoverage['plugins/insertcode.js'][256]++;
+ me.addListener("beforeenterkeydown", (function () {
+ _$jscoverage['plugins/insertcode.js'][257]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/insertcode.js'][258]++;
+ var pre = domUtils.findParentByTagName(rng.startContainer, "pre", true);
+ _$jscoverage['plugins/insertcode.js'][259]++;
+ if (pre) {
+ _$jscoverage['plugins/insertcode.js'][260]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/insertcode.js'][261]++;
+ if ((! rng.collapsed)) {
+ _$jscoverage['plugins/insertcode.js'][262]++;
+ rng.deleteContents();
+ }
+ _$jscoverage['plugins/insertcode.js'][264]++;
+ if ((! browser.ie)) {
+ _$jscoverage['plugins/insertcode.js'][265]++;
+ var tmpNode = me.document.createElement("br"), pre = pre;
+ _$jscoverage['plugins/insertcode.js'][266]++;
+ rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true);
+ _$jscoverage['plugins/insertcode.js'][267]++;
+ var next = tmpNode.nextSibling;
+ _$jscoverage['plugins/insertcode.js'][268]++;
+ if ((! next)) {
+ _$jscoverage['plugins/insertcode.js'][269]++;
+ rng.insertNode(tmpNode.cloneNode(false));
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][271]++;
+ rng.setStartAfter(tmpNode);
+ }
+ _$jscoverage['plugins/insertcode.js'][273]++;
+ pre = tmpNode.previousSibling;
+ _$jscoverage['plugins/insertcode.js'][274]++;
+ var tmp;
+ _$jscoverage['plugins/insertcode.js'][275]++;
+ while (pre) {
+ _$jscoverage['plugins/insertcode.js'][276]++;
+ tmp = pre;
+ _$jscoverage['plugins/insertcode.js'][277]++;
+ pre = pre.previousSibling;
+ _$jscoverage['plugins/insertcode.js'][278]++;
+ if (((! pre) || (pre.nodeName == "BR"))) {
+ _$jscoverage['plugins/insertcode.js'][279]++;
+ pre = tmp;
+ _$jscoverage['plugins/insertcode.js'][280]++;
+ break;
+ }
+}
+ _$jscoverage['plugins/insertcode.js'][283]++;
+ if (pre) {
+ _$jscoverage['plugins/insertcode.js'][284]++;
+ var str = "";
+ _$jscoverage['plugins/insertcode.js'][285]++;
+ while ((pre && (pre.nodeName != "BR") && new RegExp(("^[\\s" + domUtils.fillChar + "]*$")).test(pre.nodeValue))) {
+ _$jscoverage['plugins/insertcode.js'][286]++;
+ str += pre.nodeValue;
+ _$jscoverage['plugins/insertcode.js'][287]++;
+ pre = pre.nextSibling;
+}
+ _$jscoverage['plugins/insertcode.js'][289]++;
+ if ((pre.nodeName != "BR")) {
+ _$jscoverage['plugins/insertcode.js'][290]++;
+ var match = pre.nodeValue.match(new RegExp(("^([\\s" + domUtils.fillChar + "]+)")));
+ _$jscoverage['plugins/insertcode.js'][291]++;
+ if ((match && match[1])) {
+ _$jscoverage['plugins/insertcode.js'][292]++;
+ str += match[1];
+ }
+ }
+ _$jscoverage['plugins/insertcode.js'][296]++;
+ if (str) {
+ _$jscoverage['plugins/insertcode.js'][297]++;
+ str = me.document.createTextNode(str);
+ _$jscoverage['plugins/insertcode.js'][298]++;
+ rng.insertNode(str).setStartAfter(str);
+ }
+ }
+ _$jscoverage['plugins/insertcode.js'][301]++;
+ rng.collapse(true).select(true);
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][303]++;
+ if ((browser.version > 8)) {
+ _$jscoverage['plugins/insertcode.js'][305]++;
+ var txt = me.document.createTextNode("\n");
+ _$jscoverage['plugins/insertcode.js'][306]++;
+ var start = rng.startContainer;
+ _$jscoverage['plugins/insertcode.js'][307]++;
+ if ((rng.startOffset == 0)) {
+ _$jscoverage['plugins/insertcode.js'][308]++;
+ var preNode = start.previousSibling;
+ _$jscoverage['plugins/insertcode.js'][309]++;
+ if (preNode) {
+ _$jscoverage['plugins/insertcode.js'][310]++;
+ rng.insertNode(txt);
+ _$jscoverage['plugins/insertcode.js'][311]++;
+ var fillchar = me.document.createTextNode(" ");
+ _$jscoverage['plugins/insertcode.js'][312]++;
+ rng.setStartAfter(txt).insertNode(fillchar).setStart(fillchar, 0).collapse(true).select(true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][315]++;
+ rng.insertNode(txt).setStartAfter(txt);
+ _$jscoverage['plugins/insertcode.js'][316]++;
+ var fillchar = me.document.createTextNode(" ");
+ _$jscoverage['plugins/insertcode.js'][317]++;
+ start = rng.startContainer.childNodes[rng.startOffset];
+ _$jscoverage['plugins/insertcode.js'][318]++;
+ if ((start && (! /^\n/.test(start.nodeValue)))) {
+ _$jscoverage['plugins/insertcode.js'][319]++;
+ rng.setStartBefore(txt);
+ }
+ _$jscoverage['plugins/insertcode.js'][321]++;
+ rng.insertNode(fillchar).setStart(fillchar, 0).collapse(true).select(true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][325]++;
+ var tmpNode = me.document.createElement("br");
+ _$jscoverage['plugins/insertcode.js'][326]++;
+ rng.insertNode(tmpNode);
+ _$jscoverage['plugins/insertcode.js'][327]++;
+ rng.insertNode(me.document.createTextNode(domUtils.fillChar));
+ _$jscoverage['plugins/insertcode.js'][328]++;
+ rng.setStartAfter(tmpNode);
+ _$jscoverage['plugins/insertcode.js'][329]++;
+ pre = tmpNode.previousSibling;
+ _$jscoverage['plugins/insertcode.js'][330]++;
+ var tmp = tmp;
+ _$jscoverage['plugins/insertcode.js'][331]++;
+ while (pre) {
+ _$jscoverage['plugins/insertcode.js'][332]++;
+ tmp = pre;
+ _$jscoverage['plugins/insertcode.js'][333]++;
+ pre = pre.previousSibling;
+ _$jscoverage['plugins/insertcode.js'][334]++;
+ if (((! pre) || (pre.nodeName == "BR"))) {
+ _$jscoverage['plugins/insertcode.js'][335]++;
+ pre = tmp;
+ _$jscoverage['plugins/insertcode.js'][336]++;
+ break;
+ }
+}
+ _$jscoverage['plugins/insertcode.js'][339]++;
+ if (pre) {
+ _$jscoverage['plugins/insertcode.js'][340]++;
+ var str = "";
+ _$jscoverage['plugins/insertcode.js'][341]++;
+ while ((pre && (pre.nodeName != "BR") && new RegExp(("^[ " + domUtils.fillChar + "]*$")).test(pre.nodeValue))) {
+ _$jscoverage['plugins/insertcode.js'][342]++;
+ str += pre.nodeValue;
+ _$jscoverage['plugins/insertcode.js'][343]++;
+ pre = pre.nextSibling;
+}
+ _$jscoverage['plugins/insertcode.js'][345]++;
+ if ((pre.nodeName != "BR")) {
+ _$jscoverage['plugins/insertcode.js'][346]++;
+ var match = pre.nodeValue.match(new RegExp(("^([ " + domUtils.fillChar + "]+)")));
+ _$jscoverage['plugins/insertcode.js'][347]++;
+ if ((match && match[1])) {
+ _$jscoverage['plugins/insertcode.js'][348]++;
+ str += match[1];
+ }
+ }
+ _$jscoverage['plugins/insertcode.js'][353]++;
+ str = me.document.createTextNode(str);
+ _$jscoverage['plugins/insertcode.js'][354]++;
+ rng.insertNode(str).setStartAfter(str);
+ }
+ _$jscoverage['plugins/insertcode.js'][356]++;
+ rng.collapse(true).select();
+ }
+ }
+ _$jscoverage['plugins/insertcode.js'][361]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/insertcode.js'][362]++;
+ return true;
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][368]++;
+ me.addListener("tabkeydown", (function (cmd, evt) {
+ _$jscoverage['plugins/insertcode.js'][369]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/insertcode.js'][370]++;
+ var pre = domUtils.findParentByTagName(rng.startContainer, "pre", true);
+ _$jscoverage['plugins/insertcode.js'][371]++;
+ if (pre) {
+ _$jscoverage['plugins/insertcode.js'][372]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/insertcode.js'][373]++;
+ if (evt.shiftKey) {
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][436]++;
+ if ((! rng.collapsed)) {
+ _$jscoverage['plugins/insertcode.js'][437]++;
+ var bk = rng.createBookmark();
+ _$jscoverage['plugins/insertcode.js'][438]++;
+ var start = bk.start.previousSibling;
+ _$jscoverage['plugins/insertcode.js'][440]++;
+ while (start) {
+ _$jscoverage['plugins/insertcode.js'][441]++;
+ if (((pre.firstChild === start) && (! domUtils.isBr(start)))) {
+ _$jscoverage['plugins/insertcode.js'][442]++;
+ pre.insertBefore(me.document.createTextNode(" "), start);
+ _$jscoverage['plugins/insertcode.js'][444]++;
+ break;
+ }
+ _$jscoverage['plugins/insertcode.js'][446]++;
+ if (domUtils.isBr(start)) {
+ _$jscoverage['plugins/insertcode.js'][447]++;
+ pre.insertBefore(me.document.createTextNode(" "), start.nextSibling);
+ _$jscoverage['plugins/insertcode.js'][449]++;
+ break;
+ }
+ _$jscoverage['plugins/insertcode.js'][451]++;
+ start = start.previousSibling;
+}
+ _$jscoverage['plugins/insertcode.js'][453]++;
+ var end = bk.end;
+ _$jscoverage['plugins/insertcode.js'][454]++;
+ start = bk.start.nextSibling;
+ _$jscoverage['plugins/insertcode.js'][455]++;
+ if ((pre.firstChild === bk.start)) {
+ _$jscoverage['plugins/insertcode.js'][456]++;
+ pre.insertBefore(me.document.createTextNode(" "), start.nextSibling);
+ }
+ _$jscoverage['plugins/insertcode.js'][459]++;
+ while ((start && (start !== end))) {
+ _$jscoverage['plugins/insertcode.js'][460]++;
+ if ((domUtils.isBr(start) && start.nextSibling)) {
+ _$jscoverage['plugins/insertcode.js'][461]++;
+ if ((start.nextSibling === end)) {
+ _$jscoverage['plugins/insertcode.js'][462]++;
+ break;
+ }
+ _$jscoverage['plugins/insertcode.js'][464]++;
+ pre.insertBefore(me.document.createTextNode(" "), start.nextSibling);
+ }
+ _$jscoverage['plugins/insertcode.js'][467]++;
+ start = start.nextSibling;
+}
+ _$jscoverage['plugins/insertcode.js'][469]++;
+ rng.moveToBookmark(bk).select();
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][471]++;
+ var tmpNode = me.document.createTextNode(" ");
+ _$jscoverage['plugins/insertcode.js'][472]++;
+ rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true).select(true);
+ }
+ }
+ _$jscoverage['plugins/insertcode.js'][477]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/insertcode.js'][478]++;
+ return true;
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][485]++;
+ me.addListener("beforeinserthtml", (function (evtName, html) {
+ _$jscoverage['plugins/insertcode.js'][486]++;
+ var me = this, rng = me.selection.getRange(), pre = domUtils.findParentByTagName(rng.startContainer, "pre", true);
+ _$jscoverage['plugins/insertcode.js'][489]++;
+ if (pre) {
+ _$jscoverage['plugins/insertcode.js'][490]++;
+ if ((! rng.collapsed)) {
+ _$jscoverage['plugins/insertcode.js'][491]++;
+ rng.deleteContents();
+ }
+ _$jscoverage['plugins/insertcode.js'][493]++;
+ var htmlstr = "";
+ _$jscoverage['plugins/insertcode.js'][494]++;
+ if ((browser.ie && (browser.version > 8))) {
+ _$jscoverage['plugins/insertcode.js'][496]++;
+ utils.each(UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules).children, (function (node) {
+ _$jscoverage['plugins/insertcode.js'][497]++;
+ if ((node.type == "element")) {
+ _$jscoverage['plugins/insertcode.js'][498]++;
+ if ((node.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][499]++;
+ htmlstr += "\n";
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][500]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['plugins/insertcode.js'][501]++;
+ utils.each(node.children, (function (cn) {
+ _$jscoverage['plugins/insertcode.js'][502]++;
+ if ((cn.type == "element")) {
+ _$jscoverage['plugins/insertcode.js'][503]++;
+ if ((cn.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][504]++;
+ htmlstr += "\n";
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][505]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['plugins/insertcode.js'][506]++;
+ htmlstr += cn.innerText();
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][509]++;
+ htmlstr += cn.data;
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][512]++;
+ if ((! /\n$/.test(htmlstr))) {
+ _$jscoverage['plugins/insertcode.js'][513]++;
+ htmlstr += "\n";
+ }
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][517]++;
+ htmlstr += (node.data + "\n");
+ }
+ _$jscoverage['plugins/insertcode.js'][519]++;
+ if (((! node.nextSibling()) && /\n$/.test(htmlstr))) {
+ _$jscoverage['plugins/insertcode.js'][520]++;
+ htmlstr = htmlstr.replace(/\n$/, "");
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][523]++;
+ var tmpNode = me.document.createTextNode(utils.html(htmlstr.replace(/ /g, " ")));
+ _$jscoverage['plugins/insertcode.js'][524]++;
+ rng.insertNode(tmpNode).selectNode(tmpNode).select();
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][526]++;
+ var frag = me.document.createDocumentFragment();
+ _$jscoverage['plugins/insertcode.js'][528]++;
+ utils.each(UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules).children, (function (node) {
+ _$jscoverage['plugins/insertcode.js'][529]++;
+ if ((node.type == "element")) {
+ _$jscoverage['plugins/insertcode.js'][530]++;
+ if ((node.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][531]++;
+ frag.appendChild(me.document.createElement("br"));
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][532]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['plugins/insertcode.js'][533]++;
+ utils.each(node.children, (function (cn) {
+ _$jscoverage['plugins/insertcode.js'][534]++;
+ if ((cn.type == "element")) {
+ _$jscoverage['plugins/insertcode.js'][535]++;
+ if ((cn.tagName == "br")) {
+ _$jscoverage['plugins/insertcode.js'][537]++;
+ frag.appendChild(me.document.createElement("br"));
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][538]++;
+ if ((! dtd.$empty[node.tagName])) {
+ _$jscoverage['plugins/insertcode.js'][539]++;
+ frag.appendChild(me.document.createTextNode(utils.html(cn.innerText().replace(/ /g, " "))));
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][543]++;
+ frag.appendChild(me.document.createTextNode(utils.html(cn.data.replace(/ /g, " "))));
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][547]++;
+ if ((frag.lastChild.nodeName != "BR")) {
+ _$jscoverage['plugins/insertcode.js'][548]++;
+ frag.appendChild(me.document.createElement("br"));
+ }
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/insertcode.js'][552]++;
+ frag.appendChild(me.document.createTextNode(utils.html(node.data.replace(/ /g, " "))));
+ }
+ _$jscoverage['plugins/insertcode.js'][554]++;
+ if (((! node.nextSibling()) && (frag.lastChild.nodeName == "BR"))) {
+ _$jscoverage['plugins/insertcode.js'][555]++;
+ frag.removeChild(frag.lastChild);
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][560]++;
+ rng.insertNode(frag).select();
+ }
+ _$jscoverage['plugins/insertcode.js'][564]++;
+ return true;
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][568]++;
+ me.addListener("keydown", (function (cmd, evt) {
+ _$jscoverage['plugins/insertcode.js'][569]++;
+ var me = this, keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/insertcode.js'][570]++;
+ if ((keyCode == 40)) {
+ _$jscoverage['plugins/insertcode.js'][571]++;
+ var rng = me.selection.getRange(), pre, start = rng.startContainer;
+ _$jscoverage['plugins/insertcode.js'][572]++;
+ if ((rng.collapsed && (pre = domUtils.findParentByTagName(rng.startContainer, "pre", true)) && (! pre.nextSibling))) {
+ _$jscoverage['plugins/insertcode.js'][573]++;
+ var last = pre.lastChild;
+ _$jscoverage['plugins/insertcode.js'][574]++;
+ while ((last && (last.nodeName == "BR"))) {
+ _$jscoverage['plugins/insertcode.js'][575]++;
+ last = last.previousSibling;
+}
+ _$jscoverage['plugins/insertcode.js'][577]++;
+ if (((last === start) || ((rng.startContainer === pre) && (rng.startOffset == pre.childNodes.length)))) {
+ _$jscoverage['plugins/insertcode.js'][578]++;
+ me.execCommand("insertparagraph");
+ _$jscoverage['plugins/insertcode.js'][579]++;
+ domUtils.preventDefault(evt);
+ }
+ }
+ }
+}));
+ _$jscoverage['plugins/insertcode.js'][586]++;
+ me.addListener("delkeydown", (function (type, evt) {
+ _$jscoverage['plugins/insertcode.js'][587]++;
+ var rng = this.selection.getRange();
+ _$jscoverage['plugins/insertcode.js'][588]++;
+ rng.txtToElmBoundary(true);
+ _$jscoverage['plugins/insertcode.js'][589]++;
+ var start = rng.startContainer;
+ _$jscoverage['plugins/insertcode.js'][590]++;
+ if ((domUtils.isTagNode(start, "pre") && rng.collapsed && domUtils.isStartInblock(rng))) {
+ _$jscoverage['plugins/insertcode.js'][591]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/insertcode.js'][592]++;
+ domUtils.fillNode(me.document, p);
+ _$jscoverage['plugins/insertcode.js'][593]++;
+ start.parentNode.insertBefore(p, start);
+ _$jscoverage['plugins/insertcode.js'][594]++;
+ domUtils.remove(start);
+ _$jscoverage['plugins/insertcode.js'][595]++;
+ rng.setStart(p, 0).setCursor(false, true);
+ _$jscoverage['plugins/insertcode.js'][596]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/insertcode.js'][597]++;
+ return true;
+ }
+}));
+});
diff --git a/_test/coverage/plugins/inserthtml.js b/_test/coverage/plugins/inserthtml.js
new file mode 100644
index 000000000..2e7ccbac2
--- /dev/null
+++ b/_test/coverage/plugins/inserthtml.js
@@ -0,0 +1,504 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/inserthtml.js']) {
+ _$jscoverage['plugins/inserthtml.js'] = [];
+ _$jscoverage['plugins/inserthtml.js'][31] = 0;
+ _$jscoverage['plugins/inserthtml.js'][33] = 0;
+ _$jscoverage['plugins/inserthtml.js'][36] = 0;
+ _$jscoverage['plugins/inserthtml.js'][37] = 0;
+ _$jscoverage['plugins/inserthtml.js'][39] = 0;
+ _$jscoverage['plugins/inserthtml.js'][40] = 0;
+ _$jscoverage['plugins/inserthtml.js'][42] = 0;
+ _$jscoverage['plugins/inserthtml.js'][43] = 0;
+ _$jscoverage['plugins/inserthtml.js'][44] = 0;
+ _$jscoverage['plugins/inserthtml.js'][46] = 0;
+ _$jscoverage['plugins/inserthtml.js'][47] = 0;
+ _$jscoverage['plugins/inserthtml.js'][49] = 0;
+ _$jscoverage['plugins/inserthtml.js'][50] = 0;
+ _$jscoverage['plugins/inserthtml.js'][53] = 0;
+ _$jscoverage['plugins/inserthtml.js'][54] = 0;
+ _$jscoverage['plugins/inserthtml.js'][56] = 0;
+ _$jscoverage['plugins/inserthtml.js'][58] = 0;
+ _$jscoverage['plugins/inserthtml.js'][59] = 0;
+ _$jscoverage['plugins/inserthtml.js'][60] = 0;
+ _$jscoverage['plugins/inserthtml.js'][61] = 0;
+ _$jscoverage['plugins/inserthtml.js'][63] = 0;
+ _$jscoverage['plugins/inserthtml.js'][64] = 0;
+ _$jscoverage['plugins/inserthtml.js'][65] = 0;
+ _$jscoverage['plugins/inserthtml.js'][67] = 0;
+ _$jscoverage['plugins/inserthtml.js'][70] = 0;
+ _$jscoverage['plugins/inserthtml.js'][71] = 0;
+ _$jscoverage['plugins/inserthtml.js'][72] = 0;
+ _$jscoverage['plugins/inserthtml.js'][73] = 0;
+ _$jscoverage['plugins/inserthtml.js'][76] = 0;
+ _$jscoverage['plugins/inserthtml.js'][77] = 0;
+ _$jscoverage['plugins/inserthtml.js'][78] = 0;
+ _$jscoverage['plugins/inserthtml.js'][79] = 0;
+ _$jscoverage['plugins/inserthtml.js'][80] = 0;
+ _$jscoverage['plugins/inserthtml.js'][81] = 0;
+ _$jscoverage['plugins/inserthtml.js'][82] = 0;
+ _$jscoverage['plugins/inserthtml.js'][87] = 0;
+ _$jscoverage['plugins/inserthtml.js'][88] = 0;
+ _$jscoverage['plugins/inserthtml.js'][89] = 0;
+ _$jscoverage['plugins/inserthtml.js'][90] = 0;
+ _$jscoverage['plugins/inserthtml.js'][91] = 0;
+ _$jscoverage['plugins/inserthtml.js'][92] = 0;
+ _$jscoverage['plugins/inserthtml.js'][93] = 0;
+ _$jscoverage['plugins/inserthtml.js'][95] = 0;
+ _$jscoverage['plugins/inserthtml.js'][102] = 0;
+ _$jscoverage['plugins/inserthtml.js'][104] = 0;
+ _$jscoverage['plugins/inserthtml.js'][105] = 0;
+ _$jscoverage['plugins/inserthtml.js'][106] = 0;
+ _$jscoverage['plugins/inserthtml.js'][107] = 0;
+ _$jscoverage['plugins/inserthtml.js'][108] = 0;
+ _$jscoverage['plugins/inserthtml.js'][109] = 0;
+ _$jscoverage['plugins/inserthtml.js'][110] = 0;
+ _$jscoverage['plugins/inserthtml.js'][111] = 0;
+ _$jscoverage['plugins/inserthtml.js'][112] = 0;
+ _$jscoverage['plugins/inserthtml.js'][116] = 0;
+ _$jscoverage['plugins/inserthtml.js'][117] = 0;
+ _$jscoverage['plugins/inserthtml.js'][118] = 0;
+ _$jscoverage['plugins/inserthtml.js'][119] = 0;
+ _$jscoverage['plugins/inserthtml.js'][121] = 0;
+ _$jscoverage['plugins/inserthtml.js'][122] = 0;
+ _$jscoverage['plugins/inserthtml.js'][123] = 0;
+ _$jscoverage['plugins/inserthtml.js'][124] = 0;
+ _$jscoverage['plugins/inserthtml.js'][125] = 0;
+ _$jscoverage['plugins/inserthtml.js'][128] = 0;
+ _$jscoverage['plugins/inserthtml.js'][129] = 0;
+ _$jscoverage['plugins/inserthtml.js'][130] = 0;
+ _$jscoverage['plugins/inserthtml.js'][131] = 0;
+ _$jscoverage['plugins/inserthtml.js'][132] = 0;
+ _$jscoverage['plugins/inserthtml.js'][133] = 0;
+ _$jscoverage['plugins/inserthtml.js'][135] = 0;
+ _$jscoverage['plugins/inserthtml.js'][137] = 0;
+ _$jscoverage['plugins/inserthtml.js'][138] = 0;
+ _$jscoverage['plugins/inserthtml.js'][139] = 0;
+ _$jscoverage['plugins/inserthtml.js'][140] = 0;
+ _$jscoverage['plugins/inserthtml.js'][141] = 0;
+ _$jscoverage['plugins/inserthtml.js'][142] = 0;
+ _$jscoverage['plugins/inserthtml.js'][143] = 0;
+ _$jscoverage['plugins/inserthtml.js'][144] = 0;
+ _$jscoverage['plugins/inserthtml.js'][148] = 0;
+ _$jscoverage['plugins/inserthtml.js'][149] = 0;
+ _$jscoverage['plugins/inserthtml.js'][150] = 0;
+ _$jscoverage['plugins/inserthtml.js'][152] = 0;
+ _$jscoverage['plugins/inserthtml.js'][154] = 0;
+ _$jscoverage['plugins/inserthtml.js'][157] = 0;
+ _$jscoverage['plugins/inserthtml.js'][158] = 0;
+ _$jscoverage['plugins/inserthtml.js'][159] = 0;
+ _$jscoverage['plugins/inserthtml.js'][160] = 0;
+ _$jscoverage['plugins/inserthtml.js'][161] = 0;
+ _$jscoverage['plugins/inserthtml.js'][162] = 0;
+ _$jscoverage['plugins/inserthtml.js'][163] = 0;
+ _$jscoverage['plugins/inserthtml.js'][165] = 0;
+ _$jscoverage['plugins/inserthtml.js'][167] = 0;
+ _$jscoverage['plugins/inserthtml.js'][170] = 0;
+ _$jscoverage['plugins/inserthtml.js'][171] = 0;
+ _$jscoverage['plugins/inserthtml.js'][172] = 0;
+ _$jscoverage['plugins/inserthtml.js'][174] = 0;
+ _$jscoverage['plugins/inserthtml.js'][175] = 0;
+ _$jscoverage['plugins/inserthtml.js'][176] = 0;
+ _$jscoverage['plugins/inserthtml.js'][177] = 0;
+ _$jscoverage['plugins/inserthtml.js'][179] = 0;
+ _$jscoverage['plugins/inserthtml.js'][180] = 0;
+ _$jscoverage['plugins/inserthtml.js'][181] = 0;
+ _$jscoverage['plugins/inserthtml.js'][182] = 0;
+ _$jscoverage['plugins/inserthtml.js'][188] = 0;
+ _$jscoverage['plugins/inserthtml.js'][190] = 0;
+ _$jscoverage['plugins/inserthtml.js'][191] = 0;
+ _$jscoverage['plugins/inserthtml.js'][192] = 0;
+ _$jscoverage['plugins/inserthtml.js'][193] = 0;
+ _$jscoverage['plugins/inserthtml.js'][197] = 0;
+ _$jscoverage['plugins/inserthtml.js'][202] = 0;
+ _$jscoverage['plugins/inserthtml.js'][204] = 0;
+ _$jscoverage['plugins/inserthtml.js'][207] = 0;
+ _$jscoverage['plugins/inserthtml.js'][208] = 0;
+ _$jscoverage['plugins/inserthtml.js'][210] = 0;
+ _$jscoverage['plugins/inserthtml.js'][211] = 0;
+ _$jscoverage['plugins/inserthtml.js'][213] = 0;
+ _$jscoverage['plugins/inserthtml.js'][217] = 0;
+ _$jscoverage['plugins/inserthtml.js'][219] = 0;
+ _$jscoverage['plugins/inserthtml.js'][220] = 0;
+ _$jscoverage['plugins/inserthtml.js'][223] = 0;
+ _$jscoverage['plugins/inserthtml.js'][224] = 0;
+ _$jscoverage['plugins/inserthtml.js'][225] = 0;
+ _$jscoverage['plugins/inserthtml.js'][226] = 0;
+ _$jscoverage['plugins/inserthtml.js'][228] = 0;
+ _$jscoverage['plugins/inserthtml.js'][232] = 0;
+ _$jscoverage['plugins/inserthtml.js'][233] = 0;
+ _$jscoverage['plugins/inserthtml.js'][235] = 0;
+ _$jscoverage['plugins/inserthtml.js'][236] = 0;
+ _$jscoverage['plugins/inserthtml.js'][243] = 0;
+ _$jscoverage['plugins/inserthtml.js'][244] = 0;
+ _$jscoverage['plugins/inserthtml.js'][251] = 0;
+ _$jscoverage['plugins/inserthtml.js'][252] = 0;
+ _$jscoverage['plugins/inserthtml.js'][253] = 0;
+ _$jscoverage['plugins/inserthtml.js'][254] = 0;
+}
+_$jscoverage['plugins/inserthtml.js'].source = ["/** "," * 插入html字符串插件 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 对编辑器区域插入html字符串 "," * @command inserthtml "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } html 插入的html字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'insertcode', '<p>我是UEdtior开发者</P>' ); "," * ``` "," */ ","/** "," * 对编辑器区域插入html字符串 "," * @command inserthtml "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } html 插入的html字符串 "," * @param { Bool } notNeedFilter 传true时不走过滤规则,反之要走配置项过滤规则 "," * @example "," * ```javascript "," * editor.execCommand( 'inserthtml', '<div>我是UEdtior开发者</div>' ,true); "," * ``` "," */ ","","UE. commands[ 'inserthtml' ] = { "," execCommand: function ( command, html, notNeedFilter) { "," var me = this , "," range, "," div; "," if (! html) { "," return ; "," } "," if ( me. fireEvent( 'beforeinserthtml' , html) === true ) { "," return ; "," } "," range = me. selection. getRange(); "," div = range. document. createElement( 'div' ); "," div. style. display = 'inline' ; ",""," if (! notNeedFilter) { "," var root = UE. htmlparser( html); "," //如果给了过滤规则就先进行过滤 "," if ( me. options. filterRules) { "," UE. filterNode( root, me. options. filterRules); "," } "," //执行默认的处理 "," me. filterInputRule( root); "," html = root. toHtml() "," } "," div. innerHTML = utils. trim( html ); ",""," if ( ! range. collapsed ) { "," var tmpNode = range. startContainer; "," if ( domUtils. isFillChar( tmpNode)) { "," range. setStartBefore( tmpNode) "," } "," tmpNode = range. endContainer; "," if ( domUtils. isFillChar( tmpNode)) { "," range. setEndAfter( tmpNode) "," } "," range. txtToElmBoundary(); "," //结束边界可能放到了br的前边,要把br包含进来 "," // x[xxx]<br/> "," if ( range. endContainer && range. endContainer. nodeType == 1 ) { "," tmpNode = range. endContainer. childNodes[ range. endOffset]; "," if ( tmpNode && domUtils. isBr( tmpNode)) { "," range. setEndAfter( tmpNode); "," } "," } "," if ( range. startOffset == 0 ) { "," tmpNode = range. startContainer; "," if ( domUtils. isBoundaryNode( tmpNode, 'firstChild' ) ) { "," tmpNode = range. endContainer; "," if ( range. endOffset == ( tmpNode. nodeType == 3 ? tmpNode. nodeValue. length : tmpNode. childNodes. length) && domUtils. isBoundaryNode( tmpNode, 'lastChild' )) { "," me. body. innerHTML = '<p>' +( browser. ie ? '' : '<br/>' )+ '</p>' ; "," range. setStart( me. body. firstChild, 0 ). collapse( true ) ",""," } "," } "," } "," ! range. collapsed && range. deleteContents(); "," if ( range. startContainer. nodeType == 1 ) { "," var child = range. startContainer. childNodes[ range. startOffset], pre; "," if ( child && domUtils. isBlockElm( child) && ( pre = child. previousSibling) && domUtils. isBlockElm( pre)) { "," range. setEnd( pre, pre. childNodes. length). collapse(); "," while ( child. firstChild) { "," pre. appendChild( child. firstChild); "," } "," domUtils. remove( child); "," } "," } ",""," } ","",""," var child, parent, pre, tmp, hadBreak = 0 , nextNode; "," //如果当前位置选中了fillchar要干掉,要不会产生空行 "," if ( range. inFillChar()) { "," child = range. startContainer; "," if ( domUtils. isFillChar( child)) { "," range. setStartBefore( child). collapse( true ); "," domUtils. remove( child); "," } else if ( domUtils. isFillChar( child, true )) { "," child. nodeValue = child. nodeValue. replace( fillCharReg, '' ); "," range. startOffset--; "," range. collapsed && range. collapse( true ) "," } "," } "," //列表单独处理 "," var li = domUtils. findParentByTagName( range. startContainer, 'li' , true ); "," if ( li) { "," var next, last; "," while ( child = div. firstChild) { "," //针对hr单独处理一下先 "," while ( child && ( child. nodeType == 3 || ! domUtils. isBlockElm( child) || child. tagName== 'HR' )) { "," next = child. nextSibling; "," range. insertNode( child). collapse(); "," last = child; "," child = next; ",""," } "," if ( child) { "," if ( /^(ol|ul)$/i . test( child. tagName)) { "," while ( child. firstChild) { "," last = child. firstChild; "," domUtils. insertAfter( li, child. firstChild); "," li = li. nextSibling; "," } "," domUtils. remove( child) "," } else { "," var tmpLi; "," next = child. nextSibling; "," tmpLi = me. document. createElement( 'li' ); "," domUtils. insertAfter( li, tmpLi); "," tmpLi. appendChild( child); "," last = child; "," child = next; "," li = tmpLi; "," } "," } "," } "," li = domUtils. findParentByTagName( range. startContainer, 'li' , true ); "," if ( domUtils. isEmptyBlock( li)) { "," domUtils. remove( li) "," } "," if ( last) { ",""," range. setStartAfter( last). collapse( true ). select( true ) "," } "," } else { "," while ( child = div. firstChild ) { "," if ( hadBreak) { "," var p = me. document. createElement( 'p' ); "," while ( child && ( child. nodeType == 3 || ! dtd. $block[ child. tagName])) { "," nextNode = child. nextSibling; "," p. appendChild( child); "," child = nextNode; "," } "," if ( p. firstChild) { ",""," child = p"," } "," } "," range. insertNode( child ); "," nextNode = child. nextSibling; "," if ( ! hadBreak && child. nodeType == domUtils. NODE_ELEMENT && domUtils. isBlockElm( child ) ) { ",""," parent = domUtils. findParent( child, function ( node ) { return domUtils. isBlockElm( node ); } ); "," if ( parent && parent. tagName. toLowerCase() != 'body' && !( dtd[ parent. tagName][ child. nodeName] && child. parentNode === parent)) { "," if (! dtd[ parent. tagName][ child. nodeName]) { "," pre = parent; "," } else { "," tmp = child. parentNode; "," while ( tmp !== parent) { "," pre = tmp; "," tmp = tmp. parentNode; ",""," } "," } ","",""," domUtils. breakParent( child, pre || tmp ); "," //去掉break后前一个多余的节点 <p>|<[p> ==> <p></p><div></div><p>|</p> "," var pre = child. previousSibling; "," domUtils. trimWhiteTextNode( pre); "," if (! pre. childNodes. length) { "," domUtils. remove( pre); "," } "," //trace:2012,在非ie的情况,切开后剩下的节点有可能不能点入光标添加br占位 ",""," if (! browser. ie && "," ( next = child. nextSibling) && "," domUtils. isBlockElm( next) && "," next. lastChild && "," ! domUtils. isBr( next. lastChild)) { "," next. appendChild( me. document. createElement( 'br' )); "," } "," hadBreak = 1 ; "," } "," } "," var next = child. nextSibling; "," if (! div. firstChild && next && domUtils. isBlockElm( next)) { ",""," range. setStart( next, 0 ). collapse( true ); "," break ; "," } "," range. setEndAfter( child ). collapse(); ",""," } ",""," child = range. startContainer; ",""," if ( nextNode && domUtils. isBr( nextNode)) { "," domUtils. remove( nextNode) "," } "," //用chrome可能有空白展位符 "," if ( domUtils. isBlockElm( child) && domUtils. isEmptyNode( child)) { "," if ( nextNode = child. nextSibling) { "," domUtils. remove( child); "," if ( nextNode. nodeType == 1 && dtd. $block[ nextNode. tagName]) { ",""," range. setStart( nextNode, 0 ). collapse( true ). shrinkBoundary() "," } "," } else { ",""," try { "," child. innerHTML = browser. ie ? domUtils. fillChar : '<br/>' ; "," } catch ( e) { "," range. setStartBefore( child); "," domUtils. remove( child) "," } ",""," } ",""," } "," //加上true因为在删除表情等时会删两次,第一次是删的fillData "," try { "," range. select( true ); "," } catch ( e) {} ",""," } ","","",""," setTimeout( function () { "," range = me. selection. getRange(); "," range. scrollToView( me. autoHeightEnabled, me. autoHeightEnabled ? domUtils. getXY( me. iframe). y: 0 ); "," me. fireEvent( 'afterinserthtml' ); "," } , 200 ); "," } ","} ; "];
+_$jscoverage['plugins/inserthtml.js'][31]++;
+UE.commands.inserthtml = {execCommand: (function (command, html, notNeedFilter) {
+ _$jscoverage['plugins/inserthtml.js'][33]++;
+ var me = this, range, div;
+ _$jscoverage['plugins/inserthtml.js'][36]++;
+ if ((! html)) {
+ _$jscoverage['plugins/inserthtml.js'][37]++;
+ return;
+ }
+ _$jscoverage['plugins/inserthtml.js'][39]++;
+ if ((me.fireEvent("beforeinserthtml", html) === true)) {
+ _$jscoverage['plugins/inserthtml.js'][40]++;
+ return;
+ }
+ _$jscoverage['plugins/inserthtml.js'][42]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/inserthtml.js'][43]++;
+ div = range.document.createElement("div");
+ _$jscoverage['plugins/inserthtml.js'][44]++;
+ div.style.display = "inline";
+ _$jscoverage['plugins/inserthtml.js'][46]++;
+ if ((! notNeedFilter)) {
+ _$jscoverage['plugins/inserthtml.js'][47]++;
+ var root = UE.htmlparser(html);
+ _$jscoverage['plugins/inserthtml.js'][49]++;
+ if (me.options.filterRules) {
+ _$jscoverage['plugins/inserthtml.js'][50]++;
+ UE.filterNode(root, me.options.filterRules);
+ }
+ _$jscoverage['plugins/inserthtml.js'][53]++;
+ me.filterInputRule(root);
+ _$jscoverage['plugins/inserthtml.js'][54]++;
+ html = root.toHtml();
+ }
+ _$jscoverage['plugins/inserthtml.js'][56]++;
+ div.innerHTML = utils.trim(html);
+ _$jscoverage['plugins/inserthtml.js'][58]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/inserthtml.js'][59]++;
+ var tmpNode = range.startContainer;
+ _$jscoverage['plugins/inserthtml.js'][60]++;
+ if (domUtils.isFillChar(tmpNode)) {
+ _$jscoverage['plugins/inserthtml.js'][61]++;
+ range.setStartBefore(tmpNode);
+ }
+ _$jscoverage['plugins/inserthtml.js'][63]++;
+ tmpNode = range.endContainer;
+ _$jscoverage['plugins/inserthtml.js'][64]++;
+ if (domUtils.isFillChar(tmpNode)) {
+ _$jscoverage['plugins/inserthtml.js'][65]++;
+ range.setEndAfter(tmpNode);
+ }
+ _$jscoverage['plugins/inserthtml.js'][67]++;
+ range.txtToElmBoundary();
+ _$jscoverage['plugins/inserthtml.js'][70]++;
+ if ((range.endContainer && (range.endContainer.nodeType == 1))) {
+ _$jscoverage['plugins/inserthtml.js'][71]++;
+ tmpNode = range.endContainer.childNodes[range.endOffset];
+ _$jscoverage['plugins/inserthtml.js'][72]++;
+ if ((tmpNode && domUtils.isBr(tmpNode))) {
+ _$jscoverage['plugins/inserthtml.js'][73]++;
+ range.setEndAfter(tmpNode);
+ }
+ }
+ _$jscoverage['plugins/inserthtml.js'][76]++;
+ if ((range.startOffset == 0)) {
+ _$jscoverage['plugins/inserthtml.js'][77]++;
+ tmpNode = range.startContainer;
+ _$jscoverage['plugins/inserthtml.js'][78]++;
+ if (domUtils.isBoundaryNode(tmpNode, "firstChild")) {
+ _$jscoverage['plugins/inserthtml.js'][79]++;
+ tmpNode = range.endContainer;
+ _$jscoverage['plugins/inserthtml.js'][80]++;
+ if (((range.endOffset == ((tmpNode.nodeType == 3)? tmpNode.nodeValue.length: tmpNode.childNodes.length)) && domUtils.isBoundaryNode(tmpNode, "lastChild"))) {
+ _$jscoverage['plugins/inserthtml.js'][81]++;
+ me.body.innerHTML = ("" + (browser.ie? "": " ") + "
");
+ _$jscoverage['plugins/inserthtml.js'][82]++;
+ range.setStart(me.body.firstChild, 0).collapse(true);
+ }
+ }
+ }
+ _$jscoverage['plugins/inserthtml.js'][87]++;
+ ((! range.collapsed) && range.deleteContents());
+ _$jscoverage['plugins/inserthtml.js'][88]++;
+ if ((range.startContainer.nodeType == 1)) {
+ _$jscoverage['plugins/inserthtml.js'][89]++;
+ var child = range.startContainer.childNodes[range.startOffset], pre;
+ _$jscoverage['plugins/inserthtml.js'][90]++;
+ if ((child && domUtils.isBlockElm(child) && (pre = child.previousSibling) && domUtils.isBlockElm(pre))) {
+ _$jscoverage['plugins/inserthtml.js'][91]++;
+ range.setEnd(pre, pre.childNodes.length).collapse();
+ _$jscoverage['plugins/inserthtml.js'][92]++;
+ while (child.firstChild) {
+ _$jscoverage['plugins/inserthtml.js'][93]++;
+ pre.appendChild(child.firstChild);
+}
+ _$jscoverage['plugins/inserthtml.js'][95]++;
+ domUtils.remove(child);
+ }
+ }
+ }
+ _$jscoverage['plugins/inserthtml.js'][102]++;
+ var child = child, parent, pre = pre, tmp, hadBreak = 0, nextNode;
+ _$jscoverage['plugins/inserthtml.js'][104]++;
+ if (range.inFillChar()) {
+ _$jscoverage['plugins/inserthtml.js'][105]++;
+ child = range.startContainer;
+ _$jscoverage['plugins/inserthtml.js'][106]++;
+ if (domUtils.isFillChar(child)) {
+ _$jscoverage['plugins/inserthtml.js'][107]++;
+ range.setStartBefore(child).collapse(true);
+ _$jscoverage['plugins/inserthtml.js'][108]++;
+ domUtils.remove(child);
+ }
+ else {
+ _$jscoverage['plugins/inserthtml.js'][109]++;
+ if (domUtils.isFillChar(child, true)) {
+ _$jscoverage['plugins/inserthtml.js'][110]++;
+ child.nodeValue = child.nodeValue.replace(fillCharReg, "");
+ _$jscoverage['plugins/inserthtml.js'][111]++;
+ (range.startOffset--);
+ _$jscoverage['plugins/inserthtml.js'][112]++;
+ (range.collapsed && range.collapse(true));
+ }
+ }
+ }
+ _$jscoverage['plugins/inserthtml.js'][116]++;
+ var li = domUtils.findParentByTagName(range.startContainer, "li", true);
+ _$jscoverage['plugins/inserthtml.js'][117]++;
+ if (li) {
+ _$jscoverage['plugins/inserthtml.js'][118]++;
+ var next, last;
+ _$jscoverage['plugins/inserthtml.js'][119]++;
+ while ((child = div.firstChild)) {
+ _$jscoverage['plugins/inserthtml.js'][121]++;
+ while ((child && ((child.nodeType == 3) || (! domUtils.isBlockElm(child)) || (child.tagName == "HR")))) {
+ _$jscoverage['plugins/inserthtml.js'][122]++;
+ next = child.nextSibling;
+ _$jscoverage['plugins/inserthtml.js'][123]++;
+ range.insertNode(child).collapse();
+ _$jscoverage['plugins/inserthtml.js'][124]++;
+ last = child;
+ _$jscoverage['plugins/inserthtml.js'][125]++;
+ child = next;
+}
+ _$jscoverage['plugins/inserthtml.js'][128]++;
+ if (child) {
+ _$jscoverage['plugins/inserthtml.js'][129]++;
+ if (/^(ol|ul)$/i.test(child.tagName)) {
+ _$jscoverage['plugins/inserthtml.js'][130]++;
+ while (child.firstChild) {
+ _$jscoverage['plugins/inserthtml.js'][131]++;
+ last = child.firstChild;
+ _$jscoverage['plugins/inserthtml.js'][132]++;
+ domUtils.insertAfter(li, child.firstChild);
+ _$jscoverage['plugins/inserthtml.js'][133]++;
+ li = li.nextSibling;
+}
+ _$jscoverage['plugins/inserthtml.js'][135]++;
+ domUtils.remove(child);
+ }
+ else {
+ _$jscoverage['plugins/inserthtml.js'][137]++;
+ var tmpLi;
+ _$jscoverage['plugins/inserthtml.js'][138]++;
+ next = child.nextSibling;
+ _$jscoverage['plugins/inserthtml.js'][139]++;
+ tmpLi = me.document.createElement("li");
+ _$jscoverage['plugins/inserthtml.js'][140]++;
+ domUtils.insertAfter(li, tmpLi);
+ _$jscoverage['plugins/inserthtml.js'][141]++;
+ tmpLi.appendChild(child);
+ _$jscoverage['plugins/inserthtml.js'][142]++;
+ last = child;
+ _$jscoverage['plugins/inserthtml.js'][143]++;
+ child = next;
+ _$jscoverage['plugins/inserthtml.js'][144]++;
+ li = tmpLi;
+ }
+ }
+}
+ _$jscoverage['plugins/inserthtml.js'][148]++;
+ li = domUtils.findParentByTagName(range.startContainer, "li", true);
+ _$jscoverage['plugins/inserthtml.js'][149]++;
+ if (domUtils.isEmptyBlock(li)) {
+ _$jscoverage['plugins/inserthtml.js'][150]++;
+ domUtils.remove(li);
+ }
+ _$jscoverage['plugins/inserthtml.js'][152]++;
+ if (last) {
+ _$jscoverage['plugins/inserthtml.js'][154]++;
+ range.setStartAfter(last).collapse(true).select(true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/inserthtml.js'][157]++;
+ while ((child = div.firstChild)) {
+ _$jscoverage['plugins/inserthtml.js'][158]++;
+ if (hadBreak) {
+ _$jscoverage['plugins/inserthtml.js'][159]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/inserthtml.js'][160]++;
+ while ((child && ((child.nodeType == 3) || (! dtd.$block[child.tagName])))) {
+ _$jscoverage['plugins/inserthtml.js'][161]++;
+ nextNode = child.nextSibling;
+ _$jscoverage['plugins/inserthtml.js'][162]++;
+ p.appendChild(child);
+ _$jscoverage['plugins/inserthtml.js'][163]++;
+ child = nextNode;
+}
+ _$jscoverage['plugins/inserthtml.js'][165]++;
+ if (p.firstChild) {
+ _$jscoverage['plugins/inserthtml.js'][167]++;
+ child = p;
+ }
+ }
+ _$jscoverage['plugins/inserthtml.js'][170]++;
+ range.insertNode(child);
+ _$jscoverage['plugins/inserthtml.js'][171]++;
+ nextNode = child.nextSibling;
+ _$jscoverage['plugins/inserthtml.js'][172]++;
+ if (((! hadBreak) && (child.nodeType == domUtils.NODE_ELEMENT) && domUtils.isBlockElm(child))) {
+ _$jscoverage['plugins/inserthtml.js'][174]++;
+ parent = domUtils.findParent(child, (function (node) {
+ _$jscoverage['plugins/inserthtml.js'][174]++;
+ return domUtils.isBlockElm(node);
+}));
+ _$jscoverage['plugins/inserthtml.js'][175]++;
+ if ((parent && (parent.tagName.toLowerCase() != "body") && (! (dtd[parent.tagName][child.nodeName] && (child.parentNode === parent))))) {
+ _$jscoverage['plugins/inserthtml.js'][176]++;
+ if ((! dtd[parent.tagName][child.nodeName])) {
+ _$jscoverage['plugins/inserthtml.js'][177]++;
+ pre = parent;
+ }
+ else {
+ _$jscoverage['plugins/inserthtml.js'][179]++;
+ tmp = child.parentNode;
+ _$jscoverage['plugins/inserthtml.js'][180]++;
+ while ((tmp !== parent)) {
+ _$jscoverage['plugins/inserthtml.js'][181]++;
+ pre = tmp;
+ _$jscoverage['plugins/inserthtml.js'][182]++;
+ tmp = tmp.parentNode;
+}
+ }
+ _$jscoverage['plugins/inserthtml.js'][188]++;
+ domUtils.breakParent(child, (pre || tmp));
+ _$jscoverage['plugins/inserthtml.js'][190]++;
+ var pre = child.previousSibling;
+ _$jscoverage['plugins/inserthtml.js'][191]++;
+ domUtils.trimWhiteTextNode(pre);
+ _$jscoverage['plugins/inserthtml.js'][192]++;
+ if ((! pre.childNodes.length)) {
+ _$jscoverage['plugins/inserthtml.js'][193]++;
+ domUtils.remove(pre);
+ }
+ _$jscoverage['plugins/inserthtml.js'][197]++;
+ if (((! browser.ie) && (next = child.nextSibling) && domUtils.isBlockElm(next) && next.lastChild && (! domUtils.isBr(next.lastChild)))) {
+ _$jscoverage['plugins/inserthtml.js'][202]++;
+ next.appendChild(me.document.createElement("br"));
+ }
+ _$jscoverage['plugins/inserthtml.js'][204]++;
+ hadBreak = 1;
+ }
+ }
+ _$jscoverage['plugins/inserthtml.js'][207]++;
+ var next = child.nextSibling;
+ _$jscoverage['plugins/inserthtml.js'][208]++;
+ if (((! div.firstChild) && next && domUtils.isBlockElm(next))) {
+ _$jscoverage['plugins/inserthtml.js'][210]++;
+ range.setStart(next, 0).collapse(true);
+ _$jscoverage['plugins/inserthtml.js'][211]++;
+ break;
+ }
+ _$jscoverage['plugins/inserthtml.js'][213]++;
+ range.setEndAfter(child).collapse();
+}
+ _$jscoverage['plugins/inserthtml.js'][217]++;
+ child = range.startContainer;
+ _$jscoverage['plugins/inserthtml.js'][219]++;
+ if ((nextNode && domUtils.isBr(nextNode))) {
+ _$jscoverage['plugins/inserthtml.js'][220]++;
+ domUtils.remove(nextNode);
+ }
+ _$jscoverage['plugins/inserthtml.js'][223]++;
+ if ((domUtils.isBlockElm(child) && domUtils.isEmptyNode(child))) {
+ _$jscoverage['plugins/inserthtml.js'][224]++;
+ if ((nextNode = child.nextSibling)) {
+ _$jscoverage['plugins/inserthtml.js'][225]++;
+ domUtils.remove(child);
+ _$jscoverage['plugins/inserthtml.js'][226]++;
+ if (((nextNode.nodeType == 1) && dtd.$block[nextNode.tagName])) {
+ _$jscoverage['plugins/inserthtml.js'][228]++;
+ range.setStart(nextNode, 0).collapse(true).shrinkBoundary();
+ }
+ }
+ else {
+ _$jscoverage['plugins/inserthtml.js'][232]++;
+ try {
+ _$jscoverage['plugins/inserthtml.js'][233]++;
+ child.innerHTML = (browser.ie? domUtils.fillChar: " ");
+ }
+ catch (e) {
+ _$jscoverage['plugins/inserthtml.js'][235]++;
+ range.setStartBefore(child);
+ _$jscoverage['plugins/inserthtml.js'][236]++;
+ domUtils.remove(child);
+ }
+ }
+ }
+ _$jscoverage['plugins/inserthtml.js'][243]++;
+ try {
+ _$jscoverage['plugins/inserthtml.js'][244]++;
+ range.select(true);
+ }
+ catch (e) {
+ }
+ }
+ _$jscoverage['plugins/inserthtml.js'][251]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/inserthtml.js'][252]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/inserthtml.js'][253]++;
+ range.scrollToView(me.autoHeightEnabled, (me.autoHeightEnabled? domUtils.getXY(me.iframe).y: 0));
+ _$jscoverage['plugins/inserthtml.js'][254]++;
+ me.fireEvent("afterinserthtml");
+}), 200);
+})};
diff --git a/_test/coverage/plugins/insertparagraph.js b/_test/coverage/plugins/insertparagraph.js
new file mode 100644
index 000000000..d95607770
--- /dev/null
+++ b/_test/coverage/plugins/insertparagraph.js
@@ -0,0 +1,92 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/insertparagraph.js']) {
+ _$jscoverage['plugins/insertparagraph.js'] = [];
+ _$jscoverage['plugins/insertparagraph.js'][20] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][22] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][25] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][26] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][27] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][29] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][30] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][32] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][33] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][34] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][35] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][37] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][39] = 0;
+ _$jscoverage['plugins/insertparagraph.js'][40] = 0;
+}
+_$jscoverage['plugins/insertparagraph.js'].source = ["/** "," * 插入新的段落 "," * @file "," * @since 1.2.6.1 "," */ ","","","/** "," * 在当前光标位置处插入新段落, 如果光标已经在段落之中, 则会在该段落之后插入一个新的段落。 "," * @command insertparagraph "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * editor.execCommand( 'insertparagraph' ); "," * ``` "," */ ","","UE. commands[ 'insertparagraph' ] = { "," execCommand : function ( cmdName, front) { "," var me = this , "," range = me. selection. getRange(), "," start = range. startContainer, tmpNode; "," while ( start ) { "," if ( domUtils. isBody( start)) { "," break ; "," } "," tmpNode = start; "," start = start. parentNode; "," } "," if ( tmpNode) { "," var p = me. document. createElement( 'p' ); "," if ( front) { "," tmpNode. parentNode. insertBefore( p, tmpNode) "," } else { "," tmpNode. parentNode. insertBefore( p, tmpNode. nextSibling) "," } "," domUtils. fillNode( me. document, p); "," range. setStart( p, 0 ). setCursor( false , true ); "," } "," } ","} ; ",""];
+_$jscoverage['plugins/insertparagraph.js'][20]++;
+UE.commands.insertparagraph = {execCommand: (function (cmdName, front) {
+ _$jscoverage['plugins/insertparagraph.js'][22]++;
+ var me = this, range = me.selection.getRange(), start = range.startContainer, tmpNode;
+ _$jscoverage['plugins/insertparagraph.js'][25]++;
+ while (start) {
+ _$jscoverage['plugins/insertparagraph.js'][26]++;
+ if (domUtils.isBody(start)) {
+ _$jscoverage['plugins/insertparagraph.js'][27]++;
+ break;
+ }
+ _$jscoverage['plugins/insertparagraph.js'][29]++;
+ tmpNode = start;
+ _$jscoverage['plugins/insertparagraph.js'][30]++;
+ start = start.parentNode;
+}
+ _$jscoverage['plugins/insertparagraph.js'][32]++;
+ if (tmpNode) {
+ _$jscoverage['plugins/insertparagraph.js'][33]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/insertparagraph.js'][34]++;
+ if (front) {
+ _$jscoverage['plugins/insertparagraph.js'][35]++;
+ tmpNode.parentNode.insertBefore(p, tmpNode);
+ }
+ else {
+ _$jscoverage['plugins/insertparagraph.js'][37]++;
+ tmpNode.parentNode.insertBefore(p, tmpNode.nextSibling);
+ }
+ _$jscoverage['plugins/insertparagraph.js'][39]++;
+ domUtils.fillNode(me.document, p);
+ _$jscoverage['plugins/insertparagraph.js'][40]++;
+ range.setStart(p, 0).setCursor(false, true);
+ }
+})};
diff --git a/_test/coverage/plugins/justify.js b/_test/coverage/plugins/justify.js
new file mode 100644
index 000000000..ebe5ef7f1
--- /dev/null
+++ b/_test/coverage/plugins/justify.js
@@ -0,0 +1,186 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/justify.js']) {
+ _$jscoverage['plugins/justify.js'] = [];
+ _$jscoverage['plugins/justify.js'][40] = 0;
+ _$jscoverage['plugins/justify.js'][41] = 0;
+ _$jscoverage['plugins/justify.js'][50] = 0;
+ _$jscoverage['plugins/justify.js'][52] = 0;
+ _$jscoverage['plugins/justify.js'][55] = 0;
+ _$jscoverage['plugins/justify.js'][56] = 0;
+ _$jscoverage['plugins/justify.js'][60] = 0;
+ _$jscoverage['plugins/justify.js'][61] = 0;
+ _$jscoverage['plugins/justify.js'][62] = 0;
+ _$jscoverage['plugins/justify.js'][63] = 0;
+ _$jscoverage['plugins/justify.js'][64] = 0;
+ _$jscoverage['plugins/justify.js'][65] = 0;
+ _$jscoverage['plugins/justify.js'][66] = 0;
+ _$jscoverage['plugins/justify.js'][69] = 0;
+ _$jscoverage['plugins/justify.js'][70] = 0;
+ _$jscoverage['plugins/justify.js'][71] = 0;
+ _$jscoverage['plugins/justify.js'][72] = 0;
+ _$jscoverage['plugins/justify.js'][73] = 0;
+ _$jscoverage['plugins/justify.js'][75] = 0;
+ _$jscoverage['plugins/justify.js'][76] = 0;
+ _$jscoverage['plugins/justify.js'][77] = 0;
+ _$jscoverage['plugins/justify.js'][78] = 0;
+ _$jscoverage['plugins/justify.js'][79] = 0;
+ _$jscoverage['plugins/justify.js'][80] = 0;
+ _$jscoverage['plugins/justify.js'][82] = 0;
+ _$jscoverage['plugins/justify.js'][84] = 0;
+ _$jscoverage['plugins/justify.js'][87] = 0;
+ _$jscoverage['plugins/justify.js'][90] = 0;
+ _$jscoverage['plugins/justify.js'][92] = 0;
+ _$jscoverage['plugins/justify.js'][96] = 0;
+ _$jscoverage['plugins/justify.js'][97] = 0;
+ _$jscoverage['plugins/justify.js'][98] = 0;
+ _$jscoverage['plugins/justify.js'][100] = 0;
+ _$jscoverage['plugins/justify.js'][101] = 0;
+ _$jscoverage['plugins/justify.js'][102] = 0;
+ _$jscoverage['plugins/justify.js'][103] = 0;
+ _$jscoverage['plugins/justify.js'][106] = 0;
+ _$jscoverage['plugins/justify.js'][109] = 0;
+ _$jscoverage['plugins/justify.js'][112] = 0;
+ _$jscoverage['plugins/justify.js'][114] = 0;
+ _$jscoverage['plugins/justify.js'][117] = 0;
+ _$jscoverage['plugins/justify.js'][120] = 0;
+}
+_$jscoverage['plugins/justify.js'].source = ["/** "," * 段落格式 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 对段落居左,居右,居中,两端对齐 "," * @command justify "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } align 对齐方式:left居左,right居右,center居中,justify两端对齐 "," * @example "," * ```javascript "," * editor.execCommand( 'justify', 'center' ); "," * ``` "," */ ","/** "," * 如果选区所在位置是段落区域,返回当前段落对齐方式 "," * @command justify "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回图片对齐方式 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'justify' ); "," * ``` "," */ ","/** "," * 返回当前选区位置是否是图片 "," * @command justify "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { Int } 0为是,-1为不是 "," * @example "," * ```javascript "," * editor.queryCommandState( 'justify' ); "," * ``` "," */ ","UE. plugins[ 'justify' ]= function () { "," var me= this , "," block = domUtils. isBlockElm, "," defaultValue = { "," left: 1 , "," right: 1 , "," center: 1 , "," justify: 1 "," } , "," doJustify = function ( range, style) { "," var bookmark = range. createBookmark(), "," filterFn = function ( node) { "," return node. nodeType == 1 ? node. tagName. toLowerCase() != 'br' && ! domUtils. isBookmarkNode( node) : ! domUtils. isWhitespace( node); "," } ; ",""," range. enlarge( true ); "," var bookmark2 = range. createBookmark(), "," current = domUtils. getNextDomNode( bookmark2. start, false , filterFn), "," tmpRange = range. cloneRange(), "," tmpNode; "," while ( current && !( domUtils. getPosition( current, bookmark2. end) & domUtils. POSITION_FOLLOWING)) { "," if ( current. nodeType == 3 || ! block( current)) { "," tmpRange. setStartBefore( current); "," while ( current && current !== bookmark2. end && ! block( current)) { "," tmpNode = current; "," current = domUtils. getNextDomNode( current, false , null , function ( node) { "," return ! block( node); "," } ); "," } "," tmpRange. setEndAfter( tmpNode); "," var common = tmpRange. getCommonAncestor(); "," if (! domUtils. isBody( common) && block( common)) { "," domUtils. setStyles( common, utils. isString( style) ? { 'text-align' : style} : style); "," current = common; "," } else { "," var p = range. document. createElement( 'p' ); "," domUtils. setStyles( p, utils. isString( style) ? { 'text-align' : style} : style); "," var frag = tmpRange. extractContents(); "," p. appendChild( frag); "," tmpRange. insertNode( p); "," current = p; "," } "," current = domUtils. getNextDomNode( current, false , filterFn); "," } else { "," current = domUtils. getNextDomNode( current, true , filterFn); "," } "," } "," return range. moveToBookmark( bookmark2). moveToBookmark( bookmark); "," } ; ",""," UE. commands[ 'justify' ] = { "," execCommand: function ( cmdName, align) { "," var range = this . selection. getRange(), "," txt; ",""," //闭合时单独处理 "," if ( range. collapsed) { "," txt = this . document. createTextNode( 'p' ); "," range. insertNode( txt); "," } "," doJustify( range, align); "," if ( txt) { "," range. setStartBefore( txt). collapse( true ); "," domUtils. remove( txt); "," } ",""," range. select(); ","",""," return true ; "," } , "," queryCommandValue: function () { "," var startNode = this . selection. getStart(), "," value = domUtils. getComputedStyle( startNode, 'text-align' ); "," return defaultValue[ value] ? value : 'left' ; "," } , "," queryCommandState: function () { "," var start = this . selection. getStart(), "," cell = start && domUtils. findParentByTagName( start, [ \"td\" , \"th\" , \"caption\" ], true ); ",""," return cell? - 1 : 0 ; "," } ",""," } ; ","} ; "];
+_$jscoverage['plugins/justify.js'][40]++;
+UE.plugins.justify = (function () {
+ _$jscoverage['plugins/justify.js'][41]++;
+ var me = this, block = domUtils.isBlockElm, defaultValue = {left: 1, right: 1, center: 1, justify: 1}, doJustify = (function (range, style) {
+ _$jscoverage['plugins/justify.js'][50]++;
+ var bookmark = range.createBookmark(), filterFn = (function (node) {
+ _$jscoverage['plugins/justify.js'][52]++;
+ return ((node.nodeType == 1)? ((node.tagName.toLowerCase() != "br") && (! domUtils.isBookmarkNode(node))): (! domUtils.isWhitespace(node)));
+});
+ _$jscoverage['plugins/justify.js'][55]++;
+ range.enlarge(true);
+ _$jscoverage['plugins/justify.js'][56]++;
+ var bookmark2 = range.createBookmark(), current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), tmpRange = range.cloneRange(), tmpNode;
+ _$jscoverage['plugins/justify.js'][60]++;
+ while ((current && (! (domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)))) {
+ _$jscoverage['plugins/justify.js'][61]++;
+ if (((current.nodeType == 3) || (! block(current)))) {
+ _$jscoverage['plugins/justify.js'][62]++;
+ tmpRange.setStartBefore(current);
+ _$jscoverage['plugins/justify.js'][63]++;
+ while ((current && (current !== bookmark2.end) && (! block(current)))) {
+ _$jscoverage['plugins/justify.js'][64]++;
+ tmpNode = current;
+ _$jscoverage['plugins/justify.js'][65]++;
+ current = domUtils.getNextDomNode(current, false, null, (function (node) {
+ _$jscoverage['plugins/justify.js'][66]++;
+ return (! block(node));
+}));
+}
+ _$jscoverage['plugins/justify.js'][69]++;
+ tmpRange.setEndAfter(tmpNode);
+ _$jscoverage['plugins/justify.js'][70]++;
+ var common = tmpRange.getCommonAncestor();
+ _$jscoverage['plugins/justify.js'][71]++;
+ if (((! domUtils.isBody(common)) && block(common))) {
+ _$jscoverage['plugins/justify.js'][72]++;
+ domUtils.setStyles(common, (utils.isString(style)? {"text-align": style}: style));
+ _$jscoverage['plugins/justify.js'][73]++;
+ current = common;
+ }
+ else {
+ _$jscoverage['plugins/justify.js'][75]++;
+ var p = range.document.createElement("p");
+ _$jscoverage['plugins/justify.js'][76]++;
+ domUtils.setStyles(p, (utils.isString(style)? {"text-align": style}: style));
+ _$jscoverage['plugins/justify.js'][77]++;
+ var frag = tmpRange.extractContents();
+ _$jscoverage['plugins/justify.js'][78]++;
+ p.appendChild(frag);
+ _$jscoverage['plugins/justify.js'][79]++;
+ tmpRange.insertNode(p);
+ _$jscoverage['plugins/justify.js'][80]++;
+ current = p;
+ }
+ _$jscoverage['plugins/justify.js'][82]++;
+ current = domUtils.getNextDomNode(current, false, filterFn);
+ }
+ else {
+ _$jscoverage['plugins/justify.js'][84]++;
+ current = domUtils.getNextDomNode(current, true, filterFn);
+ }
+}
+ _$jscoverage['plugins/justify.js'][87]++;
+ return range.moveToBookmark(bookmark2).moveToBookmark(bookmark);
+});
+ _$jscoverage['plugins/justify.js'][90]++;
+ UE.commands.justify = {execCommand: (function (cmdName, align) {
+ _$jscoverage['plugins/justify.js'][92]++;
+ var range = this.selection.getRange(), txt;
+ _$jscoverage['plugins/justify.js'][96]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/justify.js'][97]++;
+ txt = this.document.createTextNode("p");
+ _$jscoverage['plugins/justify.js'][98]++;
+ range.insertNode(txt);
+ }
+ _$jscoverage['plugins/justify.js'][100]++;
+ doJustify(range, align);
+ _$jscoverage['plugins/justify.js'][101]++;
+ if (txt) {
+ _$jscoverage['plugins/justify.js'][102]++;
+ range.setStartBefore(txt).collapse(true);
+ _$jscoverage['plugins/justify.js'][103]++;
+ domUtils.remove(txt);
+ }
+ _$jscoverage['plugins/justify.js'][106]++;
+ range.select();
+ _$jscoverage['plugins/justify.js'][109]++;
+ return true;
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/justify.js'][112]++;
+ var startNode = this.selection.getStart(), value = domUtils.getComputedStyle(startNode, "text-align");
+ _$jscoverage['plugins/justify.js'][114]++;
+ return (defaultValue[value]? value: "left");
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/justify.js'][117]++;
+ var start = this.selection.getStart(), cell = (start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true));
+ _$jscoverage['plugins/justify.js'][120]++;
+ return (cell? -1: 0);
+})};
+});
diff --git a/_test/coverage/plugins/keystrokes.js b/_test/coverage/plugins/keystrokes.js
new file mode 100644
index 000000000..6be9a96d8
--- /dev/null
+++ b/_test/coverage/plugins/keystrokes.js
@@ -0,0 +1,465 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/keystrokes.js']) {
+ _$jscoverage['plugins/keystrokes.js'] = [];
+ _$jscoverage['plugins/keystrokes.js'][4] = 0;
+ _$jscoverage['plugins/keystrokes.js'][5] = 0;
+ _$jscoverage['plugins/keystrokes.js'][6] = 0;
+ _$jscoverage['plugins/keystrokes.js'][7] = 0;
+ _$jscoverage['plugins/keystrokes.js'][8] = 0;
+ _$jscoverage['plugins/keystrokes.js'][12] = 0;
+ _$jscoverage['plugins/keystrokes.js'][21] = 0;
+ _$jscoverage['plugins/keystrokes.js'][22] = 0;
+ _$jscoverage['plugins/keystrokes.js'][23] = 0;
+ _$jscoverage['plugins/keystrokes.js'][25] = 0;
+ _$jscoverage['plugins/keystrokes.js'][26] = 0;
+ _$jscoverage['plugins/keystrokes.js'][27] = 0;
+ _$jscoverage['plugins/keystrokes.js'][29] = 0;
+ _$jscoverage['plugins/keystrokes.js'][32] = 0;
+ _$jscoverage['plugins/keystrokes.js'][33] = 0;
+ _$jscoverage['plugins/keystrokes.js'][34] = 0;
+ _$jscoverage['plugins/keystrokes.js'][35] = 0;
+ _$jscoverage['plugins/keystrokes.js'][38] = 0;
+ _$jscoverage['plugins/keystrokes.js'][39] = 0;
+ _$jscoverage['plugins/keystrokes.js'][40] = 0;
+ _$jscoverage['plugins/keystrokes.js'][41] = 0;
+ _$jscoverage['plugins/keystrokes.js'][42] = 0;
+ _$jscoverage['plugins/keystrokes.js'][43] = 0;
+ _$jscoverage['plugins/keystrokes.js'][44] = 0;
+ _$jscoverage['plugins/keystrokes.js'][45] = 0;
+ _$jscoverage['plugins/keystrokes.js'][46] = 0;
+ _$jscoverage['plugins/keystrokes.js'][47] = 0;
+ _$jscoverage['plugins/keystrokes.js'][54] = 0;
+ _$jscoverage['plugins/keystrokes.js'][55] = 0;
+ _$jscoverage['plugins/keystrokes.js'][56] = 0;
+ _$jscoverage['plugins/keystrokes.js'][57] = 0;
+ _$jscoverage['plugins/keystrokes.js'][58] = 0;
+ _$jscoverage['plugins/keystrokes.js'][60] = 0;
+ _$jscoverage['plugins/keystrokes.js'][62] = 0;
+ _$jscoverage['plugins/keystrokes.js'][63] = 0;
+ _$jscoverage['plugins/keystrokes.js'][65] = 0;
+ _$jscoverage['plugins/keystrokes.js'][66] = 0;
+ _$jscoverage['plugins/keystrokes.js'][67] = 0;
+ _$jscoverage['plugins/keystrokes.js'][69] = 0;
+ _$jscoverage['plugins/keystrokes.js'][70] = 0;
+ _$jscoverage['plugins/keystrokes.js'][71] = 0;
+ _$jscoverage['plugins/keystrokes.js'][76] = 0;
+ _$jscoverage['plugins/keystrokes.js'][77] = 0;
+ _$jscoverage['plugins/keystrokes.js'][78] = 0;
+ _$jscoverage['plugins/keystrokes.js'][79] = 0;
+ _$jscoverage['plugins/keystrokes.js'][80] = 0;
+ _$jscoverage['plugins/keystrokes.js'][81] = 0;
+ _$jscoverage['plugins/keystrokes.js'][82] = 0;
+ _$jscoverage['plugins/keystrokes.js'][83] = 0;
+ _$jscoverage['plugins/keystrokes.js'][86] = 0;
+ _$jscoverage['plugins/keystrokes.js'][87] = 0;
+ _$jscoverage['plugins/keystrokes.js'][88] = 0;
+ _$jscoverage['plugins/keystrokes.js'][89] = 0;
+ _$jscoverage['plugins/keystrokes.js'][90] = 0;
+ _$jscoverage['plugins/keystrokes.js'][91] = 0;
+ _$jscoverage['plugins/keystrokes.js'][97] = 0;
+ _$jscoverage['plugins/keystrokes.js'][99] = 0;
+ _$jscoverage['plugins/keystrokes.js'][105] = 0;
+ _$jscoverage['plugins/keystrokes.js'][106] = 0;
+ _$jscoverage['plugins/keystrokes.js'][107] = 0;
+ _$jscoverage['plugins/keystrokes.js'][109] = 0;
+ _$jscoverage['plugins/keystrokes.js'][110] = 0;
+ _$jscoverage['plugins/keystrokes.js'][111] = 0;
+ _$jscoverage['plugins/keystrokes.js'][112] = 0;
+ _$jscoverage['plugins/keystrokes.js'][114] = 0;
+ _$jscoverage['plugins/keystrokes.js'][115] = 0;
+ _$jscoverage['plugins/keystrokes.js'][116] = 0;
+ _$jscoverage['plugins/keystrokes.js'][117] = 0;
+ _$jscoverage['plugins/keystrokes.js'][120] = 0;
+ _$jscoverage['plugins/keystrokes.js'][121] = 0;
+ _$jscoverage['plugins/keystrokes.js'][122] = 0;
+ _$jscoverage['plugins/keystrokes.js'][123] = 0;
+ _$jscoverage['plugins/keystrokes.js'][124] = 0;
+ _$jscoverage['plugins/keystrokes.js'][126] = 0;
+ _$jscoverage['plugins/keystrokes.js'][128] = 0;
+ _$jscoverage['plugins/keystrokes.js'][131] = 0;
+ _$jscoverage['plugins/keystrokes.js'][132] = 0;
+ _$jscoverage['plugins/keystrokes.js'][134] = 0;
+ _$jscoverage['plugins/keystrokes.js'][135] = 0;
+ _$jscoverage['plugins/keystrokes.js'][136] = 0;
+ _$jscoverage['plugins/keystrokes.js'][138] = 0;
+ _$jscoverage['plugins/keystrokes.js'][141] = 0;
+ _$jscoverage['plugins/keystrokes.js'][145] = 0;
+ _$jscoverage['plugins/keystrokes.js'][146] = 0;
+ _$jscoverage['plugins/keystrokes.js'][147] = 0;
+ _$jscoverage['plugins/keystrokes.js'][148] = 0;
+ _$jscoverage['plugins/keystrokes.js'][149] = 0;
+ _$jscoverage['plugins/keystrokes.js'][150] = 0;
+ _$jscoverage['plugins/keystrokes.js'][151] = 0;
+ _$jscoverage['plugins/keystrokes.js'][152] = 0;
+ _$jscoverage['plugins/keystrokes.js'][153] = 0;
+ _$jscoverage['plugins/keystrokes.js'][155] = 0;
+ _$jscoverage['plugins/keystrokes.js'][156] = 0;
+ _$jscoverage['plugins/keystrokes.js'][157] = 0;
+ _$jscoverage['plugins/keystrokes.js'][162] = 0;
+ _$jscoverage['plugins/keystrokes.js'][163] = 0;
+ _$jscoverage['plugins/keystrokes.js'][165] = 0;
+ _$jscoverage['plugins/keystrokes.js'][166] = 0;
+ _$jscoverage['plugins/keystrokes.js'][167] = 0;
+ _$jscoverage['plugins/keystrokes.js'][169] = 0;
+ _$jscoverage['plugins/keystrokes.js'][170] = 0;
+ _$jscoverage['plugins/keystrokes.js'][171] = 0;
+ _$jscoverage['plugins/keystrokes.js'][173] = 0;
+ _$jscoverage['plugins/keystrokes.js'][174] = 0;
+ _$jscoverage['plugins/keystrokes.js'][175] = 0;
+ _$jscoverage['plugins/keystrokes.js'][176] = 0;
+ _$jscoverage['plugins/keystrokes.js'][177] = 0;
+ _$jscoverage['plugins/keystrokes.js'][178] = 0;
+ _$jscoverage['plugins/keystrokes.js'][179] = 0;
+ _$jscoverage['plugins/keystrokes.js'][181] = 0;
+ _$jscoverage['plugins/keystrokes.js'][182] = 0;
+ _$jscoverage['plugins/keystrokes.js'][183] = 0;
+ _$jscoverage['plugins/keystrokes.js'][184] = 0;
+ _$jscoverage['plugins/keystrokes.js'][185] = 0;
+ _$jscoverage['plugins/keystrokes.js'][191] = 0;
+ _$jscoverage['plugins/keystrokes.js'][192] = 0;
+ _$jscoverage['plugins/keystrokes.js'][195] = 0;
+ _$jscoverage['plugins/keystrokes.js'][201] = 0;
+ _$jscoverage['plugins/keystrokes.js'][202] = 0;
+ _$jscoverage['plugins/keystrokes.js'][203] = 0;
+ _$jscoverage['plugins/keystrokes.js'][204] = 0;
+ _$jscoverage['plugins/keystrokes.js'][205] = 0;
+ _$jscoverage['plugins/keystrokes.js'][206] = 0;
+ _$jscoverage['plugins/keystrokes.js'][208] = 0;
+}
+_$jscoverage['plugins/keystrokes.js'].source = ["/* "," * 处理特殊键的兼容性问题 "," */ ","UE. plugins[ 'keystrokes' ] = function () { "," var me = this ; "," var collapsed = true ; "," me. addListener( 'keydown' , function ( type, evt) { "," var keyCode = evt. keyCode || evt. which, "," rng = me. selection. getRange(); ",""," //处理全选的情况 "," if (! rng. collapsed && !( evt. ctrlKey || evt. shiftKey || evt. altKey || evt. metaKey) && ( keyCode >= 65 && keyCode <= 90 "," || keyCode >= 48 && keyCode <= 57 || "," keyCode >= 96 && keyCode <= 111 || { "," 13 : 1 , "," 8 : 1 , "," 46 : 1 "," } [ keyCode]) "," ) { ",""," var tmpNode = rng. startContainer; "," if ( domUtils. isFillChar( tmpNode)) { "," rng. setStartBefore( tmpNode) "," } "," tmpNode = rng. endContainer; "," if ( domUtils. isFillChar( tmpNode)) { "," rng. setEndAfter( tmpNode) "," } "," rng. txtToElmBoundary(); "," //结束边界可能放到了br的前边,要把br包含进来 "," // x[xxx]<br/> "," if ( rng. endContainer && rng. endContainer. nodeType == 1 ) { "," tmpNode = rng. endContainer. childNodes[ rng. endOffset]; "," if ( tmpNode && domUtils. isBr( tmpNode)) { "," rng. setEndAfter( tmpNode); "," } "," } "," if ( rng. startOffset == 0 ) { "," tmpNode = rng. startContainer; "," if ( domUtils. isBoundaryNode( tmpNode, 'firstChild' ) ) { "," tmpNode = rng. endContainer; "," if ( rng. endOffset == ( tmpNode. nodeType == 3 ? tmpNode. nodeValue. length : tmpNode. childNodes. length) && domUtils. isBoundaryNode( tmpNode, 'lastChild' )) { "," me. fireEvent( 'saveScene' ); "," me. body. innerHTML = '<p>' +( browser. ie ? '' : '<br/>' )+ '</p>' ; "," rng. setStart( me. body. firstChild, 0 ). setCursor( false , true ); "," me. _selectionChange(); "," return ; "," } "," } "," } "," } ",""," //处理backspace "," if ( keyCode == 8 ) { "," rng = me. selection. getRange(); "," collapsed = rng. collapsed; "," if ( me. fireEvent( 'delkeydown' , evt)) { "," return ; "," } "," var start, end; "," //避免按两次删除才能生效的问题 "," if ( rng. collapsed && rng. inFillChar()) { "," start = rng. startContainer; ",""," if ( domUtils. isFillChar( start)) { "," rng. setStartBefore( start). shrinkBoundary( true ). collapse( true ); "," domUtils. remove( start) "," } else { "," start. nodeValue = start. nodeValue. replace( new RegExp( '^' + domUtils. fillChar ), '' ); "," rng. startOffset--; "," rng. collapse( true ). select( true ) "," } "," } ",""," //解决选中control元素不能删除的问题 "," if ( start = rng. getClosedNode()) { "," me. fireEvent( 'saveScene' ); "," rng. setStartBefore( start); "," domUtils. remove( start); "," rng. setCursor(); "," me. fireEvent( 'saveScene' ); "," domUtils. preventDefault( evt); "," return ; "," } "," //阻止在table上的删除 "," if (! browser. ie) { "," start = domUtils. findParentByTagName( rng. startContainer, 'table' , true ); "," end = domUtils. findParentByTagName( rng. endContainer, 'table' , true ); "," if ( start && ! end || ! start && end || start !== end) { "," evt. preventDefault(); "," return ; "," } "," } ",""," } "," //处理tab键的逻辑 "," if ( keyCode == 9 ) { "," //不处理以下标签 "," var excludeTagNameForTabKey = { "," 'ol' : 1 , "," 'ul' : 1 , "," 'table' : 1 "," } ; "," //处理组件里的tab按下事件 "," if ( me. fireEvent( 'tabkeydown' , evt)) { "," domUtils. preventDefault( evt); "," return ; "," } "," var range = me. selection. getRange(); "," me. fireEvent( 'saveScene' ); "," for ( var i = 0 , txt = '' , tabSize = me. options. tabSize|| 4 , tabNode = me. options. tabNode || ' ' ; i < tabSize; i++) { "," txt += tabNode; "," } "," var span = me. document. createElement( 'span' ); "," span. innerHTML = txt + domUtils. fillChar; "," if ( range. collapsed) { "," range. insertNode( span. cloneNode( true ). firstChild). setCursor( true ); "," } else { "," //普通的情况 "," start = domUtils. findParent( range. startContainer, filterFn); "," end = domUtils. findParent( range. endContainer, filterFn); "," if ( start && end && start === end) { "," range. deleteContents(); "," range. insertNode( span. cloneNode( true ). firstChild). setCursor( true ); "," } else { "," var bookmark = range. createBookmark(), "," filterFn = function ( node) { "," return domUtils. isBlockElm( node) && ! excludeTagNameForTabKey[ node. tagName. toLowerCase()] ",""," } ; "," range. enlarge( true ); "," var bookmark2 = range. createBookmark(), "," current = domUtils. getNextDomNode( bookmark2. start, false , filterFn); "," while ( current && !( domUtils. getPosition( current, bookmark2. end) & domUtils. POSITION_FOLLOWING)) { "," current. insertBefore( span. cloneNode( true ). firstChild, current. firstChild); "," current = domUtils. getNextDomNode( current, false , filterFn); "," } "," range. moveToBookmark( bookmark2). moveToBookmark( bookmark). select(); "," } "," } "," domUtils. preventDefault( evt) "," } "," //trace:1634 "," //ff的del键在容器空的时候,也会删除 "," if ( browser. gecko && keyCode == 46 ) { "," range = me. selection. getRange(); "," if ( range. collapsed) { "," start = range. startContainer; "," if ( domUtils. isEmptyBlock( start)) { "," var parent = start. parentNode; "," while ( domUtils. getChildCount( parent) == 1 && ! domUtils. isBody( parent)) { "," start = parent; "," parent = parent. parentNode; "," } "," if ( start === parent. lastChild) "," evt. preventDefault(); "," return ; "," } "," } "," } "," } ); "," me. addListener( 'keyup' , function ( type, evt) { "," var keyCode = evt. keyCode || evt. which, "," rng, me = this ; "," if ( keyCode == 8 ) { "," if ( me. fireEvent( 'delkeyup' )) { "," return ; "," } "," rng = me. selection. getRange(); "," if ( rng. collapsed) { "," var tmpNode, "," autoClearTagName = [ 'h1' , 'h2' , 'h3' , 'h4' , 'h5' , 'h6' ]; "," if ( tmpNode = domUtils. findParentByTagName( rng. startContainer, autoClearTagName, true )) { "," if ( domUtils. isEmptyBlock( tmpNode)) { "," var pre = tmpNode. previousSibling; "," if ( pre && pre. nodeName != 'TABLE' ) { "," domUtils. remove( tmpNode); "," rng. setStartAtLast( pre). setCursor( false , true ); "," return ; "," } else { "," var next = tmpNode. nextSibling; "," if ( next && next. nodeName != 'TABLE' ) { "," domUtils. remove( tmpNode); "," rng. setStartAtFirst( next). setCursor( false , true ); "," return ; "," } "," } "," } "," } "," //处理当删除到body时,要重新给p标签展位 "," if ( domUtils. isBody( rng. startContainer)) { "," var tmpNode = domUtils. createElement( me. document, 'p' , { "," 'innerHTML' : browser. ie ? domUtils. fillChar : '<br/>' "," } ); "," rng. insertNode( tmpNode). setStart( tmpNode, 0 ). setCursor( false , true ); "," } "," } ","",""," //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了 "," if ( ! collapsed && ( rng. startContainer. nodeType == 3 || rng. startContainer. nodeType == 1 && domUtils. isEmptyBlock( rng. startContainer))) { "," if ( browser. ie) { "," var span = rng. document. createElement( 'span' ); "," rng. insertNode( span). setStartBefore( span). collapse( true ); "," rng. select(); "," domUtils. remove( span) "," } else { "," rng. select() "," } ",""," } "," } ",""," } ) ","} ; "];
+_$jscoverage['plugins/keystrokes.js'][4]++;
+UE.plugins.keystrokes = (function () {
+ _$jscoverage['plugins/keystrokes.js'][5]++;
+ var me = this;
+ _$jscoverage['plugins/keystrokes.js'][6]++;
+ var collapsed = true;
+ _$jscoverage['plugins/keystrokes.js'][7]++;
+ me.addListener("keydown", (function (type, evt) {
+ _$jscoverage['plugins/keystrokes.js'][8]++;
+ var keyCode = (evt.keyCode || evt.which), rng = me.selection.getRange();
+ _$jscoverage['plugins/keystrokes.js'][12]++;
+ if (((! rng.collapsed) && (! (evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey)) && (((keyCode >= 65) && (keyCode <= 90)) || ((keyCode >= 48) && (keyCode <= 57)) || ((keyCode >= 96) && (keyCode <= 111)) || {13: 1, 8: 1, 46: 1}[keyCode]))) {
+ _$jscoverage['plugins/keystrokes.js'][21]++;
+ var tmpNode = rng.startContainer;
+ _$jscoverage['plugins/keystrokes.js'][22]++;
+ if (domUtils.isFillChar(tmpNode)) {
+ _$jscoverage['plugins/keystrokes.js'][23]++;
+ rng.setStartBefore(tmpNode);
+ }
+ _$jscoverage['plugins/keystrokes.js'][25]++;
+ tmpNode = rng.endContainer;
+ _$jscoverage['plugins/keystrokes.js'][26]++;
+ if (domUtils.isFillChar(tmpNode)) {
+ _$jscoverage['plugins/keystrokes.js'][27]++;
+ rng.setEndAfter(tmpNode);
+ }
+ _$jscoverage['plugins/keystrokes.js'][29]++;
+ rng.txtToElmBoundary();
+ _$jscoverage['plugins/keystrokes.js'][32]++;
+ if ((rng.endContainer && (rng.endContainer.nodeType == 1))) {
+ _$jscoverage['plugins/keystrokes.js'][33]++;
+ tmpNode = rng.endContainer.childNodes[rng.endOffset];
+ _$jscoverage['plugins/keystrokes.js'][34]++;
+ if ((tmpNode && domUtils.isBr(tmpNode))) {
+ _$jscoverage['plugins/keystrokes.js'][35]++;
+ rng.setEndAfter(tmpNode);
+ }
+ }
+ _$jscoverage['plugins/keystrokes.js'][38]++;
+ if ((rng.startOffset == 0)) {
+ _$jscoverage['plugins/keystrokes.js'][39]++;
+ tmpNode = rng.startContainer;
+ _$jscoverage['plugins/keystrokes.js'][40]++;
+ if (domUtils.isBoundaryNode(tmpNode, "firstChild")) {
+ _$jscoverage['plugins/keystrokes.js'][41]++;
+ tmpNode = rng.endContainer;
+ _$jscoverage['plugins/keystrokes.js'][42]++;
+ if (((rng.endOffset == ((tmpNode.nodeType == 3)? tmpNode.nodeValue.length: tmpNode.childNodes.length)) && domUtils.isBoundaryNode(tmpNode, "lastChild"))) {
+ _$jscoverage['plugins/keystrokes.js'][43]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/keystrokes.js'][44]++;
+ me.body.innerHTML = ("" + (browser.ie? "": " ") + "
");
+ _$jscoverage['plugins/keystrokes.js'][45]++;
+ rng.setStart(me.body.firstChild, 0).setCursor(false, true);
+ _$jscoverage['plugins/keystrokes.js'][46]++;
+ me._selectionChange();
+ _$jscoverage['plugins/keystrokes.js'][47]++;
+ return;
+ }
+ }
+ }
+ }
+ _$jscoverage['plugins/keystrokes.js'][54]++;
+ if ((keyCode == 8)) {
+ _$jscoverage['plugins/keystrokes.js'][55]++;
+ rng = me.selection.getRange();
+ _$jscoverage['plugins/keystrokes.js'][56]++;
+ collapsed = rng.collapsed;
+ _$jscoverage['plugins/keystrokes.js'][57]++;
+ if (me.fireEvent("delkeydown", evt)) {
+ _$jscoverage['plugins/keystrokes.js'][58]++;
+ return;
+ }
+ _$jscoverage['plugins/keystrokes.js'][60]++;
+ var start, end;
+ _$jscoverage['plugins/keystrokes.js'][62]++;
+ if ((rng.collapsed && rng.inFillChar())) {
+ _$jscoverage['plugins/keystrokes.js'][63]++;
+ start = rng.startContainer;
+ _$jscoverage['plugins/keystrokes.js'][65]++;
+ if (domUtils.isFillChar(start)) {
+ _$jscoverage['plugins/keystrokes.js'][66]++;
+ rng.setStartBefore(start).shrinkBoundary(true).collapse(true);
+ _$jscoverage['plugins/keystrokes.js'][67]++;
+ domUtils.remove(start);
+ }
+ else {
+ _$jscoverage['plugins/keystrokes.js'][69]++;
+ start.nodeValue = start.nodeValue.replace(new RegExp(("^" + domUtils.fillChar)), "");
+ _$jscoverage['plugins/keystrokes.js'][70]++;
+ (rng.startOffset--);
+ _$jscoverage['plugins/keystrokes.js'][71]++;
+ rng.collapse(true).select(true);
+ }
+ }
+ _$jscoverage['plugins/keystrokes.js'][76]++;
+ if ((start = rng.getClosedNode())) {
+ _$jscoverage['plugins/keystrokes.js'][77]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/keystrokes.js'][78]++;
+ rng.setStartBefore(start);
+ _$jscoverage['plugins/keystrokes.js'][79]++;
+ domUtils.remove(start);
+ _$jscoverage['plugins/keystrokes.js'][80]++;
+ rng.setCursor();
+ _$jscoverage['plugins/keystrokes.js'][81]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/keystrokes.js'][82]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/keystrokes.js'][83]++;
+ return;
+ }
+ _$jscoverage['plugins/keystrokes.js'][86]++;
+ if ((! browser.ie)) {
+ _$jscoverage['plugins/keystrokes.js'][87]++;
+ start = domUtils.findParentByTagName(rng.startContainer, "table", true);
+ _$jscoverage['plugins/keystrokes.js'][88]++;
+ end = domUtils.findParentByTagName(rng.endContainer, "table", true);
+ _$jscoverage['plugins/keystrokes.js'][89]++;
+ if (((start && (! end)) || ((! start) && end) || (start !== end))) {
+ _$jscoverage['plugins/keystrokes.js'][90]++;
+ evt.preventDefault();
+ _$jscoverage['plugins/keystrokes.js'][91]++;
+ return;
+ }
+ }
+ }
+ _$jscoverage['plugins/keystrokes.js'][97]++;
+ if ((keyCode == 9)) {
+ _$jscoverage['plugins/keystrokes.js'][99]++;
+ var excludeTagNameForTabKey = {"ol": 1, "ul": 1, "table": 1};
+ _$jscoverage['plugins/keystrokes.js'][105]++;
+ if (me.fireEvent("tabkeydown", evt)) {
+ _$jscoverage['plugins/keystrokes.js'][106]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/keystrokes.js'][107]++;
+ return;
+ }
+ _$jscoverage['plugins/keystrokes.js'][109]++;
+ var range = me.selection.getRange();
+ _$jscoverage['plugins/keystrokes.js'][110]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/keystrokes.js'][111]++;
+ for (var i = 0, txt = "", tabSize = (me.options.tabSize || 4), tabNode = (me.options.tabNode || " "); (i < tabSize); (i++)) {
+ _$jscoverage['plugins/keystrokes.js'][112]++;
+ txt += tabNode;
+}
+ _$jscoverage['plugins/keystrokes.js'][114]++;
+ var span = me.document.createElement("span");
+ _$jscoverage['plugins/keystrokes.js'][115]++;
+ span.innerHTML = (txt + domUtils.fillChar);
+ _$jscoverage['plugins/keystrokes.js'][116]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/keystrokes.js'][117]++;
+ range.insertNode(span.cloneNode(true).firstChild).setCursor(true);
+ }
+ else {
+ _$jscoverage['plugins/keystrokes.js'][120]++;
+ start = domUtils.findParent(range.startContainer, filterFn);
+ _$jscoverage['plugins/keystrokes.js'][121]++;
+ end = domUtils.findParent(range.endContainer, filterFn);
+ _$jscoverage['plugins/keystrokes.js'][122]++;
+ if ((start && end && (start === end))) {
+ _$jscoverage['plugins/keystrokes.js'][123]++;
+ range.deleteContents();
+ _$jscoverage['plugins/keystrokes.js'][124]++;
+ range.insertNode(span.cloneNode(true).firstChild).setCursor(true);
+ }
+ else {
+ _$jscoverage['plugins/keystrokes.js'][126]++;
+ var bookmark = range.createBookmark(), filterFn = (function (node) {
+ _$jscoverage['plugins/keystrokes.js'][128]++;
+ return (domUtils.isBlockElm(node) && (! excludeTagNameForTabKey[node.tagName.toLowerCase()]));
+});
+ _$jscoverage['plugins/keystrokes.js'][131]++;
+ range.enlarge(true);
+ _$jscoverage['plugins/keystrokes.js'][132]++;
+ var bookmark2 = range.createBookmark(), current = domUtils.getNextDomNode(bookmark2.start, false, filterFn);
+ _$jscoverage['plugins/keystrokes.js'][134]++;
+ while ((current && (! (domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)))) {
+ _$jscoverage['plugins/keystrokes.js'][135]++;
+ current.insertBefore(span.cloneNode(true).firstChild, current.firstChild);
+ _$jscoverage['plugins/keystrokes.js'][136]++;
+ current = domUtils.getNextDomNode(current, false, filterFn);
+}
+ _$jscoverage['plugins/keystrokes.js'][138]++;
+ range.moveToBookmark(bookmark2).moveToBookmark(bookmark).select();
+ }
+ }
+ _$jscoverage['plugins/keystrokes.js'][141]++;
+ domUtils.preventDefault(evt);
+ }
+ _$jscoverage['plugins/keystrokes.js'][145]++;
+ if ((browser.gecko && (keyCode == 46))) {
+ _$jscoverage['plugins/keystrokes.js'][146]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/keystrokes.js'][147]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/keystrokes.js'][148]++;
+ start = range.startContainer;
+ _$jscoverage['plugins/keystrokes.js'][149]++;
+ if (domUtils.isEmptyBlock(start)) {
+ _$jscoverage['plugins/keystrokes.js'][150]++;
+ var parent = start.parentNode;
+ _$jscoverage['plugins/keystrokes.js'][151]++;
+ while (((domUtils.getChildCount(parent) == 1) && (! domUtils.isBody(parent)))) {
+ _$jscoverage['plugins/keystrokes.js'][152]++;
+ start = parent;
+ _$jscoverage['plugins/keystrokes.js'][153]++;
+ parent = parent.parentNode;
+}
+ _$jscoverage['plugins/keystrokes.js'][155]++;
+ if ((start === parent.lastChild)) {
+ _$jscoverage['plugins/keystrokes.js'][156]++;
+ evt.preventDefault();
+ }
+ _$jscoverage['plugins/keystrokes.js'][157]++;
+ return;
+ }
+ }
+ }
+}));
+ _$jscoverage['plugins/keystrokes.js'][162]++;
+ me.addListener("keyup", (function (type, evt) {
+ _$jscoverage['plugins/keystrokes.js'][163]++;
+ var keyCode = (evt.keyCode || evt.which), rng, me = this;
+ _$jscoverage['plugins/keystrokes.js'][165]++;
+ if ((keyCode == 8)) {
+ _$jscoverage['plugins/keystrokes.js'][166]++;
+ if (me.fireEvent("delkeyup")) {
+ _$jscoverage['plugins/keystrokes.js'][167]++;
+ return;
+ }
+ _$jscoverage['plugins/keystrokes.js'][169]++;
+ rng = me.selection.getRange();
+ _$jscoverage['plugins/keystrokes.js'][170]++;
+ if (rng.collapsed) {
+ _$jscoverage['plugins/keystrokes.js'][171]++;
+ var tmpNode, autoClearTagName = ["h1", "h2", "h3", "h4", "h5", "h6"];
+ _$jscoverage['plugins/keystrokes.js'][173]++;
+ if ((tmpNode = domUtils.findParentByTagName(rng.startContainer, autoClearTagName, true))) {
+ _$jscoverage['plugins/keystrokes.js'][174]++;
+ if (domUtils.isEmptyBlock(tmpNode)) {
+ _$jscoverage['plugins/keystrokes.js'][175]++;
+ var pre = tmpNode.previousSibling;
+ _$jscoverage['plugins/keystrokes.js'][176]++;
+ if ((pre && (pre.nodeName != "TABLE"))) {
+ _$jscoverage['plugins/keystrokes.js'][177]++;
+ domUtils.remove(tmpNode);
+ _$jscoverage['plugins/keystrokes.js'][178]++;
+ rng.setStartAtLast(pre).setCursor(false, true);
+ _$jscoverage['plugins/keystrokes.js'][179]++;
+ return;
+ }
+ else {
+ _$jscoverage['plugins/keystrokes.js'][181]++;
+ var next = tmpNode.nextSibling;
+ _$jscoverage['plugins/keystrokes.js'][182]++;
+ if ((next && (next.nodeName != "TABLE"))) {
+ _$jscoverage['plugins/keystrokes.js'][183]++;
+ domUtils.remove(tmpNode);
+ _$jscoverage['plugins/keystrokes.js'][184]++;
+ rng.setStartAtFirst(next).setCursor(false, true);
+ _$jscoverage['plugins/keystrokes.js'][185]++;
+ return;
+ }
+ }
+ }
+ }
+ _$jscoverage['plugins/keystrokes.js'][191]++;
+ if (domUtils.isBody(rng.startContainer)) {
+ _$jscoverage['plugins/keystrokes.js'][192]++;
+ var tmpNode = domUtils.createElement(me.document, "p", {"innerHTML": (browser.ie? domUtils.fillChar: " ")});
+ _$jscoverage['plugins/keystrokes.js'][195]++;
+ rng.insertNode(tmpNode).setStart(tmpNode, 0).setCursor(false, true);
+ }
+ }
+ _$jscoverage['plugins/keystrokes.js'][201]++;
+ if (((! collapsed) && ((rng.startContainer.nodeType == 3) || ((rng.startContainer.nodeType == 1) && domUtils.isEmptyBlock(rng.startContainer))))) {
+ _$jscoverage['plugins/keystrokes.js'][202]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/keystrokes.js'][203]++;
+ var span = rng.document.createElement("span");
+ _$jscoverage['plugins/keystrokes.js'][204]++;
+ rng.insertNode(span).setStartBefore(span).collapse(true);
+ _$jscoverage['plugins/keystrokes.js'][205]++;
+ rng.select();
+ _$jscoverage['plugins/keystrokes.js'][206]++;
+ domUtils.remove(span);
+ }
+ else {
+ _$jscoverage['plugins/keystrokes.js'][208]++;
+ rng.select();
+ }
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/lineheight.js b/_test/coverage/plugins/lineheight.js
new file mode 100644
index 000000000..7c9d13c2f
--- /dev/null
+++ b/_test/coverage/plugins/lineheight.js
@@ -0,0 +1,80 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/lineheight.js']) {
+ _$jscoverage['plugins/lineheight.js'] = [];
+ _$jscoverage['plugins/lineheight.js'][7] = 0;
+ _$jscoverage['plugins/lineheight.js'][8] = 0;
+ _$jscoverage['plugins/lineheight.js'][9] = 0;
+ _$jscoverage['plugins/lineheight.js'][33] = 0;
+ _$jscoverage['plugins/lineheight.js'][35] = 0;
+ _$jscoverage['plugins/lineheight.js'][36] = 0;
+ _$jscoverage['plugins/lineheight.js'][39] = 0;
+ _$jscoverage['plugins/lineheight.js'][40] = 0;
+ _$jscoverage['plugins/lineheight.js'][41] = 0;
+ _$jscoverage['plugins/lineheight.js'][42] = 0;
+}
+_$jscoverage['plugins/lineheight.js'].source = ["/** "," * 设置行内间距 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ 'lineheight' ] = function () { "," var me = this ; "," me. setOpt( { 'lineheight' :[ '1' , '1.5' , '1.75' , '2' , '3' , '4' , '5' ] } ); ",""," /** "," * 设置选区的行高 "," * @command lineheight "," * @method execCommand "," * @param { String } cmdName 命令字符串 "," * @param { String } value 传入的行高大小 "," * @example "," * ```javascript "," * editor.execCommand( 'lineheight', '1'); "," * ``` "," */ "," /** "," * 查询当前选区内容的行高大小 "," * @command lineheight "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回当前行高大小 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'lineheight' ); "," * ``` "," */ "," me. commands[ 'lineheight' ] = { "," execCommand : function ( cmdName, value ) { "," this . execCommand( 'paragraph' , 'p' , { style: 'line-height:' + ( value == \"1\" ? \"normal\" : value + 'em' ) } ); "," return true ; "," } , "," queryCommandValue : function () { "," var pN = domUtils. filterNodeList( this . selection. getStartElementPath(), function ( node) { return domUtils. isBlockElm( node) } ); "," if ( pN) { "," var value = domUtils. getComputedStyle( pN, 'line-height' ); "," return value == 'normal' ? 1 : value. replace( /[^\\d.]*/ig , \"\" ); "," } "," } "," } ; ","} ; ","",""];
+_$jscoverage['plugins/lineheight.js'][7]++;
+UE.plugins.lineheight = (function () {
+ _$jscoverage['plugins/lineheight.js'][8]++;
+ var me = this;
+ _$jscoverage['plugins/lineheight.js'][9]++;
+ me.setOpt({"lineheight": ["1", "1.5", "1.75", "2", "3", "4", "5"]});
+ _$jscoverage['plugins/lineheight.js'][33]++;
+ me.commands.lineheight = {execCommand: (function (cmdName, value) {
+ _$jscoverage['plugins/lineheight.js'][35]++;
+ this.execCommand("paragraph", "p", {style: ("line-height:" + ((value == "1")? "normal": (value + "em")))});
+ _$jscoverage['plugins/lineheight.js'][36]++;
+ return true;
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/lineheight.js'][39]++;
+ var pN = domUtils.filterNodeList(this.selection.getStartElementPath(), (function (node) {
+ _$jscoverage['plugins/lineheight.js'][39]++;
+ return domUtils.isBlockElm(node);
+}));
+ _$jscoverage['plugins/lineheight.js'][40]++;
+ if (pN) {
+ _$jscoverage['plugins/lineheight.js'][41]++;
+ var value = domUtils.getComputedStyle(pN, "line-height");
+ _$jscoverage['plugins/lineheight.js'][42]++;
+ return ((value == "normal")? 1: value.replace(/[^\d.]*/gi, ""));
+ }
+})};
+});
diff --git a/_test/coverage/plugins/link.js b/_test/coverage/plugins/link.js
new file mode 100644
index 000000000..eeedea7ab
--- /dev/null
+++ b/_test/coverage/plugins/link.js
@@ -0,0 +1,266 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/link.js']) {
+ _$jscoverage['plugins/link.js'] = [];
+ _$jscoverage['plugins/link.js'][66] = 0;
+ _$jscoverage['plugins/link.js'][67] = 0;
+ _$jscoverage['plugins/link.js'][68] = 0;
+ _$jscoverage['plugins/link.js'][70] = 0;
+ _$jscoverage['plugins/link.js'][71] = 0;
+ _$jscoverage['plugins/link.js'][73] = 0;
+ _$jscoverage['plugins/link.js'][74] = 0;
+ _$jscoverage['plugins/link.js'][79] = 0;
+ _$jscoverage['plugins/link.js'][81] = 0;
+ _$jscoverage['plugins/link.js'][83] = 0;
+ _$jscoverage['plugins/link.js'][84] = 0;
+ _$jscoverage['plugins/link.js'][86] = 0;
+ _$jscoverage['plugins/link.js'][87] = 0;
+ _$jscoverage['plugins/link.js'][88] = 0;
+ _$jscoverage['plugins/link.js'][91] = 0;
+ _$jscoverage['plugins/link.js'][95] = 0;
+ _$jscoverage['plugins/link.js'][96] = 0;
+ _$jscoverage['plugins/link.js'][98] = 0;
+ _$jscoverage['plugins/link.js'][99] = 0;
+ _$jscoverage['plugins/link.js'][100] = 0;
+ _$jscoverage['plugins/link.js'][101] = 0;
+ _$jscoverage['plugins/link.js'][102] = 0;
+ _$jscoverage['plugins/link.js'][103] = 0;
+ _$jscoverage['plugins/link.js'][107] = 0;
+ _$jscoverage['plugins/link.js'][108] = 0;
+ _$jscoverage['plugins/link.js'][109] = 0;
+ _$jscoverage['plugins/link.js'][112] = 0;
+ _$jscoverage['plugins/link.js'][113] = 0;
+ _$jscoverage['plugins/link.js'][115] = 0;
+ _$jscoverage['plugins/link.js'][117] = 0;
+ _$jscoverage['plugins/link.js'][118] = 0;
+ _$jscoverage['plugins/link.js'][120] = 0;
+ _$jscoverage['plugins/link.js'][123] = 0;
+ _$jscoverage['plugins/link.js'][124] = 0;
+ _$jscoverage['plugins/link.js'][125] = 0;
+ _$jscoverage['plugins/link.js'][126] = 0;
+ _$jscoverage['plugins/link.js'][129] = 0;
+ _$jscoverage['plugins/link.js'][130] = 0;
+ _$jscoverage['plugins/link.js'][132] = 0;
+ _$jscoverage['plugins/link.js'][136] = 0;
+ _$jscoverage['plugins/link.js'][138] = 0;
+ _$jscoverage['plugins/link.js'][139] = 0;
+ _$jscoverage['plugins/link.js'][140] = 0;
+ _$jscoverage['plugins/link.js'][141] = 0;
+ _$jscoverage['plugins/link.js'][142] = 0;
+ _$jscoverage['plugins/link.js'][144] = 0;
+ _$jscoverage['plugins/link.js'][148] = 0;
+ _$jscoverage['plugins/link.js'][150] = 0;
+ _$jscoverage['plugins/link.js'][153] = 0;
+ _$jscoverage['plugins/link.js'][154] = 0;
+ _$jscoverage['plugins/link.js'][156] = 0;
+ _$jscoverage['plugins/link.js'][158] = 0;
+ _$jscoverage['plugins/link.js'][162] = 0;
+ _$jscoverage['plugins/link.js'][163] = 0;
+ _$jscoverage['plugins/link.js'][166] = 0;
+ _$jscoverage['plugins/link.js'][167] = 0;
+ _$jscoverage['plugins/link.js'][169] = 0;
+ _$jscoverage['plugins/link.js'][172] = 0;
+ _$jscoverage['plugins/link.js'][173] = 0;
+ _$jscoverage['plugins/link.js'][174] = 0;
+ _$jscoverage['plugins/link.js'][178] = 0;
+ _$jscoverage['plugins/link.js'][179] = 0;
+ _$jscoverage['plugins/link.js'][183] = 0;
+ _$jscoverage['plugins/link.js'][190] = 0;
+ _$jscoverage['plugins/link.js'][192] = 0;
+}
+_$jscoverage['plugins/link.js'].source = ["/** "," * 超链接 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 插入超链接 "," * @command link "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { Object } options url地址,title标题,target是否打开新页 "," * @example "," * ```javascript "," * editor.execCommand( 'link', '{ "," * url:'ueditor.baidu.com', "," * title:'ueditor官网', "," * target:'_blank' "," * }' ); "," * ``` "," */ ","/** "," * 如果选区所在位置是区域,返回当前超链接节点 "," * @command link "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { Element } 超链接节点 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'link' ); "," * ``` "," */ ","/** "," * 返回当前选区位置是否是超链接 "," * @command link "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { Int } 0为是,-1为不是 "," * @example "," * ```javascript "," * editor.queryCommandState( 'link' ); "," * ``` "," */ ","","/** "," * 根据当前选区取消超链接 "," * @command unlink "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'unlink'); "," * ``` "," */ ","/** "," * 返回当前选区位置是否是超链接 "," * @command unlink "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { Int } 0为是,-1为不是 "," * @example "," * ```javascript "," * editor.queryCommandState( 'unlink' ); "," * ``` "," */ ","UE. plugins[ 'link' ] = function () { "," function optimize( range ) { "," var start = range. startContainer, end = range. endContainer; ",""," if ( start = domUtils. findParentByTagName( start, 'a' , true ) ) { "," range. setStartBefore( start ); "," } "," if ( end = domUtils. findParentByTagName( end, 'a' , true ) ) { "," range. setEndAfter( end ); "," } "," } ","",""," UE. commands[ 'unlink' ] = { "," execCommand : function () { "," var range = this . selection. getRange(), "," bookmark; "," if ( range. collapsed && ! domUtils. findParentByTagName( range. startContainer, 'a' , true )) { "," return ; "," } "," bookmark = range. createBookmark(); "," optimize( range ); "," range. removeInlineStyle( 'a' ). moveToBookmark( bookmark ). select(); "," } , "," queryCommandState : function () { "," return ! this . highlight && this . queryCommandValue( 'link' ) ? 0 : - 1 ; "," } ",""," } ; "," function doLink( range, opt, me) { "," var rngClone = range. cloneRange(), "," link = me. queryCommandValue( 'link' ); "," optimize( range = range. adjustmentBoundary() ); "," var start = range. startContainer; "," if ( start. nodeType == 1 && link) { "," start = start. childNodes[ range. startOffset]; "," if ( start && start. nodeType == 1 && start. tagName == 'A' && /^(?:https?|ftp|file)\\s*:\\s*\\/\\// . test( start[ browser. ie? 'innerText' : 'textContent' ])) { "," start[ browser. ie ? 'innerText' : 'textContent' ] = utils. html( opt. textValue|| opt. href); ",""," } "," } "," if ( ! rngClone. collapsed || link) { "," range. removeInlineStyle( 'a' ); "," rngClone = range. cloneRange(); "," } ",""," if ( rngClone. collapsed ) { "," var a = range. document. createElement( 'a' ), "," text = '' ; "," if ( opt. textValue) { ",""," text = utils. html( opt. textValue); "," delete opt. textValue; "," } else { "," text = utils. html( opt. href); ",""," } "," domUtils. setAttributes( a, opt ); "," start = domUtils. findParentByTagName( rngClone. startContainer, 'a' , true ); "," if ( start && domUtils. isInNodeEndBoundary( rngClone, start)) { "," range. setStartAfter( start). collapse( true ); ",""," } "," a[ browser. ie ? 'innerText' : 'textContent' ] = text; "," range. insertNode( a). selectNode( a ); "," } else { "," range. applyInlineStyle( 'a' , opt ); ",""," } "," } "," UE. commands[ 'link' ] = { "," execCommand : function ( cmdName, opt ) { "," var range; "," opt. _href && ( opt. _href = utils. unhtml( opt. _href, /[<\">]/g )); "," opt. href && ( opt. href = utils. unhtml( opt. href, /[<\">]/g )); "," opt. textValue && ( opt. textValue = utils. unhtml( opt. textValue, /[<\">]/g )); "," doLink( range= this . selection. getRange(), opt, this ); "," //闭合都不加占位符,如果加了会在a后边多个占位符节点,导致a是图片背景组成的列表,出现空白问题 "," range. collapse(). select( true ); ",""," } , "," queryCommandValue : function () { "," var range = this . selection. getRange(), "," node; "," if ( range. collapsed ) { ","// node = this.selection.getStart(); "," //在ie下getstart()取值偏上了 "," node = range. startContainer; "," node = node. nodeType == 1 ? node : node. parentNode; ",""," if ( node && ( node = domUtils. findParentByTagName( node, 'a' , true )) && ! domUtils. isInNodeEndBoundary( range, node)) { ",""," return node; "," } "," } else { "," //trace:1111 如果是<p><a>xx</a></p> startContainer是p就会找不到a "," range. shrinkBoundary(); "," var start = range. startContainer. nodeType == 3 || ! range. startContainer. childNodes[ range. startOffset] ? range. startContainer : range. startContainer. childNodes[ range. startOffset], "," end = range. endContainer. nodeType == 3 || range. endOffset == 0 ? range. endContainer : range. endContainer. childNodes[ range. endOffset- 1 ], "," common = range. getCommonAncestor(); "," node = domUtils. findParentByTagName( common, 'a' , true ); "," if ( ! node && common. nodeType == 1 ) { ",""," var as = common. getElementsByTagName( 'a' ), "," ps, pe; ",""," for ( var i = 0 , ci; ci = as[ i++]; ) { "," ps = domUtils. getPosition( ci, start ), pe = domUtils. getPosition( ci, end); "," if ( ( ps & domUtils. POSITION_FOLLOWING || ps & domUtils. POSITION_CONTAINS) "," && "," ( pe & domUtils. POSITION_PRECEDING || pe & domUtils. POSITION_CONTAINS) "," ) { "," node = ci; "," break ; "," } "," } "," } "," return node; "," } ",""," } , "," queryCommandState : function () { "," //判断如果是视频的话连接不可用 "," //fix 853 "," var img = this . selection. getRange(). getClosedNode(), "," flag = img && ( img. className == \"edui-faked-video\" ); "," return flag ? - 1 : 0 ; "," } "," } ; ","} ; "];
+_$jscoverage['plugins/link.js'][66]++;
+UE.plugins.link = (function () {
+ _$jscoverage['plugins/link.js'][67]++;
+ function optimize(range) {
+ _$jscoverage['plugins/link.js'][68]++;
+ var start = range.startContainer, end = range.endContainer;
+ _$jscoverage['plugins/link.js'][70]++;
+ if ((start = domUtils.findParentByTagName(start, "a", true))) {
+ _$jscoverage['plugins/link.js'][71]++;
+ range.setStartBefore(start);
+ }
+ _$jscoverage['plugins/link.js'][73]++;
+ if ((end = domUtils.findParentByTagName(end, "a", true))) {
+ _$jscoverage['plugins/link.js'][74]++;
+ range.setEndAfter(end);
+ }
+}
+ _$jscoverage['plugins/link.js'][79]++;
+ UE.commands.unlink = {execCommand: (function () {
+ _$jscoverage['plugins/link.js'][81]++;
+ var range = this.selection.getRange(), bookmark;
+ _$jscoverage['plugins/link.js'][83]++;
+ if ((range.collapsed && (! domUtils.findParentByTagName(range.startContainer, "a", true)))) {
+ _$jscoverage['plugins/link.js'][84]++;
+ return;
+ }
+ _$jscoverage['plugins/link.js'][86]++;
+ bookmark = range.createBookmark();
+ _$jscoverage['plugins/link.js'][87]++;
+ optimize(range);
+ _$jscoverage['plugins/link.js'][88]++;
+ range.removeInlineStyle("a").moveToBookmark(bookmark).select();
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/link.js'][91]++;
+ return (((! this.highlight) && this.queryCommandValue("link"))? 0: -1);
+})};
+ _$jscoverage['plugins/link.js'][95]++;
+ function doLink(range, opt, me) {
+ _$jscoverage['plugins/link.js'][96]++;
+ var rngClone = range.cloneRange(), link = me.queryCommandValue("link");
+ _$jscoverage['plugins/link.js'][98]++;
+ optimize((range = range.adjustmentBoundary()));
+ _$jscoverage['plugins/link.js'][99]++;
+ var start = range.startContainer;
+ _$jscoverage['plugins/link.js'][100]++;
+ if (((start.nodeType == 1) && link)) {
+ _$jscoverage['plugins/link.js'][101]++;
+ start = start.childNodes[range.startOffset];
+ _$jscoverage['plugins/link.js'][102]++;
+ if ((start && (start.nodeType == 1) && (start.tagName == "A") && /^(?:https?|ftp|file)\s*:\s*\/\//.test(start[(browser.ie? "innerText": "textContent")]))) {
+ _$jscoverage['plugins/link.js'][103]++;
+ start[(browser.ie? "innerText": "textContent")] = utils.html((opt.textValue || opt.href));
+ }
+ }
+ _$jscoverage['plugins/link.js'][107]++;
+ if (((! rngClone.collapsed) || link)) {
+ _$jscoverage['plugins/link.js'][108]++;
+ range.removeInlineStyle("a");
+ _$jscoverage['plugins/link.js'][109]++;
+ rngClone = range.cloneRange();
+ }
+ _$jscoverage['plugins/link.js'][112]++;
+ if (rngClone.collapsed) {
+ _$jscoverage['plugins/link.js'][113]++;
+ var a = range.document.createElement("a"), text = "";
+ _$jscoverage['plugins/link.js'][115]++;
+ if (opt.textValue) {
+ _$jscoverage['plugins/link.js'][117]++;
+ text = utils.html(opt.textValue);
+ _$jscoverage['plugins/link.js'][118]++;
+ (delete opt.textValue);
+ }
+ else {
+ _$jscoverage['plugins/link.js'][120]++;
+ text = utils.html(opt.href);
+ }
+ _$jscoverage['plugins/link.js'][123]++;
+ domUtils.setAttributes(a, opt);
+ _$jscoverage['plugins/link.js'][124]++;
+ start = domUtils.findParentByTagName(rngClone.startContainer, "a", true);
+ _$jscoverage['plugins/link.js'][125]++;
+ if ((start && domUtils.isInNodeEndBoundary(rngClone, start))) {
+ _$jscoverage['plugins/link.js'][126]++;
+ range.setStartAfter(start).collapse(true);
+ }
+ _$jscoverage['plugins/link.js'][129]++;
+ a[(browser.ie? "innerText": "textContent")] = text;
+ _$jscoverage['plugins/link.js'][130]++;
+ range.insertNode(a).selectNode(a);
+ }
+ else {
+ _$jscoverage['plugins/link.js'][132]++;
+ range.applyInlineStyle("a", opt);
+ }
+}
+ _$jscoverage['plugins/link.js'][136]++;
+ UE.commands.link = {execCommand: (function (cmdName, opt) {
+ _$jscoverage['plugins/link.js'][138]++;
+ var range;
+ _$jscoverage['plugins/link.js'][139]++;
+ (opt._href && (opt._href = utils.unhtml(opt._href, /[<">]/g)));
+ _$jscoverage['plugins/link.js'][140]++;
+ (opt.href && (opt.href = utils.unhtml(opt.href, /[<">]/g)));
+ _$jscoverage['plugins/link.js'][141]++;
+ (opt.textValue && (opt.textValue = utils.unhtml(opt.textValue, /[<">]/g)));
+ _$jscoverage['plugins/link.js'][142]++;
+ doLink((range = this.selection.getRange()), opt, this);
+ _$jscoverage['plugins/link.js'][144]++;
+ range.collapse().select(true);
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/link.js'][148]++;
+ var range = this.selection.getRange(), node;
+ _$jscoverage['plugins/link.js'][150]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/link.js'][153]++;
+ node = range.startContainer;
+ _$jscoverage['plugins/link.js'][154]++;
+ node = ((node.nodeType == 1)? node: node.parentNode);
+ _$jscoverage['plugins/link.js'][156]++;
+ if ((node && (node = domUtils.findParentByTagName(node, "a", true)) && (! domUtils.isInNodeEndBoundary(range, node)))) {
+ _$jscoverage['plugins/link.js'][158]++;
+ return node;
+ }
+ }
+ else {
+ _$jscoverage['plugins/link.js'][162]++;
+ range.shrinkBoundary();
+ _$jscoverage['plugins/link.js'][163]++;
+ var start = (((range.startContainer.nodeType == 3) || (! range.startContainer.childNodes[range.startOffset]))? range.startContainer: range.startContainer.childNodes[range.startOffset]), end = (((range.endContainer.nodeType == 3) || (range.endOffset == 0))? range.endContainer: range.endContainer.childNodes[(range.endOffset - 1)]), common = range.getCommonAncestor();
+ _$jscoverage['plugins/link.js'][166]++;
+ node = domUtils.findParentByTagName(common, "a", true);
+ _$jscoverage['plugins/link.js'][167]++;
+ if (((! node) && (common.nodeType == 1))) {
+ _$jscoverage['plugins/link.js'][169]++;
+ var as = common.getElementsByTagName("a"), ps, pe;
+ _$jscoverage['plugins/link.js'][172]++;
+ for (var i = 0, ci; (ci = as[(i++)]);) {
+ _$jscoverage['plugins/link.js'][173]++;
+ ((ps = domUtils.getPosition(ci, start)), (pe = domUtils.getPosition(ci, end)));
+ _$jscoverage['plugins/link.js'][174]++;
+ if ((((ps & domUtils.POSITION_FOLLOWING) || (ps & domUtils.POSITION_CONTAINS)) && ((pe & domUtils.POSITION_PRECEDING) || (pe & domUtils.POSITION_CONTAINS)))) {
+ _$jscoverage['plugins/link.js'][178]++;
+ node = ci;
+ _$jscoverage['plugins/link.js'][179]++;
+ break;
+ }
+}
+ }
+ _$jscoverage['plugins/link.js'][183]++;
+ return node;
+ }
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/link.js'][190]++;
+ var img = this.selection.getRange().getClosedNode(), flag = (img && (img.className == "edui-faked-video"));
+ _$jscoverage['plugins/link.js'][192]++;
+ return (flag? -1: 0);
+})};
+});
diff --git a/_test/coverage/plugins/list.js b/_test/coverage/plugins/list.js
new file mode 100644
index 000000000..3b18180e6
--- /dev/null
+++ b/_test/coverage/plugins/list.js
@@ -0,0 +1,2337 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/list.js']) {
+ _$jscoverage['plugins/list.js'] = [];
+ _$jscoverage['plugins/list.js'][7] = 0;
+ _$jscoverage['plugins/list.js'][8] = 0;
+ _$jscoverage['plugins/list.js'][14] = 0;
+ _$jscoverage['plugins/list.js'][25] = 0;
+ _$jscoverage['plugins/list.js'][50] = 0;
+ _$jscoverage['plugins/list.js'][51] = 0;
+ _$jscoverage['plugins/list.js'][52] = 0;
+ _$jscoverage['plugins/list.js'][53] = 0;
+ _$jscoverage['plugins/list.js'][55] = 0;
+ _$jscoverage['plugins/list.js'][57] = 0;
+ _$jscoverage['plugins/list.js'][61] = 0;
+ _$jscoverage['plugins/list.js'][64] = 0;
+ _$jscoverage['plugins/list.js'][65] = 0;
+ _$jscoverage['plugins/list.js'][66] = 0;
+ _$jscoverage['plugins/list.js'][70] = 0;
+ _$jscoverage['plugins/list.js'][71] = 0;
+ _$jscoverage['plugins/list.js'][72] = 0;
+ _$jscoverage['plugins/list.js'][73] = 0;
+ _$jscoverage['plugins/list.js'][74] = 0;
+ _$jscoverage['plugins/list.js'][75] = 0;
+ _$jscoverage['plugins/list.js'][77] = 0;
+ _$jscoverage['plugins/list.js'][78] = 0;
+ _$jscoverage['plugins/list.js'][80] = 0;
+ _$jscoverage['plugins/list.js'][82] = 0;
+ _$jscoverage['plugins/list.js'][84] = 0;
+ _$jscoverage['plugins/list.js'][85] = 0;
+ _$jscoverage['plugins/list.js'][86] = 0;
+ _$jscoverage['plugins/list.js'][87] = 0;
+ _$jscoverage['plugins/list.js'][89] = 0;
+ _$jscoverage['plugins/list.js'][90] = 0;
+ _$jscoverage['plugins/list.js'][91] = 0;
+ _$jscoverage['plugins/list.js'][92] = 0;
+ _$jscoverage['plugins/list.js'][94] = 0;
+ _$jscoverage['plugins/list.js'][95] = 0;
+ _$jscoverage['plugins/list.js'][96] = 0;
+ _$jscoverage['plugins/list.js'][97] = 0;
+ _$jscoverage['plugins/list.js'][100] = 0;
+ _$jscoverage['plugins/list.js'][101] = 0;
+ _$jscoverage['plugins/list.js'][103] = 0;
+ _$jscoverage['plugins/list.js'][104] = 0;
+ _$jscoverage['plugins/list.js'][105] = 0;
+ _$jscoverage['plugins/list.js'][107] = 0;
+ _$jscoverage['plugins/list.js'][108] = 0;
+ _$jscoverage['plugins/list.js'][110] = 0;
+ _$jscoverage['plugins/list.js'][113] = 0;
+ _$jscoverage['plugins/list.js'][114] = 0;
+ _$jscoverage['plugins/list.js'][115] = 0;
+ _$jscoverage['plugins/list.js'][117] = 0;
+ _$jscoverage['plugins/list.js'][120] = 0;
+ _$jscoverage['plugins/list.js'][121] = 0;
+ _$jscoverage['plugins/list.js'][122] = 0;
+ _$jscoverage['plugins/list.js'][123] = 0;
+ _$jscoverage['plugins/list.js'][125] = 0;
+ _$jscoverage['plugins/list.js'][126] = 0;
+ _$jscoverage['plugins/list.js'][127] = 0;
+ _$jscoverage['plugins/list.js'][128] = 0;
+ _$jscoverage['plugins/list.js'][129] = 0;
+ _$jscoverage['plugins/list.js'][130] = 0;
+ _$jscoverage['plugins/list.js'][131] = 0;
+ _$jscoverage['plugins/list.js'][132] = 0;
+ _$jscoverage['plugins/list.js'][133] = 0;
+ _$jscoverage['plugins/list.js'][134] = 0;
+ _$jscoverage['plugins/list.js'][135] = 0;
+ _$jscoverage['plugins/list.js'][136] = 0;
+ _$jscoverage['plugins/list.js'][138] = 0;
+ _$jscoverage['plugins/list.js'][139] = 0;
+ _$jscoverage['plugins/list.js'][140] = 0;
+ _$jscoverage['plugins/list.js'][141] = 0;
+ _$jscoverage['plugins/list.js'][142] = 0;
+ _$jscoverage['plugins/list.js'][143] = 0;
+ _$jscoverage['plugins/list.js'][153] = 0;
+ _$jscoverage['plugins/list.js'][154] = 0;
+ _$jscoverage['plugins/list.js'][155] = 0;
+ _$jscoverage['plugins/list.js'][156] = 0;
+ _$jscoverage['plugins/list.js'][158] = 0;
+ _$jscoverage['plugins/list.js'][162] = 0;
+ _$jscoverage['plugins/list.js'][163] = 0;
+ _$jscoverage['plugins/list.js'][165] = 0;
+ _$jscoverage['plugins/list.js'][166] = 0;
+ _$jscoverage['plugins/list.js'][167] = 0;
+ _$jscoverage['plugins/list.js'][168] = 0;
+ _$jscoverage['plugins/list.js'][169] = 0;
+ _$jscoverage['plugins/list.js'][170] = 0;
+ _$jscoverage['plugins/list.js'][171] = 0;
+ _$jscoverage['plugins/list.js'][172] = 0;
+ _$jscoverage['plugins/list.js'][174] = 0;
+ _$jscoverage['plugins/list.js'][175] = 0;
+ _$jscoverage['plugins/list.js'][176] = 0;
+ _$jscoverage['plugins/list.js'][178] = 0;
+ _$jscoverage['plugins/list.js'][180] = 0;
+ _$jscoverage['plugins/list.js'][181] = 0;
+ _$jscoverage['plugins/list.js'][184] = 0;
+ _$jscoverage['plugins/list.js'][185] = 0;
+ _$jscoverage['plugins/list.js'][186] = 0;
+ _$jscoverage['plugins/list.js'][187] = 0;
+ _$jscoverage['plugins/list.js'][188] = 0;
+ _$jscoverage['plugins/list.js'][189] = 0;
+ _$jscoverage['plugins/list.js'][192] = 0;
+ _$jscoverage['plugins/list.js'][198] = 0;
+ _$jscoverage['plugins/list.js'][201] = 0;
+ _$jscoverage['plugins/list.js'][202] = 0;
+ _$jscoverage['plugins/list.js'][203] = 0;
+ _$jscoverage['plugins/list.js'][204] = 0;
+ _$jscoverage['plugins/list.js'][205] = 0;
+ _$jscoverage['plugins/list.js'][206] = 0;
+ _$jscoverage['plugins/list.js'][208] = 0;
+ _$jscoverage['plugins/list.js'][209] = 0;
+ _$jscoverage['plugins/list.js'][210] = 0;
+ _$jscoverage['plugins/list.js'][211] = 0;
+ _$jscoverage['plugins/list.js'][213] = 0;
+ _$jscoverage['plugins/list.js'][218] = 0;
+ _$jscoverage['plugins/list.js'][219] = 0;
+ _$jscoverage['plugins/list.js'][223] = 0;
+ _$jscoverage['plugins/list.js'][224] = 0;
+ _$jscoverage['plugins/list.js'][227] = 0;
+ _$jscoverage['plugins/list.js'][228] = 0;
+ _$jscoverage['plugins/list.js'][229] = 0;
+ _$jscoverage['plugins/list.js'][230] = 0;
+ _$jscoverage['plugins/list.js'][233] = 0;
+ _$jscoverage['plugins/list.js'][244] = 0;
+ _$jscoverage['plugins/list.js'][245] = 0;
+ _$jscoverage['plugins/list.js'][246] = 0;
+ _$jscoverage['plugins/list.js'][247] = 0;
+ _$jscoverage['plugins/list.js'][248] = 0;
+ _$jscoverage['plugins/list.js'][249] = 0;
+ _$jscoverage['plugins/list.js'][252] = 0;
+ _$jscoverage['plugins/list.js'][254] = 0;
+ _$jscoverage['plugins/list.js'][255] = 0;
+ _$jscoverage['plugins/list.js'][256] = 0;
+ _$jscoverage['plugins/list.js'][261] = 0;
+ _$jscoverage['plugins/list.js'][262] = 0;
+ _$jscoverage['plugins/list.js'][263] = 0;
+ _$jscoverage['plugins/list.js'][267] = 0;
+ _$jscoverage['plugins/list.js'][268] = 0;
+ _$jscoverage['plugins/list.js'][269] = 0;
+ _$jscoverage['plugins/list.js'][271] = 0;
+ _$jscoverage['plugins/list.js'][272] = 0;
+ _$jscoverage['plugins/list.js'][273] = 0;
+ _$jscoverage['plugins/list.js'][274] = 0;
+ _$jscoverage['plugins/list.js'][275] = 0;
+ _$jscoverage['plugins/list.js'][276] = 0;
+ _$jscoverage['plugins/list.js'][279] = 0;
+ _$jscoverage['plugins/list.js'][282] = 0;
+ _$jscoverage['plugins/list.js'][285] = 0;
+ _$jscoverage['plugins/list.js'][286] = 0;
+ _$jscoverage['plugins/list.js'][287] = 0;
+ _$jscoverage['plugins/list.js'][289] = 0;
+ _$jscoverage['plugins/list.js'][291] = 0;
+ _$jscoverage['plugins/list.js'][293] = 0;
+ _$jscoverage['plugins/list.js'][294] = 0;
+ _$jscoverage['plugins/list.js'][295] = 0;
+ _$jscoverage['plugins/list.js'][297] = 0;
+ _$jscoverage['plugins/list.js'][299] = 0;
+ _$jscoverage['plugins/list.js'][300] = 0;
+ _$jscoverage['plugins/list.js'][301] = 0;
+ _$jscoverage['plugins/list.js'][302] = 0;
+ _$jscoverage['plugins/list.js'][304] = 0;
+ _$jscoverage['plugins/list.js'][305] = 0;
+ _$jscoverage['plugins/list.js'][307] = 0;
+ _$jscoverage['plugins/list.js'][308] = 0;
+ _$jscoverage['plugins/list.js'][311] = 0;
+ _$jscoverage['plugins/list.js'][312] = 0;
+ _$jscoverage['plugins/list.js'][313] = 0;
+ _$jscoverage['plugins/list.js'][319] = 0;
+ _$jscoverage['plugins/list.js'][320] = 0;
+ _$jscoverage['plugins/list.js'][323] = 0;
+ _$jscoverage['plugins/list.js'][324] = 0;
+ _$jscoverage['plugins/list.js'][326] = 0;
+ _$jscoverage['plugins/list.js'][327] = 0;
+ _$jscoverage['plugins/list.js'][329] = 0;
+ _$jscoverage['plugins/list.js'][330] = 0;
+ _$jscoverage['plugins/list.js'][331] = 0;
+ _$jscoverage['plugins/list.js'][333] = 0;
+ _$jscoverage['plugins/list.js'][334] = 0;
+ _$jscoverage['plugins/list.js'][335] = 0;
+ _$jscoverage['plugins/list.js'][336] = 0;
+ _$jscoverage['plugins/list.js'][340] = 0;
+ _$jscoverage['plugins/list.js'][341] = 0;
+ _$jscoverage['plugins/list.js'][342] = 0;
+ _$jscoverage['plugins/list.js'][343] = 0;
+ _$jscoverage['plugins/list.js'][346] = 0;
+ _$jscoverage['plugins/list.js'][347] = 0;
+ _$jscoverage['plugins/list.js'][351] = 0;
+ _$jscoverage['plugins/list.js'][352] = 0;
+ _$jscoverage['plugins/list.js'][353] = 0;
+ _$jscoverage['plugins/list.js'][354] = 0;
+ _$jscoverage['plugins/list.js'][355] = 0;
+ _$jscoverage['plugins/list.js'][356] = 0;
+ _$jscoverage['plugins/list.js'][357] = 0;
+ _$jscoverage['plugins/list.js'][358] = 0;
+ _$jscoverage['plugins/list.js'][360] = 0;
+ _$jscoverage['plugins/list.js'][361] = 0;
+ _$jscoverage['plugins/list.js'][363] = 0;
+ _$jscoverage['plugins/list.js'][364] = 0;
+ _$jscoverage['plugins/list.js'][365] = 0;
+ _$jscoverage['plugins/list.js'][366] = 0;
+ _$jscoverage['plugins/list.js'][367] = 0;
+ _$jscoverage['plugins/list.js'][368] = 0;
+ _$jscoverage['plugins/list.js'][372] = 0;
+ _$jscoverage['plugins/list.js'][373] = 0;
+ _$jscoverage['plugins/list.js'][374] = 0;
+ _$jscoverage['plugins/list.js'][375] = 0;
+ _$jscoverage['plugins/list.js'][377] = 0;
+ _$jscoverage['plugins/list.js'][379] = 0;
+ _$jscoverage['plugins/list.js'][380] = 0;
+ _$jscoverage['plugins/list.js'][384] = 0;
+ _$jscoverage['plugins/list.js'][386] = 0;
+ _$jscoverage['plugins/list.js'][389] = 0;
+ _$jscoverage['plugins/list.js'][391] = 0;
+ _$jscoverage['plugins/list.js'][392] = 0;
+ _$jscoverage['plugins/list.js'][393] = 0;
+ _$jscoverage['plugins/list.js'][396] = 0;
+ _$jscoverage['plugins/list.js'][399] = 0;
+ _$jscoverage['plugins/list.js'][400] = 0;
+ _$jscoverage['plugins/list.js'][401] = 0;
+ _$jscoverage['plugins/list.js'][402] = 0;
+ _$jscoverage['plugins/list.js'][403] = 0;
+ _$jscoverage['plugins/list.js'][404] = 0;
+ _$jscoverage['plugins/list.js'][407] = 0;
+ _$jscoverage['plugins/list.js'][408] = 0;
+ _$jscoverage['plugins/list.js'][410] = 0;
+ _$jscoverage['plugins/list.js'][411] = 0;
+ _$jscoverage['plugins/list.js'][412] = 0;
+ _$jscoverage['plugins/list.js'][414] = 0;
+ _$jscoverage['plugins/list.js'][415] = 0;
+ _$jscoverage['plugins/list.js'][417] = 0;
+ _$jscoverage['plugins/list.js'][418] = 0;
+ _$jscoverage['plugins/list.js'][419] = 0;
+ _$jscoverage['plugins/list.js'][423] = 0;
+ _$jscoverage['plugins/list.js'][424] = 0;
+ _$jscoverage['plugins/list.js'][425] = 0;
+ _$jscoverage['plugins/list.js'][427] = 0;
+ _$jscoverage['plugins/list.js'][428] = 0;
+ _$jscoverage['plugins/list.js'][431] = 0;
+ _$jscoverage['plugins/list.js'][432] = 0;
+ _$jscoverage['plugins/list.js'][433] = 0;
+ _$jscoverage['plugins/list.js'][434] = 0;
+ _$jscoverage['plugins/list.js'][436] = 0;
+ _$jscoverage['plugins/list.js'][437] = 0;
+ _$jscoverage['plugins/list.js'][438] = 0;
+ _$jscoverage['plugins/list.js'][442] = 0;
+ _$jscoverage['plugins/list.js'][443] = 0;
+ _$jscoverage['plugins/list.js'][444] = 0;
+ _$jscoverage['plugins/list.js'][445] = 0;
+ _$jscoverage['plugins/list.js'][446] = 0;
+ _$jscoverage['plugins/list.js'][448] = 0;
+ _$jscoverage['plugins/list.js'][449] = 0;
+ _$jscoverage['plugins/list.js'][450] = 0;
+ _$jscoverage['plugins/list.js'][451] = 0;
+ _$jscoverage['plugins/list.js'][453] = 0;
+ _$jscoverage['plugins/list.js'][454] = 0;
+ _$jscoverage['plugins/list.js'][456] = 0;
+ _$jscoverage['plugins/list.js'][458] = 0;
+ _$jscoverage['plugins/list.js'][460] = 0;
+ _$jscoverage['plugins/list.js'][461] = 0;
+ _$jscoverage['plugins/list.js'][462] = 0;
+ _$jscoverage['plugins/list.js'][463] = 0;
+ _$jscoverage['plugins/list.js'][465] = 0;
+ _$jscoverage['plugins/list.js'][466] = 0;
+ _$jscoverage['plugins/list.js'][467] = 0;
+ _$jscoverage['plugins/list.js'][468] = 0;
+ _$jscoverage['plugins/list.js'][469] = 0;
+ _$jscoverage['plugins/list.js'][470] = 0;
+ _$jscoverage['plugins/list.js'][471] = 0;
+ _$jscoverage['plugins/list.js'][472] = 0;
+ _$jscoverage['plugins/list.js'][475] = 0;
+ _$jscoverage['plugins/list.js'][477] = 0;
+ _$jscoverage['plugins/list.js'][480] = 0;
+ _$jscoverage['plugins/list.js'][483] = 0;
+ _$jscoverage['plugins/list.js'][485] = 0;
+ _$jscoverage['plugins/list.js'][486] = 0;
+ _$jscoverage['plugins/list.js'][487] = 0;
+ _$jscoverage['plugins/list.js'][488] = 0;
+ _$jscoverage['plugins/list.js'][489] = 0;
+ _$jscoverage['plugins/list.js'][490] = 0;
+ _$jscoverage['plugins/list.js'][491] = 0;
+ _$jscoverage['plugins/list.js'][493] = 0;
+ _$jscoverage['plugins/list.js'][494] = 0;
+ _$jscoverage['plugins/list.js'][495] = 0;
+ _$jscoverage['plugins/list.js'][497] = 0;
+ _$jscoverage['plugins/list.js'][498] = 0;
+ _$jscoverage['plugins/list.js'][499] = 0;
+ _$jscoverage['plugins/list.js'][500] = 0;
+ _$jscoverage['plugins/list.js'][501] = 0;
+ _$jscoverage['plugins/list.js'][504] = 0;
+ _$jscoverage['plugins/list.js'][506] = 0;
+ _$jscoverage['plugins/list.js'][510] = 0;
+ _$jscoverage['plugins/list.js'][512] = 0;
+ _$jscoverage['plugins/list.js'][513] = 0;
+ _$jscoverage['plugins/list.js'][514] = 0;
+ _$jscoverage['plugins/list.js'][516] = 0;
+ _$jscoverage['plugins/list.js'][520] = 0;
+ _$jscoverage['plugins/list.js'][521] = 0;
+ _$jscoverage['plugins/list.js'][525] = 0;
+ _$jscoverage['plugins/list.js'][528] = 0;
+ _$jscoverage['plugins/list.js'][529] = 0;
+ _$jscoverage['plugins/list.js'][530] = 0;
+ _$jscoverage['plugins/list.js'][532] = 0;
+ _$jscoverage['plugins/list.js'][533] = 0;
+ _$jscoverage['plugins/list.js'][534] = 0;
+ _$jscoverage['plugins/list.js'][535] = 0;
+ _$jscoverage['plugins/list.js'][540] = 0;
+ _$jscoverage['plugins/list.js'][542] = 0;
+ _$jscoverage['plugins/list.js'][543] = 0;
+ _$jscoverage['plugins/list.js'][544] = 0;
+ _$jscoverage['plugins/list.js'][545] = 0;
+ _$jscoverage['plugins/list.js'][546] = 0;
+ _$jscoverage['plugins/list.js'][547] = 0;
+ _$jscoverage['plugins/list.js'][548] = 0;
+ _$jscoverage['plugins/list.js'][551] = 0;
+ _$jscoverage['plugins/list.js'][552] = 0;
+ _$jscoverage['plugins/list.js'][553] = 0;
+ _$jscoverage['plugins/list.js'][557] = 0;
+ _$jscoverage['plugins/list.js'][559] = 0;
+ _$jscoverage['plugins/list.js'][560] = 0;
+ _$jscoverage['plugins/list.js'][561] = 0;
+ _$jscoverage['plugins/list.js'][562] = 0;
+ _$jscoverage['plugins/list.js'][563] = 0;
+ _$jscoverage['plugins/list.js'][565] = 0;
+ _$jscoverage['plugins/list.js'][567] = 0;
+ _$jscoverage['plugins/list.js'][570] = 0;
+ _$jscoverage['plugins/list.js'][574] = 0;
+ _$jscoverage['plugins/list.js'][575] = 0;
+ _$jscoverage['plugins/list.js'][576] = 0;
+ _$jscoverage['plugins/list.js'][578] = 0;
+ _$jscoverage['plugins/list.js'][579] = 0;
+ _$jscoverage['plugins/list.js'][581] = 0;
+ _$jscoverage['plugins/list.js'][583] = 0;
+ _$jscoverage['plugins/list.js'][584] = 0;
+ _$jscoverage['plugins/list.js'][587] = 0;
+ _$jscoverage['plugins/list.js'][589] = 0;
+ _$jscoverage['plugins/list.js'][590] = 0;
+ _$jscoverage['plugins/list.js'][592] = 0;
+ _$jscoverage['plugins/list.js'][593] = 0;
+ _$jscoverage['plugins/list.js'][595] = 0;
+ _$jscoverage['plugins/list.js'][596] = 0;
+ _$jscoverage['plugins/list.js'][598] = 0;
+ _$jscoverage['plugins/list.js'][599] = 0;
+ _$jscoverage['plugins/list.js'][600] = 0;
+ _$jscoverage['plugins/list.js'][602] = 0;
+ _$jscoverage['plugins/list.js'][603] = 0;
+ _$jscoverage['plugins/list.js'][604] = 0;
+ _$jscoverage['plugins/list.js'][607] = 0;
+ _$jscoverage['plugins/list.js'][608] = 0;
+ _$jscoverage['plugins/list.js'][609] = 0;
+ _$jscoverage['plugins/list.js'][610] = 0;
+ _$jscoverage['plugins/list.js'][611] = 0;
+ _$jscoverage['plugins/list.js'][612] = 0;
+ _$jscoverage['plugins/list.js'][617] = 0;
+ _$jscoverage['plugins/list.js'][625] = 0;
+ _$jscoverage['plugins/list.js'][627] = 0;
+ _$jscoverage['plugins/list.js'][628] = 0;
+ _$jscoverage['plugins/list.js'][629] = 0;
+ _$jscoverage['plugins/list.js'][630] = 0;
+ _$jscoverage['plugins/list.js'][632] = 0;
+ _$jscoverage['plugins/list.js'][633] = 0;
+ _$jscoverage['plugins/list.js'][634] = 0;
+ _$jscoverage['plugins/list.js'][635] = 0;
+ _$jscoverage['plugins/list.js'][636] = 0;
+ _$jscoverage['plugins/list.js'][637] = 0;
+ _$jscoverage['plugins/list.js'][638] = 0;
+ _$jscoverage['plugins/list.js'][639] = 0;
+ _$jscoverage['plugins/list.js'][640] = 0;
+ _$jscoverage['plugins/list.js'][641] = 0;
+ _$jscoverage['plugins/list.js'][642] = 0;
+ _$jscoverage['plugins/list.js'][645] = 0;
+ _$jscoverage['plugins/list.js'][646] = 0;
+ _$jscoverage['plugins/list.js'][647] = 0;
+ _$jscoverage['plugins/list.js'][650] = 0;
+ _$jscoverage['plugins/list.js'][651] = 0;
+ _$jscoverage['plugins/list.js'][653] = 0;
+ _$jscoverage['plugins/list.js'][654] = 0;
+ _$jscoverage['plugins/list.js'][655] = 0;
+ _$jscoverage['plugins/list.js'][656] = 0;
+ _$jscoverage['plugins/list.js'][658] = 0;
+ _$jscoverage['plugins/list.js'][659] = 0;
+ _$jscoverage['plugins/list.js'][661] = 0;
+ _$jscoverage['plugins/list.js'][662] = 0;
+ _$jscoverage['plugins/list.js'][666] = 0;
+ _$jscoverage['plugins/list.js'][667] = 0;
+ _$jscoverage['plugins/list.js'][669] = 0;
+ _$jscoverage['plugins/list.js'][670] = 0;
+ _$jscoverage['plugins/list.js'][672] = 0;
+ _$jscoverage['plugins/list.js'][673] = 0;
+ _$jscoverage['plugins/list.js'][675] = 0;
+ _$jscoverage['plugins/list.js'][679] = 0;
+ _$jscoverage['plugins/list.js'][680] = 0;
+ _$jscoverage['plugins/list.js'][681] = 0;
+ _$jscoverage['plugins/list.js'][682] = 0;
+ _$jscoverage['plugins/list.js'][685] = 0;
+ _$jscoverage['plugins/list.js'][686] = 0;
+ _$jscoverage['plugins/list.js'][687] = 0;
+ _$jscoverage['plugins/list.js'][691] = 0;
+ _$jscoverage['plugins/list.js'][692] = 0;
+ _$jscoverage['plugins/list.js'][693] = 0;
+ _$jscoverage['plugins/list.js'][694] = 0;
+ _$jscoverage['plugins/list.js'][695] = 0;
+ _$jscoverage['plugins/list.js'][700] = 0;
+ _$jscoverage['plugins/list.js'][701] = 0;
+ _$jscoverage['plugins/list.js'][702] = 0;
+ _$jscoverage['plugins/list.js'][703] = 0;
+ _$jscoverage['plugins/list.js'][704] = 0;
+ _$jscoverage['plugins/list.js'][705] = 0;
+ _$jscoverage['plugins/list.js'][706] = 0;
+ _$jscoverage['plugins/list.js'][710] = 0;
+ _$jscoverage['plugins/list.js'][711] = 0;
+ _$jscoverage['plugins/list.js'][714] = 0;
+ _$jscoverage['plugins/list.js'][715] = 0;
+ _$jscoverage['plugins/list.js'][716] = 0;
+ _$jscoverage['plugins/list.js'][720] = 0;
+ _$jscoverage['plugins/list.js'][721] = 0;
+ _$jscoverage['plugins/list.js'][722] = 0;
+ _$jscoverage['plugins/list.js'][723] = 0;
+ _$jscoverage['plugins/list.js'][724] = 0;
+ _$jscoverage['plugins/list.js'][737] = 0;
+ _$jscoverage['plugins/list.js'][738] = 0;
+ _$jscoverage['plugins/list.js'][739] = 0;
+ _$jscoverage['plugins/list.js'][740] = 0;
+ _$jscoverage['plugins/list.js'][741] = 0;
+ _$jscoverage['plugins/list.js'][742] = 0;
+ _$jscoverage['plugins/list.js'][747] = 0;
+ _$jscoverage['plugins/list.js'][749] = 0;
+ _$jscoverage['plugins/list.js'][752] = 0;
+ _$jscoverage['plugins/list.js'][753] = 0;
+ _$jscoverage['plugins/list.js'][754] = 0;
+ _$jscoverage['plugins/list.js'][755] = 0;
+ _$jscoverage['plugins/list.js'][756] = 0;
+ _$jscoverage['plugins/list.js'][757] = 0;
+ _$jscoverage['plugins/list.js'][759] = 0;
+ _$jscoverage['plugins/list.js'][760] = 0;
+ _$jscoverage['plugins/list.js'][766] = 0;
+ _$jscoverage['plugins/list.js'][767] = 0;
+ _$jscoverage['plugins/list.js'][769] = 0;
+ _$jscoverage['plugins/list.js'][770] = 0;
+ _$jscoverage['plugins/list.js'][771] = 0;
+ _$jscoverage['plugins/list.js'][772] = 0;
+ _$jscoverage['plugins/list.js'][773] = 0;
+ _$jscoverage['plugins/list.js'][776] = 0;
+ _$jscoverage['plugins/list.js'][777] = 0;
+ _$jscoverage['plugins/list.js'][778] = 0;
+ _$jscoverage['plugins/list.js'][779] = 0;
+ _$jscoverage['plugins/list.js'][780] = 0;
+ _$jscoverage['plugins/list.js'][781] = 0;
+ _$jscoverage['plugins/list.js'][782] = 0;
+ _$jscoverage['plugins/list.js'][783] = 0;
+ _$jscoverage['plugins/list.js'][784] = 0;
+ _$jscoverage['plugins/list.js'][785] = 0;
+ _$jscoverage['plugins/list.js'][786] = 0;
+ _$jscoverage['plugins/list.js'][787] = 0;
+ _$jscoverage['plugins/list.js'][790] = 0;
+ _$jscoverage['plugins/list.js'][791] = 0;
+ _$jscoverage['plugins/list.js'][792] = 0;
+ _$jscoverage['plugins/list.js'][793] = 0;
+ _$jscoverage['plugins/list.js'][794] = 0;
+ _$jscoverage['plugins/list.js'][795] = 0;
+ _$jscoverage['plugins/list.js'][798] = 0;
+ _$jscoverage['plugins/list.js'][799] = 0;
+ _$jscoverage['plugins/list.js'][800] = 0;
+ _$jscoverage['plugins/list.js'][801] = 0;
+ _$jscoverage['plugins/list.js'][802] = 0;
+ _$jscoverage['plugins/list.js'][803] = 0;
+ _$jscoverage['plugins/list.js'][805] = 0;
+ _$jscoverage['plugins/list.js'][808] = 0;
+ _$jscoverage['plugins/list.js'][809] = 0;
+ _$jscoverage['plugins/list.js'][810] = 0;
+ _$jscoverage['plugins/list.js'][811] = 0;
+ _$jscoverage['plugins/list.js'][812] = 0;
+ _$jscoverage['plugins/list.js'][813] = 0;
+ _$jscoverage['plugins/list.js'][814] = 0;
+ _$jscoverage['plugins/list.js'][815] = 0;
+ _$jscoverage['plugins/list.js'][816] = 0;
+ _$jscoverage['plugins/list.js'][817] = 0;
+ _$jscoverage['plugins/list.js'][818] = 0;
+ _$jscoverage['plugins/list.js'][819] = 0;
+ _$jscoverage['plugins/list.js'][823] = 0;
+ _$jscoverage['plugins/list.js'][825] = 0;
+ _$jscoverage['plugins/list.js'][827] = 0;
+ _$jscoverage['plugins/list.js'][829] = 0;
+ _$jscoverage['plugins/list.js'][830] = 0;
+ _$jscoverage['plugins/list.js'][833] = 0;
+ _$jscoverage['plugins/list.js'][834] = 0;
+ _$jscoverage['plugins/list.js'][835] = 0;
+ _$jscoverage['plugins/list.js'][840] = 0;
+ _$jscoverage['plugins/list.js'][841] = 0;
+ _$jscoverage['plugins/list.js'][842] = 0;
+ _$jscoverage['plugins/list.js'][843] = 0;
+ _$jscoverage['plugins/list.js'][845] = 0;
+ _$jscoverage['plugins/list.js'][846] = 0;
+ _$jscoverage['plugins/list.js'][848] = 0;
+ _$jscoverage['plugins/list.js'][921] = 0;
+ _$jscoverage['plugins/list.js'][925] = 0;
+ _$jscoverage['plugins/list.js'][926] = 0;
+ _$jscoverage['plugins/list.js'][928] = 0;
+ _$jscoverage['plugins/list.js'][931] = 0;
+ _$jscoverage['plugins/list.js'][937] = 0;
+ _$jscoverage['plugins/list.js'][938] = 0;
+ _$jscoverage['plugins/list.js'][946] = 0;
+ _$jscoverage['plugins/list.js'][947] = 0;
+ _$jscoverage['plugins/list.js'][948] = 0;
+ _$jscoverage['plugins/list.js'][949] = 0;
+ _$jscoverage['plugins/list.js'][951] = 0;
+ _$jscoverage['plugins/list.js'][953] = 0;
+ _$jscoverage['plugins/list.js'][954] = 0;
+ _$jscoverage['plugins/list.js'][955] = 0;
+ _$jscoverage['plugins/list.js'][956] = 0;
+ _$jscoverage['plugins/list.js'][957] = 0;
+ _$jscoverage['plugins/list.js'][958] = 0;
+ _$jscoverage['plugins/list.js'][959] = 0;
+ _$jscoverage['plugins/list.js'][960] = 0;
+ _$jscoverage['plugins/list.js'][962] = 0;
+ _$jscoverage['plugins/list.js'][964] = 0;
+ _$jscoverage['plugins/list.js'][966] = 0;
+ _$jscoverage['plugins/list.js'][967] = 0;
+ _$jscoverage['plugins/list.js'][968] = 0;
+ _$jscoverage['plugins/list.js'][969] = 0;
+ _$jscoverage['plugins/list.js'][970] = 0;
+ _$jscoverage['plugins/list.js'][971] = 0;
+ _$jscoverage['plugins/list.js'][973] = 0;
+ _$jscoverage['plugins/list.js'][975] = 0;
+ _$jscoverage['plugins/list.js'][976] = 0;
+ _$jscoverage['plugins/list.js'][977] = 0;
+ _$jscoverage['plugins/list.js'][978] = 0;
+ _$jscoverage['plugins/list.js'][980] = 0;
+ _$jscoverage['plugins/list.js'][981] = 0;
+ _$jscoverage['plugins/list.js'][983] = 0;
+ _$jscoverage['plugins/list.js'][984] = 0;
+ _$jscoverage['plugins/list.js'][985] = 0;
+ _$jscoverage['plugins/list.js'][986] = 0;
+ _$jscoverage['plugins/list.js'][987] = 0;
+ _$jscoverage['plugins/list.js'][988] = 0;
+ _$jscoverage['plugins/list.js'][989] = 0;
+ _$jscoverage['plugins/list.js'][994] = 0;
+ _$jscoverage['plugins/list.js'][995] = 0;
+ _$jscoverage['plugins/list.js'][1000] = 0;
+ _$jscoverage['plugins/list.js'][1002] = 0;
+ _$jscoverage['plugins/list.js'][1003] = 0;
+ _$jscoverage['plugins/list.js'][1004] = 0;
+ _$jscoverage['plugins/list.js'][1005] = 0;
+ _$jscoverage['plugins/list.js'][1008] = 0;
+ _$jscoverage['plugins/list.js'][1009] = 0;
+ _$jscoverage['plugins/list.js'][1010] = 0;
+ _$jscoverage['plugins/list.js'][1011] = 0;
+ _$jscoverage['plugins/list.js'][1014] = 0;
+ _$jscoverage['plugins/list.js'][1015] = 0;
+ _$jscoverage['plugins/list.js'][1016] = 0;
+ _$jscoverage['plugins/list.js'][1017] = 0;
+ _$jscoverage['plugins/list.js'][1018] = 0;
+ _$jscoverage['plugins/list.js'][1020] = 0;
+ _$jscoverage['plugins/list.js'][1022] = 0;
+ _$jscoverage['plugins/list.js'][1023] = 0;
+ _$jscoverage['plugins/list.js'][1024] = 0;
+ _$jscoverage['plugins/list.js'][1026] = 0;
+ _$jscoverage['plugins/list.js'][1028] = 0;
+ _$jscoverage['plugins/list.js'][1029] = 0;
+ _$jscoverage['plugins/list.js'][1030] = 0;
+ _$jscoverage['plugins/list.js'][1031] = 0;
+ _$jscoverage['plugins/list.js'][1033] = 0;
+ _$jscoverage['plugins/list.js'][1035] = 0;
+ _$jscoverage['plugins/list.js'][1038] = 0;
+ _$jscoverage['plugins/list.js'][1040] = 0;
+ _$jscoverage['plugins/list.js'][1041] = 0;
+ _$jscoverage['plugins/list.js'][1042] = 0;
+ _$jscoverage['plugins/list.js'][1043] = 0;
+ _$jscoverage['plugins/list.js'][1045] = 0;
+ _$jscoverage['plugins/list.js'][1047] = 0;
+ _$jscoverage['plugins/list.js'][1050] = 0;
+ _$jscoverage['plugins/list.js'][1052] = 0;
+ _$jscoverage['plugins/list.js'][1053] = 0;
+ _$jscoverage['plugins/list.js'][1054] = 0;
+ _$jscoverage['plugins/list.js'][1055] = 0;
+ _$jscoverage['plugins/list.js'][1056] = 0;
+ _$jscoverage['plugins/list.js'][1058] = 0;
+ _$jscoverage['plugins/list.js'][1059] = 0;
+ _$jscoverage['plugins/list.js'][1060] = 0;
+ _$jscoverage['plugins/list.js'][1061] = 0;
+ _$jscoverage['plugins/list.js'][1062] = 0;
+ _$jscoverage['plugins/list.js'][1064] = 0;
+ _$jscoverage['plugins/list.js'][1066] = 0;
+ _$jscoverage['plugins/list.js'][1067] = 0;
+ _$jscoverage['plugins/list.js'][1068] = 0;
+ _$jscoverage['plugins/list.js'][1069] = 0;
+ _$jscoverage['plugins/list.js'][1071] = 0;
+ _$jscoverage['plugins/list.js'][1073] = 0;
+ _$jscoverage['plugins/list.js'][1075] = 0;
+ _$jscoverage['plugins/list.js'][1077] = 0;
+ _$jscoverage['plugins/list.js'][1080] = 0;
+ _$jscoverage['plugins/list.js'][1082] = 0;
+ _$jscoverage['plugins/list.js'][1083] = 0;
+ _$jscoverage['plugins/list.js'][1084] = 0;
+ _$jscoverage['plugins/list.js'][1085] = 0;
+ _$jscoverage['plugins/list.js'][1086] = 0;
+ _$jscoverage['plugins/list.js'][1087] = 0;
+ _$jscoverage['plugins/list.js'][1090] = 0;
+ _$jscoverage['plugins/list.js'][1096] = 0;
+ _$jscoverage['plugins/list.js'][1097] = 0;
+ _$jscoverage['plugins/list.js'][1099] = 0;
+ _$jscoverage['plugins/list.js'][1100] = 0;
+ _$jscoverage['plugins/list.js'][1102] = 0;
+ _$jscoverage['plugins/list.js'][1103] = 0;
+ _$jscoverage['plugins/list.js'][1106] = 0;
+ _$jscoverage['plugins/list.js'][1108] = 0;
+ _$jscoverage['plugins/list.js'][1114] = 0;
+ _$jscoverage['plugins/list.js'][1116] = 0;
+ _$jscoverage['plugins/list.js'][1117] = 0;
+ _$jscoverage['plugins/list.js'][1118] = 0;
+ _$jscoverage['plugins/list.js'][1119] = 0;
+ _$jscoverage['plugins/list.js'][1121] = 0;
+ _$jscoverage['plugins/list.js'][1122] = 0;
+ _$jscoverage['plugins/list.js'][1123] = 0;
+ _$jscoverage['plugins/list.js'][1124] = 0;
+ _$jscoverage['plugins/list.js'][1127] = 0;
+ _$jscoverage['plugins/list.js'][1128] = 0;
+ _$jscoverage['plugins/list.js'][1130] = 0;
+ _$jscoverage['plugins/list.js'][1131] = 0;
+ _$jscoverage['plugins/list.js'][1132] = 0;
+ _$jscoverage['plugins/list.js'][1133] = 0;
+ _$jscoverage['plugins/list.js'][1137] = 0;
+ _$jscoverage['plugins/list.js'][1138] = 0;
+ _$jscoverage['plugins/list.js'][1139] = 0;
+ _$jscoverage['plugins/list.js'][1140] = 0;
+ _$jscoverage['plugins/list.js'][1141] = 0;
+ _$jscoverage['plugins/list.js'][1144] = 0;
+ _$jscoverage['plugins/list.js'][1146] = 0;
+ _$jscoverage['plugins/list.js'][1148] = 0;
+ _$jscoverage['plugins/list.js'][1150] = 0;
+ _$jscoverage['plugins/list.js'][1151] = 0;
+ _$jscoverage['plugins/list.js'][1152] = 0;
+ _$jscoverage['plugins/list.js'][1153] = 0;
+ _$jscoverage['plugins/list.js'][1154] = 0;
+ _$jscoverage['plugins/list.js'][1156] = 0;
+ _$jscoverage['plugins/list.js'][1158] = 0;
+ _$jscoverage['plugins/list.js'][1160] = 0;
+ _$jscoverage['plugins/list.js'][1163] = 0;
+ _$jscoverage['plugins/list.js'][1164] = 0;
+ _$jscoverage['plugins/list.js'][1165] = 0;
+ _$jscoverage['plugins/list.js'][1166] = 0;
+ _$jscoverage['plugins/list.js'][1167] = 0;
+ _$jscoverage['plugins/list.js'][1169] = 0;
+ _$jscoverage['plugins/list.js'][1171] = 0;
+ _$jscoverage['plugins/list.js'][1172] = 0;
+ _$jscoverage['plugins/list.js'][1173] = 0;
+ _$jscoverage['plugins/list.js'][1176] = 0;
+ _$jscoverage['plugins/list.js'][1180] = 0;
+ _$jscoverage['plugins/list.js'][1181] = 0;
+ _$jscoverage['plugins/list.js'][1182] = 0;
+ _$jscoverage['plugins/list.js'][1183] = 0;
+ _$jscoverage['plugins/list.js'][1184] = 0;
+ _$jscoverage['plugins/list.js'][1186] = 0;
+ _$jscoverage['plugins/list.js'][1187] = 0;
+ _$jscoverage['plugins/list.js'][1188] = 0;
+ _$jscoverage['plugins/list.js'][1190] = 0;
+ _$jscoverage['plugins/list.js'][1194] = 0;
+ _$jscoverage['plugins/list.js'][1195] = 0;
+ _$jscoverage['plugins/list.js'][1197] = 0;
+ _$jscoverage['plugins/list.js'][1198] = 0;
+ _$jscoverage['plugins/list.js'][1199] = 0;
+ _$jscoverage['plugins/list.js'][1200] = 0;
+ _$jscoverage['plugins/list.js'][1202] = 0;
+ _$jscoverage['plugins/list.js'][1203] = 0;
+ _$jscoverage['plugins/list.js'][1204] = 0;
+ _$jscoverage['plugins/list.js'][1205] = 0;
+ _$jscoverage['plugins/list.js'][1207] = 0;
+}
+_$jscoverage['plugins/list.js'].source = ["/** "," * 有序列表,无序列表插件 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ 'list' ] = function () { "," var me = this , "," notExchange = { "," 'TD' : 1 , "," 'PRE' : 1 , "," 'BLOCKQUOTE' : 1 "," } ; "," var customStyle = { "," 'cn' : 'cn-1-' , "," 'cn1' : 'cn-2-' , "," 'cn2' : 'cn-3-' , "," 'num' : 'num-1-' , "," 'num1' : 'num-2-' , "," 'num2' : 'num-3-' , "," 'dash' : 'dash' , "," 'dot' : 'dot' "," } ; ",""," me. setOpt( { "," 'insertorderedlist' : { "," 'num' : '' , "," 'num1' : '' , "," 'num2' : '' , "," 'cn' : '' , "," 'cn1' : '' , "," 'cn2' : '' , "," 'decimal' : '' , "," 'lower-alpha' : '' , "," 'lower-roman' : '' , "," 'upper-alpha' : '' , "," 'upper-roman' : '' "," } , "," 'insertunorderedlist' : { "," 'circle' : '' , "," 'disc' : '' , "," 'square' : '' , "," 'dash' : '' , "," 'dot' : '' "," } , "," listDefaultPaddingLeft : '30' , "," listiconpath : 'http://bs.baidu.com/listicon/' , "," maxListLevel : - 1 //-1不限制 "," } ); "," function listToArray( list) { "," var arr = []; "," for ( var p in list) { "," arr. push( p) "," } "," return arr; "," } "," var listStyle = { "," 'OL' : listToArray( me. options. insertorderedlist), "," 'UL' : listToArray( me. options. insertunorderedlist) "," } ; "," var liiconpath = me. options. listiconpath; ",""," //根据用户配置,调整customStyle "," for ( var s in customStyle) { "," if (! me. options. insertorderedlist. hasOwnProperty( s) && ! me. options. insertunorderedlist. hasOwnProperty( s)) { "," delete customStyle[ s]; "," } "," } ",""," me. ready( function () { "," var customCss = []; "," for ( var p in customStyle) { "," if ( p == 'dash' || p == 'dot' ) { "," customCss. push( 'li.list-' + customStyle[ p] + '{background-image:url(' + liiconpath + customStyle[ p]+ '.gif)}' ); "," customCss. push( 'ul.custom_' + p+ '{list-style:none;}ul.custom_' + p+ ' li{background-position:0 3px;background-repeat:no-repeat}' ); "," } else { "," for ( var i= 0 ; i< 99 ; i++) { "," customCss. push( 'li.list-' + customStyle[ p] + i + '{background-image:url(' + liiconpath + 'list-' + customStyle[ p] + i + '.gif)}' ) "," } "," customCss. push( 'ol.custom_' + p+ '{list-style:none;}ol.custom_' + p+ ' li{background-position:0 3px;background-repeat:no-repeat}' ); "," } "," switch ( p) { "," case 'cn' : "," customCss. push( 'li.list-' + p+ '-paddingleft-1{padding-left:25px}' ); "," customCss. push( 'li.list-' + p+ '-paddingleft-2{padding-left:40px}' ); "," customCss. push( 'li.list-' + p+ '-paddingleft-3{padding-left:55px}' ); "," break ; "," case 'cn1' : "," customCss. push( 'li.list-' + p+ '-paddingleft-1{padding-left:30px}' ); "," customCss. push( 'li.list-' + p+ '-paddingleft-2{padding-left:40px}' ); "," customCss. push( 'li.list-' + p+ '-paddingleft-3{padding-left:55px}' ); "," break ; "," case 'cn2' : "," customCss. push( 'li.list-' + p+ '-paddingleft-1{padding-left:40px}' ); "," customCss. push( 'li.list-' + p+ '-paddingleft-2{padding-left:55px}' ); "," customCss. push( 'li.list-' + p+ '-paddingleft-3{padding-left:68px}' ); "," break ; "," case 'num' : "," case 'num1' : "," customCss. push( 'li.list-' + p+ '-paddingleft-1{padding-left:25px}' ); "," break ; "," case 'num2' : "," customCss. push( 'li.list-' + p+ '-paddingleft-1{padding-left:35px}' ); "," customCss. push( 'li.list-' + p+ '-paddingleft-2{padding-left:40px}' ); "," break ; "," case 'dash' : "," customCss. push( 'li.list-' + p+ '-paddingleft{padding-left:35px}' ); "," break ; "," case 'dot' : "," customCss. push( 'li.list-' + p+ '-paddingleft{padding-left:20px}' ); "," } "," } "," customCss. push( '.list-paddingleft-1{padding-left:0}' ); "," customCss. push( '.list-paddingleft-2{padding-left:' + me. options. listDefaultPaddingLeft+ 'px}' ); "," customCss. push( '.list-paddingleft-3{padding-left:' + me. options. listDefaultPaddingLeft* 2 + 'px}' ); "," //如果不给宽度会在自定应样式里出现滚动条 "," utils. cssRule( 'list' , 'ol,ul{margin:0;pading:0;' +( browser. ie ? '' : 'width:95%' )+ '}li{clear:both;}' + customCss. join( ' \\n ' ), me. document); "," } ); "," //单独处理剪切的问题 "," me. ready( function () { "," domUtils. on( me. body, 'cut' , function () { "," setTimeout( function () { "," var rng = me. selection. getRange(), li; "," //trace:3416 "," if (! rng. collapsed) { "," if ( li = domUtils. findParentByTagName( rng. startContainer, 'li' , true )) { "," if (! li. nextSibling && domUtils. isEmptyBlock( li)) { "," var pn = li. parentNode, node; "," if ( node = pn. previousSibling) { "," domUtils. remove( pn); "," rng. setStartAtLast( node). collapse( true ); "," rng. select( true ); "," } else if ( node = pn. nextSibling) { "," domUtils. remove( pn); "," rng. setStartAtFirst( node). collapse( true ); "," rng. select( true ); "," } else { "," var tmpNode = me. document. createElement( 'p' ); "," domUtils. fillNode( me. document, tmpNode); "," pn. parentNode. insertBefore( tmpNode, pn); "," domUtils. remove( pn); "," rng. setStart( tmpNode, 0 ). collapse( true ); "," rng. select( true ); "," } "," } "," } "," } ",""," } ) "," } ) "," } ); ",""," function getStyle( node) { "," var cls = node. className; "," if ( domUtils. hasClass( node, /custom_/ )) { "," return cls. match( /custom_(\\w+)/ )[ 1 ] "," } "," return domUtils. getStyle( node, 'list-style-type' ) ",""," } ",""," me. addListener( 'beforepaste' , function ( type, html) { "," var me = this , "," rng = me. selection. getRange(), li; "," var root = UE. htmlparser( html. html, true ); "," if ( li = domUtils. findParentByTagName( rng. startContainer, 'li' , true )) { "," var list = li. parentNode, tagName = list. tagName == 'OL' ? 'ul' : 'ol' ; "," utils. each( root. getNodesByTagName( tagName), function ( n) { "," n. tagName = list. tagName; "," n. setAttr(); "," if ( n. parentNode === root) { "," type = getStyle( list) || ( list. tagName == 'OL' ? 'decimal' : 'disc' ) "," } else { "," var className = n. parentNode. getAttr( 'class' ); "," if ( className && /custom_/ . test( className)) { "," type = className. match( /custom_(\\w+)/ )[ 1 ] "," } else { "," type = n. parentNode. getStyle( 'list-style-type' ); "," } "," if (! type) { "," type = list. tagName == 'OL' ? 'decimal' : 'disc' ; "," } "," } "," var index = utils. indexOf( listStyle[ list. tagName], type); "," if ( n. parentNode !== root) "," index = index + 1 == listStyle[ list. tagName]. length ? 0 : index + 1 ; "," var currentStyle = listStyle[ list. tagName][ index]; "," if ( customStyle[ currentStyle]) { "," n. setAttr( 'class' , 'custom_' + currentStyle) ",""," } else { "," n. setStyle( 'list-style-type' , currentStyle) "," } "," } ) ",""," } ",""," html. html = root. toHtml(); "," } ); "," //进入编辑器的li要套p标签 "," me. addInputRule( function ( root) { "," utils. each( root. getNodesByTagName( 'li' ), function ( li) { "," var tmpP = UE. uNode. createElement( 'p' ); "," for ( var i= 0 , ci; ci= li. children[ i];) { "," if ( ci. type == 'text' || dtd. p[ ci. tagName]) { "," tmpP. appendChild( ci); "," } else { "," if ( tmpP. firstChild()) { "," li. insertBefore( tmpP, ci); "," tmpP = UE. uNode. createElement( 'p' ); "," i = i + 2 ; "," } else { "," i++; "," } ",""," } "," } "," if ( tmpP. firstChild() && ! tmpP. parentNode || ! li. firstChild()) { "," li. appendChild( tmpP); "," } "," //trace:3357 "," //p不能为空 "," if (! tmpP. firstChild()) { "," tmpP. innerHTML( browser. ie ? ' ' : '<br/>' ) "," } "," //去掉末尾的空白 "," var p = li. firstChild(); "," var lastChild = p. lastChild(); "," if ( lastChild && lastChild. type == 'text' && /^\\s*$/ . test( lastChild. data)) { "," p. removeChild( lastChild) "," } "," } ); "," var orderlisttype = { "," 'num1' : /^\\d+\\)/ , "," 'decimal' : /^\\d+\\./ , "," 'lower-alpha' : /^[a-z]+\\)/ , "," 'upper-alpha' : /^[A-Z]+\\./ , "," 'cn' : /^[\\u4E00\\u4E8C\\u4E09\\u56DB\\u516d\\u4e94\\u4e03\\u516b\\u4e5d]+[\\u3001]/ , "," 'cn2' : /^\\([\\u4E00\\u4E8C\\u4E09\\u56DB\\u516d\\u4e94\\u4e03\\u516b\\u4e5d]+\\)/ "," } , "," unorderlisttype = { "," 'square' : 'n' "," } ; "," function checkListType( content, container) { "," var span = container. firstChild(); "," if ( span && span. type == 'element' && span. tagName == 'span' && /Wingdings|Symbol/ . test( span. getStyle( 'font-family' ))) { "," for ( var p in unorderlisttype) { "," if ( unorderlisttype[ p] == span. data) { "," return p"," } "," } "," return 'disc' "," } "," for ( var p in orderlisttype) { "," if ( orderlisttype[ p]. test( content)) { "," return p; "," } "," } ",""," } "," utils. each( root. getNodesByTagName( 'p' ), function ( node) { "," if ( node. getAttr( 'class' ) != 'MsoListParagraph' ) { "," return "," } ",""," //word粘贴过来的会带有margin要去掉,但这样也可能会误命中一些央视 "," node. setStyle( 'margin' , '' ); "," node. setStyle( 'margin-left' , '' ); "," node. setAttr( 'class' , '' ); ",""," function appendLi( list, p, type) { "," if ( list. tagName == 'ol' ) { "," if ( browser. ie) { "," var first = p. firstChild(); "," if ( first. type == 'element' && first. tagName == 'span' && orderlisttype[ type]. test( first. innerText())) { "," p. removeChild( first); "," } "," } else { "," p. innerHTML( p. innerHTML(). replace( orderlisttype[ type], '' )); "," } "," } else { "," p. removeChild( p. firstChild()) "," } ",""," var li = UE. uNode. createElement( 'li' ); "," li. appendChild( p); "," list. appendChild( li); "," } "," var tmp = node, type, cacheNode = node; ",""," if ( node. parentNode. tagName != 'li' && ( type = checkListType( node. innerText(), node))) { ",""," var list = UE. uNode. createElement( me. options. insertorderedlist. hasOwnProperty( type) ? 'ol' : 'ul' ); "," if ( customStyle[ type]) { "," list. setAttr( 'class' , 'custom_' + type) "," } else { "," list. setStyle( 'list-style-type' , type) "," } "," while ( node && node. parentNode. tagName != 'li' && checkListType( node. innerText(), node)) { "," tmp = node. nextSibling(); "," if (! tmp) { "," node. parentNode. insertBefore( list, node) "," } "," appendLi( list, node, type); "," node = tmp; "," } "," if (! list. parentNode && node && node. parentNode) { "," node. parentNode. insertBefore( list, node) "," } "," } "," var span = cacheNode. firstChild(); "," if ( span && span. type == 'element' && span. tagName == 'span' && /^\\s*( )+\\s*$/ . test( span. innerText())) { "," span. parentNode. removeChild( span) "," } "," } ) "," } ); ",""," //调整索引标签 "," me. addListener( 'contentchange' , function () { "," adjustListStyle( me. document) "," } ); ",""," function adjustListStyle( doc, ignore) { "," utils. each( domUtils. getElementsByTagName( doc, 'ol ul' ), function ( node) { ",""," if (! domUtils. inDoc( node, doc)) "," return ; ",""," var parent = node. parentNode; "," if ( parent. tagName == node. tagName) { "," var nodeStyleType = getStyle( node) || ( node. tagName == 'OL' ? 'decimal' : 'disc' ), "," parentStyleType = getStyle( parent) || ( parent. tagName == 'OL' ? 'decimal' : 'disc' ); "," if ( nodeStyleType == parentStyleType) { "," var styleIndex = utils. indexOf( listStyle[ node. tagName], nodeStyleType); "," styleIndex = styleIndex + 1 == listStyle[ node. tagName]. length ? 0 : styleIndex + 1 ; "," setListStyle( node, listStyle[ node. tagName][ styleIndex]) "," } ",""," } "," var index = 0 , type = 2 ; "," if ( domUtils. hasClass( node, /custom_/ )) { "," if (!( /[ou]l/i . test( parent. tagName) && domUtils. hasClass( parent, /custom_/ ))) { "," type = 1 ; "," } "," } else { "," if ( /[ou]l/i . test( parent. tagName) && domUtils. hasClass( parent, /custom_/ )) { "," type = 3 ; "," } "," } ",""," var style = domUtils. getStyle( node, 'list-style-type' ); "," style && ( node. style. cssText = 'list-style-type:' + style); "," node. className = utils. trim( node. className. replace( /list-paddingleft-\\w+/ , '' )) + ' list-paddingleft-' + type; "," utils. each( domUtils. getElementsByTagName( node, 'li' ), function ( li) { "," li. style. cssText && ( li. style. cssText = '' ); "," if (! li. firstChild) { "," domUtils. remove( li); "," return ; "," } "," if ( li. parentNode !== node) { "," return ; "," } "," index++; "," if ( domUtils. hasClass( node, /custom_/ ) ) { "," var paddingLeft = 1 , currentStyle = getStyle( node); "," if ( node. tagName == 'OL' ) { "," if ( currentStyle) { "," switch ( currentStyle) { "," case 'cn' : "," case 'cn1' : "," case 'cn2' : "," if ( index > 10 && ( index % 10 == 0 || index > 10 && index < 20 )) { "," paddingLeft = 2 "," } else if ( index > 20 ) { "," paddingLeft = 3 "," } "," break ; "," case 'num2' : "," if ( index > 9 ) { "," paddingLeft = 2 "," } "," } "," } "," li. className = 'list-' + customStyle[ currentStyle]+ index + ' ' + 'list-' + currentStyle+ '-paddingleft-' + paddingLeft; "," } else { "," li. className = 'list-' + customStyle[ currentStyle] + ' ' + 'list-' + currentStyle+ '-paddingleft' ; "," } "," } else { "," li. className = li. className. replace( /list-[\\w\\-]+/gi , '' ); "," } "," var className = li. getAttribute( 'class' ); "," if ( className !== null && ! className. replace( /\\s/g , '' )) { "," domUtils. removeAttributes( li, 'class' ) "," } "," } ); "," ! ignore && adjustList( node, node. tagName. toLowerCase(), getStyle( node)|| domUtils. getStyle( node, 'list-style-type' ), true ); "," } ) "," } "," function adjustList( list, tag, style, ignoreEmpty) { "," var nextList = list. nextSibling; "," if ( nextList && nextList. nodeType == 1 && nextList. tagName. toLowerCase() == tag && ( getStyle( nextList) || domUtils. getStyle( nextList, 'list-style-type' ) || ( tag == 'ol' ? 'decimal' : 'disc' )) == style) { "," domUtils. moveChild( nextList, list); "," if ( nextList. childNodes. length == 0 ) { "," domUtils. remove( nextList); "," } "," } "," if ( nextList && domUtils. isFillChar( nextList)) { "," domUtils. remove( nextList); "," } "," var preList = list. previousSibling; "," if ( preList && preList. nodeType == 1 && preList. tagName. toLowerCase() == tag && ( getStyle( preList) || domUtils. getStyle( preList, 'list-style-type' ) || ( tag == 'ol' ? 'decimal' : 'disc' )) == style) { "," domUtils. moveChild( list, preList); "," } "," if ( preList && domUtils. isFillChar( preList)) { "," domUtils. remove( preList); "," } "," ! ignoreEmpty && domUtils. isEmptyBlock( list) && domUtils. remove( list); "," if ( getStyle( list)) { "," adjustListStyle( list. ownerDocument, true ) "," } "," } ",""," function setListStyle( list, style) { "," if ( customStyle[ style]) { "," list. className = 'custom_' + style; "," } "," try { "," domUtils. setStyle( list, 'list-style-type' , style); "," } catch ( e) {} "," } "," function clearEmptySibling( node) { "," var tmpNode = node. previousSibling; "," if ( tmpNode && domUtils. isEmptyBlock( tmpNode)) { "," domUtils. remove( tmpNode); "," } "," tmpNode = node. nextSibling; "," if ( tmpNode && domUtils. isEmptyBlock( tmpNode)) { "," domUtils. remove( tmpNode); "," } "," } ",""," me. addListener( 'keydown' , function ( type, evt) { "," function preventAndSave() { "," evt. preventDefault ? evt. preventDefault() : ( evt. returnValue = false ); "," me. fireEvent( 'contentchange' ); "," me. undoManger && me. undoManger. save(); "," } "," function findList( node, filterFn) { "," while ( node && ! domUtils. isBody( node)) { "," if ( filterFn( node)) { "," return null "," } "," if ( node. nodeType == 1 && /[ou]l/i . test( node. tagName)) { "," return node; "," } "," node = node. parentNode; "," } "," return null ; "," } "," var keyCode = evt. keyCode || evt. which; "," if ( keyCode == 13 && ! evt. shiftKey) { //回车 "," var rng = me. selection. getRange(), "," parent = domUtils. findParent( rng. startContainer, function ( node) { return domUtils. isBlockElm( node) } , true ), "," li = domUtils. findParentByTagName( rng. startContainer, 'li' , true ); "," if ( parent && parent. tagName != 'PRE' && ! li) { "," var html = parent. innerHTML. replace( new RegExp( domUtils. fillChar, 'g' ), '' ); "," if ( /^\\s*1\\s*\\.[^\\d]/ . test( html)) { "," parent. innerHTML = html. replace( /^\\s*1\\s*\\./ , '' ); "," rng. setStartAtLast( parent). collapse( true ). select(); "," me. __hasEnterExecCommand = true ; "," me. execCommand( 'insertorderedlist' ); "," me. __hasEnterExecCommand = false ; "," } "," } "," var range = me. selection. getRange(), "," start = findList( range. startContainer, function ( node) { "," return node. tagName == 'TABLE' ; "," } ), "," end = range. collapsed ? start : findList( range. endContainer, function ( node) { "," return node. tagName == 'TABLE' ; "," } ); ",""," if ( start && end && start === end) { ",""," if (! range. collapsed) { "," start = domUtils. findParentByTagName( range. startContainer, 'li' , true ); "," end = domUtils. findParentByTagName( range. endContainer, 'li' , true ); "," if ( start && end && start === end) { "," range. deleteContents(); "," li = domUtils. findParentByTagName( range. startContainer, 'li' , true ); "," if ( li && domUtils. isEmptyBlock( li)) { ",""," pre = li. previousSibling; "," next = li. nextSibling; "," p = me. document. createElement( 'p' ); ",""," domUtils. fillNode( me. document, p); "," parentList = li. parentNode; "," if ( pre && next) { "," range. setStart( next, 0 ). collapse( true ). select( true ); "," domUtils. remove( li); ",""," } else { "," if (! pre && ! next || ! pre) { ",""," parentList. parentNode. insertBefore( p, parentList); ","",""," } else { "," li. parentNode. parentNode. insertBefore( p, parentList. nextSibling); "," } "," domUtils. remove( li); "," if (! parentList. firstChild) { "," domUtils. remove( parentList); "," } "," range. setStart( p, 0 ). setCursor(); ","",""," } "," preventAndSave(); "," return ; ",""," } "," } else { "," var tmpRange = range. cloneRange(), "," bk = tmpRange. collapse( false ). createBookmark(); ",""," range. deleteContents(); "," tmpRange. moveToBookmark( bk); "," var li = domUtils. findParentByTagName( tmpRange. startContainer, 'li' , true ); ",""," clearEmptySibling( li); "," tmpRange. select(); "," preventAndSave(); "," return ; "," } "," } ","",""," li = domUtils. findParentByTagName( range. startContainer, 'li' , true ); ",""," if ( li) { "," if ( domUtils. isEmptyBlock( li)) { "," bk = range. createBookmark(); "," var parentList = li. parentNode; "," if ( li !== parentList. lastChild) { "," domUtils. breakParent( li, parentList); "," clearEmptySibling( li); "," } else { ",""," parentList. parentNode. insertBefore( li, parentList. nextSibling); "," if ( domUtils. isEmptyNode( parentList)) { "," domUtils. remove( parentList); "," } "," } "," //嵌套不处理 "," if (! dtd. $list[ li. parentNode. tagName]) { ",""," if (! domUtils. isBlockElm( li. firstChild)) { "," p = me. document. createElement( 'p' ); "," li. parentNode. insertBefore( p, li); "," while ( li. firstChild) { "," p. appendChild( li. firstChild); "," } "," domUtils. remove( li); "," } else { "," domUtils. remove( li, true ); "," } "," } "," range. moveToBookmark( bk). select(); ","",""," } else { "," var first = li. firstChild; "," if (! first || ! domUtils. isBlockElm( first)) { "," var p = me. document. createElement( 'p' ); ",""," ! li. firstChild && domUtils. fillNode( me. document, p); "," while ( li. firstChild) { ",""," p. appendChild( li. firstChild); "," } "," li. appendChild( p); "," first = p; "," } ",""," var span = me. document. createElement( 'span' ); ",""," range. insertNode( span); "," domUtils. breakParent( span, li); ",""," var nextLi = span. nextSibling; "," first = nextLi. firstChild; ",""," if (! first) { "," p = me. document. createElement( 'p' ); ",""," domUtils. fillNode( me. document, p); "," nextLi. appendChild( p); "," first = p; "," } "," if ( domUtils. isEmptyNode( first)) { "," first. innerHTML = '' ; "," domUtils. fillNode( me. document, first); "," } ",""," range. setStart( first, 0 ). collapse( true ). shrinkBoundary(). select(); "," domUtils. remove( span); "," var pre = nextLi. previousSibling; "," if ( pre && domUtils. isEmptyBlock( pre)) { "," pre. innerHTML = '<p></p>' ; "," domUtils. fillNode( me. document, pre. firstChild); "," } ",""," } ","// } "," preventAndSave(); "," } ","",""," } ","",""," } "," if ( keyCode == 8 ) { "," //修中ie中li下的问题 "," range = me. selection. getRange(); "," if ( range. collapsed && domUtils. isStartInblock( range)) { "," tmpRange = range. cloneRange(). trimBoundary(); "," li = domUtils. findParentByTagName( range. startContainer, 'li' , true ); "," //要在li的最左边,才能处理 "," if ( li && domUtils. isStartInblock( tmpRange)) { "," start = domUtils. findParentByTagName( range. startContainer, 'p' , true ); "," if ( start && start !== li. firstChild) { "," var parentList = domUtils. findParentByTagName( start,[ 'ol' , 'ul' ]); "," domUtils. breakParent( start, parentList); "," clearEmptySibling( start); "," me. fireEvent( 'contentchange' ); "," range. setStart( start, 0 ). setCursor( false , true ); "," me. fireEvent( 'saveScene' ); "," domUtils. preventDefault( evt); "," return ; "," } ",""," if ( li && ( pre = li. previousSibling)) { "," if ( keyCode == 46 && li. childNodes. length) { "," return ; "," } "," //有可能上边的兄弟节点是个2级菜单,要追加到2级菜单的最后的li "," if ( dtd. $list[ pre. tagName]) { "," pre = pre. lastChild; "," } "," me. undoManger && me. undoManger. save(); "," first = li. firstChild; "," if ( domUtils. isBlockElm( first)) { "," if ( domUtils. isEmptyNode( first)) { ","// range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); "," pre. appendChild( first); "," range. setStart( first, 0 ). setCursor( false , true ); "," //first不是唯一的节点 "," while ( li. firstChild) { "," pre. appendChild( li. firstChild); "," } "," } else { ",""," span = me. document. createElement( 'span' ); "," range. insertNode( span); "," //判断pre是否是空的节点,如果是<p><br/></p>类型的空节点,干掉p标签防止它占位 "," if ( domUtils. isEmptyBlock( pre)) { "," pre. innerHTML = '' ; "," } "," domUtils. moveChild( li, pre); "," range. setStartBefore( span). collapse( true ). select( true ); ",""," domUtils. remove( span); ",""," } "," } else { "," if ( domUtils. isEmptyNode( li)) { "," var p = me. document. createElement( 'p' ); "," pre. appendChild( p); "," range. setStart( p, 0 ). setCursor(); ","// range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); "," } else { "," range. setEnd( pre, pre. childNodes. length). collapse(). select( true ); "," while ( li. firstChild) { "," pre. appendChild( li. firstChild); "," } "," } "," } "," domUtils. remove( li); "," me. fireEvent( 'contentchange' ); "," me. fireEvent( 'saveScene' ); "," domUtils. preventDefault( evt); "," return ; ",""," } "," //trace:980 ",""," if ( li && ! li. previousSibling) { "," var parentList = li. parentNode; "," var bk = range. createBookmark(); "," if ( domUtils. isTagNode( parentList. parentNode, 'ol ul' )) { "," parentList. parentNode. insertBefore( li, parentList); "," if ( domUtils. isEmptyNode( parentList)) { "," domUtils. remove( parentList) "," } "," } else { ",""," while ( li. firstChild) { "," parentList. parentNode. insertBefore( li. firstChild, parentList); "," } ",""," domUtils. remove( li); "," if ( domUtils. isEmptyNode( parentList)) { "," domUtils. remove( parentList) "," } ",""," } "," range. moveToBookmark( bk). setCursor( false , true ); "," me. fireEvent( 'contentchange' ); "," me. fireEvent( 'saveScene' ); "," domUtils. preventDefault( evt); "," return ; ",""," } ","",""," } ","",""," } ",""," } "," } ); ",""," me. addListener( 'keyup' , function ( type, evt) { "," var keyCode = evt. keyCode || evt. which; "," if ( keyCode == 8 ) { "," var rng = me. selection. getRange(), list; "," if ( list = domUtils. findParentByTagName( rng. startContainer,[ 'ol' , 'ul' ], true )) { "," adjustList( list, list. tagName. toLowerCase(), getStyle( list)|| domUtils. getComputedStyle( list, 'list-style-type' ), true ) "," } "," } "," } ); "," //处理tab键 "," me. addListener( 'tabkeydown' , function () { ",""," var range = me. selection. getRange(); ",""," //控制级数 "," function checkLevel( li) { "," if ( me. options. maxListLevel != - 1 ) { "," var level = li. parentNode, levelNum = 0 ; "," while ( /[ou]l/i . test( level. tagName)) { "," levelNum++; "," level = level. parentNode; "," } "," if ( levelNum >= me. options. maxListLevel) { "," return true ; "," } "," } "," } "," //只以开始为准 "," //todo 后续改进 "," var li = domUtils. findParentByTagName( range. startContainer, 'li' , true ); "," if ( li) { ",""," var bk; "," if ( range. collapsed) { "," if ( checkLevel( li)) "," return true ; "," var parentLi = li. parentNode, "," list = me. document. createElement( parentLi. tagName), "," index = utils. indexOf( listStyle[ list. tagName], getStyle( parentLi)|| domUtils. getComputedStyle( parentLi, 'list-style-type' )); "," index = index + 1 == listStyle[ list. tagName]. length ? 0 : index + 1 ; "," var currentStyle = listStyle[ list. tagName][ index]; "," setListStyle( list, currentStyle); "," if ( domUtils. isStartInblock( range)) { "," me. fireEvent( 'saveScene' ); "," bk = range. createBookmark(); "," parentLi. insertBefore( list, li); "," list. appendChild( li); "," adjustList( list, list. tagName. toLowerCase(), currentStyle); "," me. fireEvent( 'contentchange' ); "," range. moveToBookmark( bk). select( true ); "," return true ; "," } "," } else { "," me. fireEvent( 'saveScene' ); "," bk = range. createBookmark(); "," for ( var i= 0 , closeList, parents = domUtils. findParents( li), ci; ci= parents[ i++];) { "," if ( domUtils. isTagNode( ci, 'ol ul' )) { "," closeList = ci; "," break ; "," } "," } "," var current = li; "," if ( bk. end) { "," while ( current && !( domUtils. getPosition( current, bk. end) & domUtils. POSITION_FOLLOWING)) { "," if ( checkLevel( current)) { "," current = domUtils. getNextDomNode( current, false , null , function ( node) { return node !== closeList} ); "," continue ; "," } "," var parentLi = current. parentNode, "," list = me. document. createElement( parentLi. tagName), "," index = utils. indexOf( listStyle[ list. tagName], getStyle( parentLi)|| domUtils. getComputedStyle( parentLi, 'list-style-type' )); "," var currentIndex = index + 1 == listStyle[ list. tagName]. length ? 0 : index + 1 ; "," var currentStyle = listStyle[ list. tagName][ currentIndex]; "," setListStyle( list, currentStyle); "," parentLi. insertBefore( list, current); "," while ( current && !( domUtils. getPosition( current, bk. end) & domUtils. POSITION_FOLLOWING)) { "," li = current. nextSibling; "," list. appendChild( current); "," if (! li || domUtils. isTagNode( li, 'ol ul' )) { "," if ( li) { "," while ( li = li. firstChild) { "," if ( li. tagName == 'LI' ) { "," break ; "," } "," } "," } else { "," li = domUtils. getNextDomNode( current, false , null , function ( node) { return node !== closeList} ); "," } "," break ; "," } "," current = li; "," } "," adjustList( list, list. tagName. toLowerCase(), currentStyle); "," current = li; "," } "," } "," me. fireEvent( 'contentchange' ); "," range. moveToBookmark( bk). select(); "," return true ; "," } "," } ",""," } ); "," function getLi( start) { "," while ( start && ! domUtils. isBody( start)) { "," if ( start. nodeName == 'TABLE' ) { "," return null ; "," } "," if ( start. nodeName == 'LI' ) { "," return start"," } "," start = start. parentNode; "," } "," } ","",""," /** "," * 运行有序列表命令 "," * @command insertorderedlist "," * @method execCommand "," * @param { String } command 命令字符串 "," * @param { String } style 插入的有序列表类型,值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman "," * @example "," * ```javascript "," * editor.execCommand( 'insertunorderedlist','decimal'); "," * ``` "," */ "," /** "," * 查询当前选区内容是否有序列表 "," * @command insertorderedlist "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 如果当前选区是有序列表返回1,否则返回0 "," * @example "," * ```javascript "," * editor.queryCommandState( 'insertorderedlist' ); "," * ``` "," */ "," /** "," * 查询当前选区内容是否有序列表 "," * @command insertorderedlist "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 返回当前有序列表的类型,值为null或decimal,lower-alpha,lower-roman,upper-alpha,upper-roman "," * @example "," * ```javascript "," * editor.queryCommandValue( 'insertorderedlist' ); "," * ``` "," */ ",""," /** "," * 运行无序列表命令 "," * @command insertunorderedlist "," * @method execCommand "," * @param { String } command 命令字符串 "," * @param { String } style 插入的无序列表类型,值为:circle,disc,square "," * @example "," * ```javascript "," * editor.execCommand( 'insertunorderedlist','circle'); "," * ``` "," */ "," /** "," * 查询当前是否有word文档粘贴进来的图片 "," * @command insertunorderedlist "," * @method insertunorderedlist "," * @param { String } command 命令字符串 "," * @return { int } 如果当前选区是无序列表返回1,否则返回0 "," * @example "," * ```javascript "," * editor.queryCommandState( 'insertunorderedlist' ); "," * ``` "," */ "," /** "," * 查询当前选区内容是否有序列表 "," * @command insertunorderedlist "," * @method queryCommandValue "," * @param { String } command 命令字符串 "," * @return { String } 返回当前无序列表的类型,值为null或circle,disc,square "," * @example "," * ```javascript "," * editor.queryCommandValue( 'insertunorderedlist' ); "," * ``` "," */ ",""," me. commands[ 'insertorderedlist' ] = "," me. commands[ 'insertunorderedlist' ] = { "," execCommand: function ( command, style) { ",""," if (! style) { "," style = command. toLowerCase() == 'insertorderedlist' ? 'decimal' : 'disc' ; "," } "," var me = this , "," range = this . selection. getRange(), "," filterFn = function ( node) { "," return node. nodeType == 1 ? node. tagName. toLowerCase() != 'br' : ! domUtils. isWhitespace( node); "," } , "," tag = command. toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul' , "," frag = me. document. createDocumentFragment(); "," //去掉是因为会出现选到末尾,导致adjustmentBoundary缩到ol/ul的位置 "," //range.shrinkBoundary();//.adjustmentBoundary(); "," range. adjustmentBoundary(). shrinkBoundary(); "," var bko = range. createBookmark( true ), "," start = getLi( me. document. getElementById( bko. start)), "," modifyStart = 0 , "," end = getLi( me. document. getElementById( bko. end)), "," modifyEnd = 0 , "," startParent, endParent, "," list, tmp; ",""," if ( start || end) { "," start && ( startParent = start. parentNode); "," if (! bko. end) { "," end = start; "," } "," end && ( endParent = end. parentNode); ",""," if ( startParent === endParent) { "," while ( start !== end) { "," tmp = start; "," start = start. nextSibling; "," if (! domUtils. isBlockElm( tmp. firstChild)) { "," var p = me. document. createElement( 'p' ); "," while ( tmp. firstChild) { "," p. appendChild( tmp. firstChild); "," } "," tmp. appendChild( p); "," } "," frag. appendChild( tmp); "," } "," tmp = me. document. createElement( 'span' ); "," startParent. insertBefore( tmp, end); "," if (! domUtils. isBlockElm( end. firstChild)) { "," p = me. document. createElement( 'p' ); "," while ( end. firstChild) { "," p. appendChild( end. firstChild); "," } "," end. appendChild( p); "," } "," frag. appendChild( end); "," domUtils. breakParent( tmp, startParent); "," if ( domUtils. isEmptyNode( tmp. previousSibling)) { "," domUtils. remove( tmp. previousSibling); "," } "," if ( domUtils. isEmptyNode( tmp. nextSibling)) { "," domUtils. remove( tmp. nextSibling) "," } "," var nodeStyle = getStyle( startParent) || domUtils. getComputedStyle( startParent, 'list-style-type' ) || ( command. toLowerCase() == 'insertorderedlist' ? 'decimal' : 'disc' ); "," if ( startParent. tagName. toLowerCase() == tag && nodeStyle == style) { "," for ( var i = 0 , ci, tmpFrag = me. document. createDocumentFragment(); ci = frag. childNodes[ i++];) { "," if ( domUtils. isTagNode( ci, 'ol ul' )) { "," utils. each( domUtils. getElementsByTagName( ci, 'li' ), function ( li) { "," while ( li. firstChild) { "," tmpFrag. appendChild( li. firstChild); "," } ",""," } ); "," } else { "," while ( ci. firstChild) { "," tmpFrag. appendChild( ci. firstChild); "," } "," } ",""," } "," tmp. parentNode. insertBefore( tmpFrag, tmp); "," } else { "," list = me. document. createElement( tag); "," setListStyle( list, style); "," list. appendChild( frag); "," tmp. parentNode. insertBefore( list, tmp); "," } ",""," domUtils. remove( tmp); "," list && adjustList( list, tag, style); "," range. moveToBookmark( bko). select(); "," return ; "," } "," //开始 "," if ( start) { "," while ( start) { "," tmp = start. nextSibling; "," if ( domUtils. isTagNode( start, 'ol ul' )) { "," frag. appendChild( start); "," } else { "," var tmpfrag = me. document. createDocumentFragment(), "," hasBlock = 0 ; "," while ( start. firstChild) { "," if ( domUtils. isBlockElm( start. firstChild)) { "," hasBlock = 1 ; "," } "," tmpfrag. appendChild( start. firstChild); "," } "," if (! hasBlock) { "," var tmpP = me. document. createElement( 'p' ); "," tmpP. appendChild( tmpfrag); "," frag. appendChild( tmpP); "," } else { "," frag. appendChild( tmpfrag); "," } "," domUtils. remove( start); "," } ",""," start = tmp; "," } "," startParent. parentNode. insertBefore( frag, startParent. nextSibling); "," if ( domUtils. isEmptyNode( startParent)) { "," range. setStartBefore( startParent); "," domUtils. remove( startParent); "," } else { "," range. setStartAfter( startParent); "," } "," modifyStart = 1 ; "," } ",""," if ( end && domUtils. inDoc( endParent, me. document)) { "," //结束 "," start = endParent. firstChild; "," while ( start && start !== end) { "," tmp = start. nextSibling; "," if ( domUtils. isTagNode( start, 'ol ul' )) { "," frag. appendChild( start); "," } else { "," tmpfrag = me. document. createDocumentFragment(); "," hasBlock = 0 ; "," while ( start. firstChild) { "," if ( domUtils. isBlockElm( start. firstChild)) { "," hasBlock = 1 ; "," } "," tmpfrag. appendChild( start. firstChild); "," } "," if (! hasBlock) { "," tmpP = me. document. createElement( 'p' ); "," tmpP. appendChild( tmpfrag); "," frag. appendChild( tmpP); "," } else { "," frag. appendChild( tmpfrag); "," } "," domUtils. remove( start); "," } "," start = tmp; "," } "," var tmpDiv = domUtils. createElement( me. document, 'div' , { "," 'tmpDiv' : 1 "," } ); "," domUtils. moveChild( end, tmpDiv); ",""," frag. appendChild( tmpDiv); "," domUtils. remove( end); "," endParent. parentNode. insertBefore( frag, endParent); "," range. setEndBefore( endParent); "," if ( domUtils. isEmptyNode( endParent)) { "," domUtils. remove( endParent); "," } ",""," modifyEnd = 1 ; "," } ","",""," } ",""," if (! modifyStart) { "," range. setStartBefore( me. document. getElementById( bko. start)); "," } "," if ( bko. end && ! modifyEnd) { "," range. setEndAfter( me. document. getElementById( bko. end)); "," } "," range. enlarge( true , function ( node) { "," return notExchange[ node. tagName]; "," } ); ",""," frag = me. document. createDocumentFragment(); ",""," var bk = range. createBookmark(), "," current = domUtils. getNextDomNode( bk. start, false , filterFn), "," tmpRange = range. cloneRange(), "," tmpNode, "," block = domUtils. isBlockElm; ",""," while ( current && current !== bk. end && ( domUtils. getPosition( current, bk. end) & domUtils. POSITION_PRECEDING)) { ",""," if ( current. nodeType == 3 || dtd. li[ current. tagName]) { "," if ( current. nodeType == 1 && dtd. $list[ current. tagName]) { "," while ( current. firstChild) { "," frag. appendChild( current. firstChild); "," } "," tmpNode = domUtils. getNextDomNode( current, false , filterFn); "," domUtils. remove( current); "," current = tmpNode; "," continue ; ",""," } "," tmpNode = current; "," tmpRange. setStartBefore( current); ",""," while ( current && current !== bk. end && (! block( current) || domUtils. isBookmarkNode( current) )) { "," tmpNode = current; "," current = domUtils. getNextDomNode( current, false , null , function ( node) { "," return ! notExchange[ node. tagName]; "," } ); "," } ",""," if ( current && block( current)) { "," tmp = domUtils. getNextDomNode( tmpNode, false , filterFn); "," if ( tmp && domUtils. isBookmarkNode( tmp)) { "," current = domUtils. getNextDomNode( tmp, false , filterFn); "," tmpNode = tmp; "," } "," } "," tmpRange. setEndAfter( tmpNode); ",""," current = domUtils. getNextDomNode( tmpNode, false , filterFn); ",""," var li = range. document. createElement( 'li' ); ",""," li. appendChild( tmpRange. extractContents()); "," if ( domUtils. isEmptyNode( li)) { "," var tmpNode = range. document. createElement( 'p' ); "," while ( li. firstChild) { "," tmpNode. appendChild( li. firstChild) "," } "," li. appendChild( tmpNode); "," } "," frag. appendChild( li); "," } else { "," current = domUtils. getNextDomNode( current, true , filterFn); "," } "," } "," range. moveToBookmark( bk). collapse( true ); "," list = me. document. createElement( tag); "," setListStyle( list, style); "," list. appendChild( frag); "," range. insertNode( list); "," //当前list上下看能否合并 "," adjustList( list, tag, style); "," //去掉冗余的tmpDiv "," for ( var i = 0 , ci, tmpDivs = domUtils. getElementsByTagName( list, 'div' ); ci = tmpDivs[ i++];) { "," if ( ci. getAttribute( 'tmpDiv' )) { "," domUtils. remove( ci, true ) "," } "," } "," range. moveToBookmark( bko). select(); ",""," } , "," queryCommandState: function ( command) { "," var tag = command. toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul' ; "," var path = this . selection. getStartElementPath(); "," for ( var i= 0 , ci; ci = path[ i++];) { "," if ( ci. nodeName == 'TABLE' ) { "," return 0 "," } "," if ( tag == ci. nodeName. toLowerCase()) { "," return 1 "," } ; "," } "," return 0 ; ",""," } , "," queryCommandValue: function ( command) { "," var tag = command. toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul' ; "," var path = this . selection. getStartElementPath(), "," node; "," for ( var i= 0 , ci; ci = path[ i++];) { "," if ( ci. nodeName == 'TABLE' ) { "," node = null ; "," break ; "," } "," if ( tag == ci. nodeName. toLowerCase()) { "," node = ci; "," break ; "," } ; "," } "," return node ? getStyle( node) || domUtils. getComputedStyle( node, 'list-style-type' ) : null ; "," } "," } ; ","} ; ",""];
+_$jscoverage['plugins/list.js'][7]++;
+UE.plugins.list = (function () {
+ _$jscoverage['plugins/list.js'][8]++;
+ var me = this, notExchange = {"TD": 1, "PRE": 1, "BLOCKQUOTE": 1};
+ _$jscoverage['plugins/list.js'][14]++;
+ var customStyle = {"cn": "cn-1-", "cn1": "cn-2-", "cn2": "cn-3-", "num": "num-1-", "num1": "num-2-", "num2": "num-3-", "dash": "dash", "dot": "dot"};
+ _$jscoverage['plugins/list.js'][25]++;
+ me.setOpt({"insertorderedlist": {"num": "", "num1": "", "num2": "", "cn": "", "cn1": "", "cn2": "", "decimal": "", "lower-alpha": "", "lower-roman": "", "upper-alpha": "", "upper-roman": ""}, "insertunorderedlist": {"circle": "", "disc": "", "square": "", "dash": "", "dot": ""}, listDefaultPaddingLeft: "30", listiconpath: "http://bs.baidu.com/listicon/", maxListLevel: -1});
+ _$jscoverage['plugins/list.js'][50]++;
+ function listToArray(list) {
+ _$jscoverage['plugins/list.js'][51]++;
+ var arr = [];
+ _$jscoverage['plugins/list.js'][52]++;
+ for (var p in list) {
+ _$jscoverage['plugins/list.js'][53]++;
+ arr.push(p);
+}
+ _$jscoverage['plugins/list.js'][55]++;
+ return arr;
+}
+ _$jscoverage['plugins/list.js'][57]++;
+ var listStyle = {"OL": listToArray(me.options.insertorderedlist), "UL": listToArray(me.options.insertunorderedlist)};
+ _$jscoverage['plugins/list.js'][61]++;
+ var liiconpath = me.options.listiconpath;
+ _$jscoverage['plugins/list.js'][64]++;
+ for (var s in customStyle) {
+ _$jscoverage['plugins/list.js'][65]++;
+ if (((! me.options.insertorderedlist.hasOwnProperty(s)) && (! me.options.insertunorderedlist.hasOwnProperty(s)))) {
+ _$jscoverage['plugins/list.js'][66]++;
+ (delete customStyle[s]);
+ }
+}
+ _$jscoverage['plugins/list.js'][70]++;
+ me.ready((function () {
+ _$jscoverage['plugins/list.js'][71]++;
+ var customCss = [];
+ _$jscoverage['plugins/list.js'][72]++;
+ for (var p in customStyle) {
+ _$jscoverage['plugins/list.js'][73]++;
+ if (((p == "dash") || (p == "dot"))) {
+ _$jscoverage['plugins/list.js'][74]++;
+ customCss.push(("li.list-" + customStyle[p] + "{background-image:url(" + liiconpath + customStyle[p] + ".gif)}"));
+ _$jscoverage['plugins/list.js'][75]++;
+ customCss.push(("ul.custom_" + p + "{list-style:none;}ul.custom_" + p + " li{background-position:0 3px;background-repeat:no-repeat}"));
+ }
+ else {
+ _$jscoverage['plugins/list.js'][77]++;
+ for (var i = 0; (i < 99); (i++)) {
+ _$jscoverage['plugins/list.js'][78]++;
+ customCss.push(("li.list-" + customStyle[p] + i + "{background-image:url(" + liiconpath + "list-" + customStyle[p] + i + ".gif)}"));
+}
+ _$jscoverage['plugins/list.js'][80]++;
+ customCss.push(("ol.custom_" + p + "{list-style:none;}ol.custom_" + p + " li{background-position:0 3px;background-repeat:no-repeat}"));
+ }
+ _$jscoverage['plugins/list.js'][82]++;
+ switch (p) {
+ case "cn":
+ _$jscoverage['plugins/list.js'][84]++;
+ customCss.push(("li.list-" + p + "-paddingleft-1{padding-left:25px}"));
+ _$jscoverage['plugins/list.js'][85]++;
+ customCss.push(("li.list-" + p + "-paddingleft-2{padding-left:40px}"));
+ _$jscoverage['plugins/list.js'][86]++;
+ customCss.push(("li.list-" + p + "-paddingleft-3{padding-left:55px}"));
+ _$jscoverage['plugins/list.js'][87]++;
+ break;
+ case "cn1":
+ _$jscoverage['plugins/list.js'][89]++;
+ customCss.push(("li.list-" + p + "-paddingleft-1{padding-left:30px}"));
+ _$jscoverage['plugins/list.js'][90]++;
+ customCss.push(("li.list-" + p + "-paddingleft-2{padding-left:40px}"));
+ _$jscoverage['plugins/list.js'][91]++;
+ customCss.push(("li.list-" + p + "-paddingleft-3{padding-left:55px}"));
+ _$jscoverage['plugins/list.js'][92]++;
+ break;
+ case "cn2":
+ _$jscoverage['plugins/list.js'][94]++;
+ customCss.push(("li.list-" + p + "-paddingleft-1{padding-left:40px}"));
+ _$jscoverage['plugins/list.js'][95]++;
+ customCss.push(("li.list-" + p + "-paddingleft-2{padding-left:55px}"));
+ _$jscoverage['plugins/list.js'][96]++;
+ customCss.push(("li.list-" + p + "-paddingleft-3{padding-left:68px}"));
+ _$jscoverage['plugins/list.js'][97]++;
+ break;
+ case "num":
+ case "num1":
+ _$jscoverage['plugins/list.js'][100]++;
+ customCss.push(("li.list-" + p + "-paddingleft-1{padding-left:25px}"));
+ _$jscoverage['plugins/list.js'][101]++;
+ break;
+ case "num2":
+ _$jscoverage['plugins/list.js'][103]++;
+ customCss.push(("li.list-" + p + "-paddingleft-1{padding-left:35px}"));
+ _$jscoverage['plugins/list.js'][104]++;
+ customCss.push(("li.list-" + p + "-paddingleft-2{padding-left:40px}"));
+ _$jscoverage['plugins/list.js'][105]++;
+ break;
+ case "dash":
+ _$jscoverage['plugins/list.js'][107]++;
+ customCss.push(("li.list-" + p + "-paddingleft{padding-left:35px}"));
+ _$jscoverage['plugins/list.js'][108]++;
+ break;
+ case "dot":
+ _$jscoverage['plugins/list.js'][110]++;
+ customCss.push(("li.list-" + p + "-paddingleft{padding-left:20px}"));
+ }
+}
+ _$jscoverage['plugins/list.js'][113]++;
+ customCss.push(".list-paddingleft-1{padding-left:0}");
+ _$jscoverage['plugins/list.js'][114]++;
+ customCss.push((".list-paddingleft-2{padding-left:" + me.options.listDefaultPaddingLeft + "px}"));
+ _$jscoverage['plugins/list.js'][115]++;
+ customCss.push((".list-paddingleft-3{padding-left:" + (me.options.listDefaultPaddingLeft * 2) + "px}"));
+ _$jscoverage['plugins/list.js'][117]++;
+ utils.cssRule("list", ("ol,ul{margin:0;pading:0;" + (browser.ie? "": "width:95%") + "}li{clear:both;}" + customCss.join("\n")), me.document);
+}));
+ _$jscoverage['plugins/list.js'][120]++;
+ me.ready((function () {
+ _$jscoverage['plugins/list.js'][121]++;
+ domUtils.on(me.body, "cut", (function () {
+ _$jscoverage['plugins/list.js'][122]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/list.js'][123]++;
+ var rng = me.selection.getRange(), li;
+ _$jscoverage['plugins/list.js'][125]++;
+ if ((! rng.collapsed)) {
+ _$jscoverage['plugins/list.js'][126]++;
+ if ((li = domUtils.findParentByTagName(rng.startContainer, "li", true))) {
+ _$jscoverage['plugins/list.js'][127]++;
+ if (((! li.nextSibling) && domUtils.isEmptyBlock(li))) {
+ _$jscoverage['plugins/list.js'][128]++;
+ var pn = li.parentNode, node;
+ _$jscoverage['plugins/list.js'][129]++;
+ if ((node = pn.previousSibling)) {
+ _$jscoverage['plugins/list.js'][130]++;
+ domUtils.remove(pn);
+ _$jscoverage['plugins/list.js'][131]++;
+ rng.setStartAtLast(node).collapse(true);
+ _$jscoverage['plugins/list.js'][132]++;
+ rng.select(true);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][133]++;
+ if ((node = pn.nextSibling)) {
+ _$jscoverage['plugins/list.js'][134]++;
+ domUtils.remove(pn);
+ _$jscoverage['plugins/list.js'][135]++;
+ rng.setStartAtFirst(node).collapse(true);
+ _$jscoverage['plugins/list.js'][136]++;
+ rng.select(true);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][138]++;
+ var tmpNode = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][139]++;
+ domUtils.fillNode(me.document, tmpNode);
+ _$jscoverage['plugins/list.js'][140]++;
+ pn.parentNode.insertBefore(tmpNode, pn);
+ _$jscoverage['plugins/list.js'][141]++;
+ domUtils.remove(pn);
+ _$jscoverage['plugins/list.js'][142]++;
+ rng.setStart(tmpNode, 0).collapse(true);
+ _$jscoverage['plugins/list.js'][143]++;
+ rng.select(true);
+ }
+ }
+ }
+ }
+ }
+}));
+}));
+}));
+ _$jscoverage['plugins/list.js'][153]++;
+ function getStyle(node) {
+ _$jscoverage['plugins/list.js'][154]++;
+ var cls = node.className;
+ _$jscoverage['plugins/list.js'][155]++;
+ if (domUtils.hasClass(node, /custom_/)) {
+ _$jscoverage['plugins/list.js'][156]++;
+ return cls.match(/custom_(\w+)/)[1];
+ }
+ _$jscoverage['plugins/list.js'][158]++;
+ return domUtils.getStyle(node, "list-style-type");
+}
+ _$jscoverage['plugins/list.js'][162]++;
+ me.addListener("beforepaste", (function (type, html) {
+ _$jscoverage['plugins/list.js'][163]++;
+ var me = this, rng = me.selection.getRange(), li;
+ _$jscoverage['plugins/list.js'][165]++;
+ var root = UE.htmlparser(html.html, true);
+ _$jscoverage['plugins/list.js'][166]++;
+ if ((li = domUtils.findParentByTagName(rng.startContainer, "li", true))) {
+ _$jscoverage['plugins/list.js'][167]++;
+ var list = li.parentNode, tagName = ((list.tagName == "OL")? "ul": "ol");
+ _$jscoverage['plugins/list.js'][168]++;
+ utils.each(root.getNodesByTagName(tagName), (function (n) {
+ _$jscoverage['plugins/list.js'][169]++;
+ n.tagName = list.tagName;
+ _$jscoverage['plugins/list.js'][170]++;
+ n.setAttr();
+ _$jscoverage['plugins/list.js'][171]++;
+ if ((n.parentNode === root)) {
+ _$jscoverage['plugins/list.js'][172]++;
+ type = (getStyle(list) || ((list.tagName == "OL")? "decimal": "disc"));
+ }
+ else {
+ _$jscoverage['plugins/list.js'][174]++;
+ var className = n.parentNode.getAttr("class");
+ _$jscoverage['plugins/list.js'][175]++;
+ if ((className && /custom_/.test(className))) {
+ _$jscoverage['plugins/list.js'][176]++;
+ type = className.match(/custom_(\w+)/)[1];
+ }
+ else {
+ _$jscoverage['plugins/list.js'][178]++;
+ type = n.parentNode.getStyle("list-style-type");
+ }
+ _$jscoverage['plugins/list.js'][180]++;
+ if ((! type)) {
+ _$jscoverage['plugins/list.js'][181]++;
+ type = ((list.tagName == "OL")? "decimal": "disc");
+ }
+ }
+ _$jscoverage['plugins/list.js'][184]++;
+ var index = utils.indexOf(listStyle[list.tagName], type);
+ _$jscoverage['plugins/list.js'][185]++;
+ if ((n.parentNode !== root)) {
+ _$jscoverage['plugins/list.js'][186]++;
+ index = (((index + 1) == listStyle[list.tagName].length)? 0: (index + 1));
+ }
+ _$jscoverage['plugins/list.js'][187]++;
+ var currentStyle = listStyle[list.tagName][index];
+ _$jscoverage['plugins/list.js'][188]++;
+ if (customStyle[currentStyle]) {
+ _$jscoverage['plugins/list.js'][189]++;
+ n.setAttr("class", ("custom_" + currentStyle));
+ }
+ else {
+ _$jscoverage['plugins/list.js'][192]++;
+ n.setStyle("list-style-type", currentStyle);
+ }
+}));
+ }
+ _$jscoverage['plugins/list.js'][198]++;
+ html.html = root.toHtml();
+}));
+ _$jscoverage['plugins/list.js'][201]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/list.js'][202]++;
+ utils.each(root.getNodesByTagName("li"), (function (li) {
+ _$jscoverage['plugins/list.js'][203]++;
+ var tmpP = UE.uNode.createElement("p");
+ _$jscoverage['plugins/list.js'][204]++;
+ for (var i = 0, ci; (ci = li.children[i]);) {
+ _$jscoverage['plugins/list.js'][205]++;
+ if (((ci.type == "text") || dtd.p[ci.tagName])) {
+ _$jscoverage['plugins/list.js'][206]++;
+ tmpP.appendChild(ci);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][208]++;
+ if (tmpP.firstChild()) {
+ _$jscoverage['plugins/list.js'][209]++;
+ li.insertBefore(tmpP, ci);
+ _$jscoverage['plugins/list.js'][210]++;
+ tmpP = UE.uNode.createElement("p");
+ _$jscoverage['plugins/list.js'][211]++;
+ i = (i + 2);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][213]++;
+ (i++);
+ }
+ }
+}
+ _$jscoverage['plugins/list.js'][218]++;
+ if (((tmpP.firstChild() && (! tmpP.parentNode)) || (! li.firstChild()))) {
+ _$jscoverage['plugins/list.js'][219]++;
+ li.appendChild(tmpP);
+ }
+ _$jscoverage['plugins/list.js'][223]++;
+ if ((! tmpP.firstChild())) {
+ _$jscoverage['plugins/list.js'][224]++;
+ tmpP.innerHTML((browser.ie? " ": " "));
+ }
+ _$jscoverage['plugins/list.js'][227]++;
+ var p = li.firstChild();
+ _$jscoverage['plugins/list.js'][228]++;
+ var lastChild = p.lastChild();
+ _$jscoverage['plugins/list.js'][229]++;
+ if ((lastChild && (lastChild.type == "text") && /^\s*$/.test(lastChild.data))) {
+ _$jscoverage['plugins/list.js'][230]++;
+ p.removeChild(lastChild);
+ }
+}));
+ _$jscoverage['plugins/list.js'][233]++;
+ var orderlisttype = {"num1": /^\d+\)/, "decimal": /^\d+\./, "lower-alpha": /^[a-z]+\)/, "upper-alpha": /^[A-Z]+\./, "cn": /^[\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+[\u3001]/, "cn2": /^\([\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+\)/}, unorderlisttype = {"square": "n"};
+ _$jscoverage['plugins/list.js'][244]++;
+ function checkListType(content, container) {
+ _$jscoverage['plugins/list.js'][245]++;
+ var span = container.firstChild();
+ _$jscoverage['plugins/list.js'][246]++;
+ if ((span && (span.type == "element") && (span.tagName == "span") && /Wingdings|Symbol/.test(span.getStyle("font-family")))) {
+ _$jscoverage['plugins/list.js'][247]++;
+ for (var p in unorderlisttype) {
+ _$jscoverage['plugins/list.js'][248]++;
+ if ((unorderlisttype[p] == span.data)) {
+ _$jscoverage['plugins/list.js'][249]++;
+ return p;
+ }
+}
+ _$jscoverage['plugins/list.js'][252]++;
+ return "disc";
+ }
+ _$jscoverage['plugins/list.js'][254]++;
+ for (var p = p in orderlisttype) {
+ _$jscoverage['plugins/list.js'][255]++;
+ if (orderlisttype[p].test(content)) {
+ _$jscoverage['plugins/list.js'][256]++;
+ return p;
+ }
+}
+}
+ _$jscoverage['plugins/list.js'][261]++;
+ utils.each(root.getNodesByTagName("p"), (function (node) {
+ _$jscoverage['plugins/list.js'][262]++;
+ if ((node.getAttr("class") != "MsoListParagraph")) {
+ _$jscoverage['plugins/list.js'][263]++;
+ return;
+ }
+ _$jscoverage['plugins/list.js'][267]++;
+ node.setStyle("margin", "");
+ _$jscoverage['plugins/list.js'][268]++;
+ node.setStyle("margin-left", "");
+ _$jscoverage['plugins/list.js'][269]++;
+ node.setAttr("class", "");
+ _$jscoverage['plugins/list.js'][271]++;
+ function appendLi(list, p, type) {
+ _$jscoverage['plugins/list.js'][272]++;
+ if ((list.tagName == "ol")) {
+ _$jscoverage['plugins/list.js'][273]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/list.js'][274]++;
+ var first = p.firstChild();
+ _$jscoverage['plugins/list.js'][275]++;
+ if (((first.type == "element") && (first.tagName == "span") && orderlisttype[type].test(first.innerText()))) {
+ _$jscoverage['plugins/list.js'][276]++;
+ p.removeChild(first);
+ }
+ }
+ else {
+ _$jscoverage['plugins/list.js'][279]++;
+ p.innerHTML(p.innerHTML().replace(orderlisttype[type], ""));
+ }
+ }
+ else {
+ _$jscoverage['plugins/list.js'][282]++;
+ p.removeChild(p.firstChild());
+ }
+ _$jscoverage['plugins/list.js'][285]++;
+ var li = UE.uNode.createElement("li");
+ _$jscoverage['plugins/list.js'][286]++;
+ li.appendChild(p);
+ _$jscoverage['plugins/list.js'][287]++;
+ list.appendChild(li);
+}
+ _$jscoverage['plugins/list.js'][289]++;
+ var tmp = node, type, cacheNode = node;
+ _$jscoverage['plugins/list.js'][291]++;
+ if (((node.parentNode.tagName != "li") && (type = checkListType(node.innerText(), node)))) {
+ _$jscoverage['plugins/list.js'][293]++;
+ var list = UE.uNode.createElement((me.options.insertorderedlist.hasOwnProperty(type)? "ol": "ul"));
+ _$jscoverage['plugins/list.js'][294]++;
+ if (customStyle[type]) {
+ _$jscoverage['plugins/list.js'][295]++;
+ list.setAttr("class", ("custom_" + type));
+ }
+ else {
+ _$jscoverage['plugins/list.js'][297]++;
+ list.setStyle("list-style-type", type);
+ }
+ _$jscoverage['plugins/list.js'][299]++;
+ while ((node && (node.parentNode.tagName != "li") && checkListType(node.innerText(), node))) {
+ _$jscoverage['plugins/list.js'][300]++;
+ tmp = node.nextSibling();
+ _$jscoverage['plugins/list.js'][301]++;
+ if ((! tmp)) {
+ _$jscoverage['plugins/list.js'][302]++;
+ node.parentNode.insertBefore(list, node);
+ }
+ _$jscoverage['plugins/list.js'][304]++;
+ appendLi(list, node, type);
+ _$jscoverage['plugins/list.js'][305]++;
+ node = tmp;
+}
+ _$jscoverage['plugins/list.js'][307]++;
+ if (((! list.parentNode) && node && node.parentNode)) {
+ _$jscoverage['plugins/list.js'][308]++;
+ node.parentNode.insertBefore(list, node);
+ }
+ }
+ _$jscoverage['plugins/list.js'][311]++;
+ var span = cacheNode.firstChild();
+ _$jscoverage['plugins/list.js'][312]++;
+ if ((span && (span.type == "element") && (span.tagName == "span") && /^\s*( )+\s*$/.test(span.innerText()))) {
+ _$jscoverage['plugins/list.js'][313]++;
+ span.parentNode.removeChild(span);
+ }
+}));
+}));
+ _$jscoverage['plugins/list.js'][319]++;
+ me.addListener("contentchange", (function () {
+ _$jscoverage['plugins/list.js'][320]++;
+ adjustListStyle(me.document);
+}));
+ _$jscoverage['plugins/list.js'][323]++;
+ function adjustListStyle(doc, ignore) {
+ _$jscoverage['plugins/list.js'][324]++;
+ utils.each(domUtils.getElementsByTagName(doc, "ol ul"), (function (node) {
+ _$jscoverage['plugins/list.js'][326]++;
+ if ((! domUtils.inDoc(node, doc))) {
+ _$jscoverage['plugins/list.js'][327]++;
+ return;
+ }
+ _$jscoverage['plugins/list.js'][329]++;
+ var parent = node.parentNode;
+ _$jscoverage['plugins/list.js'][330]++;
+ if ((parent.tagName == node.tagName)) {
+ _$jscoverage['plugins/list.js'][331]++;
+ var nodeStyleType = (getStyle(node) || ((node.tagName == "OL")? "decimal": "disc")), parentStyleType = (getStyle(parent) || ((parent.tagName == "OL")? "decimal": "disc"));
+ _$jscoverage['plugins/list.js'][333]++;
+ if ((nodeStyleType == parentStyleType)) {
+ _$jscoverage['plugins/list.js'][334]++;
+ var styleIndex = utils.indexOf(listStyle[node.tagName], nodeStyleType);
+ _$jscoverage['plugins/list.js'][335]++;
+ styleIndex = (((styleIndex + 1) == listStyle[node.tagName].length)? 0: (styleIndex + 1));
+ _$jscoverage['plugins/list.js'][336]++;
+ setListStyle(node, listStyle[node.tagName][styleIndex]);
+ }
+ }
+ _$jscoverage['plugins/list.js'][340]++;
+ var index = 0, type = 2;
+ _$jscoverage['plugins/list.js'][341]++;
+ if (domUtils.hasClass(node, /custom_/)) {
+ _$jscoverage['plugins/list.js'][342]++;
+ if ((! (/[ou]l/i.test(parent.tagName) && domUtils.hasClass(parent, /custom_/)))) {
+ _$jscoverage['plugins/list.js'][343]++;
+ type = 1;
+ }
+ }
+ else {
+ _$jscoverage['plugins/list.js'][346]++;
+ if ((/[ou]l/i.test(parent.tagName) && domUtils.hasClass(parent, /custom_/))) {
+ _$jscoverage['plugins/list.js'][347]++;
+ type = 3;
+ }
+ }
+ _$jscoverage['plugins/list.js'][351]++;
+ var style = domUtils.getStyle(node, "list-style-type");
+ _$jscoverage['plugins/list.js'][352]++;
+ (style && (node.style.cssText = ("list-style-type:" + style)));
+ _$jscoverage['plugins/list.js'][353]++;
+ node.className = (utils.trim(node.className.replace(/list-paddingleft-\w+/, "")) + " list-paddingleft-" + type);
+ _$jscoverage['plugins/list.js'][354]++;
+ utils.each(domUtils.getElementsByTagName(node, "li"), (function (li) {
+ _$jscoverage['plugins/list.js'][355]++;
+ (li.style.cssText && (li.style.cssText = ""));
+ _$jscoverage['plugins/list.js'][356]++;
+ if ((! li.firstChild)) {
+ _$jscoverage['plugins/list.js'][357]++;
+ domUtils.remove(li);
+ _$jscoverage['plugins/list.js'][358]++;
+ return;
+ }
+ _$jscoverage['plugins/list.js'][360]++;
+ if ((li.parentNode !== node)) {
+ _$jscoverage['plugins/list.js'][361]++;
+ return;
+ }
+ _$jscoverage['plugins/list.js'][363]++;
+ (index++);
+ _$jscoverage['plugins/list.js'][364]++;
+ if (domUtils.hasClass(node, /custom_/)) {
+ _$jscoverage['plugins/list.js'][365]++;
+ var paddingLeft = 1, currentStyle = getStyle(node);
+ _$jscoverage['plugins/list.js'][366]++;
+ if ((node.tagName == "OL")) {
+ _$jscoverage['plugins/list.js'][367]++;
+ if (currentStyle) {
+ _$jscoverage['plugins/list.js'][368]++;
+ switch (currentStyle) {
+ case "cn":
+ case "cn1":
+ case "cn2":
+ _$jscoverage['plugins/list.js'][372]++;
+ if (((index > 10) && (((index % 10) == 0) || ((index > 10) && (index < 20))))) {
+ _$jscoverage['plugins/list.js'][373]++;
+ paddingLeft = 2;
+ }
+ else {
+ _$jscoverage['plugins/list.js'][374]++;
+ if ((index > 20)) {
+ _$jscoverage['plugins/list.js'][375]++;
+ paddingLeft = 3;
+ }
+ }
+ _$jscoverage['plugins/list.js'][377]++;
+ break;
+ case "num2":
+ _$jscoverage['plugins/list.js'][379]++;
+ if ((index > 9)) {
+ _$jscoverage['plugins/list.js'][380]++;
+ paddingLeft = 2;
+ }
+ }
+ }
+ _$jscoverage['plugins/list.js'][384]++;
+ li.className = ("list-" + customStyle[currentStyle] + index + " " + "list-" + currentStyle + "-paddingleft-" + paddingLeft);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][386]++;
+ li.className = ("list-" + customStyle[currentStyle] + " " + "list-" + currentStyle + "-paddingleft");
+ }
+ }
+ else {
+ _$jscoverage['plugins/list.js'][389]++;
+ li.className = li.className.replace(/list-[\w\-]+/gi, "");
+ }
+ _$jscoverage['plugins/list.js'][391]++;
+ var className = li.getAttribute("class");
+ _$jscoverage['plugins/list.js'][392]++;
+ if (((className !== null) && (! className.replace(/\s/g, "")))) {
+ _$jscoverage['plugins/list.js'][393]++;
+ domUtils.removeAttributes(li, "class");
+ }
+}));
+ _$jscoverage['plugins/list.js'][396]++;
+ ((! ignore) && adjustList(node, node.tagName.toLowerCase(), (getStyle(node) || domUtils.getStyle(node, "list-style-type")), true));
+}));
+}
+ _$jscoverage['plugins/list.js'][399]++;
+ function adjustList(list, tag, style, ignoreEmpty) {
+ _$jscoverage['plugins/list.js'][400]++;
+ var nextList = list.nextSibling;
+ _$jscoverage['plugins/list.js'][401]++;
+ if ((nextList && (nextList.nodeType == 1) && (nextList.tagName.toLowerCase() == tag) && ((getStyle(nextList) || domUtils.getStyle(nextList, "list-style-type") || ((tag == "ol")? "decimal": "disc")) == style))) {
+ _$jscoverage['plugins/list.js'][402]++;
+ domUtils.moveChild(nextList, list);
+ _$jscoverage['plugins/list.js'][403]++;
+ if ((nextList.childNodes.length == 0)) {
+ _$jscoverage['plugins/list.js'][404]++;
+ domUtils.remove(nextList);
+ }
+ }
+ _$jscoverage['plugins/list.js'][407]++;
+ if ((nextList && domUtils.isFillChar(nextList))) {
+ _$jscoverage['plugins/list.js'][408]++;
+ domUtils.remove(nextList);
+ }
+ _$jscoverage['plugins/list.js'][410]++;
+ var preList = list.previousSibling;
+ _$jscoverage['plugins/list.js'][411]++;
+ if ((preList && (preList.nodeType == 1) && (preList.tagName.toLowerCase() == tag) && ((getStyle(preList) || domUtils.getStyle(preList, "list-style-type") || ((tag == "ol")? "decimal": "disc")) == style))) {
+ _$jscoverage['plugins/list.js'][412]++;
+ domUtils.moveChild(list, preList);
+ }
+ _$jscoverage['plugins/list.js'][414]++;
+ if ((preList && domUtils.isFillChar(preList))) {
+ _$jscoverage['plugins/list.js'][415]++;
+ domUtils.remove(preList);
+ }
+ _$jscoverage['plugins/list.js'][417]++;
+ ((! ignoreEmpty) && domUtils.isEmptyBlock(list) && domUtils.remove(list));
+ _$jscoverage['plugins/list.js'][418]++;
+ if (getStyle(list)) {
+ _$jscoverage['plugins/list.js'][419]++;
+ adjustListStyle(list.ownerDocument, true);
+ }
+}
+ _$jscoverage['plugins/list.js'][423]++;
+ function setListStyle(list, style) {
+ _$jscoverage['plugins/list.js'][424]++;
+ if (customStyle[style]) {
+ _$jscoverage['plugins/list.js'][425]++;
+ list.className = ("custom_" + style);
+ }
+ _$jscoverage['plugins/list.js'][427]++;
+ try {
+ _$jscoverage['plugins/list.js'][428]++;
+ domUtils.setStyle(list, "list-style-type", style);
+ }
+ catch (e) {
+ }
+}
+ _$jscoverage['plugins/list.js'][431]++;
+ function clearEmptySibling(node) {
+ _$jscoverage['plugins/list.js'][432]++;
+ var tmpNode = node.previousSibling;
+ _$jscoverage['plugins/list.js'][433]++;
+ if ((tmpNode && domUtils.isEmptyBlock(tmpNode))) {
+ _$jscoverage['plugins/list.js'][434]++;
+ domUtils.remove(tmpNode);
+ }
+ _$jscoverage['plugins/list.js'][436]++;
+ tmpNode = node.nextSibling;
+ _$jscoverage['plugins/list.js'][437]++;
+ if ((tmpNode && domUtils.isEmptyBlock(tmpNode))) {
+ _$jscoverage['plugins/list.js'][438]++;
+ domUtils.remove(tmpNode);
+ }
+}
+ _$jscoverage['plugins/list.js'][442]++;
+ me.addListener("keydown", (function (type, evt) {
+ _$jscoverage['plugins/list.js'][443]++;
+ function preventAndSave() {
+ _$jscoverage['plugins/list.js'][444]++;
+ (evt.preventDefault? evt.preventDefault(): (evt.returnValue = false));
+ _$jscoverage['plugins/list.js'][445]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['plugins/list.js'][446]++;
+ (me.undoManger && me.undoManger.save());
+}
+ _$jscoverage['plugins/list.js'][448]++;
+ function findList(node, filterFn) {
+ _$jscoverage['plugins/list.js'][449]++;
+ while ((node && (! domUtils.isBody(node)))) {
+ _$jscoverage['plugins/list.js'][450]++;
+ if (filterFn(node)) {
+ _$jscoverage['plugins/list.js'][451]++;
+ return null;
+ }
+ _$jscoverage['plugins/list.js'][453]++;
+ if (((node.nodeType == 1) && /[ou]l/i.test(node.tagName))) {
+ _$jscoverage['plugins/list.js'][454]++;
+ return node;
+ }
+ _$jscoverage['plugins/list.js'][456]++;
+ node = node.parentNode;
+}
+ _$jscoverage['plugins/list.js'][458]++;
+ return null;
+}
+ _$jscoverage['plugins/list.js'][460]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/list.js'][461]++;
+ if (((keyCode == 13) && (! evt.shiftKey))) {
+ _$jscoverage['plugins/list.js'][462]++;
+ var rng = me.selection.getRange(), parent = domUtils.findParent(rng.startContainer, (function (node) {
+ _$jscoverage['plugins/list.js'][463]++;
+ return domUtils.isBlockElm(node);
+}), true), li = domUtils.findParentByTagName(rng.startContainer, "li", true);
+ _$jscoverage['plugins/list.js'][465]++;
+ if ((parent && (parent.tagName != "PRE") && (! li))) {
+ _$jscoverage['plugins/list.js'][466]++;
+ var html = parent.innerHTML.replace(new RegExp(domUtils.fillChar, "g"), "");
+ _$jscoverage['plugins/list.js'][467]++;
+ if (/^\s*1\s*\.[^\d]/.test(html)) {
+ _$jscoverage['plugins/list.js'][468]++;
+ parent.innerHTML = html.replace(/^\s*1\s*\./, "");
+ _$jscoverage['plugins/list.js'][469]++;
+ rng.setStartAtLast(parent).collapse(true).select();
+ _$jscoverage['plugins/list.js'][470]++;
+ me.__hasEnterExecCommand = true;
+ _$jscoverage['plugins/list.js'][471]++;
+ me.execCommand("insertorderedlist");
+ _$jscoverage['plugins/list.js'][472]++;
+ me.__hasEnterExecCommand = false;
+ }
+ }
+ _$jscoverage['plugins/list.js'][475]++;
+ var range = me.selection.getRange(), start = findList(range.startContainer, (function (node) {
+ _$jscoverage['plugins/list.js'][477]++;
+ return (node.tagName == "TABLE");
+})), end = (range.collapsed? start: findList(range.endContainer, (function (node) {
+ _$jscoverage['plugins/list.js'][480]++;
+ return (node.tagName == "TABLE");
+})));
+ _$jscoverage['plugins/list.js'][483]++;
+ if ((start && end && (start === end))) {
+ _$jscoverage['plugins/list.js'][485]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/list.js'][486]++;
+ start = domUtils.findParentByTagName(range.startContainer, "li", true);
+ _$jscoverage['plugins/list.js'][487]++;
+ end = domUtils.findParentByTagName(range.endContainer, "li", true);
+ _$jscoverage['plugins/list.js'][488]++;
+ if ((start && end && (start === end))) {
+ _$jscoverage['plugins/list.js'][489]++;
+ range.deleteContents();
+ _$jscoverage['plugins/list.js'][490]++;
+ li = domUtils.findParentByTagName(range.startContainer, "li", true);
+ _$jscoverage['plugins/list.js'][491]++;
+ if ((li && domUtils.isEmptyBlock(li))) {
+ _$jscoverage['plugins/list.js'][493]++;
+ pre = li.previousSibling;
+ _$jscoverage['plugins/list.js'][494]++;
+ next = li.nextSibling;
+ _$jscoverage['plugins/list.js'][495]++;
+ p = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][497]++;
+ domUtils.fillNode(me.document, p);
+ _$jscoverage['plugins/list.js'][498]++;
+ parentList = li.parentNode;
+ _$jscoverage['plugins/list.js'][499]++;
+ if ((pre && next)) {
+ _$jscoverage['plugins/list.js'][500]++;
+ range.setStart(next, 0).collapse(true).select(true);
+ _$jscoverage['plugins/list.js'][501]++;
+ domUtils.remove(li);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][504]++;
+ if ((((! pre) && (! next)) || (! pre))) {
+ _$jscoverage['plugins/list.js'][506]++;
+ parentList.parentNode.insertBefore(p, parentList);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][510]++;
+ li.parentNode.parentNode.insertBefore(p, parentList.nextSibling);
+ }
+ _$jscoverage['plugins/list.js'][512]++;
+ domUtils.remove(li);
+ _$jscoverage['plugins/list.js'][513]++;
+ if ((! parentList.firstChild)) {
+ _$jscoverage['plugins/list.js'][514]++;
+ domUtils.remove(parentList);
+ }
+ _$jscoverage['plugins/list.js'][516]++;
+ range.setStart(p, 0).setCursor();
+ }
+ _$jscoverage['plugins/list.js'][520]++;
+ preventAndSave();
+ _$jscoverage['plugins/list.js'][521]++;
+ return;
+ }
+ }
+ else {
+ _$jscoverage['plugins/list.js'][525]++;
+ var tmpRange = range.cloneRange(), bk = tmpRange.collapse(false).createBookmark();
+ _$jscoverage['plugins/list.js'][528]++;
+ range.deleteContents();
+ _$jscoverage['plugins/list.js'][529]++;
+ tmpRange.moveToBookmark(bk);
+ _$jscoverage['plugins/list.js'][530]++;
+ var li = domUtils.findParentByTagName(tmpRange.startContainer, "li", true);
+ _$jscoverage['plugins/list.js'][532]++;
+ clearEmptySibling(li);
+ _$jscoverage['plugins/list.js'][533]++;
+ tmpRange.select();
+ _$jscoverage['plugins/list.js'][534]++;
+ preventAndSave();
+ _$jscoverage['plugins/list.js'][535]++;
+ return;
+ }
+ }
+ _$jscoverage['plugins/list.js'][540]++;
+ li = domUtils.findParentByTagName(range.startContainer, "li", true);
+ _$jscoverage['plugins/list.js'][542]++;
+ if (li) {
+ _$jscoverage['plugins/list.js'][543]++;
+ if (domUtils.isEmptyBlock(li)) {
+ _$jscoverage['plugins/list.js'][544]++;
+ bk = range.createBookmark();
+ _$jscoverage['plugins/list.js'][545]++;
+ var parentList = li.parentNode;
+ _$jscoverage['plugins/list.js'][546]++;
+ if ((li !== parentList.lastChild)) {
+ _$jscoverage['plugins/list.js'][547]++;
+ domUtils.breakParent(li, parentList);
+ _$jscoverage['plugins/list.js'][548]++;
+ clearEmptySibling(li);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][551]++;
+ parentList.parentNode.insertBefore(li, parentList.nextSibling);
+ _$jscoverage['plugins/list.js'][552]++;
+ if (domUtils.isEmptyNode(parentList)) {
+ _$jscoverage['plugins/list.js'][553]++;
+ domUtils.remove(parentList);
+ }
+ }
+ _$jscoverage['plugins/list.js'][557]++;
+ if ((! dtd.$list[li.parentNode.tagName])) {
+ _$jscoverage['plugins/list.js'][559]++;
+ if ((! domUtils.isBlockElm(li.firstChild))) {
+ _$jscoverage['plugins/list.js'][560]++;
+ p = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][561]++;
+ li.parentNode.insertBefore(p, li);
+ _$jscoverage['plugins/list.js'][562]++;
+ while (li.firstChild) {
+ _$jscoverage['plugins/list.js'][563]++;
+ p.appendChild(li.firstChild);
+}
+ _$jscoverage['plugins/list.js'][565]++;
+ domUtils.remove(li);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][567]++;
+ domUtils.remove(li, true);
+ }
+ }
+ _$jscoverage['plugins/list.js'][570]++;
+ range.moveToBookmark(bk).select();
+ }
+ else {
+ _$jscoverage['plugins/list.js'][574]++;
+ var first = li.firstChild;
+ _$jscoverage['plugins/list.js'][575]++;
+ if (((! first) || (! domUtils.isBlockElm(first)))) {
+ _$jscoverage['plugins/list.js'][576]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][578]++;
+ ((! li.firstChild) && domUtils.fillNode(me.document, p));
+ _$jscoverage['plugins/list.js'][579]++;
+ while (li.firstChild) {
+ _$jscoverage['plugins/list.js'][581]++;
+ p.appendChild(li.firstChild);
+}
+ _$jscoverage['plugins/list.js'][583]++;
+ li.appendChild(p);
+ _$jscoverage['plugins/list.js'][584]++;
+ first = p;
+ }
+ _$jscoverage['plugins/list.js'][587]++;
+ var span = me.document.createElement("span");
+ _$jscoverage['plugins/list.js'][589]++;
+ range.insertNode(span);
+ _$jscoverage['plugins/list.js'][590]++;
+ domUtils.breakParent(span, li);
+ _$jscoverage['plugins/list.js'][592]++;
+ var nextLi = span.nextSibling;
+ _$jscoverage['plugins/list.js'][593]++;
+ first = nextLi.firstChild;
+ _$jscoverage['plugins/list.js'][595]++;
+ if ((! first)) {
+ _$jscoverage['plugins/list.js'][596]++;
+ p = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][598]++;
+ domUtils.fillNode(me.document, p);
+ _$jscoverage['plugins/list.js'][599]++;
+ nextLi.appendChild(p);
+ _$jscoverage['plugins/list.js'][600]++;
+ first = p;
+ }
+ _$jscoverage['plugins/list.js'][602]++;
+ if (domUtils.isEmptyNode(first)) {
+ _$jscoverage['plugins/list.js'][603]++;
+ first.innerHTML = "";
+ _$jscoverage['plugins/list.js'][604]++;
+ domUtils.fillNode(me.document, first);
+ }
+ _$jscoverage['plugins/list.js'][607]++;
+ range.setStart(first, 0).collapse(true).shrinkBoundary().select();
+ _$jscoverage['plugins/list.js'][608]++;
+ domUtils.remove(span);
+ _$jscoverage['plugins/list.js'][609]++;
+ var pre = nextLi.previousSibling;
+ _$jscoverage['plugins/list.js'][610]++;
+ if ((pre && domUtils.isEmptyBlock(pre))) {
+ _$jscoverage['plugins/list.js'][611]++;
+ pre.innerHTML = "
";
+ _$jscoverage['plugins/list.js'][612]++;
+ domUtils.fillNode(me.document, pre.firstChild);
+ }
+ }
+ _$jscoverage['plugins/list.js'][617]++;
+ preventAndSave();
+ }
+ }
+ }
+ _$jscoverage['plugins/list.js'][625]++;
+ if ((keyCode == 8)) {
+ _$jscoverage['plugins/list.js'][627]++;
+ range = me.selection.getRange();
+ _$jscoverage['plugins/list.js'][628]++;
+ if ((range.collapsed && domUtils.isStartInblock(range))) {
+ _$jscoverage['plugins/list.js'][629]++;
+ tmpRange = range.cloneRange().trimBoundary();
+ _$jscoverage['plugins/list.js'][630]++;
+ li = domUtils.findParentByTagName(range.startContainer, "li", true);
+ _$jscoverage['plugins/list.js'][632]++;
+ if ((li && domUtils.isStartInblock(tmpRange))) {
+ _$jscoverage['plugins/list.js'][633]++;
+ start = domUtils.findParentByTagName(range.startContainer, "p", true);
+ _$jscoverage['plugins/list.js'][634]++;
+ if ((start && (start !== li.firstChild))) {
+ _$jscoverage['plugins/list.js'][635]++;
+ var parentList = domUtils.findParentByTagName(start, ["ol", "ul"]);
+ _$jscoverage['plugins/list.js'][636]++;
+ domUtils.breakParent(start, parentList);
+ _$jscoverage['plugins/list.js'][637]++;
+ clearEmptySibling(start);
+ _$jscoverage['plugins/list.js'][638]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['plugins/list.js'][639]++;
+ range.setStart(start, 0).setCursor(false, true);
+ _$jscoverage['plugins/list.js'][640]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/list.js'][641]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/list.js'][642]++;
+ return;
+ }
+ _$jscoverage['plugins/list.js'][645]++;
+ if ((li && (pre = li.previousSibling))) {
+ _$jscoverage['plugins/list.js'][646]++;
+ if (((keyCode == 46) && li.childNodes.length)) {
+ _$jscoverage['plugins/list.js'][647]++;
+ return;
+ }
+ _$jscoverage['plugins/list.js'][650]++;
+ if (dtd.$list[pre.tagName]) {
+ _$jscoverage['plugins/list.js'][651]++;
+ pre = pre.lastChild;
+ }
+ _$jscoverage['plugins/list.js'][653]++;
+ (me.undoManger && me.undoManger.save());
+ _$jscoverage['plugins/list.js'][654]++;
+ first = li.firstChild;
+ _$jscoverage['plugins/list.js'][655]++;
+ if (domUtils.isBlockElm(first)) {
+ _$jscoverage['plugins/list.js'][656]++;
+ if (domUtils.isEmptyNode(first)) {
+ _$jscoverage['plugins/list.js'][658]++;
+ pre.appendChild(first);
+ _$jscoverage['plugins/list.js'][659]++;
+ range.setStart(first, 0).setCursor(false, true);
+ _$jscoverage['plugins/list.js'][661]++;
+ while (li.firstChild) {
+ _$jscoverage['plugins/list.js'][662]++;
+ pre.appendChild(li.firstChild);
+}
+ }
+ else {
+ _$jscoverage['plugins/list.js'][666]++;
+ span = me.document.createElement("span");
+ _$jscoverage['plugins/list.js'][667]++;
+ range.insertNode(span);
+ _$jscoverage['plugins/list.js'][669]++;
+ if (domUtils.isEmptyBlock(pre)) {
+ _$jscoverage['plugins/list.js'][670]++;
+ pre.innerHTML = "";
+ }
+ _$jscoverage['plugins/list.js'][672]++;
+ domUtils.moveChild(li, pre);
+ _$jscoverage['plugins/list.js'][673]++;
+ range.setStartBefore(span).collapse(true).select(true);
+ _$jscoverage['plugins/list.js'][675]++;
+ domUtils.remove(span);
+ }
+ }
+ else {
+ _$jscoverage['plugins/list.js'][679]++;
+ if (domUtils.isEmptyNode(li)) {
+ _$jscoverage['plugins/list.js'][680]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][681]++;
+ pre.appendChild(p);
+ _$jscoverage['plugins/list.js'][682]++;
+ range.setStart(p, 0).setCursor();
+ }
+ else {
+ _$jscoverage['plugins/list.js'][685]++;
+ range.setEnd(pre, pre.childNodes.length).collapse().select(true);
+ _$jscoverage['plugins/list.js'][686]++;
+ while (li.firstChild) {
+ _$jscoverage['plugins/list.js'][687]++;
+ pre.appendChild(li.firstChild);
+}
+ }
+ }
+ _$jscoverage['plugins/list.js'][691]++;
+ domUtils.remove(li);
+ _$jscoverage['plugins/list.js'][692]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['plugins/list.js'][693]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/list.js'][694]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/list.js'][695]++;
+ return;
+ }
+ _$jscoverage['plugins/list.js'][700]++;
+ if ((li && (! li.previousSibling))) {
+ _$jscoverage['plugins/list.js'][701]++;
+ var parentList = li.parentNode;
+ _$jscoverage['plugins/list.js'][702]++;
+ var bk = range.createBookmark();
+ _$jscoverage['plugins/list.js'][703]++;
+ if (domUtils.isTagNode(parentList.parentNode, "ol ul")) {
+ _$jscoverage['plugins/list.js'][704]++;
+ parentList.parentNode.insertBefore(li, parentList);
+ _$jscoverage['plugins/list.js'][705]++;
+ if (domUtils.isEmptyNode(parentList)) {
+ _$jscoverage['plugins/list.js'][706]++;
+ domUtils.remove(parentList);
+ }
+ }
+ else {
+ _$jscoverage['plugins/list.js'][710]++;
+ while (li.firstChild) {
+ _$jscoverage['plugins/list.js'][711]++;
+ parentList.parentNode.insertBefore(li.firstChild, parentList);
+}
+ _$jscoverage['plugins/list.js'][714]++;
+ domUtils.remove(li);
+ _$jscoverage['plugins/list.js'][715]++;
+ if (domUtils.isEmptyNode(parentList)) {
+ _$jscoverage['plugins/list.js'][716]++;
+ domUtils.remove(parentList);
+ }
+ }
+ _$jscoverage['plugins/list.js'][720]++;
+ range.moveToBookmark(bk).setCursor(false, true);
+ _$jscoverage['plugins/list.js'][721]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['plugins/list.js'][722]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/list.js'][723]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/list.js'][724]++;
+ return;
+ }
+ }
+ }
+ }
+}));
+ _$jscoverage['plugins/list.js'][737]++;
+ me.addListener("keyup", (function (type, evt) {
+ _$jscoverage['plugins/list.js'][738]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/list.js'][739]++;
+ if ((keyCode == 8)) {
+ _$jscoverage['plugins/list.js'][740]++;
+ var rng = me.selection.getRange(), list;
+ _$jscoverage['plugins/list.js'][741]++;
+ if ((list = domUtils.findParentByTagName(rng.startContainer, ["ol", "ul"], true))) {
+ _$jscoverage['plugins/list.js'][742]++;
+ adjustList(list, list.tagName.toLowerCase(), (getStyle(list) || domUtils.getComputedStyle(list, "list-style-type")), true);
+ }
+ }
+}));
+ _$jscoverage['plugins/list.js'][747]++;
+ me.addListener("tabkeydown", (function () {
+ _$jscoverage['plugins/list.js'][749]++;
+ var range = me.selection.getRange();
+ _$jscoverage['plugins/list.js'][752]++;
+ function checkLevel(li) {
+ _$jscoverage['plugins/list.js'][753]++;
+ if ((me.options.maxListLevel != -1)) {
+ _$jscoverage['plugins/list.js'][754]++;
+ var level = li.parentNode, levelNum = 0;
+ _$jscoverage['plugins/list.js'][755]++;
+ while (/[ou]l/i.test(level.tagName)) {
+ _$jscoverage['plugins/list.js'][756]++;
+ (levelNum++);
+ _$jscoverage['plugins/list.js'][757]++;
+ level = level.parentNode;
+}
+ _$jscoverage['plugins/list.js'][759]++;
+ if ((levelNum >= me.options.maxListLevel)) {
+ _$jscoverage['plugins/list.js'][760]++;
+ return true;
+ }
+ }
+}
+ _$jscoverage['plugins/list.js'][766]++;
+ var li = domUtils.findParentByTagName(range.startContainer, "li", true);
+ _$jscoverage['plugins/list.js'][767]++;
+ if (li) {
+ _$jscoverage['plugins/list.js'][769]++;
+ var bk;
+ _$jscoverage['plugins/list.js'][770]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/list.js'][771]++;
+ if (checkLevel(li)) {
+ _$jscoverage['plugins/list.js'][772]++;
+ return true;
+ }
+ _$jscoverage['plugins/list.js'][773]++;
+ var parentLi = li.parentNode, list = me.document.createElement(parentLi.tagName), index = utils.indexOf(listStyle[list.tagName], (getStyle(parentLi) || domUtils.getComputedStyle(parentLi, "list-style-type")));
+ _$jscoverage['plugins/list.js'][776]++;
+ index = (((index + 1) == listStyle[list.tagName].length)? 0: (index + 1));
+ _$jscoverage['plugins/list.js'][777]++;
+ var currentStyle = listStyle[list.tagName][index];
+ _$jscoverage['plugins/list.js'][778]++;
+ setListStyle(list, currentStyle);
+ _$jscoverage['plugins/list.js'][779]++;
+ if (domUtils.isStartInblock(range)) {
+ _$jscoverage['plugins/list.js'][780]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/list.js'][781]++;
+ bk = range.createBookmark();
+ _$jscoverage['plugins/list.js'][782]++;
+ parentLi.insertBefore(list, li);
+ _$jscoverage['plugins/list.js'][783]++;
+ list.appendChild(li);
+ _$jscoverage['plugins/list.js'][784]++;
+ adjustList(list, list.tagName.toLowerCase(), currentStyle);
+ _$jscoverage['plugins/list.js'][785]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['plugins/list.js'][786]++;
+ range.moveToBookmark(bk).select(true);
+ _$jscoverage['plugins/list.js'][787]++;
+ return true;
+ }
+ }
+ else {
+ _$jscoverage['plugins/list.js'][790]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/list.js'][791]++;
+ bk = range.createBookmark();
+ _$jscoverage['plugins/list.js'][792]++;
+ for (var i = 0, closeList, parents = domUtils.findParents(li), ci; (ci = parents[(i++)]);) {
+ _$jscoverage['plugins/list.js'][793]++;
+ if (domUtils.isTagNode(ci, "ol ul")) {
+ _$jscoverage['plugins/list.js'][794]++;
+ closeList = ci;
+ _$jscoverage['plugins/list.js'][795]++;
+ break;
+ }
+}
+ _$jscoverage['plugins/list.js'][798]++;
+ var current = li;
+ _$jscoverage['plugins/list.js'][799]++;
+ if (bk.end) {
+ _$jscoverage['plugins/list.js'][800]++;
+ while ((current && (! (domUtils.getPosition(current, bk.end) & domUtils.POSITION_FOLLOWING)))) {
+ _$jscoverage['plugins/list.js'][801]++;
+ if (checkLevel(current)) {
+ _$jscoverage['plugins/list.js'][802]++;
+ current = domUtils.getNextDomNode(current, false, null, (function (node) {
+ _$jscoverage['plugins/list.js'][802]++;
+ return (node !== closeList);
+}));
+ _$jscoverage['plugins/list.js'][803]++;
+ continue;
+ }
+ _$jscoverage['plugins/list.js'][805]++;
+ var parentLi = current.parentNode, list = me.document.createElement(parentLi.tagName), index = utils.indexOf(listStyle[list.tagName], (getStyle(parentLi) || domUtils.getComputedStyle(parentLi, "list-style-type")));
+ _$jscoverage['plugins/list.js'][808]++;
+ var currentIndex = (((index + 1) == listStyle[list.tagName].length)? 0: (index + 1));
+ _$jscoverage['plugins/list.js'][809]++;
+ var currentStyle = listStyle[list.tagName][currentIndex];
+ _$jscoverage['plugins/list.js'][810]++;
+ setListStyle(list, currentStyle);
+ _$jscoverage['plugins/list.js'][811]++;
+ parentLi.insertBefore(list, current);
+ _$jscoverage['plugins/list.js'][812]++;
+ while ((current && (! (domUtils.getPosition(current, bk.end) & domUtils.POSITION_FOLLOWING)))) {
+ _$jscoverage['plugins/list.js'][813]++;
+ li = current.nextSibling;
+ _$jscoverage['plugins/list.js'][814]++;
+ list.appendChild(current);
+ _$jscoverage['plugins/list.js'][815]++;
+ if (((! li) || domUtils.isTagNode(li, "ol ul"))) {
+ _$jscoverage['plugins/list.js'][816]++;
+ if (li) {
+ _$jscoverage['plugins/list.js'][817]++;
+ while ((li = li.firstChild)) {
+ _$jscoverage['plugins/list.js'][818]++;
+ if ((li.tagName == "LI")) {
+ _$jscoverage['plugins/list.js'][819]++;
+ break;
+ }
+}
+ }
+ else {
+ _$jscoverage['plugins/list.js'][823]++;
+ li = domUtils.getNextDomNode(current, false, null, (function (node) {
+ _$jscoverage['plugins/list.js'][823]++;
+ return (node !== closeList);
+}));
+ }
+ _$jscoverage['plugins/list.js'][825]++;
+ break;
+ }
+ _$jscoverage['plugins/list.js'][827]++;
+ current = li;
+}
+ _$jscoverage['plugins/list.js'][829]++;
+ adjustList(list, list.tagName.toLowerCase(), currentStyle);
+ _$jscoverage['plugins/list.js'][830]++;
+ current = li;
+}
+ }
+ _$jscoverage['plugins/list.js'][833]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['plugins/list.js'][834]++;
+ range.moveToBookmark(bk).select();
+ _$jscoverage['plugins/list.js'][835]++;
+ return true;
+ }
+ }
+}));
+ _$jscoverage['plugins/list.js'][840]++;
+ function getLi(start) {
+ _$jscoverage['plugins/list.js'][841]++;
+ while ((start && (! domUtils.isBody(start)))) {
+ _$jscoverage['plugins/list.js'][842]++;
+ if ((start.nodeName == "TABLE")) {
+ _$jscoverage['plugins/list.js'][843]++;
+ return null;
+ }
+ _$jscoverage['plugins/list.js'][845]++;
+ if ((start.nodeName == "LI")) {
+ _$jscoverage['plugins/list.js'][846]++;
+ return start;
+ }
+ _$jscoverage['plugins/list.js'][848]++;
+ start = start.parentNode;
+}
+}
+ _$jscoverage['plugins/list.js'][921]++;
+ me.commands.insertorderedlist = (me.commands.insertunorderedlist = {execCommand: (function (command, style) {
+ _$jscoverage['plugins/list.js'][925]++;
+ if ((! style)) {
+ _$jscoverage['plugins/list.js'][926]++;
+ style = ((command.toLowerCase() == "insertorderedlist")? "decimal": "disc");
+ }
+ _$jscoverage['plugins/list.js'][928]++;
+ var me = this, range = this.selection.getRange(), filterFn = (function (node) {
+ _$jscoverage['plugins/list.js'][931]++;
+ return ((node.nodeType == 1)? (node.tagName.toLowerCase() != "br"): (! domUtils.isWhitespace(node)));
+}), tag = ((command.toLowerCase() == "insertorderedlist")? "ol": "ul"), frag = me.document.createDocumentFragment();
+ _$jscoverage['plugins/list.js'][937]++;
+ range.adjustmentBoundary().shrinkBoundary();
+ _$jscoverage['plugins/list.js'][938]++;
+ var bko = range.createBookmark(true), start = getLi(me.document.getElementById(bko.start)), modifyStart = 0, end = getLi(me.document.getElementById(bko.end)), modifyEnd = 0, startParent, endParent, list, tmp;
+ _$jscoverage['plugins/list.js'][946]++;
+ if ((start || end)) {
+ _$jscoverage['plugins/list.js'][947]++;
+ (start && (startParent = start.parentNode));
+ _$jscoverage['plugins/list.js'][948]++;
+ if ((! bko.end)) {
+ _$jscoverage['plugins/list.js'][949]++;
+ end = start;
+ }
+ _$jscoverage['plugins/list.js'][951]++;
+ (end && (endParent = end.parentNode));
+ _$jscoverage['plugins/list.js'][953]++;
+ if ((startParent === endParent)) {
+ _$jscoverage['plugins/list.js'][954]++;
+ while ((start !== end)) {
+ _$jscoverage['plugins/list.js'][955]++;
+ tmp = start;
+ _$jscoverage['plugins/list.js'][956]++;
+ start = start.nextSibling;
+ _$jscoverage['plugins/list.js'][957]++;
+ if ((! domUtils.isBlockElm(tmp.firstChild))) {
+ _$jscoverage['plugins/list.js'][958]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][959]++;
+ while (tmp.firstChild) {
+ _$jscoverage['plugins/list.js'][960]++;
+ p.appendChild(tmp.firstChild);
+}
+ _$jscoverage['plugins/list.js'][962]++;
+ tmp.appendChild(p);
+ }
+ _$jscoverage['plugins/list.js'][964]++;
+ frag.appendChild(tmp);
+}
+ _$jscoverage['plugins/list.js'][966]++;
+ tmp = me.document.createElement("span");
+ _$jscoverage['plugins/list.js'][967]++;
+ startParent.insertBefore(tmp, end);
+ _$jscoverage['plugins/list.js'][968]++;
+ if ((! domUtils.isBlockElm(end.firstChild))) {
+ _$jscoverage['plugins/list.js'][969]++;
+ p = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][970]++;
+ while (end.firstChild) {
+ _$jscoverage['plugins/list.js'][971]++;
+ p.appendChild(end.firstChild);
+}
+ _$jscoverage['plugins/list.js'][973]++;
+ end.appendChild(p);
+ }
+ _$jscoverage['plugins/list.js'][975]++;
+ frag.appendChild(end);
+ _$jscoverage['plugins/list.js'][976]++;
+ domUtils.breakParent(tmp, startParent);
+ _$jscoverage['plugins/list.js'][977]++;
+ if (domUtils.isEmptyNode(tmp.previousSibling)) {
+ _$jscoverage['plugins/list.js'][978]++;
+ domUtils.remove(tmp.previousSibling);
+ }
+ _$jscoverage['plugins/list.js'][980]++;
+ if (domUtils.isEmptyNode(tmp.nextSibling)) {
+ _$jscoverage['plugins/list.js'][981]++;
+ domUtils.remove(tmp.nextSibling);
+ }
+ _$jscoverage['plugins/list.js'][983]++;
+ var nodeStyle = (getStyle(startParent) || domUtils.getComputedStyle(startParent, "list-style-type") || ((command.toLowerCase() == "insertorderedlist")? "decimal": "disc"));
+ _$jscoverage['plugins/list.js'][984]++;
+ if (((startParent.tagName.toLowerCase() == tag) && (nodeStyle == style))) {
+ _$jscoverage['plugins/list.js'][985]++;
+ for (var i = 0, ci, tmpFrag = me.document.createDocumentFragment(); (ci = frag.childNodes[(i++)]);) {
+ _$jscoverage['plugins/list.js'][986]++;
+ if (domUtils.isTagNode(ci, "ol ul")) {
+ _$jscoverage['plugins/list.js'][987]++;
+ utils.each(domUtils.getElementsByTagName(ci, "li"), (function (li) {
+ _$jscoverage['plugins/list.js'][988]++;
+ while (li.firstChild) {
+ _$jscoverage['plugins/list.js'][989]++;
+ tmpFrag.appendChild(li.firstChild);
+}
+}));
+ }
+ else {
+ _$jscoverage['plugins/list.js'][994]++;
+ while (ci.firstChild) {
+ _$jscoverage['plugins/list.js'][995]++;
+ tmpFrag.appendChild(ci.firstChild);
+}
+ }
+}
+ _$jscoverage['plugins/list.js'][1000]++;
+ tmp.parentNode.insertBefore(tmpFrag, tmp);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][1002]++;
+ list = me.document.createElement(tag);
+ _$jscoverage['plugins/list.js'][1003]++;
+ setListStyle(list, style);
+ _$jscoverage['plugins/list.js'][1004]++;
+ list.appendChild(frag);
+ _$jscoverage['plugins/list.js'][1005]++;
+ tmp.parentNode.insertBefore(list, tmp);
+ }
+ _$jscoverage['plugins/list.js'][1008]++;
+ domUtils.remove(tmp);
+ _$jscoverage['plugins/list.js'][1009]++;
+ (list && adjustList(list, tag, style));
+ _$jscoverage['plugins/list.js'][1010]++;
+ range.moveToBookmark(bko).select();
+ _$jscoverage['plugins/list.js'][1011]++;
+ return;
+ }
+ _$jscoverage['plugins/list.js'][1014]++;
+ if (start) {
+ _$jscoverage['plugins/list.js'][1015]++;
+ while (start) {
+ _$jscoverage['plugins/list.js'][1016]++;
+ tmp = start.nextSibling;
+ _$jscoverage['plugins/list.js'][1017]++;
+ if (domUtils.isTagNode(start, "ol ul")) {
+ _$jscoverage['plugins/list.js'][1018]++;
+ frag.appendChild(start);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][1020]++;
+ var tmpfrag = me.document.createDocumentFragment(), hasBlock = 0;
+ _$jscoverage['plugins/list.js'][1022]++;
+ while (start.firstChild) {
+ _$jscoverage['plugins/list.js'][1023]++;
+ if (domUtils.isBlockElm(start.firstChild)) {
+ _$jscoverage['plugins/list.js'][1024]++;
+ hasBlock = 1;
+ }
+ _$jscoverage['plugins/list.js'][1026]++;
+ tmpfrag.appendChild(start.firstChild);
+}
+ _$jscoverage['plugins/list.js'][1028]++;
+ if ((! hasBlock)) {
+ _$jscoverage['plugins/list.js'][1029]++;
+ var tmpP = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][1030]++;
+ tmpP.appendChild(tmpfrag);
+ _$jscoverage['plugins/list.js'][1031]++;
+ frag.appendChild(tmpP);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][1033]++;
+ frag.appendChild(tmpfrag);
+ }
+ _$jscoverage['plugins/list.js'][1035]++;
+ domUtils.remove(start);
+ }
+ _$jscoverage['plugins/list.js'][1038]++;
+ start = tmp;
+}
+ _$jscoverage['plugins/list.js'][1040]++;
+ startParent.parentNode.insertBefore(frag, startParent.nextSibling);
+ _$jscoverage['plugins/list.js'][1041]++;
+ if (domUtils.isEmptyNode(startParent)) {
+ _$jscoverage['plugins/list.js'][1042]++;
+ range.setStartBefore(startParent);
+ _$jscoverage['plugins/list.js'][1043]++;
+ domUtils.remove(startParent);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][1045]++;
+ range.setStartAfter(startParent);
+ }
+ _$jscoverage['plugins/list.js'][1047]++;
+ modifyStart = 1;
+ }
+ _$jscoverage['plugins/list.js'][1050]++;
+ if ((end && domUtils.inDoc(endParent, me.document))) {
+ _$jscoverage['plugins/list.js'][1052]++;
+ start = endParent.firstChild;
+ _$jscoverage['plugins/list.js'][1053]++;
+ while ((start && (start !== end))) {
+ _$jscoverage['plugins/list.js'][1054]++;
+ tmp = start.nextSibling;
+ _$jscoverage['plugins/list.js'][1055]++;
+ if (domUtils.isTagNode(start, "ol ul")) {
+ _$jscoverage['plugins/list.js'][1056]++;
+ frag.appendChild(start);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][1058]++;
+ tmpfrag = me.document.createDocumentFragment();
+ _$jscoverage['plugins/list.js'][1059]++;
+ hasBlock = 0;
+ _$jscoverage['plugins/list.js'][1060]++;
+ while (start.firstChild) {
+ _$jscoverage['plugins/list.js'][1061]++;
+ if (domUtils.isBlockElm(start.firstChild)) {
+ _$jscoverage['plugins/list.js'][1062]++;
+ hasBlock = 1;
+ }
+ _$jscoverage['plugins/list.js'][1064]++;
+ tmpfrag.appendChild(start.firstChild);
+}
+ _$jscoverage['plugins/list.js'][1066]++;
+ if ((! hasBlock)) {
+ _$jscoverage['plugins/list.js'][1067]++;
+ tmpP = me.document.createElement("p");
+ _$jscoverage['plugins/list.js'][1068]++;
+ tmpP.appendChild(tmpfrag);
+ _$jscoverage['plugins/list.js'][1069]++;
+ frag.appendChild(tmpP);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][1071]++;
+ frag.appendChild(tmpfrag);
+ }
+ _$jscoverage['plugins/list.js'][1073]++;
+ domUtils.remove(start);
+ }
+ _$jscoverage['plugins/list.js'][1075]++;
+ start = tmp;
+}
+ _$jscoverage['plugins/list.js'][1077]++;
+ var tmpDiv = domUtils.createElement(me.document, "div", {"tmpDiv": 1});
+ _$jscoverage['plugins/list.js'][1080]++;
+ domUtils.moveChild(end, tmpDiv);
+ _$jscoverage['plugins/list.js'][1082]++;
+ frag.appendChild(tmpDiv);
+ _$jscoverage['plugins/list.js'][1083]++;
+ domUtils.remove(end);
+ _$jscoverage['plugins/list.js'][1084]++;
+ endParent.parentNode.insertBefore(frag, endParent);
+ _$jscoverage['plugins/list.js'][1085]++;
+ range.setEndBefore(endParent);
+ _$jscoverage['plugins/list.js'][1086]++;
+ if (domUtils.isEmptyNode(endParent)) {
+ _$jscoverage['plugins/list.js'][1087]++;
+ domUtils.remove(endParent);
+ }
+ _$jscoverage['plugins/list.js'][1090]++;
+ modifyEnd = 1;
+ }
+ }
+ _$jscoverage['plugins/list.js'][1096]++;
+ if ((! modifyStart)) {
+ _$jscoverage['plugins/list.js'][1097]++;
+ range.setStartBefore(me.document.getElementById(bko.start));
+ }
+ _$jscoverage['plugins/list.js'][1099]++;
+ if ((bko.end && (! modifyEnd))) {
+ _$jscoverage['plugins/list.js'][1100]++;
+ range.setEndAfter(me.document.getElementById(bko.end));
+ }
+ _$jscoverage['plugins/list.js'][1102]++;
+ range.enlarge(true, (function (node) {
+ _$jscoverage['plugins/list.js'][1103]++;
+ return notExchange[node.tagName];
+}));
+ _$jscoverage['plugins/list.js'][1106]++;
+ frag = me.document.createDocumentFragment();
+ _$jscoverage['plugins/list.js'][1108]++;
+ var bk = range.createBookmark(), current = domUtils.getNextDomNode(bk.start, false, filterFn), tmpRange = range.cloneRange(), tmpNode, block = domUtils.isBlockElm;
+ _$jscoverage['plugins/list.js'][1114]++;
+ while ((current && (current !== bk.end) && (domUtils.getPosition(current, bk.end) & domUtils.POSITION_PRECEDING))) {
+ _$jscoverage['plugins/list.js'][1116]++;
+ if (((current.nodeType == 3) || dtd.li[current.tagName])) {
+ _$jscoverage['plugins/list.js'][1117]++;
+ if (((current.nodeType == 1) && dtd.$list[current.tagName])) {
+ _$jscoverage['plugins/list.js'][1118]++;
+ while (current.firstChild) {
+ _$jscoverage['plugins/list.js'][1119]++;
+ frag.appendChild(current.firstChild);
+}
+ _$jscoverage['plugins/list.js'][1121]++;
+ tmpNode = domUtils.getNextDomNode(current, false, filterFn);
+ _$jscoverage['plugins/list.js'][1122]++;
+ domUtils.remove(current);
+ _$jscoverage['plugins/list.js'][1123]++;
+ current = tmpNode;
+ _$jscoverage['plugins/list.js'][1124]++;
+ continue;
+ }
+ _$jscoverage['plugins/list.js'][1127]++;
+ tmpNode = current;
+ _$jscoverage['plugins/list.js'][1128]++;
+ tmpRange.setStartBefore(current);
+ _$jscoverage['plugins/list.js'][1130]++;
+ while ((current && (current !== bk.end) && ((! block(current)) || domUtils.isBookmarkNode(current)))) {
+ _$jscoverage['plugins/list.js'][1131]++;
+ tmpNode = current;
+ _$jscoverage['plugins/list.js'][1132]++;
+ current = domUtils.getNextDomNode(current, false, null, (function (node) {
+ _$jscoverage['plugins/list.js'][1133]++;
+ return (! notExchange[node.tagName]);
+}));
+}
+ _$jscoverage['plugins/list.js'][1137]++;
+ if ((current && block(current))) {
+ _$jscoverage['plugins/list.js'][1138]++;
+ tmp = domUtils.getNextDomNode(tmpNode, false, filterFn);
+ _$jscoverage['plugins/list.js'][1139]++;
+ if ((tmp && domUtils.isBookmarkNode(tmp))) {
+ _$jscoverage['plugins/list.js'][1140]++;
+ current = domUtils.getNextDomNode(tmp, false, filterFn);
+ _$jscoverage['plugins/list.js'][1141]++;
+ tmpNode = tmp;
+ }
+ }
+ _$jscoverage['plugins/list.js'][1144]++;
+ tmpRange.setEndAfter(tmpNode);
+ _$jscoverage['plugins/list.js'][1146]++;
+ current = domUtils.getNextDomNode(tmpNode, false, filterFn);
+ _$jscoverage['plugins/list.js'][1148]++;
+ var li = range.document.createElement("li");
+ _$jscoverage['plugins/list.js'][1150]++;
+ li.appendChild(tmpRange.extractContents());
+ _$jscoverage['plugins/list.js'][1151]++;
+ if (domUtils.isEmptyNode(li)) {
+ _$jscoverage['plugins/list.js'][1152]++;
+ var tmpNode = range.document.createElement("p");
+ _$jscoverage['plugins/list.js'][1153]++;
+ while (li.firstChild) {
+ _$jscoverage['plugins/list.js'][1154]++;
+ tmpNode.appendChild(li.firstChild);
+}
+ _$jscoverage['plugins/list.js'][1156]++;
+ li.appendChild(tmpNode);
+ }
+ _$jscoverage['plugins/list.js'][1158]++;
+ frag.appendChild(li);
+ }
+ else {
+ _$jscoverage['plugins/list.js'][1160]++;
+ current = domUtils.getNextDomNode(current, true, filterFn);
+ }
+}
+ _$jscoverage['plugins/list.js'][1163]++;
+ range.moveToBookmark(bk).collapse(true);
+ _$jscoverage['plugins/list.js'][1164]++;
+ list = me.document.createElement(tag);
+ _$jscoverage['plugins/list.js'][1165]++;
+ setListStyle(list, style);
+ _$jscoverage['plugins/list.js'][1166]++;
+ list.appendChild(frag);
+ _$jscoverage['plugins/list.js'][1167]++;
+ range.insertNode(list);
+ _$jscoverage['plugins/list.js'][1169]++;
+ adjustList(list, tag, style);
+ _$jscoverage['plugins/list.js'][1171]++;
+ for (var i = 0, ci = ci, tmpDivs = domUtils.getElementsByTagName(list, "div"); (ci = tmpDivs[(i++)]);) {
+ _$jscoverage['plugins/list.js'][1172]++;
+ if (ci.getAttribute("tmpDiv")) {
+ _$jscoverage['plugins/list.js'][1173]++;
+ domUtils.remove(ci, true);
+ }
+}
+ _$jscoverage['plugins/list.js'][1176]++;
+ range.moveToBookmark(bko).select();
+}), queryCommandState: (function (command) {
+ _$jscoverage['plugins/list.js'][1180]++;
+ var tag = ((command.toLowerCase() == "insertorderedlist")? "ol": "ul");
+ _$jscoverage['plugins/list.js'][1181]++;
+ var path = this.selection.getStartElementPath();
+ _$jscoverage['plugins/list.js'][1182]++;
+ for (var i = 0, ci; (ci = path[(i++)]);) {
+ _$jscoverage['plugins/list.js'][1183]++;
+ if ((ci.nodeName == "TABLE")) {
+ _$jscoverage['plugins/list.js'][1184]++;
+ return 0;
+ }
+ _$jscoverage['plugins/list.js'][1186]++;
+ if ((tag == ci.nodeName.toLowerCase())) {
+ _$jscoverage['plugins/list.js'][1187]++;
+ return 1;
+ }
+ _$jscoverage['plugins/list.js'][1188]++;
+ ;
+}
+ _$jscoverage['plugins/list.js'][1190]++;
+ return 0;
+}), queryCommandValue: (function (command) {
+ _$jscoverage['plugins/list.js'][1194]++;
+ var tag = ((command.toLowerCase() == "insertorderedlist")? "ol": "ul");
+ _$jscoverage['plugins/list.js'][1195]++;
+ var path = this.selection.getStartElementPath(), node;
+ _$jscoverage['plugins/list.js'][1197]++;
+ for (var i = 0, ci; (ci = path[(i++)]);) {
+ _$jscoverage['plugins/list.js'][1198]++;
+ if ((ci.nodeName == "TABLE")) {
+ _$jscoverage['plugins/list.js'][1199]++;
+ node = null;
+ _$jscoverage['plugins/list.js'][1200]++;
+ break;
+ }
+ _$jscoverage['plugins/list.js'][1202]++;
+ if ((tag == ci.nodeName.toLowerCase())) {
+ _$jscoverage['plugins/list.js'][1203]++;
+ node = ci;
+ _$jscoverage['plugins/list.js'][1204]++;
+ break;
+ }
+ _$jscoverage['plugins/list.js'][1205]++;
+ ;
+}
+ _$jscoverage['plugins/list.js'][1207]++;
+ return (node? (getStyle(node) || domUtils.getComputedStyle(node, "list-style-type")): null);
+})});
+});
diff --git a/_test/coverage/plugins/music.js b/_test/coverage/plugins/music.js
new file mode 100644
index 000000000..ee7d4efc9
--- /dev/null
+++ b/_test/coverage/plugins/music.js
@@ -0,0 +1,135 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/music.js']) {
+ _$jscoverage['plugins/music.js'] = [];
+ _$jscoverage['plugins/music.js'][24] = 0;
+ _$jscoverage['plugins/music.js'][25] = 0;
+ _$jscoverage['plugins/music.js'][37] = 0;
+ _$jscoverage['plugins/music.js'][38] = 0;
+ _$jscoverage['plugins/music.js'][50] = 0;
+ _$jscoverage['plugins/music.js'][51] = 0;
+ _$jscoverage['plugins/music.js'][53] = 0;
+ _$jscoverage['plugins/music.js'][54] = 0;
+ _$jscoverage['plugins/music.js'][55] = 0;
+ _$jscoverage['plugins/music.js'][57] = 0;
+ _$jscoverage['plugins/music.js'][59] = 0;
+ _$jscoverage['plugins/music.js'][60] = 0;
+ _$jscoverage['plugins/music.js'][61] = 0;
+ _$jscoverage['plugins/music.js'][62] = 0;
+ _$jscoverage['plugins/music.js'][66] = 0;
+ _$jscoverage['plugins/music.js'][67] = 0;
+ _$jscoverage['plugins/music.js'][69] = 0;
+ _$jscoverage['plugins/music.js'][70] = 0;
+ _$jscoverage['plugins/music.js'][72] = 0;
+ _$jscoverage['plugins/music.js'][73] = 0;
+ _$jscoverage['plugins/music.js'][74] = 0;
+ _$jscoverage['plugins/music.js'][76] = 0;
+ _$jscoverage['plugins/music.js'][79] = 0;
+ _$jscoverage['plugins/music.js'][81] = 0;
+ _$jscoverage['plugins/music.js'][83] = 0;
+ _$jscoverage['plugins/music.js'][86] = 0;
+ _$jscoverage['plugins/music.js'][89] = 0;
+}
+_$jscoverage['plugins/music.js'].source = ["/** "," * 插入音乐命令 "," * @file "," */ ","","/** "," * 在当前光标处插入音乐 "," * @command music "," * @method execCommand "," * @param { KeyValueMap } musicOptions 插入音乐的参数项, 支持的key有: url=>音乐地址; "," * width=>音乐容器宽度;height=>音乐容器高度;align=>音乐文件的对齐方式, 可选值有: left, center, right, none "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //在编辑器里插入一个“植物大战僵尸”的APP "," * editor.execCommand( 'music' , { "," * width: 400, "," * height: 95, "," * align: \"center\", "," * url: \"音乐地址\" "," * } ); "," * ``` "," */ ","UE. plugins[ 'music' ] = function () { "," var me = this , "," div; ",""," /* "," * 创建插入音乐字符串 "," * @param url 音乐地址 "," * @param width 音乐宽度 "," * @param height 音乐高度 "," * @param align 对齐 "," * @param toEmbed 是否以flash代替显示 "," * @param addParagraph 是否需要添加P标签 "," */ "," function creatInsertStr( url, width, height, align, toEmbed, addParagraph) { "," return ! toEmbed ? "," ( addParagraph? ( '<p ' + ( align != \"none\" ? ( align == \"center\" ? ' style=\"text-align:center;\" ' : ' style=\"float:\"' + align ) : '' ) + '>' ): '' ) + "," '<img align=\"' + align+ '\" width=\"' + width + '\" height=\"' + height + '\" _url=\"' + url+ '\" class=\"edui-faked-music\"' + "," ' src=\"' + me. options. langPath+ me. options. lang+ '/images/music.png\" />' + "," ( addParagraph? '</p>' : '' ) "," : "," '<embed type=\"application/x-shockwave-flash\" class=\"edui-faked-music\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"' + "," ' src=\"' + url + '\" width=\"' + width + '\" height=\"' + height + '\" align=\"' + align + '\"' + "," ( align != \"none\" ? ' style= \"' + ( align == \"center\" ? \"display:block;\" : \" float: \" + align ) + '\"' : '' ) + "," ' wmode=\"transparent\" play=\"true\" loop=\"false\" menu=\"false\" allowscriptaccess=\"never\" allowfullscreen=\"true\" >' ; "," } ",""," function switchImgAndEmbed( img2embed) { "," var tmpdiv, "," nodes = domUtils. getElementsByTagName( me. document, ! img2embed ? \"embed\" : \"img\" ); "," for ( var i = 0 , node; node = nodes[ i++];) { "," if ( node. className != \"edui-faked-music\" ) { "," continue ; "," } "," tmpdiv = me. document. createElement( \"div\" ); "," //先看float在看align,浮动有的是时候是在float上定义的 "," var align = domUtils. getComputedStyle( node, 'float' ); "," align = align == 'none' ? ( node. getAttribute( 'align' ) || '' ) : align; "," tmpdiv. innerHTML = creatInsertStr( img2embed ? node. getAttribute( \"_url\" ) : node. getAttribute( \"src\" ), node. width, node. height, align, img2embed); "," node. parentNode. replaceChild( tmpdiv. firstChild, node); "," } "," } ",""," me. addListener( \"beforegetcontent\" , function () { "," switchImgAndEmbed( true ); "," } ); "," me. addListener( 'aftersetcontent' , function () { "," switchImgAndEmbed( false ); "," } ); "," me. addListener( 'aftergetcontent' , function ( cmdName) { "," if ( cmdName == 'aftergetcontent' && me. queryCommandState( 'source' )) { "," return ; "," } "," switchImgAndEmbed( false ); "," } ); ",""," me. commands[ \"music\" ] = { "," execCommand: function ( cmd, musicObj) { "," var me = this , "," str = creatInsertStr( musicObj. url, musicObj. width || 400 , musicObj. height || 95 , \"none\" , false , true ); "," me. execCommand( \"inserthtml\" , str); "," } , "," queryCommandState: function () { "," var me = this , "," img = me. selection. getRange(). getClosedNode(), "," flag = img && ( img. className == \"edui-faked-music\" ); "," return flag ? 1 : 0 ; "," } "," } ; ","} ; "];
+_$jscoverage['plugins/music.js'][24]++;
+UE.plugins.music = (function () {
+ _$jscoverage['plugins/music.js'][25]++;
+ var me = this, div;
+ _$jscoverage['plugins/music.js'][37]++;
+ function creatInsertStr(url, width, height, align, toEmbed, addParagraph) {
+ _$jscoverage['plugins/music.js'][38]++;
+ return ((! toEmbed)? ((addParagraph? (""): "") + " " + (addParagraph? "
": "")): (""));
+}
+ _$jscoverage['plugins/music.js'][50]++;
+ function switchImgAndEmbed(img2embed) {
+ _$jscoverage['plugins/music.js'][51]++;
+ var tmpdiv, nodes = domUtils.getElementsByTagName(me.document, ((! img2embed)? "embed": "img"));
+ _$jscoverage['plugins/music.js'][53]++;
+ for (var i = 0, node; (node = nodes[(i++)]);) {
+ _$jscoverage['plugins/music.js'][54]++;
+ if ((node.className != "edui-faked-music")) {
+ _$jscoverage['plugins/music.js'][55]++;
+ continue;
+ }
+ _$jscoverage['plugins/music.js'][57]++;
+ tmpdiv = me.document.createElement("div");
+ _$jscoverage['plugins/music.js'][59]++;
+ var align = domUtils.getComputedStyle(node, "float");
+ _$jscoverage['plugins/music.js'][60]++;
+ align = ((align == "none")? (node.getAttribute("align") || ""): align);
+ _$jscoverage['plugins/music.js'][61]++;
+ tmpdiv.innerHTML = creatInsertStr((img2embed? node.getAttribute("_url"): node.getAttribute("src")), node.width, node.height, align, img2embed);
+ _$jscoverage['plugins/music.js'][62]++;
+ node.parentNode.replaceChild(tmpdiv.firstChild, node);
+}
+}
+ _$jscoverage['plugins/music.js'][66]++;
+ me.addListener("beforegetcontent", (function () {
+ _$jscoverage['plugins/music.js'][67]++;
+ switchImgAndEmbed(true);
+}));
+ _$jscoverage['plugins/music.js'][69]++;
+ me.addListener("aftersetcontent", (function () {
+ _$jscoverage['plugins/music.js'][70]++;
+ switchImgAndEmbed(false);
+}));
+ _$jscoverage['plugins/music.js'][72]++;
+ me.addListener("aftergetcontent", (function (cmdName) {
+ _$jscoverage['plugins/music.js'][73]++;
+ if (((cmdName == "aftergetcontent") && me.queryCommandState("source"))) {
+ _$jscoverage['plugins/music.js'][74]++;
+ return;
+ }
+ _$jscoverage['plugins/music.js'][76]++;
+ switchImgAndEmbed(false);
+}));
+ _$jscoverage['plugins/music.js'][79]++;
+ me.commands.music = {execCommand: (function (cmd, musicObj) {
+ _$jscoverage['plugins/music.js'][81]++;
+ var me = this, str = creatInsertStr(musicObj.url, (musicObj.width || 400), (musicObj.height || 95), "none", false, true);
+ _$jscoverage['plugins/music.js'][83]++;
+ me.execCommand("inserthtml", str);
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/music.js'][86]++;
+ var me = this, img = me.selection.getRange().getClosedNode(), flag = (img && (img.className == "edui-faked-music"));
+ _$jscoverage['plugins/music.js'][89]++;
+ return (flag? 1: 0);
+})};
+});
diff --git a/_test/coverage/plugins/pagebreak.js b/_test/coverage/plugins/pagebreak.js
new file mode 100644
index 000000000..33d635338
--- /dev/null
+++ b/_test/coverage/plugins/pagebreak.js
@@ -0,0 +1,303 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/pagebreak.js']) {
+ _$jscoverage['plugins/pagebreak.js'] = [];
+ _$jscoverage['plugins/pagebreak.js'][7] = 0;
+ _$jscoverage['plugins/pagebreak.js'][8] = 0;
+ _$jscoverage['plugins/pagebreak.js'][10] = 0;
+ _$jscoverage['plugins/pagebreak.js'][12] = 0;
+ _$jscoverage['plugins/pagebreak.js'][13] = 0;
+ _$jscoverage['plugins/pagebreak.js'][14] = 0;
+ _$jscoverage['plugins/pagebreak.js'][16] = 0;
+ _$jscoverage['plugins/pagebreak.js'][17] = 0;
+ _$jscoverage['plugins/pagebreak.js'][18] = 0;
+ _$jscoverage['plugins/pagebreak.js'][20] = 0;
+ _$jscoverage['plugins/pagebreak.js'][21] = 0;
+ _$jscoverage['plugins/pagebreak.js'][26] = 0;
+ _$jscoverage['plugins/pagebreak.js'][27] = 0;
+ _$jscoverage['plugins/pagebreak.js'][29] = 0;
+ _$jscoverage['plugins/pagebreak.js'][30] = 0;
+ _$jscoverage['plugins/pagebreak.js'][32] = 0;
+ _$jscoverage['plugins/pagebreak.js'][33] = 0;
+ _$jscoverage['plugins/pagebreak.js'][34] = 0;
+ _$jscoverage['plugins/pagebreak.js'][35] = 0;
+ _$jscoverage['plugins/pagebreak.js'][36] = 0;
+ _$jscoverage['plugins/pagebreak.js'][37] = 0;
+ _$jscoverage['plugins/pagebreak.js'][41] = 0;
+ _$jscoverage['plugins/pagebreak.js'][42] = 0;
+ _$jscoverage['plugins/pagebreak.js'][43] = 0;
+ _$jscoverage['plugins/pagebreak.js'][44] = 0;
+ _$jscoverage['plugins/pagebreak.js'][45] = 0;
+ _$jscoverage['plugins/pagebreak.js'][46] = 0;
+ _$jscoverage['plugins/pagebreak.js'][62] = 0;
+ _$jscoverage['plugins/pagebreak.js'][64] = 0;
+ _$jscoverage['plugins/pagebreak.js'][65] = 0;
+ _$jscoverage['plugins/pagebreak.js'][70] = 0;
+ _$jscoverage['plugins/pagebreak.js'][72] = 0;
+ _$jscoverage['plugins/pagebreak.js'][75] = 0;
+ _$jscoverage['plugins/pagebreak.js'][76] = 0;
+ _$jscoverage['plugins/pagebreak.js'][78] = 0;
+ _$jscoverage['plugins/pagebreak.js'][79] = 0;
+ _$jscoverage['plugins/pagebreak.js'][80] = 0;
+ _$jscoverage['plugins/pagebreak.js'][88] = 0;
+ _$jscoverage['plugins/pagebreak.js'][89] = 0;
+ _$jscoverage['plugins/pagebreak.js'][92] = 0;
+ _$jscoverage['plugins/pagebreak.js'][93] = 0;
+ _$jscoverage['plugins/pagebreak.js'][96] = 0;
+ _$jscoverage['plugins/pagebreak.js'][97] = 0;
+ _$jscoverage['plugins/pagebreak.js'][98] = 0;
+ _$jscoverage['plugins/pagebreak.js'][102] = 0;
+ _$jscoverage['plugins/pagebreak.js'][107] = 0;
+ _$jscoverage['plugins/pagebreak.js'][108] = 0;
+ _$jscoverage['plugins/pagebreak.js'][109] = 0;
+ _$jscoverage['plugins/pagebreak.js'][110] = 0;
+ _$jscoverage['plugins/pagebreak.js'][111] = 0;
+ _$jscoverage['plugins/pagebreak.js'][112] = 0;
+ _$jscoverage['plugins/pagebreak.js'][113] = 0;
+ _$jscoverage['plugins/pagebreak.js'][117] = 0;
+ _$jscoverage['plugins/pagebreak.js'][119] = 0;
+ _$jscoverage['plugins/pagebreak.js'][120] = 0;
+ _$jscoverage['plugins/pagebreak.js'][121] = 0;
+ _$jscoverage['plugins/pagebreak.js'][122] = 0;
+ _$jscoverage['plugins/pagebreak.js'][123] = 0;
+ _$jscoverage['plugins/pagebreak.js'][124] = 0;
+ _$jscoverage['plugins/pagebreak.js'][126] = 0;
+ _$jscoverage['plugins/pagebreak.js'][128] = 0;
+ _$jscoverage['plugins/pagebreak.js'][129] = 0;
+ _$jscoverage['plugins/pagebreak.js'][130] = 0;
+ _$jscoverage['plugins/pagebreak.js'][131] = 0;
+ _$jscoverage['plugins/pagebreak.js'][133] = 0;
+ _$jscoverage['plugins/pagebreak.js'][136] = 0;
+ _$jscoverage['plugins/pagebreak.js'][137] = 0;
+ _$jscoverage['plugins/pagebreak.js'][139] = 0;
+ _$jscoverage['plugins/pagebreak.js'][140] = 0;
+ _$jscoverage['plugins/pagebreak.js'][141] = 0;
+ _$jscoverage['plugins/pagebreak.js'][143] = 0;
+ _$jscoverage['plugins/pagebreak.js'][144] = 0;
+ _$jscoverage['plugins/pagebreak.js'][146] = 0;
+ _$jscoverage['plugins/pagebreak.js'][148] = 0;
+ _$jscoverage['plugins/pagebreak.js'][151] = 0;
+}
+_$jscoverage['plugins/pagebreak.js'].source = ["/** "," * 分页功能插件 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ 'pagebreak' ] = function () { "," var me = this , "," notBreakTags = [ 'td' ]; "," me. setOpt( 'pageBreakTag' , '_ueditor_page_break_tag_' ); ",""," function fillNode( node) { "," if ( domUtils. isEmptyBlock( node)) { "," var firstChild = node. firstChild, tmpNode; ",""," while ( firstChild && firstChild. nodeType == 1 && domUtils. isEmptyBlock( firstChild)) { "," tmpNode = firstChild; "," firstChild = firstChild. firstChild; "," } "," ! tmpNode && ( tmpNode = node); "," domUtils. fillNode( me. document, tmpNode); "," } "," } "," //分页符样式添加 ",""," me. ready( function () { "," utils. cssRule( 'pagebreak' , '.pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}' , me. document); "," } ); "," function isHr( node) { "," return node && node. nodeType == 1 && node. tagName == 'HR' && node. className == 'pagebreak' ; "," } "," me. addInputRule( function ( root) { "," root. traversal( function ( node) { "," if ( node. type == 'text' && node. data == me. options. pageBreakTag) { "," var hr = UE. uNode. createElement( '<hr class=\"pagebreak\" noshade=\"noshade\" size=\"5\" style=\"-webkit-user-select: none;\">' ); "," node. parentNode. insertBefore( hr, node); "," node. parentNode. removeChild( node) "," } "," } ) "," } ); "," me. addOutputRule( function ( node) { "," utils. each( node. getNodesByTagName( 'hr' ), function ( n) { "," if ( n. getAttr( 'class' ) == 'pagebreak' ) { "," var txt = UE. uNode. createText( me. options. pageBreakTag); "," n. parentNode. insertBefore( txt, n); "," n. parentNode. removeChild( n); "," } "," } ) ",""," } ); ",""," /** "," * 插入分页符,在当前光标插入分页符 "," * @command pagebreak "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'pagebreak'); //插入一个hr标签,带有样式类名pagebreak "," * ``` "," */ "," me. commands[ 'pagebreak' ] = { "," execCommand: function () { "," var range = me. selection. getRange(), hr = me. document. createElement( 'hr' ); "," domUtils. setAttributes( hr, { "," 'class' : 'pagebreak' , "," noshade: \"noshade\" , "," size: \"5\" "," } ); "," domUtils. unSelectable( hr); "," //table单独处理 "," var node = domUtils. findParentByTagName( range. startContainer, notBreakTags, true ), ",""," parents = [], pN; "," if ( node) { "," switch ( node. tagName) { "," case 'TD' : "," pN = node. parentNode; "," if (! pN. previousSibling) { "," var table = domUtils. findParentByTagName( pN, 'table' ); ","// var tableWrapDiv = table.parentNode; ","// if(tableWrapDiv && tableWrapDiv.nodeType == 1 ","// && tableWrapDiv.tagName == 'DIV' ","// && tableWrapDiv.getAttribute('dropdrag') ","// ){ ","// domUtils.remove(tableWrapDiv,true); ","// } "," table. parentNode. insertBefore( hr, table); "," parents = domUtils. findParents( hr, true ); ",""," } else { "," pN. parentNode. insertBefore( hr, pN); "," parents = domUtils. findParents( hr); ",""," } "," pN = parents[ 1 ]; "," if ( hr !== pN) { "," domUtils. breakParent( hr, pN); ",""," } "," //table要重写绑定一下拖拽 "," me. fireEvent( 'afteradjusttable' , me. document); "," } ",""," } else { ",""," if (! range. collapsed) { "," range. deleteContents(); "," var start = range. startContainer; "," while ( ! domUtils. isBody( start) && domUtils. isBlockElm( start) && domUtils. isEmptyNode( start)) { "," range. setStartBefore( start). collapse( true ); "," domUtils. remove( start); "," start = range. startContainer; "," } ",""," } "," range. insertNode( hr); ",""," var pN = hr. parentNode, nextNode; "," while (! domUtils. isBody( pN)) { "," domUtils. breakParent( hr, pN); "," nextNode = hr. nextSibling; "," if ( nextNode && domUtils. isEmptyBlock( nextNode)) { "," domUtils. remove( nextNode); "," } "," pN = hr. parentNode; "," } "," nextNode = hr. nextSibling; "," var pre = hr. previousSibling; "," if ( isHr( pre)) { "," domUtils. remove( pre); "," } else { "," pre && fillNode( pre); "," } ",""," if (! nextNode) { "," var p = me. document. createElement( 'p' ); ",""," hr. parentNode. appendChild( p); "," domUtils. fillNode( me. document, p); "," range. setStart( p, 0 ). collapse( true ); "," } else { "," if ( isHr( nextNode)) { "," domUtils. remove( nextNode); "," } else { "," fillNode( nextNode); "," } "," range. setEndAfter( hr). collapse( false ); "," } ",""," range. select( true ); ",""," } ",""," } "," } ; ","} ; "];
+_$jscoverage['plugins/pagebreak.js'][7]++;
+UE.plugins.pagebreak = (function () {
+ _$jscoverage['plugins/pagebreak.js'][8]++;
+ var me = this, notBreakTags = ["td"];
+ _$jscoverage['plugins/pagebreak.js'][10]++;
+ me.setOpt("pageBreakTag", "_ueditor_page_break_tag_");
+ _$jscoverage['plugins/pagebreak.js'][12]++;
+ function fillNode(node) {
+ _$jscoverage['plugins/pagebreak.js'][13]++;
+ if (domUtils.isEmptyBlock(node)) {
+ _$jscoverage['plugins/pagebreak.js'][14]++;
+ var firstChild = node.firstChild, tmpNode;
+ _$jscoverage['plugins/pagebreak.js'][16]++;
+ while ((firstChild && (firstChild.nodeType == 1) && domUtils.isEmptyBlock(firstChild))) {
+ _$jscoverage['plugins/pagebreak.js'][17]++;
+ tmpNode = firstChild;
+ _$jscoverage['plugins/pagebreak.js'][18]++;
+ firstChild = firstChild.firstChild;
+}
+ _$jscoverage['plugins/pagebreak.js'][20]++;
+ ((! tmpNode) && (tmpNode = node));
+ _$jscoverage['plugins/pagebreak.js'][21]++;
+ domUtils.fillNode(me.document, tmpNode);
+ }
+}
+ _$jscoverage['plugins/pagebreak.js'][26]++;
+ me.ready((function () {
+ _$jscoverage['plugins/pagebreak.js'][27]++;
+ utils.cssRule("pagebreak", ".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}", me.document);
+}));
+ _$jscoverage['plugins/pagebreak.js'][29]++;
+ function isHr(node) {
+ _$jscoverage['plugins/pagebreak.js'][30]++;
+ return (node && (node.nodeType == 1) && (node.tagName == "HR") && (node.className == "pagebreak"));
+}
+ _$jscoverage['plugins/pagebreak.js'][32]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/pagebreak.js'][33]++;
+ root.traversal((function (node) {
+ _$jscoverage['plugins/pagebreak.js'][34]++;
+ if (((node.type == "text") && (node.data == me.options.pageBreakTag))) {
+ _$jscoverage['plugins/pagebreak.js'][35]++;
+ var hr = UE.uNode.createElement(" ");
+ _$jscoverage['plugins/pagebreak.js'][36]++;
+ node.parentNode.insertBefore(hr, node);
+ _$jscoverage['plugins/pagebreak.js'][37]++;
+ node.parentNode.removeChild(node);
+ }
+}));
+}));
+ _$jscoverage['plugins/pagebreak.js'][41]++;
+ me.addOutputRule((function (node) {
+ _$jscoverage['plugins/pagebreak.js'][42]++;
+ utils.each(node.getNodesByTagName("hr"), (function (n) {
+ _$jscoverage['plugins/pagebreak.js'][43]++;
+ if ((n.getAttr("class") == "pagebreak")) {
+ _$jscoverage['plugins/pagebreak.js'][44]++;
+ var txt = UE.uNode.createText(me.options.pageBreakTag);
+ _$jscoverage['plugins/pagebreak.js'][45]++;
+ n.parentNode.insertBefore(txt, n);
+ _$jscoverage['plugins/pagebreak.js'][46]++;
+ n.parentNode.removeChild(n);
+ }
+}));
+}));
+ _$jscoverage['plugins/pagebreak.js'][62]++;
+ me.commands.pagebreak = {execCommand: (function () {
+ _$jscoverage['plugins/pagebreak.js'][64]++;
+ var range = me.selection.getRange(), hr = me.document.createElement("hr");
+ _$jscoverage['plugins/pagebreak.js'][65]++;
+ domUtils.setAttributes(hr, {"class": "pagebreak", noshade: "noshade", size: "5"});
+ _$jscoverage['plugins/pagebreak.js'][70]++;
+ domUtils.unSelectable(hr);
+ _$jscoverage['plugins/pagebreak.js'][72]++;
+ var node = domUtils.findParentByTagName(range.startContainer, notBreakTags, true), parents = [], pN;
+ _$jscoverage['plugins/pagebreak.js'][75]++;
+ if (node) {
+ _$jscoverage['plugins/pagebreak.js'][76]++;
+ switch (node.tagName) {
+ case "TD":
+ _$jscoverage['plugins/pagebreak.js'][78]++;
+ pN = node.parentNode;
+ _$jscoverage['plugins/pagebreak.js'][79]++;
+ if ((! pN.previousSibling)) {
+ _$jscoverage['plugins/pagebreak.js'][80]++;
+ var table = domUtils.findParentByTagName(pN, "table");
+ _$jscoverage['plugins/pagebreak.js'][88]++;
+ table.parentNode.insertBefore(hr, table);
+ _$jscoverage['plugins/pagebreak.js'][89]++;
+ parents = domUtils.findParents(hr, true);
+ }
+ else {
+ _$jscoverage['plugins/pagebreak.js'][92]++;
+ pN.parentNode.insertBefore(hr, pN);
+ _$jscoverage['plugins/pagebreak.js'][93]++;
+ parents = domUtils.findParents(hr);
+ }
+ _$jscoverage['plugins/pagebreak.js'][96]++;
+ pN = parents[1];
+ _$jscoverage['plugins/pagebreak.js'][97]++;
+ if ((hr !== pN)) {
+ _$jscoverage['plugins/pagebreak.js'][98]++;
+ domUtils.breakParent(hr, pN);
+ }
+ _$jscoverage['plugins/pagebreak.js'][102]++;
+ me.fireEvent("afteradjusttable", me.document);
+ }
+ }
+ else {
+ _$jscoverage['plugins/pagebreak.js'][107]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/pagebreak.js'][108]++;
+ range.deleteContents();
+ _$jscoverage['plugins/pagebreak.js'][109]++;
+ var start = range.startContainer;
+ _$jscoverage['plugins/pagebreak.js'][110]++;
+ while (((! domUtils.isBody(start)) && domUtils.isBlockElm(start) && domUtils.isEmptyNode(start))) {
+ _$jscoverage['plugins/pagebreak.js'][111]++;
+ range.setStartBefore(start).collapse(true);
+ _$jscoverage['plugins/pagebreak.js'][112]++;
+ domUtils.remove(start);
+ _$jscoverage['plugins/pagebreak.js'][113]++;
+ start = range.startContainer;
+}
+ }
+ _$jscoverage['plugins/pagebreak.js'][117]++;
+ range.insertNode(hr);
+ _$jscoverage['plugins/pagebreak.js'][119]++;
+ var pN = hr.parentNode, nextNode;
+ _$jscoverage['plugins/pagebreak.js'][120]++;
+ while ((! domUtils.isBody(pN))) {
+ _$jscoverage['plugins/pagebreak.js'][121]++;
+ domUtils.breakParent(hr, pN);
+ _$jscoverage['plugins/pagebreak.js'][122]++;
+ nextNode = hr.nextSibling;
+ _$jscoverage['plugins/pagebreak.js'][123]++;
+ if ((nextNode && domUtils.isEmptyBlock(nextNode))) {
+ _$jscoverage['plugins/pagebreak.js'][124]++;
+ domUtils.remove(nextNode);
+ }
+ _$jscoverage['plugins/pagebreak.js'][126]++;
+ pN = hr.parentNode;
+}
+ _$jscoverage['plugins/pagebreak.js'][128]++;
+ nextNode = hr.nextSibling;
+ _$jscoverage['plugins/pagebreak.js'][129]++;
+ var pre = hr.previousSibling;
+ _$jscoverage['plugins/pagebreak.js'][130]++;
+ if (isHr(pre)) {
+ _$jscoverage['plugins/pagebreak.js'][131]++;
+ domUtils.remove(pre);
+ }
+ else {
+ _$jscoverage['plugins/pagebreak.js'][133]++;
+ (pre && fillNode(pre));
+ }
+ _$jscoverage['plugins/pagebreak.js'][136]++;
+ if ((! nextNode)) {
+ _$jscoverage['plugins/pagebreak.js'][137]++;
+ var p = me.document.createElement("p");
+ _$jscoverage['plugins/pagebreak.js'][139]++;
+ hr.parentNode.appendChild(p);
+ _$jscoverage['plugins/pagebreak.js'][140]++;
+ domUtils.fillNode(me.document, p);
+ _$jscoverage['plugins/pagebreak.js'][141]++;
+ range.setStart(p, 0).collapse(true);
+ }
+ else {
+ _$jscoverage['plugins/pagebreak.js'][143]++;
+ if (isHr(nextNode)) {
+ _$jscoverage['plugins/pagebreak.js'][144]++;
+ domUtils.remove(nextNode);
+ }
+ else {
+ _$jscoverage['plugins/pagebreak.js'][146]++;
+ fillNode(nextNode);
+ }
+ _$jscoverage['plugins/pagebreak.js'][148]++;
+ range.setEndAfter(hr).collapse(false);
+ }
+ _$jscoverage['plugins/pagebreak.js'][151]++;
+ range.select(true);
+ }
+})};
+});
diff --git a/_test/coverage/plugins/paragraph.js b/_test/coverage/plugins/paragraph.js
new file mode 100644
index 000000000..33ceb78b6
--- /dev/null
+++ b/_test/coverage/plugins/paragraph.js
@@ -0,0 +1,290 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/paragraph.js']) {
+ _$jscoverage['plugins/paragraph.js'] = [];
+ _$jscoverage['plugins/paragraph.js'][47] = 0;
+ _$jscoverage['plugins/paragraph.js'][48] = 0;
+ _$jscoverage['plugins/paragraph.js'][53] = 0;
+ _$jscoverage['plugins/paragraph.js'][55] = 0;
+ _$jscoverage['plugins/paragraph.js'][59] = 0;
+ _$jscoverage['plugins/paragraph.js'][60] = 0;
+ _$jscoverage['plugins/paragraph.js'][64] = 0;
+ _$jscoverage['plugins/paragraph.js'][65] = 0;
+ _$jscoverage['plugins/paragraph.js'][66] = 0;
+ _$jscoverage['plugins/paragraph.js'][67] = 0;
+ _$jscoverage['plugins/paragraph.js'][68] = 0;
+ _$jscoverage['plugins/paragraph.js'][69] = 0;
+ _$jscoverage['plugins/paragraph.js'][70] = 0;
+ _$jscoverage['plugins/paragraph.js'][73] = 0;
+ _$jscoverage['plugins/paragraph.js'][75] = 0;
+ _$jscoverage['plugins/paragraph.js'][76] = 0;
+ _$jscoverage['plugins/paragraph.js'][77] = 0;
+ _$jscoverage['plugins/paragraph.js'][78] = 0;
+ _$jscoverage['plugins/paragraph.js'][79] = 0;
+ _$jscoverage['plugins/paragraph.js'][82] = 0;
+ _$jscoverage['plugins/paragraph.js'][84] = 0;
+ _$jscoverage['plugins/paragraph.js'][85] = 0;
+ _$jscoverage['plugins/paragraph.js'][89] = 0;
+ _$jscoverage['plugins/paragraph.js'][91] = 0;
+ _$jscoverage['plugins/paragraph.js'][93] = 0;
+ _$jscoverage['plugins/paragraph.js'][95] = 0;
+ _$jscoverage['plugins/paragraph.js'][96] = 0;
+ _$jscoverage['plugins/paragraph.js'][98] = 0;
+ _$jscoverage['plugins/paragraph.js'][100] = 0;
+ _$jscoverage['plugins/paragraph.js'][101] = 0;
+ _$jscoverage['plugins/paragraph.js'][102] = 0;
+ _$jscoverage['plugins/paragraph.js'][106] = 0;
+ _$jscoverage['plugins/paragraph.js'][107] = 0;
+ _$jscoverage['plugins/paragraph.js'][108] = 0;
+ _$jscoverage['plugins/paragraph.js'][109] = 0;
+ _$jscoverage['plugins/paragraph.js'][111] = 0;
+ _$jscoverage['plugins/paragraph.js'][112] = 0;
+ _$jscoverage['plugins/paragraph.js'][114] = 0;
+ _$jscoverage['plugins/paragraph.js'][118] = 0;
+ _$jscoverage['plugins/paragraph.js'][119] = 0;
+ _$jscoverage['plugins/paragraph.js'][121] = 0;
+ _$jscoverage['plugins/paragraph.js'][125] = 0;
+ _$jscoverage['plugins/paragraph.js'][127] = 0;
+ _$jscoverage['plugins/paragraph.js'][130] = 0;
+ _$jscoverage['plugins/paragraph.js'][132] = 0;
+ _$jscoverage['plugins/paragraph.js'][133] = 0;
+ _$jscoverage['plugins/paragraph.js'][135] = 0;
+ _$jscoverage['plugins/paragraph.js'][137] = 0;
+ _$jscoverage['plugins/paragraph.js'][138] = 0;
+ _$jscoverage['plugins/paragraph.js'][139] = 0;
+ _$jscoverage['plugins/paragraph.js'][141] = 0;
+ _$jscoverage['plugins/paragraph.js'][142] = 0;
+ _$jscoverage['plugins/paragraph.js'][143] = 0;
+ _$jscoverage['plugins/paragraph.js'][144] = 0;
+ _$jscoverage['plugins/paragraph.js'][146] = 0;
+ _$jscoverage['plugins/paragraph.js'][147] = 0;
+ _$jscoverage['plugins/paragraph.js'][148] = 0;
+ _$jscoverage['plugins/paragraph.js'][153] = 0;
+ _$jscoverage['plugins/paragraph.js'][154] = 0;
+ _$jscoverage['plugins/paragraph.js'][155] = 0;
+ _$jscoverage['plugins/paragraph.js'][156] = 0;
+ _$jscoverage['plugins/paragraph.js'][158] = 0;
+ _$jscoverage['plugins/paragraph.js'][160] = 0;
+ _$jscoverage['plugins/paragraph.js'][161] = 0;
+ _$jscoverage['plugins/paragraph.js'][166] = 0;
+ _$jscoverage['plugins/paragraph.js'][167] = 0;
+ _$jscoverage['plugins/paragraph.js'][168] = 0;
+ _$jscoverage['plugins/paragraph.js'][169] = 0;
+ _$jscoverage['plugins/paragraph.js'][173] = 0;
+ _$jscoverage['plugins/paragraph.js'][176] = 0;
+ _$jscoverage['plugins/paragraph.js'][179] = 0;
+ _$jscoverage['plugins/paragraph.js'][180] = 0;
+}
+_$jscoverage['plugins/paragraph.js'].source = ["/** "," * 段落样式 "," * @file "," * @since 1.2.6.1 "," */ ","/** "," * 对选区内文本添加相应标签嵌套 "," * @command Paragraph "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' "," * @param {Object} attrs 标签的属性 "," * @example "," * ```javascript "," * editor.execCommand( 'Paragraph','h1','{ "," * color:'#000' "," * }' ); "," * ``` "," */ ","/** "," * 对选区内文本添加相应标签嵌套 "," * @command Paragraph "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' "," * @param {Object} attrs 标签的属性 "," * @param {String} sourceCmdName 对与customstyle特殊处理 "," * @example "," * ```javascript "," * editor.execCommand( 'Paragraph','h1','{ "," * color:'#000' "," * }' ); "," * ``` "," */ ","/** "," * 返回选区内节点标签名 "," * @command Paragraph "," * @method queryCommandValue "," * @param { String } cmd 命令字符串 "," * @return { String } 节点标签名 "," * @example "," * ```javascript "," * editor.queryCommandValue( 'Paragraph' ); "," * ``` "," */ ","","UE. plugins[ 'paragraph' ] = function () { "," var me = this , "," block = domUtils. isBlockElm, "," notExchange = [ 'TD' , 'LI' , 'PRE' ], ",""," doParagraph = function ( range, style, attrs, sourceCmdName) { "," var bookmark = range. createBookmark(), "," filterFn = function ( node ) { "," return node. nodeType == 1 ? node. tagName. toLowerCase() != 'br' && ! domUtils. isBookmarkNode( node) : ! domUtils. isWhitespace( node ); "," } , "," para; ",""," range. enlarge( true ); "," var bookmark2 = range. createBookmark(), "," current = domUtils. getNextDomNode( bookmark2. start, false , filterFn ), "," tmpRange = range. cloneRange(), "," tmpNode; "," while ( current && !( domUtils. getPosition( current, bookmark2. end ) & domUtils. POSITION_FOLLOWING) ) { "," if ( current. nodeType == 3 || ! block( current ) ) { "," tmpRange. setStartBefore( current ); "," while ( current && current !== bookmark2. end && ! block( current ) ) { "," tmpNode = current; "," current = domUtils. getNextDomNode( current, false , null , function ( node ) { "," return ! block( node ); "," } ); "," } "," tmpRange. setEndAfter( tmpNode ); "," "," para = range. document. createElement( style ); "," if ( attrs) { "," domUtils. setAttributes( para, attrs); "," if ( sourceCmdName && sourceCmdName == 'customstyle' && attrs. style) { "," para. style. cssText = attrs. style; "," } "," } "," para. appendChild( tmpRange. extractContents() ); "," //需要内容占位 "," if ( domUtils. isEmptyNode( para)) { "," domUtils. fillChar( range. document, para); "," "," } ",""," tmpRange. insertNode( para ); ",""," var parent = para. parentNode; "," //如果para上一级是一个block元素且不是body,td就删除它 "," if ( block( parent ) && ! domUtils. isBody( para. parentNode ) && utils. indexOf( notExchange, parent. tagName)==- 1 ) { "," //存储dir,style "," if (!( sourceCmdName && sourceCmdName == 'customstyle' )) { "," parent. getAttribute( 'dir' ) && para. setAttribute( 'dir' , parent. getAttribute( 'dir' )); "," //trace:1070 "," parent. style. cssText && ( para. style. cssText = parent. style. cssText + ';' + para. style. cssText); "," //trace:1030 "," parent. style. textAlign && ! para. style. textAlign && ( para. style. textAlign = parent. style. textAlign); "," parent. style. textIndent && ! para. style. textIndent && ( para. style. textIndent = parent. style. textIndent); "," parent. style. padding && ! para. style. padding && ( para. style. padding = parent. style. padding); "," } ",""," //trace:1706 选择的就是h1-6要删除 "," if ( attrs && /h\\d/i . test( parent. tagName) && ! /h\\d/i . test( para. tagName) ) { "," domUtils. setAttributes( parent, attrs); "," if ( sourceCmdName && sourceCmdName == 'customstyle' && attrs. style) { "," parent. style. cssText = attrs. style; "," } "," domUtils. remove( para, true ); "," para = parent; "," } else { "," domUtils. remove( para. parentNode, true ); "," } ",""," } "," if ( utils. indexOf( notExchange, parent. tagName)!=- 1 ) { "," current = parent; "," } else { "," current = para; "," } ","",""," current = domUtils. getNextDomNode( current, false , filterFn ); "," } else { "," current = domUtils. getNextDomNode( current, true , filterFn ); "," } "," } "," return range. moveToBookmark( bookmark2 ). moveToBookmark( bookmark ); "," } ; "," me. setOpt( 'paragraph' , { 'p' : '' , 'h1' : '' , 'h2' : '' , 'h3' : '' , 'h4' : '' , 'h5' : '' , 'h6' : '' } ); "," me. commands[ 'paragraph' ] = { "," execCommand : function ( cmdName, style, attrs, sourceCmdName ) { "," var range = this . selection. getRange(); "," //闭合时单独处理 "," if ( range. collapsed) { "," var txt = this . document. createTextNode( 'p' ); "," range. insertNode( txt); "," //去掉冗余的fillchar "," if ( browser. ie) { "," var node = txt. previousSibling; "," if ( node && domUtils. isWhitespace( node)) { "," domUtils. remove( node); "," } "," node = txt. nextSibling; "," if ( node && domUtils. isWhitespace( node)) { "," domUtils. remove( node); "," } "," } ",""," } "," range = doParagraph( range, style, attrs, sourceCmdName); "," if ( txt) { "," range. setStartBefore( txt). collapse( true ); "," pN = txt. parentNode; ",""," domUtils. remove( txt); ",""," if ( domUtils. isBlockElm( pN)&& domUtils. isEmptyNode( pN)) { "," domUtils. fillNode( this . document, pN); "," } ",""," } ",""," if ( browser. gecko && range. collapsed && range. startContainer. nodeType == 1 ) { "," var child = range. startContainer. childNodes[ range. startOffset]; "," if ( child && child. nodeType == 1 && child. tagName. toLowerCase() == style) { "," range. setStart( child, 0 ). collapse( true ); "," } "," } "," //trace:1097 原来有true,原因忘了,但去了就不能清除多余的占位符了 "," range. select(); ","",""," return true ; "," } , "," queryCommandValue : function () { "," var node = domUtils. filterNodeList( this . selection. getStartElementPath(), 'p h1 h2 h3 h4 h5 h6' ); "," return node ? node. tagName. toLowerCase() : '' ; "," } "," } ; ","} ; "];
+_$jscoverage['plugins/paragraph.js'][47]++;
+UE.plugins.paragraph = (function () {
+ _$jscoverage['plugins/paragraph.js'][48]++;
+ var me = this, block = domUtils.isBlockElm, notExchange = ["TD", "LI", "PRE"], doParagraph = (function (range, style, attrs, sourceCmdName) {
+ _$jscoverage['plugins/paragraph.js'][53]++;
+ var bookmark = range.createBookmark(), filterFn = (function (node) {
+ _$jscoverage['plugins/paragraph.js'][55]++;
+ return ((node.nodeType == 1)? ((node.tagName.toLowerCase() != "br") && (! domUtils.isBookmarkNode(node))): (! domUtils.isWhitespace(node)));
+}), para;
+ _$jscoverage['plugins/paragraph.js'][59]++;
+ range.enlarge(true);
+ _$jscoverage['plugins/paragraph.js'][60]++;
+ var bookmark2 = range.createBookmark(), current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), tmpRange = range.cloneRange(), tmpNode;
+ _$jscoverage['plugins/paragraph.js'][64]++;
+ while ((current && (! (domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)))) {
+ _$jscoverage['plugins/paragraph.js'][65]++;
+ if (((current.nodeType == 3) || (! block(current)))) {
+ _$jscoverage['plugins/paragraph.js'][66]++;
+ tmpRange.setStartBefore(current);
+ _$jscoverage['plugins/paragraph.js'][67]++;
+ while ((current && (current !== bookmark2.end) && (! block(current)))) {
+ _$jscoverage['plugins/paragraph.js'][68]++;
+ tmpNode = current;
+ _$jscoverage['plugins/paragraph.js'][69]++;
+ current = domUtils.getNextDomNode(current, false, null, (function (node) {
+ _$jscoverage['plugins/paragraph.js'][70]++;
+ return (! block(node));
+}));
+}
+ _$jscoverage['plugins/paragraph.js'][73]++;
+ tmpRange.setEndAfter(tmpNode);
+ _$jscoverage['plugins/paragraph.js'][75]++;
+ para = range.document.createElement(style);
+ _$jscoverage['plugins/paragraph.js'][76]++;
+ if (attrs) {
+ _$jscoverage['plugins/paragraph.js'][77]++;
+ domUtils.setAttributes(para, attrs);
+ _$jscoverage['plugins/paragraph.js'][78]++;
+ if ((sourceCmdName && (sourceCmdName == "customstyle") && attrs.style)) {
+ _$jscoverage['plugins/paragraph.js'][79]++;
+ para.style.cssText = attrs.style;
+ }
+ }
+ _$jscoverage['plugins/paragraph.js'][82]++;
+ para.appendChild(tmpRange.extractContents());
+ _$jscoverage['plugins/paragraph.js'][84]++;
+ if (domUtils.isEmptyNode(para)) {
+ _$jscoverage['plugins/paragraph.js'][85]++;
+ domUtils.fillChar(range.document, para);
+ }
+ _$jscoverage['plugins/paragraph.js'][89]++;
+ tmpRange.insertNode(para);
+ _$jscoverage['plugins/paragraph.js'][91]++;
+ var parent = para.parentNode;
+ _$jscoverage['plugins/paragraph.js'][93]++;
+ if ((block(parent) && (! domUtils.isBody(para.parentNode)) && (utils.indexOf(notExchange, parent.tagName) == -1))) {
+ _$jscoverage['plugins/paragraph.js'][95]++;
+ if ((! (sourceCmdName && (sourceCmdName == "customstyle")))) {
+ _$jscoverage['plugins/paragraph.js'][96]++;
+ (parent.getAttribute("dir") && para.setAttribute("dir", parent.getAttribute("dir")));
+ _$jscoverage['plugins/paragraph.js'][98]++;
+ (parent.style.cssText && (para.style.cssText = (parent.style.cssText + ";" + para.style.cssText)));
+ _$jscoverage['plugins/paragraph.js'][100]++;
+ (parent.style.textAlign && (! para.style.textAlign) && (para.style.textAlign = parent.style.textAlign));
+ _$jscoverage['plugins/paragraph.js'][101]++;
+ (parent.style.textIndent && (! para.style.textIndent) && (para.style.textIndent = parent.style.textIndent));
+ _$jscoverage['plugins/paragraph.js'][102]++;
+ (parent.style.padding && (! para.style.padding) && (para.style.padding = parent.style.padding));
+ }
+ _$jscoverage['plugins/paragraph.js'][106]++;
+ if ((attrs && /h\d/i.test(parent.tagName) && (! /h\d/i.test(para.tagName)))) {
+ _$jscoverage['plugins/paragraph.js'][107]++;
+ domUtils.setAttributes(parent, attrs);
+ _$jscoverage['plugins/paragraph.js'][108]++;
+ if ((sourceCmdName && (sourceCmdName == "customstyle") && attrs.style)) {
+ _$jscoverage['plugins/paragraph.js'][109]++;
+ parent.style.cssText = attrs.style;
+ }
+ _$jscoverage['plugins/paragraph.js'][111]++;
+ domUtils.remove(para, true);
+ _$jscoverage['plugins/paragraph.js'][112]++;
+ para = parent;
+ }
+ else {
+ _$jscoverage['plugins/paragraph.js'][114]++;
+ domUtils.remove(para.parentNode, true);
+ }
+ }
+ _$jscoverage['plugins/paragraph.js'][118]++;
+ if ((utils.indexOf(notExchange, parent.tagName) != -1)) {
+ _$jscoverage['plugins/paragraph.js'][119]++;
+ current = parent;
+ }
+ else {
+ _$jscoverage['plugins/paragraph.js'][121]++;
+ current = para;
+ }
+ _$jscoverage['plugins/paragraph.js'][125]++;
+ current = domUtils.getNextDomNode(current, false, filterFn);
+ }
+ else {
+ _$jscoverage['plugins/paragraph.js'][127]++;
+ current = domUtils.getNextDomNode(current, true, filterFn);
+ }
+}
+ _$jscoverage['plugins/paragraph.js'][130]++;
+ return range.moveToBookmark(bookmark2).moveToBookmark(bookmark);
+});
+ _$jscoverage['plugins/paragraph.js'][132]++;
+ me.setOpt("paragraph", {"p": "", "h1": "", "h2": "", "h3": "", "h4": "", "h5": "", "h6": ""});
+ _$jscoverage['plugins/paragraph.js'][133]++;
+ me.commands.paragraph = {execCommand: (function (cmdName, style, attrs, sourceCmdName) {
+ _$jscoverage['plugins/paragraph.js'][135]++;
+ var range = this.selection.getRange();
+ _$jscoverage['plugins/paragraph.js'][137]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/paragraph.js'][138]++;
+ var txt = this.document.createTextNode("p");
+ _$jscoverage['plugins/paragraph.js'][139]++;
+ range.insertNode(txt);
+ _$jscoverage['plugins/paragraph.js'][141]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/paragraph.js'][142]++;
+ var node = txt.previousSibling;
+ _$jscoverage['plugins/paragraph.js'][143]++;
+ if ((node && domUtils.isWhitespace(node))) {
+ _$jscoverage['plugins/paragraph.js'][144]++;
+ domUtils.remove(node);
+ }
+ _$jscoverage['plugins/paragraph.js'][146]++;
+ node = txt.nextSibling;
+ _$jscoverage['plugins/paragraph.js'][147]++;
+ if ((node && domUtils.isWhitespace(node))) {
+ _$jscoverage['plugins/paragraph.js'][148]++;
+ domUtils.remove(node);
+ }
+ }
+ }
+ _$jscoverage['plugins/paragraph.js'][153]++;
+ range = doParagraph(range, style, attrs, sourceCmdName);
+ _$jscoverage['plugins/paragraph.js'][154]++;
+ if (txt) {
+ _$jscoverage['plugins/paragraph.js'][155]++;
+ range.setStartBefore(txt).collapse(true);
+ _$jscoverage['plugins/paragraph.js'][156]++;
+ pN = txt.parentNode;
+ _$jscoverage['plugins/paragraph.js'][158]++;
+ domUtils.remove(txt);
+ _$jscoverage['plugins/paragraph.js'][160]++;
+ if ((domUtils.isBlockElm(pN) && domUtils.isEmptyNode(pN))) {
+ _$jscoverage['plugins/paragraph.js'][161]++;
+ domUtils.fillNode(this.document, pN);
+ }
+ }
+ _$jscoverage['plugins/paragraph.js'][166]++;
+ if ((browser.gecko && range.collapsed && (range.startContainer.nodeType == 1))) {
+ _$jscoverage['plugins/paragraph.js'][167]++;
+ var child = range.startContainer.childNodes[range.startOffset];
+ _$jscoverage['plugins/paragraph.js'][168]++;
+ if ((child && (child.nodeType == 1) && (child.tagName.toLowerCase() == style))) {
+ _$jscoverage['plugins/paragraph.js'][169]++;
+ range.setStart(child, 0).collapse(true);
+ }
+ }
+ _$jscoverage['plugins/paragraph.js'][173]++;
+ range.select();
+ _$jscoverage['plugins/paragraph.js'][176]++;
+ return true;
+}), queryCommandValue: (function () {
+ _$jscoverage['plugins/paragraph.js'][179]++;
+ var node = domUtils.filterNodeList(this.selection.getStartElementPath(), "p h1 h2 h3 h4 h5 h6");
+ _$jscoverage['plugins/paragraph.js'][180]++;
+ return (node? node.tagName.toLowerCase(): "");
+})};
+});
diff --git a/_test/coverage/plugins/paste.js b/_test/coverage/plugins/paste.js
new file mode 100644
index 000000000..df0dde7f3
--- /dev/null
+++ b/_test/coverage/plugins/paste.js
@@ -0,0 +1,574 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/paste.js']) {
+ _$jscoverage['plugins/paste.js'] = [];
+ _$jscoverage['plugins/paste.js'][12] = 0;
+ _$jscoverage['plugins/paste.js'][13] = 0;
+ _$jscoverage['plugins/paste.js'][14] = 0;
+ _$jscoverage['plugins/paste.js'][15] = 0;
+ _$jscoverage['plugins/paste.js'][16] = 0;
+ _$jscoverage['plugins/paste.js'][18] = 0;
+ _$jscoverage['plugins/paste.js'][22] = 0;
+ _$jscoverage['plugins/paste.js'][24] = 0;
+ _$jscoverage['plugins/paste.js'][25] = 0;
+ _$jscoverage['plugins/paste.js'][28] = 0;
+ _$jscoverage['plugins/paste.js'][29] = 0;
+ _$jscoverage['plugins/paste.js'][33] = 0;
+ _$jscoverage['plugins/paste.js'][35] = 0;
+ _$jscoverage['plugins/paste.js'][36] = 0;
+ _$jscoverage['plugins/paste.js'][37] = 0;
+ _$jscoverage['plugins/paste.js'][38] = 0;
+ _$jscoverage['plugins/paste.js'][39] = 0;
+ _$jscoverage['plugins/paste.js'][41] = 0;
+ _$jscoverage['plugins/paste.js'][42] = 0;
+ _$jscoverage['plugins/paste.js'][46] = 0;
+ _$jscoverage['plugins/paste.js'][47] = 0;
+ _$jscoverage['plugins/paste.js'][50] = 0;
+ _$jscoverage['plugins/paste.js'][51] = 0;
+ _$jscoverage['plugins/paste.js'][55] = 0;
+ _$jscoverage['plugins/paste.js'][57] = 0;
+ _$jscoverage['plugins/paste.js'][59] = 0;
+ _$jscoverage['plugins/paste.js'][60] = 0;
+ _$jscoverage['plugins/paste.js'][61] = 0;
+ _$jscoverage['plugins/paste.js'][63] = 0;
+ _$jscoverage['plugins/paste.js'][64] = 0;
+ _$jscoverage['plugins/paste.js'][65] = 0;
+ _$jscoverage['plugins/paste.js'][66] = 0;
+ _$jscoverage['plugins/paste.js'][70] = 0;
+ _$jscoverage['plugins/paste.js'][72] = 0;
+ _$jscoverage['plugins/paste.js'][73] = 0;
+ _$jscoverage['plugins/paste.js'][74] = 0;
+ _$jscoverage['plugins/paste.js'][75] = 0;
+ _$jscoverage['plugins/paste.js'][76] = 0;
+ _$jscoverage['plugins/paste.js'][77] = 0;
+ _$jscoverage['plugins/paste.js'][80] = 0;
+ _$jscoverage['plugins/paste.js'][81] = 0;
+ _$jscoverage['plugins/paste.js'][82] = 0;
+ _$jscoverage['plugins/paste.js'][83] = 0;
+ _$jscoverage['plugins/paste.js'][84] = 0;
+ _$jscoverage['plugins/paste.js'][85] = 0;
+ _$jscoverage['plugins/paste.js'][87] = 0;
+ _$jscoverage['plugins/paste.js'][90] = 0;
+ _$jscoverage['plugins/paste.js'][91] = 0;
+ _$jscoverage['plugins/paste.js'][92] = 0;
+ _$jscoverage['plugins/paste.js'][95] = 0;
+ _$jscoverage['plugins/paste.js'][96] = 0;
+ _$jscoverage['plugins/paste.js'][97] = 0;
+ _$jscoverage['plugins/paste.js'][98] = 0;
+ _$jscoverage['plugins/paste.js'][102] = 0;
+ _$jscoverage['plugins/paste.js'][103] = 0;
+ _$jscoverage['plugins/paste.js'][104] = 0;
+ _$jscoverage['plugins/paste.js'][105] = 0;
+ _$jscoverage['plugins/paste.js'][108] = 0;
+ _$jscoverage['plugins/paste.js'][109] = 0;
+ _$jscoverage['plugins/paste.js'][110] = 0;
+ _$jscoverage['plugins/paste.js'][111] = 0;
+ _$jscoverage['plugins/paste.js'][116] = 0;
+ _$jscoverage['plugins/paste.js'][119] = 0;
+ _$jscoverage['plugins/paste.js'][121] = 0;
+ _$jscoverage['plugins/paste.js'][123] = 0;
+ _$jscoverage['plugins/paste.js'][124] = 0;
+ _$jscoverage['plugins/paste.js'][127] = 0;
+ _$jscoverage['plugins/paste.js'][129] = 0;
+ _$jscoverage['plugins/paste.js'][130] = 0;
+ _$jscoverage['plugins/paste.js'][131] = 0;
+ _$jscoverage['plugins/paste.js'][132] = 0;
+ _$jscoverage['plugins/paste.js'][134] = 0;
+ _$jscoverage['plugins/paste.js'][135] = 0;
+ _$jscoverage['plugins/paste.js'][136] = 0;
+ _$jscoverage['plugins/paste.js'][140] = 0;
+ _$jscoverage['plugins/paste.js'][141] = 0;
+ _$jscoverage['plugins/paste.js'][143] = 0;
+ _$jscoverage['plugins/paste.js'][144] = 0;
+ _$jscoverage['plugins/paste.js'][146] = 0;
+ _$jscoverage['plugins/paste.js'][148] = 0;
+ _$jscoverage['plugins/paste.js'][149] = 0;
+ _$jscoverage['plugins/paste.js'][152] = 0;
+ _$jscoverage['plugins/paste.js'][153] = 0;
+ _$jscoverage['plugins/paste.js'][155] = 0;
+ _$jscoverage['plugins/paste.js'][157] = 0;
+ _$jscoverage['plugins/paste.js'][158] = 0;
+ _$jscoverage['plugins/paste.js'][160] = 0;
+ _$jscoverage['plugins/paste.js'][164] = 0;
+ _$jscoverage['plugins/paste.js'][166] = 0;
+ _$jscoverage['plugins/paste.js'][167] = 0;
+ _$jscoverage['plugins/paste.js'][168] = 0;
+ _$jscoverage['plugins/paste.js'][170] = 0;
+ _$jscoverage['plugins/paste.js'][172] = 0;
+ _$jscoverage['plugins/paste.js'][174] = 0;
+ _$jscoverage['plugins/paste.js'][175] = 0;
+ _$jscoverage['plugins/paste.js'][176] = 0;
+ _$jscoverage['plugins/paste.js'][177] = 0;
+ _$jscoverage['plugins/paste.js'][178] = 0;
+ _$jscoverage['plugins/paste.js'][179] = 0;
+ _$jscoverage['plugins/paste.js'][181] = 0;
+ _$jscoverage['plugins/paste.js'][183] = 0;
+ _$jscoverage['plugins/paste.js'][184] = 0;
+ _$jscoverage['plugins/paste.js'][187] = 0;
+ _$jscoverage['plugins/paste.js'][188] = 0;
+ _$jscoverage['plugins/paste.js'][190] = 0;
+ _$jscoverage['plugins/paste.js'][194] = 0;
+ _$jscoverage['plugins/paste.js'][196] = 0;
+ _$jscoverage['plugins/paste.js'][197] = 0;
+ _$jscoverage['plugins/paste.js'][198] = 0;
+ _$jscoverage['plugins/paste.js'][199] = 0;
+ _$jscoverage['plugins/paste.js'][200] = 0;
+ _$jscoverage['plugins/paste.js'][201] = 0;
+ _$jscoverage['plugins/paste.js'][203] = 0;
+ _$jscoverage['plugins/paste.js'][204] = 0;
+ _$jscoverage['plugins/paste.js'][205] = 0;
+ _$jscoverage['plugins/paste.js'][208] = 0;
+ _$jscoverage['plugins/paste.js'][209] = 0;
+ _$jscoverage['plugins/paste.js'][211] = 0;
+ _$jscoverage['plugins/paste.js'][218] = 0;
+ _$jscoverage['plugins/paste.js'][219] = 0;
+ _$jscoverage['plugins/paste.js'][220] = 0;
+ _$jscoverage['plugins/paste.js'][221] = 0;
+ _$jscoverage['plugins/paste.js'][222] = 0;
+ _$jscoverage['plugins/paste.js'][223] = 0;
+ _$jscoverage['plugins/paste.js'][224] = 0;
+ _$jscoverage['plugins/paste.js'][225] = 0;
+ _$jscoverage['plugins/paste.js'][226] = 0;
+ _$jscoverage['plugins/paste.js'][228] = 0;
+ _$jscoverage['plugins/paste.js'][229] = 0;
+ _$jscoverage['plugins/paste.js'][234] = 0;
+ _$jscoverage['plugins/paste.js'][236] = 0;
+ _$jscoverage['plugins/paste.js'][238] = 0;
+ _$jscoverage['plugins/paste.js'][242] = 0;
+ _$jscoverage['plugins/paste.js'][245] = 0;
+ _$jscoverage['plugins/paste.js'][249] = 0;
+ _$jscoverage['plugins/paste.js'][250] = 0;
+ _$jscoverage['plugins/paste.js'][252] = 0;
+ _$jscoverage['plugins/paste.js'][253] = 0;
+ _$jscoverage['plugins/paste.js'][254] = 0;
+ _$jscoverage['plugins/paste.js'][255] = 0;
+ _$jscoverage['plugins/paste.js'][258] = 0;
+ _$jscoverage['plugins/paste.js'][260] = 0;
+ _$jscoverage['plugins/paste.js'][261] = 0;
+ _$jscoverage['plugins/paste.js'][264] = 0;
+ _$jscoverage['plugins/paste.js'][265] = 0;
+ _$jscoverage['plugins/paste.js'][266] = 0;
+ _$jscoverage['plugins/paste.js'][267] = 0;
+ _$jscoverage['plugins/paste.js'][268] = 0;
+ _$jscoverage['plugins/paste.js'][273] = 0;
+ _$jscoverage['plugins/paste.js'][274] = 0;
+ _$jscoverage['plugins/paste.js'][275] = 0;
+ _$jscoverage['plugins/paste.js'][277] = 0;
+ _$jscoverage['plugins/paste.js'][278] = 0;
+}
+_$jscoverage['plugins/paste.js'].source = ["///import core ","///import plugins/inserthtml.js ","///import plugins/undo.js ","///import plugins/serialize.js ","///commands 粘贴 ","///commandsName PastePlain ","///commandsTitle 纯文本粘贴模式 ","/* "," ** @description 粘贴 "," * @author zhanyi "," */ ","UE. plugins[ 'paste' ] = function () { "," function getClipboardData( callback) { "," var doc = this . document; "," if ( doc. getElementById( 'baidu_pastebin' )) { "," return ; "," } "," var range = this . selection. getRange(), "," bk = range. createBookmark(), "," //创建剪贴的容器div "," pastebin = doc. createElement( 'div' ); "," pastebin. id = 'baidu_pastebin' ; "," // Safari 要求div必须有内容,才能粘贴内容进来 "," browser. webkit && pastebin. appendChild( doc. createTextNode( domUtils. fillChar + domUtils. fillChar)); "," doc. body. appendChild( pastebin); "," //trace:717 隐藏的span不能得到top "," //bk.start.innerHTML = ' '; "," bk. start. style. display = '' ; "," pastebin. style. cssText = \"position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:\" + "," //要在现在光标平行的位置加入,否则会出现跳动的问题 "," domUtils. getXY( bk. start). y + 'px' ; ",""," range. selectNodeContents( pastebin). select( true ); ",""," setTimeout( function () { "," if ( browser. webkit) { "," for ( var i = 0 , pastebins = doc. querySelectorAll( '#baidu_pastebin' ), pi; pi = pastebins[ i++];) { "," if ( domUtils. isEmptyNode( pi)) { "," domUtils. remove( pi); "," } else { "," pastebin = pi; "," break ; "," } "," } "," } "," try { "," pastebin. parentNode. removeChild( pastebin); "," } catch ( e) { "," } "," range. moveToBookmark( bk). select( true ); "," callback( pastebin); "," } , 0 ); "," } ",""," var me = this ; ",""," var txtContent, htmlContent, address; ",""," function filter( div) { "," var html; "," if ( div. firstChild) { "," //去掉cut中添加的边界值 "," var nodes = domUtils. getElementsByTagName( div, 'span' ); "," for ( var i = 0 , ni; ni = nodes[ i++];) { "," if ( ni. id == '_baidu_cut_start' || ni. id == '_baidu_cut_end' ) { "," domUtils. remove( ni); "," } "," } ",""," if ( browser. webkit) { ",""," var brs = div. querySelectorAll( 'div br' ); "," for ( var i = 0 , bi; bi = brs[ i++];) { "," var pN = bi. parentNode; "," if ( pN. tagName == 'DIV' && pN. childNodes. length == 1 ) { "," pN. innerHTML = '<p><br/></p>' ; "," domUtils. remove( pN); "," } "," } "," var divs = div. querySelectorAll( '#baidu_pastebin' ); "," for ( var i = 0 , di; di = divs[ i++];) { "," var tmpP = me. document. createElement( 'p' ); "," di. parentNode. insertBefore( tmpP, di); "," while ( di. firstChild) { "," tmpP. appendChild( di. firstChild); "," } "," domUtils. remove( di); "," } ",""," var metas = div. querySelectorAll( 'meta' ); "," for ( var i = 0 , ci; ci = metas[ i++];) { "," domUtils. remove( ci); "," } ",""," var brs = div. querySelectorAll( 'br' ); "," for ( i = 0 ; ci = brs[ i++];) { "," if ( /^apple-/i . test( ci. className)) { "," domUtils. remove( ci); "," } "," } "," } "," if ( browser. gecko) { "," var dirtyNodes = div. querySelectorAll( '[_moz_dirty]' ); "," for ( i = 0 ; ci = dirtyNodes[ i++];) { "," ci. removeAttribute( '_moz_dirty' ); "," } "," } "," if (! browser. ie) { "," var spans = div. querySelectorAll( 'span.Apple-style-span' ); "," for ( var i = 0 , ci; ci = spans[ i++];) { "," domUtils. remove( ci, true ); "," } "," } ",""," //ie下使用innerHTML会产生多余的\\r\\n字符,也会产生 这里过滤掉 "," html = div. innerHTML; //.replace(/>(?:(\\s| )*?)</g,'><'); ",""," //过滤word粘贴过来的冗余属性 "," html = UE. filterWord( html); "," //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签 "," var root = UE. htmlparser( html); "," //如果给了过滤规则就先进行过滤 "," if ( me. options. filterRules) { "," UE. filterNode( root, me. options. filterRules); "," } "," //执行默认的处理 "," me. filterInputRule( root); "," //针对chrome的处理 "," if ( browser. webkit) { "," var br = root. lastChild(); "," if ( br && br. type == 'element' && br. tagName == 'br' ) { "," root. removeChild( br) "," } "," utils. each( me. body. querySelectorAll( 'div' ), function ( node) { "," if ( domUtils. isEmptyBlock( node)) { "," domUtils. remove( node) "," } "," } ) "," } "," html = { 'html' : root. toHtml() } ; "," me. fireEvent( 'beforepaste' , html, root); "," //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴 "," if (! html. html) { "," return ; "," } "," root = UE. htmlparser( html. html, true ); "," //如果开启了纯文本模式 "," if ( me. queryCommandState( 'pasteplain' ) === 1 ) { "," me. execCommand( 'insertHtml' , UE. filterNode( root, me. options. filterTxtRules). toHtml(), true ); "," } else { "," //文本模式 "," UE. filterNode( root, me. options. filterTxtRules); "," txtContent = root. toHtml(); "," //完全模式 "," htmlContent = html. html; ",""," address = me. selection. getRange(). createAddress( true ); "," me. execCommand( 'insertHtml' , htmlContent, true ); "," } "," me. fireEvent( \"afterpaste\" , html); "," } "," } ",""," me. addListener( 'pasteTransfer' , function ( cmd, plainType) { ",""," if ( address && txtContent && htmlContent && txtContent != htmlContent) { "," var range = me. selection. getRange(); "," range. moveToAddress( address, true ); ",""," if (! range. collapsed) { ",""," while (! domUtils. isBody( range. startContainer) "," ) { "," var start = range. startContainer; "," if ( start. nodeType == 1 ) { "," start = start. childNodes[ range. startOffset]; "," if (! start) { "," range. setStartBefore( range. startContainer); "," continue ; "," } "," var pre = start. previousSibling; ",""," if ( pre && pre. nodeType == 3 && new RegExp( '^[ \\n\\r\\t ' + domUtils. fillChar+ ']*$' ). test( pre. nodeValue)) { "," range. setStartBefore( pre) "," } "," } "," if ( range. startOffset == 0 ) { "," range. setStartBefore( range. startContainer); "," } else { "," break ; "," } ",""," } "," while (! domUtils. isBody( range. endContainer) "," ) { "," var end = range. endContainer; "," if ( end. nodeType == 1 ) { "," end = end. childNodes[ range. endOffset]; "," if (! end) { "," range. setEndAfter( range. endContainer); "," continue ; "," } "," var next = end. nextSibling; "," if ( next && next. nodeType == 3 && new RegExp( '^[ \\n\\r\\t ' + domUtils. fillChar+ ']*$' ). test( next. nodeValue)) { "," range. setEndAfter( next) "," } "," } "," if ( range. endOffset == range. endContainer[ range. endContainer. nodeType == 3 ? 'nodeValue' : 'childNodes' ]. length) { "," range. setEndAfter( range. endContainer); "," } else { "," break ; "," } ",""," } ",""," } ",""," range. deleteContents(); "," range. select( true ); "," me. __hasEnterExecCommand = true ; "," var html = htmlContent; "," if ( plainType === 2 ) { "," html = html. replace( /<(\\/?)([\\w\\-]+)([^>]*)>/gi , function ( a, b, tagName, attrs) { "," tagName = tagName. toLowerCase(); "," if ( { img: 1 } [ tagName]) { "," return a; "," } "," attrs = attrs. replace( /([\\w\\-]*?)\\s*=\\s*((\"([^\"]*)\")|('([^']*)')|([^\\s>]+))/gi , function ( str, atr, val) { "," if ( { "," 'src' : 1 , "," 'href' : 1 , "," 'name' : 1 "," } [ atr. toLowerCase()]) { "," return atr + '=' + val + ' ' "," } "," return '' "," } ); "," if ( { "," 'span' : 1 , "," 'div' : 1 "," } [ tagName]) { "," return '' "," } else { ",""," return '<' + b + tagName + ' ' + utils. trim( attrs) + '>' "," } ",""," } ); "," } else if ( plainType) { "," html = txtContent; "," } "," me. execCommand( 'inserthtml' , html, true ); "," me. __hasEnterExecCommand = false ; "," var rng = me. selection. getRange(); "," while (! domUtils. isBody( rng. startContainer) && ! rng. startOffset && "," rng. startContainer[ rng. startContainer. nodeType == 3 ? 'nodeValue' : 'childNodes' ]. length"," ) { "," rng. setStartBefore( rng. startContainer); "," } "," var tmpAddress = rng. createAddress( true ); "," address. endAddress = tmpAddress. startAddress; "," } "," } ); "," me. addListener( 'ready' , function () { "," domUtils. on( me. body, 'cut' , function () { "," var range = me. selection. getRange(); "," if (! range. collapsed && me. undoManger) { "," me. undoManger. save(); "," } "," } ); ",""," //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理 "," domUtils. on( me. body, browser. ie || browser. opera ? 'keydown' : 'paste' , function ( e) { "," if (( browser. ie || browser. opera) && ((! e. ctrlKey && ! e. metaKey) || e. keyCode != '86' )) { "," return ; "," } "," getClipboardData. call( me, function ( div) { "," filter( div); "," } ); "," } ); ",""," } ); ","} ; ",""];
+_$jscoverage['plugins/paste.js'][12]++;
+UE.plugins.paste = (function () {
+ _$jscoverage['plugins/paste.js'][13]++;
+ function getClipboardData(callback) {
+ _$jscoverage['plugins/paste.js'][14]++;
+ var doc = this.document;
+ _$jscoverage['plugins/paste.js'][15]++;
+ if (doc.getElementById("baidu_pastebin")) {
+ _$jscoverage['plugins/paste.js'][16]++;
+ return;
+ }
+ _$jscoverage['plugins/paste.js'][18]++;
+ var range = this.selection.getRange(), bk = range.createBookmark(), pastebin = doc.createElement("div");
+ _$jscoverage['plugins/paste.js'][22]++;
+ pastebin.id = "baidu_pastebin";
+ _$jscoverage['plugins/paste.js'][24]++;
+ (browser.webkit && pastebin.appendChild(doc.createTextNode((domUtils.fillChar + domUtils.fillChar))));
+ _$jscoverage['plugins/paste.js'][25]++;
+ doc.body.appendChild(pastebin);
+ _$jscoverage['plugins/paste.js'][28]++;
+ bk.start.style.display = "";
+ _$jscoverage['plugins/paste.js'][29]++;
+ pastebin.style.cssText = ("position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" + domUtils.getXY(bk.start).y + "px");
+ _$jscoverage['plugins/paste.js'][33]++;
+ range.selectNodeContents(pastebin).select(true);
+ _$jscoverage['plugins/paste.js'][35]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/paste.js'][36]++;
+ if (browser.webkit) {
+ _$jscoverage['plugins/paste.js'][37]++;
+ for (var i = 0, pastebins = doc.querySelectorAll("#baidu_pastebin"), pi; (pi = pastebins[(i++)]);) {
+ _$jscoverage['plugins/paste.js'][38]++;
+ if (domUtils.isEmptyNode(pi)) {
+ _$jscoverage['plugins/paste.js'][39]++;
+ domUtils.remove(pi);
+ }
+ else {
+ _$jscoverage['plugins/paste.js'][41]++;
+ pastebin = pi;
+ _$jscoverage['plugins/paste.js'][42]++;
+ break;
+ }
+}
+ }
+ _$jscoverage['plugins/paste.js'][46]++;
+ try {
+ _$jscoverage['plugins/paste.js'][47]++;
+ pastebin.parentNode.removeChild(pastebin);
+ }
+ catch (e) {
+ }
+ _$jscoverage['plugins/paste.js'][50]++;
+ range.moveToBookmark(bk).select(true);
+ _$jscoverage['plugins/paste.js'][51]++;
+ callback(pastebin);
+}), 0);
+}
+ _$jscoverage['plugins/paste.js'][55]++;
+ var me = this;
+ _$jscoverage['plugins/paste.js'][57]++;
+ var txtContent, htmlContent, address;
+ _$jscoverage['plugins/paste.js'][59]++;
+ function filter(div) {
+ _$jscoverage['plugins/paste.js'][60]++;
+ var html;
+ _$jscoverage['plugins/paste.js'][61]++;
+ if (div.firstChild) {
+ _$jscoverage['plugins/paste.js'][63]++;
+ var nodes = domUtils.getElementsByTagName(div, "span");
+ _$jscoverage['plugins/paste.js'][64]++;
+ for (var i = 0, ni; (ni = nodes[(i++)]);) {
+ _$jscoverage['plugins/paste.js'][65]++;
+ if (((ni.id == "_baidu_cut_start") || (ni.id == "_baidu_cut_end"))) {
+ _$jscoverage['plugins/paste.js'][66]++;
+ domUtils.remove(ni);
+ }
+}
+ _$jscoverage['plugins/paste.js'][70]++;
+ if (browser.webkit) {
+ _$jscoverage['plugins/paste.js'][72]++;
+ var brs = div.querySelectorAll("div br");
+ _$jscoverage['plugins/paste.js'][73]++;
+ for (var i = 0, bi; (bi = brs[(i++)]);) {
+ _$jscoverage['plugins/paste.js'][74]++;
+ var pN = bi.parentNode;
+ _$jscoverage['plugins/paste.js'][75]++;
+ if (((pN.tagName == "DIV") && (pN.childNodes.length == 1))) {
+ _$jscoverage['plugins/paste.js'][76]++;
+ pN.innerHTML = "
";
+ _$jscoverage['plugins/paste.js'][77]++;
+ domUtils.remove(pN);
+ }
+}
+ _$jscoverage['plugins/paste.js'][80]++;
+ var divs = div.querySelectorAll("#baidu_pastebin");
+ _$jscoverage['plugins/paste.js'][81]++;
+ for (var i = 0, di; (di = divs[(i++)]);) {
+ _$jscoverage['plugins/paste.js'][82]++;
+ var tmpP = me.document.createElement("p");
+ _$jscoverage['plugins/paste.js'][83]++;
+ di.parentNode.insertBefore(tmpP, di);
+ _$jscoverage['plugins/paste.js'][84]++;
+ while (di.firstChild) {
+ _$jscoverage['plugins/paste.js'][85]++;
+ tmpP.appendChild(di.firstChild);
+}
+ _$jscoverage['plugins/paste.js'][87]++;
+ domUtils.remove(di);
+}
+ _$jscoverage['plugins/paste.js'][90]++;
+ var metas = div.querySelectorAll("meta");
+ _$jscoverage['plugins/paste.js'][91]++;
+ for (var i = 0, ci; (ci = metas[(i++)]);) {
+ _$jscoverage['plugins/paste.js'][92]++;
+ domUtils.remove(ci);
+}
+ _$jscoverage['plugins/paste.js'][95]++;
+ var brs = div.querySelectorAll("br");
+ _$jscoverage['plugins/paste.js'][96]++;
+ for (i = 0; (ci = brs[(i++)]);) {
+ _$jscoverage['plugins/paste.js'][97]++;
+ if (/^apple-/i.test(ci.className)) {
+ _$jscoverage['plugins/paste.js'][98]++;
+ domUtils.remove(ci);
+ }
+}
+ }
+ _$jscoverage['plugins/paste.js'][102]++;
+ if (browser.gecko) {
+ _$jscoverage['plugins/paste.js'][103]++;
+ var dirtyNodes = div.querySelectorAll("[_moz_dirty]");
+ _$jscoverage['plugins/paste.js'][104]++;
+ for (i = 0; (ci = dirtyNodes[(i++)]);) {
+ _$jscoverage['plugins/paste.js'][105]++;
+ ci.removeAttribute("_moz_dirty");
+}
+ }
+ _$jscoverage['plugins/paste.js'][108]++;
+ if ((! browser.ie)) {
+ _$jscoverage['plugins/paste.js'][109]++;
+ var spans = div.querySelectorAll("span.Apple-style-span");
+ _$jscoverage['plugins/paste.js'][110]++;
+ for (var i = 0, ci = ci; (ci = spans[(i++)]);) {
+ _$jscoverage['plugins/paste.js'][111]++;
+ domUtils.remove(ci, true);
+}
+ }
+ _$jscoverage['plugins/paste.js'][116]++;
+ html = div.innerHTML;
+ _$jscoverage['plugins/paste.js'][119]++;
+ html = UE.filterWord(html);
+ _$jscoverage['plugins/paste.js'][121]++;
+ var root = UE.htmlparser(html);
+ _$jscoverage['plugins/paste.js'][123]++;
+ if (me.options.filterRules) {
+ _$jscoverage['plugins/paste.js'][124]++;
+ UE.filterNode(root, me.options.filterRules);
+ }
+ _$jscoverage['plugins/paste.js'][127]++;
+ me.filterInputRule(root);
+ _$jscoverage['plugins/paste.js'][129]++;
+ if (browser.webkit) {
+ _$jscoverage['plugins/paste.js'][130]++;
+ var br = root.lastChild();
+ _$jscoverage['plugins/paste.js'][131]++;
+ if ((br && (br.type == "element") && (br.tagName == "br"))) {
+ _$jscoverage['plugins/paste.js'][132]++;
+ root.removeChild(br);
+ }
+ _$jscoverage['plugins/paste.js'][134]++;
+ utils.each(me.body.querySelectorAll("div"), (function (node) {
+ _$jscoverage['plugins/paste.js'][135]++;
+ if (domUtils.isEmptyBlock(node)) {
+ _$jscoverage['plugins/paste.js'][136]++;
+ domUtils.remove(node);
+ }
+}));
+ }
+ _$jscoverage['plugins/paste.js'][140]++;
+ html = {"html": root.toHtml()};
+ _$jscoverage['plugins/paste.js'][141]++;
+ me.fireEvent("beforepaste", html, root);
+ _$jscoverage['plugins/paste.js'][143]++;
+ if ((! html.html)) {
+ _$jscoverage['plugins/paste.js'][144]++;
+ return;
+ }
+ _$jscoverage['plugins/paste.js'][146]++;
+ root = UE.htmlparser(html.html, true);
+ _$jscoverage['plugins/paste.js'][148]++;
+ if ((me.queryCommandState("pasteplain") === 1)) {
+ _$jscoverage['plugins/paste.js'][149]++;
+ me.execCommand("insertHtml", UE.filterNode(root, me.options.filterTxtRules).toHtml(), true);
+ }
+ else {
+ _$jscoverage['plugins/paste.js'][152]++;
+ UE.filterNode(root, me.options.filterTxtRules);
+ _$jscoverage['plugins/paste.js'][153]++;
+ txtContent = root.toHtml();
+ _$jscoverage['plugins/paste.js'][155]++;
+ htmlContent = html.html;
+ _$jscoverage['plugins/paste.js'][157]++;
+ address = me.selection.getRange().createAddress(true);
+ _$jscoverage['plugins/paste.js'][158]++;
+ me.execCommand("insertHtml", htmlContent, true);
+ }
+ _$jscoverage['plugins/paste.js'][160]++;
+ me.fireEvent("afterpaste", html);
+ }
+}
+ _$jscoverage['plugins/paste.js'][164]++;
+ me.addListener("pasteTransfer", (function (cmd, plainType) {
+ _$jscoverage['plugins/paste.js'][166]++;
+ if ((address && txtContent && htmlContent && (txtContent != htmlContent))) {
+ _$jscoverage['plugins/paste.js'][167]++;
+ var range = me.selection.getRange();
+ _$jscoverage['plugins/paste.js'][168]++;
+ range.moveToAddress(address, true);
+ _$jscoverage['plugins/paste.js'][170]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/paste.js'][172]++;
+ while ((! domUtils.isBody(range.startContainer))) {
+ _$jscoverage['plugins/paste.js'][174]++;
+ var start = range.startContainer;
+ _$jscoverage['plugins/paste.js'][175]++;
+ if ((start.nodeType == 1)) {
+ _$jscoverage['plugins/paste.js'][176]++;
+ start = start.childNodes[range.startOffset];
+ _$jscoverage['plugins/paste.js'][177]++;
+ if ((! start)) {
+ _$jscoverage['plugins/paste.js'][178]++;
+ range.setStartBefore(range.startContainer);
+ _$jscoverage['plugins/paste.js'][179]++;
+ continue;
+ }
+ _$jscoverage['plugins/paste.js'][181]++;
+ var pre = start.previousSibling;
+ _$jscoverage['plugins/paste.js'][183]++;
+ if ((pre && (pre.nodeType == 3) && new RegExp(("^[\n\r\t " + domUtils.fillChar + "]*$")).test(pre.nodeValue))) {
+ _$jscoverage['plugins/paste.js'][184]++;
+ range.setStartBefore(pre);
+ }
+ }
+ _$jscoverage['plugins/paste.js'][187]++;
+ if ((range.startOffset == 0)) {
+ _$jscoverage['plugins/paste.js'][188]++;
+ range.setStartBefore(range.startContainer);
+ }
+ else {
+ _$jscoverage['plugins/paste.js'][190]++;
+ break;
+ }
+}
+ _$jscoverage['plugins/paste.js'][194]++;
+ while ((! domUtils.isBody(range.endContainer))) {
+ _$jscoverage['plugins/paste.js'][196]++;
+ var end = range.endContainer;
+ _$jscoverage['plugins/paste.js'][197]++;
+ if ((end.nodeType == 1)) {
+ _$jscoverage['plugins/paste.js'][198]++;
+ end = end.childNodes[range.endOffset];
+ _$jscoverage['plugins/paste.js'][199]++;
+ if ((! end)) {
+ _$jscoverage['plugins/paste.js'][200]++;
+ range.setEndAfter(range.endContainer);
+ _$jscoverage['plugins/paste.js'][201]++;
+ continue;
+ }
+ _$jscoverage['plugins/paste.js'][203]++;
+ var next = end.nextSibling;
+ _$jscoverage['plugins/paste.js'][204]++;
+ if ((next && (next.nodeType == 3) && new RegExp(("^[\n\r\t" + domUtils.fillChar + "]*$")).test(next.nodeValue))) {
+ _$jscoverage['plugins/paste.js'][205]++;
+ range.setEndAfter(next);
+ }
+ }
+ _$jscoverage['plugins/paste.js'][208]++;
+ if ((range.endOffset == range.endContainer[((range.endContainer.nodeType == 3)? "nodeValue": "childNodes")].length)) {
+ _$jscoverage['plugins/paste.js'][209]++;
+ range.setEndAfter(range.endContainer);
+ }
+ else {
+ _$jscoverage['plugins/paste.js'][211]++;
+ break;
+ }
+}
+ }
+ _$jscoverage['plugins/paste.js'][218]++;
+ range.deleteContents();
+ _$jscoverage['plugins/paste.js'][219]++;
+ range.select(true);
+ _$jscoverage['plugins/paste.js'][220]++;
+ me.__hasEnterExecCommand = true;
+ _$jscoverage['plugins/paste.js'][221]++;
+ var html = htmlContent;
+ _$jscoverage['plugins/paste.js'][222]++;
+ if ((plainType === 2)) {
+ _$jscoverage['plugins/paste.js'][223]++;
+ html = html.replace(/<(\/?)([\w\-]+)([^>]*)>/gi, (function (a, b, tagName, attrs) {
+ _$jscoverage['plugins/paste.js'][224]++;
+ tagName = tagName.toLowerCase();
+ _$jscoverage['plugins/paste.js'][225]++;
+ if ({img: 1}[tagName]) {
+ _$jscoverage['plugins/paste.js'][226]++;
+ return a;
+ }
+ _$jscoverage['plugins/paste.js'][228]++;
+ attrs = attrs.replace(/([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi, (function (str, atr, val) {
+ _$jscoverage['plugins/paste.js'][229]++;
+ if ({"src": 1, "href": 1, "name": 1}[atr.toLowerCase()]) {
+ _$jscoverage['plugins/paste.js'][234]++;
+ return (atr + "=" + val + " ");
+ }
+ _$jscoverage['plugins/paste.js'][236]++;
+ return "";
+}));
+ _$jscoverage['plugins/paste.js'][238]++;
+ if ({"span": 1, "div": 1}[tagName]) {
+ _$jscoverage['plugins/paste.js'][242]++;
+ return "";
+ }
+ else {
+ _$jscoverage['plugins/paste.js'][245]++;
+ return ("<" + b + tagName + " " + utils.trim(attrs) + ">");
+ }
+}));
+ }
+ else {
+ _$jscoverage['plugins/paste.js'][249]++;
+ if (plainType) {
+ _$jscoverage['plugins/paste.js'][250]++;
+ html = txtContent;
+ }
+ }
+ _$jscoverage['plugins/paste.js'][252]++;
+ me.execCommand("inserthtml", html, true);
+ _$jscoverage['plugins/paste.js'][253]++;
+ me.__hasEnterExecCommand = false;
+ _$jscoverage['plugins/paste.js'][254]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/paste.js'][255]++;
+ while (((! domUtils.isBody(rng.startContainer)) && (! rng.startOffset) && rng.startContainer[((rng.startContainer.nodeType == 3)? "nodeValue": "childNodes")].length)) {
+ _$jscoverage['plugins/paste.js'][258]++;
+ rng.setStartBefore(rng.startContainer);
+}
+ _$jscoverage['plugins/paste.js'][260]++;
+ var tmpAddress = rng.createAddress(true);
+ _$jscoverage['plugins/paste.js'][261]++;
+ address.endAddress = tmpAddress.startAddress;
+ }
+}));
+ _$jscoverage['plugins/paste.js'][264]++;
+ me.addListener("ready", (function () {
+ _$jscoverage['plugins/paste.js'][265]++;
+ domUtils.on(me.body, "cut", (function () {
+ _$jscoverage['plugins/paste.js'][266]++;
+ var range = me.selection.getRange();
+ _$jscoverage['plugins/paste.js'][267]++;
+ if (((! range.collapsed) && me.undoManger)) {
+ _$jscoverage['plugins/paste.js'][268]++;
+ me.undoManger.save();
+ }
+}));
+ _$jscoverage['plugins/paste.js'][273]++;
+ domUtils.on(me.body, ((browser.ie || browser.opera)? "keydown": "paste"), (function (e) {
+ _$jscoverage['plugins/paste.js'][274]++;
+ if (((browser.ie || browser.opera) && (((! e.ctrlKey) && (! e.metaKey)) || (e.keyCode != "86")))) {
+ _$jscoverage['plugins/paste.js'][275]++;
+ return;
+ }
+ _$jscoverage['plugins/paste.js'][277]++;
+ getClipboardData.call(me, (function (div) {
+ _$jscoverage['plugins/paste.js'][278]++;
+ filter(div);
+}));
+}));
+}));
+});
diff --git a/_test/coverage/plugins/preview.js b/_test/coverage/plugins/preview.js
new file mode 100644
index 000000000..4612b2bba
--- /dev/null
+++ b/_test/coverage/plugins/preview.js
@@ -0,0 +1,59 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/preview.js']) {
+ _$jscoverage['plugins/preview.js'] = [];
+ _$jscoverage['plugins/preview.js'][17] = 0;
+ _$jscoverage['plugins/preview.js'][19] = 0;
+ _$jscoverage['plugins/preview.js'][21] = 0;
+ _$jscoverage['plugins/preview.js'][22] = 0;
+ _$jscoverage['plugins/preview.js'][28] = 0;
+}
+_$jscoverage['plugins/preview.js'].source = ["/** "," * 预览 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 预览 "," * @command preview "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'preview' ); "," * ``` "," */ ","UE. commands[ 'preview' ] = { "," execCommand : function () { "," var w = window. open( '' , '_blank' , '' ), "," d = w. document; "," d. open(); "," d. write( '<html><head><script src=\"' + this . options. UEDITOR_HOME_URL+ 'ueditor.parse.js\"></script><script>' + "," \"setTimeout(function(){uParse('div',{\" + "," \" 'highlightJsUrl':'\" + this . options. UEDITOR_HOME_URL+ \"third-party/SyntaxHighlighter/shCore.js',\" + "," \" 'highlightCssUrl':'\" + this . options. UEDITOR_HOME_URL+ \"third-party/SyntaxHighlighter/shCoreDefault.css'\" + "," \"})},300)\" + "," '</script></head><body><div>' + this . getContent( null , null , true )+ '</div></body></html>' ); "," d. close(); "," } , "," notNeedUndo : 1 ","} ; "];
+_$jscoverage['plugins/preview.js'][17]++;
+UE.commands.preview = {execCommand: (function () {
+ _$jscoverage['plugins/preview.js'][19]++;
+ var w = window.open("", "_blank", ""), d = w.document;
+ _$jscoverage['plugins/preview.js'][21]++;
+ d.open();
+ _$jscoverage['plugins/preview.js'][22]++;
+ d.write(("" + this.getContent(null, null, true) + "
"));
+ _$jscoverage['plugins/preview.js'][28]++;
+ d.close();
+}), notNeedUndo: 1};
diff --git a/_test/coverage/plugins/print.js b/_test/coverage/plugins/print.js
new file mode 100644
index 000000000..da94c1bb2
--- /dev/null
+++ b/_test/coverage/plugins/print.js
@@ -0,0 +1,50 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/print.js']) {
+ _$jscoverage['plugins/print.js'] = [];
+ _$jscoverage['plugins/print.js'][17] = 0;
+ _$jscoverage['plugins/print.js'][19] = 0;
+}
+_$jscoverage['plugins/print.js'].source = ["/** "," * 打印 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 打印 "," * @command print "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'print' ); "," * ``` "," */ ","UE. commands[ 'print' ] = { "," execCommand : function () { "," this . window. print(); "," } , "," notNeedUndo : 1 ","} ; ",""];
+_$jscoverage['plugins/print.js'][17]++;
+UE.commands.print = {execCommand: (function () {
+ _$jscoverage['plugins/print.js'][19]++;
+ this.window.print();
+}), notNeedUndo: 1};
diff --git a/_test/coverage/plugins/puretxtpaste.js b/_test/coverage/plugins/puretxtpaste.js
new file mode 100644
index 000000000..cc8fe4e0a
--- /dev/null
+++ b/_test/coverage/plugins/puretxtpaste.js
@@ -0,0 +1,144 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/puretxtpaste.js']) {
+ _$jscoverage['plugins/puretxtpaste.js'] = [];
+ _$jscoverage['plugins/puretxtpaste.js'][7] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][8] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][9] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][12] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][13] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][14] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][16] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][17] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][19] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][25] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][26] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][27] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][28] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][30] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][31] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][32] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][34] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][38] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][39] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][41] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][55] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][56] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][57] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][59] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][65] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][89] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][91] = 0;
+ _$jscoverage['plugins/puretxtpaste.js'][94] = 0;
+}
+_$jscoverage['plugins/puretxtpaste.js'].source = ["/** "," * 纯文本粘贴插件 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ 'pasteplain' ] = function () { "," var me = this ; "," me. setOpt( { "," 'pasteplain' : false , "," 'filterTxtRules' : function () { "," function transP( node) { "," node. tagName = 'p' ; "," node. setStyle(); "," } "," function removeNode( node) { "," node. parentNode. removeChild( node, true ) "," } "," return { "," //直接删除及其字节点内容 "," '-' : 'script style object iframe embed input select' , "," 'p' : { $: {}} , "," 'br' : { $: {}} , "," div: function ( node) { "," var tmpNode, p = UE. uNode. createElement( 'p' ); "," while ( tmpNode = node. firstChild()) { "," if ( tmpNode. type == 'text' || ! UE. dom. dtd. $block[ tmpNode. tagName]) { "," p. appendChild( tmpNode); "," } else { "," if ( p. firstChild()) { "," node. parentNode. insertBefore( p, node); "," p = UE. uNode. createElement( 'p' ); "," } else { "," node. parentNode. insertBefore( tmpNode, node); "," } "," } "," } "," if ( p. firstChild()) { "," node. parentNode. insertBefore( p, node); "," } "," node. parentNode. removeChild( node); "," } , "," ol: removeNode, "," ul: removeNode, "," dl: removeNode, "," dt: removeNode, "," dd: removeNode, "," 'li' : removeNode, "," 'caption' : transP, "," 'th' : transP, "," 'tr' : transP, "," 'h1' : transP, 'h2' : transP, 'h3' : transP, 'h4' : transP, 'h5' : transP, 'h6' : transP, "," 'td' : function ( node) { "," //没有内容的td直接删掉 "," var txt = !! node. innerText(); "," if ( txt) { "," node. parentNode. insertAfter( UE. uNode. createText( ' ' ), node); "," } "," node. parentNode. removeChild( node, node. innerText()) "," } "," } "," } () "," } ); "," //暂时这里支持一下老版本的属性 "," var pasteplain = me. options. pasteplain; ",""," /** "," * 启用或取消纯文本粘贴模式 "," * @command pasteplain "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.queryCommandState( 'pasteplain' ); "," * ``` "," */ ",""," /** "," * 查询当前是否处于纯文本粘贴模式 "," * @command pasteplain "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 如果处于纯文本模式,返回1,否则,返回0 "," * @example "," * ```javascript "," * editor.queryCommandState( 'pasteplain' ); "," * ``` "," */ "," me. commands[ 'pasteplain' ] = { "," queryCommandState: function () { "," return pasteplain ? 1 : 0 ; "," } , "," execCommand: function () { "," pasteplain = ! pasteplain| 0 ; "," } , "," notNeedUndo : 1 "," } ; ","} ; "];
+_$jscoverage['plugins/puretxtpaste.js'][7]++;
+UE.plugins.pasteplain = (function () {
+ _$jscoverage['plugins/puretxtpaste.js'][8]++;
+ var me = this;
+ _$jscoverage['plugins/puretxtpaste.js'][9]++;
+ me.setOpt({"pasteplain": false, "filterTxtRules": (function () {
+ _$jscoverage['plugins/puretxtpaste.js'][12]++;
+ function transP(node) {
+ _$jscoverage['plugins/puretxtpaste.js'][13]++;
+ node.tagName = "p";
+ _$jscoverage['plugins/puretxtpaste.js'][14]++;
+ node.setStyle();
+}
+ _$jscoverage['plugins/puretxtpaste.js'][16]++;
+ function removeNode(node) {
+ _$jscoverage['plugins/puretxtpaste.js'][17]++;
+ node.parentNode.removeChild(node, true);
+}
+ _$jscoverage['plugins/puretxtpaste.js'][19]++;
+ return ({"-": "script style object iframe embed input select", "p": {$: {}}, "br": {$: {}}, div: (function (node) {
+ _$jscoverage['plugins/puretxtpaste.js'][25]++;
+ var tmpNode, p = UE.uNode.createElement("p");
+ _$jscoverage['plugins/puretxtpaste.js'][26]++;
+ while ((tmpNode = node.firstChild())) {
+ _$jscoverage['plugins/puretxtpaste.js'][27]++;
+ if (((tmpNode.type == "text") || (! UE.dom.dtd.$block[tmpNode.tagName]))) {
+ _$jscoverage['plugins/puretxtpaste.js'][28]++;
+ p.appendChild(tmpNode);
+ }
+ else {
+ _$jscoverage['plugins/puretxtpaste.js'][30]++;
+ if (p.firstChild()) {
+ _$jscoverage['plugins/puretxtpaste.js'][31]++;
+ node.parentNode.insertBefore(p, node);
+ _$jscoverage['plugins/puretxtpaste.js'][32]++;
+ p = UE.uNode.createElement("p");
+ }
+ else {
+ _$jscoverage['plugins/puretxtpaste.js'][34]++;
+ node.parentNode.insertBefore(tmpNode, node);
+ }
+ }
+}
+ _$jscoverage['plugins/puretxtpaste.js'][38]++;
+ if (p.firstChild()) {
+ _$jscoverage['plugins/puretxtpaste.js'][39]++;
+ node.parentNode.insertBefore(p, node);
+ }
+ _$jscoverage['plugins/puretxtpaste.js'][41]++;
+ node.parentNode.removeChild(node);
+}), ol: removeNode, ul: removeNode, dl: removeNode, dt: removeNode, dd: removeNode, "li": removeNode, "caption": transP, "th": transP, "tr": transP, "h1": transP, "h2": transP, "h3": transP, "h4": transP, "h5": transP, "h6": transP, "td": (function (node) {
+ _$jscoverage['plugins/puretxtpaste.js'][55]++;
+ var txt = (! (! node.innerText()));
+ _$jscoverage['plugins/puretxtpaste.js'][56]++;
+ if (txt) {
+ _$jscoverage['plugins/puretxtpaste.js'][57]++;
+ node.parentNode.insertAfter(UE.uNode.createText(" "), node);
+ }
+ _$jscoverage['plugins/puretxtpaste.js'][59]++;
+ node.parentNode.removeChild(node, node.innerText());
+})});
+})()});
+ _$jscoverage['plugins/puretxtpaste.js'][65]++;
+ var pasteplain = me.options.pasteplain;
+ _$jscoverage['plugins/puretxtpaste.js'][89]++;
+ me.commands.pasteplain = {queryCommandState: (function () {
+ _$jscoverage['plugins/puretxtpaste.js'][91]++;
+ return (pasteplain? 1: 0);
+}), execCommand: (function () {
+ _$jscoverage['plugins/puretxtpaste.js'][94]++;
+ pasteplain = ((! pasteplain) | 0);
+}), notNeedUndo: 1};
+});
diff --git a/_test/coverage/plugins/removeformat.js b/_test/coverage/plugins/removeformat.js
new file mode 100644
index 000000000..c13eaaf8d
--- /dev/null
+++ b/_test/coverage/plugins/removeformat.js
@@ -0,0 +1,318 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/removeformat.js']) {
+ _$jscoverage['plugins/removeformat.js'] = [];
+ _$jscoverage['plugins/removeformat.js'][22] = 0;
+ _$jscoverage['plugins/removeformat.js'][23] = 0;
+ _$jscoverage['plugins/removeformat.js'][24] = 0;
+ _$jscoverage['plugins/removeformat.js'][28] = 0;
+ _$jscoverage['plugins/removeformat.js'][31] = 0;
+ _$jscoverage['plugins/removeformat.js'][36] = 0;
+ _$jscoverage['plugins/removeformat.js'][39] = 0;
+ _$jscoverage['plugins/removeformat.js'][40] = 0;
+ _$jscoverage['plugins/removeformat.js'][41] = 0;
+ _$jscoverage['plugins/removeformat.js'][43] = 0;
+ _$jscoverage['plugins/removeformat.js'][46] = 0;
+ _$jscoverage['plugins/removeformat.js'][47] = 0;
+ _$jscoverage['plugins/removeformat.js'][48] = 0;
+ _$jscoverage['plugins/removeformat.js'][49] = 0;
+ _$jscoverage['plugins/removeformat.js'][50] = 0;
+ _$jscoverage['plugins/removeformat.js'][53] = 0;
+ _$jscoverage['plugins/removeformat.js'][56] = 0;
+ _$jscoverage['plugins/removeformat.js'][58] = 0;
+ _$jscoverage['plugins/removeformat.js'][60] = 0;
+ _$jscoverage['plugins/removeformat.js'][61] = 0;
+ _$jscoverage['plugins/removeformat.js'][62] = 0;
+ _$jscoverage['plugins/removeformat.js'][66] = 0;
+ _$jscoverage['plugins/removeformat.js'][67] = 0;
+ _$jscoverage['plugins/removeformat.js'][68] = 0;
+ _$jscoverage['plugins/removeformat.js'][69] = 0;
+ _$jscoverage['plugins/removeformat.js'][72] = 0;
+ _$jscoverage['plugins/removeformat.js'][73] = 0;
+ _$jscoverage['plugins/removeformat.js'][74] = 0;
+ _$jscoverage['plugins/removeformat.js'][80] = 0;
+ _$jscoverage['plugins/removeformat.js'][82] = 0;
+ _$jscoverage['plugins/removeformat.js'][85] = 0;
+ _$jscoverage['plugins/removeformat.js'][86] = 0;
+ _$jscoverage['plugins/removeformat.js'][88] = 0;
+ _$jscoverage['plugins/removeformat.js'][90] = 0;
+ _$jscoverage['plugins/removeformat.js'][92] = 0;
+ _$jscoverage['plugins/removeformat.js'][93] = 0;
+ _$jscoverage['plugins/removeformat.js'][94] = 0;
+ _$jscoverage['plugins/removeformat.js'][95] = 0;
+ _$jscoverage['plugins/removeformat.js'][99] = 0;
+ _$jscoverage['plugins/removeformat.js'][101] = 0;
+ _$jscoverage['plugins/removeformat.js'][102] = 0;
+ _$jscoverage['plugins/removeformat.js'][103] = 0;
+ _$jscoverage['plugins/removeformat.js'][106] = 0;
+ _$jscoverage['plugins/removeformat.js'][108] = 0;
+ _$jscoverage['plugins/removeformat.js'][109] = 0;
+ _$jscoverage['plugins/removeformat.js'][110] = 0;
+ _$jscoverage['plugins/removeformat.js'][111] = 0;
+ _$jscoverage['plugins/removeformat.js'][112] = 0;
+ _$jscoverage['plugins/removeformat.js'][113] = 0;
+ _$jscoverage['plugins/removeformat.js'][116] = 0;
+ _$jscoverage['plugins/removeformat.js'][120] = 0;
+ _$jscoverage['plugins/removeformat.js'][121] = 0;
+ _$jscoverage['plugins/removeformat.js'][122] = 0;
+ _$jscoverage['plugins/removeformat.js'][123] = 0;
+ _$jscoverage['plugins/removeformat.js'][129] = 0;
+ _$jscoverage['plugins/removeformat.js'][134] = 0;
+ _$jscoverage['plugins/removeformat.js'][135] = 0;
+ _$jscoverage['plugins/removeformat.js'][136] = 0;
+ _$jscoverage['plugins/removeformat.js'][138] = 0;
+ _$jscoverage['plugins/removeformat.js'][139] = 0;
+ _$jscoverage['plugins/removeformat.js'][140] = 0;
+ _$jscoverage['plugins/removeformat.js'][142] = 0;
+ _$jscoverage['plugins/removeformat.js'][144] = 0;
+ _$jscoverage['plugins/removeformat.js'][147] = 0;
+ _$jscoverage['plugins/removeformat.js'][148] = 0;
+ _$jscoverage['plugins/removeformat.js'][149] = 0;
+ _$jscoverage['plugins/removeformat.js'][152] = 0;
+ _$jscoverage['plugins/removeformat.js'][153] = 0;
+ _$jscoverage['plugins/removeformat.js'][155] = 0;
+ _$jscoverage['plugins/removeformat.js'][156] = 0;
+ _$jscoverage['plugins/removeformat.js'][159] = 0;
+ _$jscoverage['plugins/removeformat.js'][160] = 0;
+ _$jscoverage['plugins/removeformat.js'][161] = 0;
+ _$jscoverage['plugins/removeformat.js'][162] = 0;
+ _$jscoverage['plugins/removeformat.js'][163] = 0;
+ _$jscoverage['plugins/removeformat.js'][164] = 0;
+ _$jscoverage['plugins/removeformat.js'][166] = 0;
+ _$jscoverage['plugins/removeformat.js'][175] = 0;
+ _$jscoverage['plugins/removeformat.js'][176] = 0;
+ _$jscoverage['plugins/removeformat.js'][177] = 0;
+}
+_$jscoverage['plugins/removeformat.js'].source = ["/** "," * 清除格式 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 对图片居左居中居右排版 "," * @command removeformat "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param {String} tags 以逗号隔开的标签。如:span,a "," * @param {String} style 样式 "," * @param {String} attrs 属性 "," * @param {String} notIncluedA 是否把a标签切开 "," * @example "," * ```javascript "," * editor.execCommand( 'removeformat', 'center' ); "," * ``` "," */ ","","UE. plugins[ 'removeformat' ] = function () { "," var me = this ; "," me. setOpt( { "," 'removeFormatTags' : 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var' , "," 'removeFormatAttributes' : 'class,style,lang,width,height,align,hspace,valign' "," } ); "," me. commands[ 'removeformat' ] = { "," execCommand : function ( cmdName, tags, style, attrs, notIncludeA ) { ",""," var tagReg = new RegExp( '^(?:' + ( tags || this . options. removeFormatTags). replace( /,/g , '|' ) + ')$' , 'i' ) , "," removeFormatAttributes = style ? [] : ( attrs || this . options. removeFormatAttributes). split( ',' ), "," range = new dom. Range( this . document ), "," bookmark, node, parent, "," filter = function ( node ) { "," return node. nodeType == 1 ; "," } ; ",""," function isRedundantSpan ( node) { "," if ( node. nodeType == 3 || node. tagName. toLowerCase() != 'span' ) { "," return 0 ; "," } "," if ( browser. ie) { "," //ie 下判断实效,所以只能简单用style来判断 "," //return node.style.cssText == '' ? 1 : 0; "," var attrs = node. attributes; "," if ( attrs. length ) { "," for ( var i = 0 , l = attrs. length; i< l; i++ ) { "," if ( attrs[ i]. specified ) { "," return 0 ; "," } "," } "," return 1 ; "," } "," } "," return ! node. attributes. length; "," } "," function doRemove( range ) { ",""," var bookmark1 = range. createBookmark(); "," if ( range. collapsed ) { "," range. enlarge( true ); "," } ",""," //不能把a标签切了 "," if (! notIncludeA) { "," var aNode = domUtils. findParentByTagName( range. startContainer, 'a' , true ); "," if ( aNode) { "," range. setStartBefore( aNode); "," } ",""," aNode = domUtils. findParentByTagName( range. endContainer, 'a' , true ); "," if ( aNode) { "," range. setEndAfter( aNode); "," } ",""," } ","",""," bookmark = range. createBookmark(); ",""," node = bookmark. start; ",""," //切开始 "," while ( ( parent = node. parentNode) && ! domUtils. isBlockElm( parent ) ) { "," domUtils. breakParent( node, parent ); ",""," domUtils. clearEmptySibling( node ); "," } "," if ( bookmark. end ) { "," //切结束 "," node = bookmark. end; "," while ( ( parent = node. parentNode) && ! domUtils. isBlockElm( parent ) ) { "," domUtils. breakParent( node, parent ); "," domUtils. clearEmptySibling( node ); "," } ",""," //开始去除样式 "," var current = domUtils. getNextDomNode( bookmark. start, false , filter ), "," next; "," while ( current ) { "," if ( current == bookmark. end ) { "," break ; "," } ",""," next = domUtils. getNextDomNode( current, true , filter ); ",""," if ( ! dtd. $empty[ current. tagName. toLowerCase()] && ! domUtils. isBookmarkNode( current ) ) { "," if ( tagReg. test( current. tagName ) ) { "," if ( style ) { "," domUtils. removeStyle( current, style ); "," if ( isRedundantSpan( current ) && style != 'text-decoration' ) { "," domUtils. remove( current, true ); "," } "," } else { "," domUtils. remove( current, true ); "," } "," } else { "," //trace:939 不能把list上的样式去掉 "," if (! dtd. $tableContent[ current. tagName] && ! dtd. $list[ current. tagName]) { "," domUtils. removeAttributes( current, removeFormatAttributes ); "," if ( isRedundantSpan( current ) ) { "," domUtils. remove( current, true ); "," } "," } ",""," } "," } "," current = next; "," } "," } "," //trace:1035 "," //trace:1096 不能把td上的样式去掉,比如边框 "," var pN = bookmark. start. parentNode; "," if ( domUtils. isBlockElm( pN) && ! dtd. $tableContent[ pN. tagName] && ! dtd. $list[ pN. tagName]) { "," domUtils. removeAttributes( pN, removeFormatAttributes ); "," } "," pN = bookmark. end. parentNode; "," if ( bookmark. end && domUtils. isBlockElm( pN) && ! dtd. $tableContent[ pN. tagName]&& ! dtd. $list[ pN. tagName]) { "," domUtils. removeAttributes( pN, removeFormatAttributes ); "," } "," range. moveToBookmark( bookmark ). moveToBookmark( bookmark1); "," //清除冗余的代码 <b><bookmark></b> "," var node = range. startContainer, "," tmp, "," collapsed = range. collapsed; "," while ( node. nodeType == 1 && domUtils. isEmptyNode( node) && dtd. $removeEmpty[ node. tagName]) { "," tmp = node. parentNode; "," range. setStartBefore( node); "," //trace:937 "," //更新结束边界 "," if ( range. startContainer === range. endContainer) { "," range. endOffset--; "," } "," domUtils. remove( node); "," node = tmp; "," } ",""," if (! collapsed) { "," node = range. endContainer; "," while ( node. nodeType == 1 && domUtils. isEmptyNode( node) && dtd. $removeEmpty[ node. tagName]) { "," tmp = node. parentNode; "," range. setEndBefore( node); "," domUtils. remove( node); ",""," node = tmp; "," } ","",""," } "," } ","","",""," range = this . selection. getRange(); "," doRemove( range ); "," range. select(); ",""," } ",""," } ; ","","} ; "];
+_$jscoverage['plugins/removeformat.js'][22]++;
+UE.plugins.removeformat = (function () {
+ _$jscoverage['plugins/removeformat.js'][23]++;
+ var me = this;
+ _$jscoverage['plugins/removeformat.js'][24]++;
+ me.setOpt({"removeFormatTags": "b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var", "removeFormatAttributes": "class,style,lang,width,height,align,hspace,valign"});
+ _$jscoverage['plugins/removeformat.js'][28]++;
+ me.commands.removeformat = {execCommand: (function (cmdName, tags, style, attrs, notIncludeA) {
+ _$jscoverage['plugins/removeformat.js'][31]++;
+ var tagReg = new RegExp(("^(?:" + (tags || this.options.removeFormatTags).replace(/,/g, "|") + ")$"), "i"), removeFormatAttributes = (style? []: (attrs || this.options.removeFormatAttributes).split(",")), range = new (dom.Range)(this.document), bookmark, node, parent, filter = (function (node) {
+ _$jscoverage['plugins/removeformat.js'][36]++;
+ return (node.nodeType == 1);
+});
+ _$jscoverage['plugins/removeformat.js'][39]++;
+ function isRedundantSpan(node) {
+ _$jscoverage['plugins/removeformat.js'][40]++;
+ if (((node.nodeType == 3) || (node.tagName.toLowerCase() != "span"))) {
+ _$jscoverage['plugins/removeformat.js'][41]++;
+ return 0;
+ }
+ _$jscoverage['plugins/removeformat.js'][43]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/removeformat.js'][46]++;
+ var attrs = node.attributes;
+ _$jscoverage['plugins/removeformat.js'][47]++;
+ if (attrs.length) {
+ _$jscoverage['plugins/removeformat.js'][48]++;
+ for (var i = 0, l = attrs.length; (i < l); (i++)) {
+ _$jscoverage['plugins/removeformat.js'][49]++;
+ if (attrs[i].specified) {
+ _$jscoverage['plugins/removeformat.js'][50]++;
+ return 0;
+ }
+}
+ _$jscoverage['plugins/removeformat.js'][53]++;
+ return 1;
+ }
+ }
+ _$jscoverage['plugins/removeformat.js'][56]++;
+ return (! node.attributes.length);
+}
+ _$jscoverage['plugins/removeformat.js'][58]++;
+ function doRemove(range) {
+ _$jscoverage['plugins/removeformat.js'][60]++;
+ var bookmark1 = range.createBookmark();
+ _$jscoverage['plugins/removeformat.js'][61]++;
+ if (range.collapsed) {
+ _$jscoverage['plugins/removeformat.js'][62]++;
+ range.enlarge(true);
+ }
+ _$jscoverage['plugins/removeformat.js'][66]++;
+ if ((! notIncludeA)) {
+ _$jscoverage['plugins/removeformat.js'][67]++;
+ var aNode = domUtils.findParentByTagName(range.startContainer, "a", true);
+ _$jscoverage['plugins/removeformat.js'][68]++;
+ if (aNode) {
+ _$jscoverage['plugins/removeformat.js'][69]++;
+ range.setStartBefore(aNode);
+ }
+ _$jscoverage['plugins/removeformat.js'][72]++;
+ aNode = domUtils.findParentByTagName(range.endContainer, "a", true);
+ _$jscoverage['plugins/removeformat.js'][73]++;
+ if (aNode) {
+ _$jscoverage['plugins/removeformat.js'][74]++;
+ range.setEndAfter(aNode);
+ }
+ }
+ _$jscoverage['plugins/removeformat.js'][80]++;
+ bookmark = range.createBookmark();
+ _$jscoverage['plugins/removeformat.js'][82]++;
+ node = bookmark.start;
+ _$jscoverage['plugins/removeformat.js'][85]++;
+ while (((parent = node.parentNode) && (! domUtils.isBlockElm(parent)))) {
+ _$jscoverage['plugins/removeformat.js'][86]++;
+ domUtils.breakParent(node, parent);
+ _$jscoverage['plugins/removeformat.js'][88]++;
+ domUtils.clearEmptySibling(node);
+}
+ _$jscoverage['plugins/removeformat.js'][90]++;
+ if (bookmark.end) {
+ _$jscoverage['plugins/removeformat.js'][92]++;
+ node = bookmark.end;
+ _$jscoverage['plugins/removeformat.js'][93]++;
+ while (((parent = node.parentNode) && (! domUtils.isBlockElm(parent)))) {
+ _$jscoverage['plugins/removeformat.js'][94]++;
+ domUtils.breakParent(node, parent);
+ _$jscoverage['plugins/removeformat.js'][95]++;
+ domUtils.clearEmptySibling(node);
+}
+ _$jscoverage['plugins/removeformat.js'][99]++;
+ var current = domUtils.getNextDomNode(bookmark.start, false, filter), next;
+ _$jscoverage['plugins/removeformat.js'][101]++;
+ while (current) {
+ _$jscoverage['plugins/removeformat.js'][102]++;
+ if ((current == bookmark.end)) {
+ _$jscoverage['plugins/removeformat.js'][103]++;
+ break;
+ }
+ _$jscoverage['plugins/removeformat.js'][106]++;
+ next = domUtils.getNextDomNode(current, true, filter);
+ _$jscoverage['plugins/removeformat.js'][108]++;
+ if (((! dtd.$empty[current.tagName.toLowerCase()]) && (! domUtils.isBookmarkNode(current)))) {
+ _$jscoverage['plugins/removeformat.js'][109]++;
+ if (tagReg.test(current.tagName)) {
+ _$jscoverage['plugins/removeformat.js'][110]++;
+ if (style) {
+ _$jscoverage['plugins/removeformat.js'][111]++;
+ domUtils.removeStyle(current, style);
+ _$jscoverage['plugins/removeformat.js'][112]++;
+ if ((isRedundantSpan(current) && (style != "text-decoration"))) {
+ _$jscoverage['plugins/removeformat.js'][113]++;
+ domUtils.remove(current, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/removeformat.js'][116]++;
+ domUtils.remove(current, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/removeformat.js'][120]++;
+ if (((! dtd.$tableContent[current.tagName]) && (! dtd.$list[current.tagName]))) {
+ _$jscoverage['plugins/removeformat.js'][121]++;
+ domUtils.removeAttributes(current, removeFormatAttributes);
+ _$jscoverage['plugins/removeformat.js'][122]++;
+ if (isRedundantSpan(current)) {
+ _$jscoverage['plugins/removeformat.js'][123]++;
+ domUtils.remove(current, true);
+ }
+ }
+ }
+ }
+ _$jscoverage['plugins/removeformat.js'][129]++;
+ current = next;
+}
+ }
+ _$jscoverage['plugins/removeformat.js'][134]++;
+ var pN = bookmark.start.parentNode;
+ _$jscoverage['plugins/removeformat.js'][135]++;
+ if ((domUtils.isBlockElm(pN) && (! dtd.$tableContent[pN.tagName]) && (! dtd.$list[pN.tagName]))) {
+ _$jscoverage['plugins/removeformat.js'][136]++;
+ domUtils.removeAttributes(pN, removeFormatAttributes);
+ }
+ _$jscoverage['plugins/removeformat.js'][138]++;
+ pN = bookmark.end.parentNode;
+ _$jscoverage['plugins/removeformat.js'][139]++;
+ if ((bookmark.end && domUtils.isBlockElm(pN) && (! dtd.$tableContent[pN.tagName]) && (! dtd.$list[pN.tagName]))) {
+ _$jscoverage['plugins/removeformat.js'][140]++;
+ domUtils.removeAttributes(pN, removeFormatAttributes);
+ }
+ _$jscoverage['plugins/removeformat.js'][142]++;
+ range.moveToBookmark(bookmark).moveToBookmark(bookmark1);
+ _$jscoverage['plugins/removeformat.js'][144]++;
+ var node = range.startContainer, tmp, collapsed = range.collapsed;
+ _$jscoverage['plugins/removeformat.js'][147]++;
+ while (((node.nodeType == 1) && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName])) {
+ _$jscoverage['plugins/removeformat.js'][148]++;
+ tmp = node.parentNode;
+ _$jscoverage['plugins/removeformat.js'][149]++;
+ range.setStartBefore(node);
+ _$jscoverage['plugins/removeformat.js'][152]++;
+ if ((range.startContainer === range.endContainer)) {
+ _$jscoverage['plugins/removeformat.js'][153]++;
+ (range.endOffset--);
+ }
+ _$jscoverage['plugins/removeformat.js'][155]++;
+ domUtils.remove(node);
+ _$jscoverage['plugins/removeformat.js'][156]++;
+ node = tmp;
+}
+ _$jscoverage['plugins/removeformat.js'][159]++;
+ if ((! collapsed)) {
+ _$jscoverage['plugins/removeformat.js'][160]++;
+ node = range.endContainer;
+ _$jscoverage['plugins/removeformat.js'][161]++;
+ while (((node.nodeType == 1) && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName])) {
+ _$jscoverage['plugins/removeformat.js'][162]++;
+ tmp = node.parentNode;
+ _$jscoverage['plugins/removeformat.js'][163]++;
+ range.setEndBefore(node);
+ _$jscoverage['plugins/removeformat.js'][164]++;
+ domUtils.remove(node);
+ _$jscoverage['plugins/removeformat.js'][166]++;
+ node = tmp;
+}
+ }
+}
+ _$jscoverage['plugins/removeformat.js'][175]++;
+ range = this.selection.getRange();
+ _$jscoverage['plugins/removeformat.js'][176]++;
+ doRemove(range);
+ _$jscoverage['plugins/removeformat.js'][177]++;
+ range.select();
+})};
+});
diff --git a/_test/coverage/plugins/rowspacing.js b/_test/coverage/plugins/rowspacing.js
new file mode 100644
index 000000000..3d4a37ff9
--- /dev/null
+++ b/_test/coverage/plugins/rowspacing.js
@@ -0,0 +1,83 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/rowspacing.js']) {
+ _$jscoverage['plugins/rowspacing.js'] = [];
+ _$jscoverage['plugins/rowspacing.js'][19] = 0;
+ _$jscoverage['plugins/rowspacing.js'][20] = 0;
+ _$jscoverage['plugins/rowspacing.js'][21] = 0;
+ _$jscoverage['plugins/rowspacing.js'][26] = 0;
+ _$jscoverage['plugins/rowspacing.js'][28] = 0;
+ _$jscoverage['plugins/rowspacing.js'][29] = 0;
+ _$jscoverage['plugins/rowspacing.js'][32] = 0;
+ _$jscoverage['plugins/rowspacing.js'][35] = 0;
+ _$jscoverage['plugins/rowspacing.js'][36] = 0;
+ _$jscoverage['plugins/rowspacing.js'][37] = 0;
+ _$jscoverage['plugins/rowspacing.js'][39] = 0;
+}
+_$jscoverage['plugins/rowspacing.js'].source = ["/** "," * 段前段后间距插件 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 设置段前距,段后距 "," * @command rowspacing "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { String } value 传入段间距的值,以px为单位 "," * @param { String } dir 传入间距位置,top或bottom,分别表示段前和段后 "," * @example "," * ```javascript "," * editor.execCommand( 'rowspacing', '10', 'top' ); "," * ``` "," */ ","UE. plugins[ 'rowspacing' ] = function () { "," var me = this ; "," me. setOpt( { "," 'rowspacingtop' :[ '5' , '10' , '15' , '20' , '25' ], "," 'rowspacingbottom' :[ '5' , '10' , '15' , '20' , '25' ] ",""," } ); "," me. commands[ 'rowspacing' ] = { "," execCommand : function ( cmdName, value, dir ) { "," this . execCommand( 'paragraph' , 'p' , { style: 'margin-' + dir+ ':' + value + 'px' } ); "," return true ; "," } , "," queryCommandValue : function ( cmdName, dir) { "," var pN = domUtils. filterNodeList( this . selection. getStartElementPath(), function ( node) { return domUtils. isBlockElm( node) } ), "," value; "," //trace:1026 "," if ( pN) { "," value = domUtils. getComputedStyle( pN, 'margin-' + dir). replace( /[^\\d]/g , '' ); "," return ! value ? 0 : value; "," } "," return 0 ; ",""," } "," } ; ","} ; ","",""];
+_$jscoverage['plugins/rowspacing.js'][19]++;
+UE.plugins.rowspacing = (function () {
+ _$jscoverage['plugins/rowspacing.js'][20]++;
+ var me = this;
+ _$jscoverage['plugins/rowspacing.js'][21]++;
+ me.setOpt({"rowspacingtop": ["5", "10", "15", "20", "25"], "rowspacingbottom": ["5", "10", "15", "20", "25"]});
+ _$jscoverage['plugins/rowspacing.js'][26]++;
+ me.commands.rowspacing = {execCommand: (function (cmdName, value, dir) {
+ _$jscoverage['plugins/rowspacing.js'][28]++;
+ this.execCommand("paragraph", "p", {style: ("margin-" + dir + ":" + value + "px")});
+ _$jscoverage['plugins/rowspacing.js'][29]++;
+ return true;
+}), queryCommandValue: (function (cmdName, dir) {
+ _$jscoverage['plugins/rowspacing.js'][32]++;
+ var pN = domUtils.filterNodeList(this.selection.getStartElementPath(), (function (node) {
+ _$jscoverage['plugins/rowspacing.js'][32]++;
+ return domUtils.isBlockElm(node);
+})), value;
+ _$jscoverage['plugins/rowspacing.js'][35]++;
+ if (pN) {
+ _$jscoverage['plugins/rowspacing.js'][36]++;
+ value = domUtils.getComputedStyle(pN, ("margin-" + dir)).replace(/[^\d]/g, "");
+ _$jscoverage['plugins/rowspacing.js'][37]++;
+ return ((! value)? 0: value);
+ }
+ _$jscoverage['plugins/rowspacing.js'][39]++;
+ return 0;
+})};
+});
diff --git a/_test/coverage/plugins/scrawl.js b/_test/coverage/plugins/scrawl.js
new file mode 100644
index 000000000..62c528f16
--- /dev/null
+++ b/_test/coverage/plugins/scrawl.js
@@ -0,0 +1,50 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/scrawl.js']) {
+ _$jscoverage['plugins/scrawl.js'] = [];
+ _$jscoverage['plugins/scrawl.js'][17] = 0;
+ _$jscoverage['plugins/scrawl.js'][19] = 0;
+}
+_$jscoverage['plugins/scrawl.js'].source = ["/** "," * 涂鸦 "," * @file "," * @since 1.2.6.1 "," */ ","","/* "," * 涂鸦浏览器判断 "," * @command scrawl "," * @method queryCommandState "," * @return { Int } ie8下返回-1,反之返回0 "," * @example "," * ```javascript "," * editor.queryCommandState( 'scrawl' ); "," * ``` "," */ ","UE. commands[ 'scrawl' ] = { "," queryCommandState : function () { "," return ( browser. ie && browser. version <= 8 ) ? - 1 : 0 ; "," } ","} ; "];
+_$jscoverage['plugins/scrawl.js'][17]++;
+UE.commands.scrawl = {queryCommandState: (function () {
+ _$jscoverage['plugins/scrawl.js'][19]++;
+ return ((browser.ie && (browser.version <= 8))? -1: 0);
+})};
diff --git a/_test/coverage/plugins/searchreplace.js b/_test/coverage/plugins/searchreplace.js
new file mode 100644
index 000000000..4129d8216
--- /dev/null
+++ b/_test/coverage/plugins/searchreplace.js
@@ -0,0 +1,405 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/searchreplace.js']) {
+ _$jscoverage['plugins/searchreplace.js'] = [];
+ _$jscoverage['plugins/searchreplace.js'][10] = 0;
+ _$jscoverage['plugins/searchreplace.js'][12] = 0;
+ _$jscoverage['plugins/searchreplace.js'][15] = 0;
+ _$jscoverage['plugins/searchreplace.js'][16] = 0;
+ _$jscoverage['plugins/searchreplace.js'][17] = 0;
+ _$jscoverage['plugins/searchreplace.js'][19] = 0;
+ _$jscoverage['plugins/searchreplace.js'][21] = 0;
+ _$jscoverage['plugins/searchreplace.js'][31] = 0;
+ _$jscoverage['plugins/searchreplace.js'][32] = 0;
+ _$jscoverage['plugins/searchreplace.js'][33] = 0;
+ _$jscoverage['plugins/searchreplace.js'][34] = 0;
+ _$jscoverage['plugins/searchreplace.js'][35] = 0;
+ _$jscoverage['plugins/searchreplace.js'][37] = 0;
+ _$jscoverage['plugins/searchreplace.js'][38] = 0;
+ _$jscoverage['plugins/searchreplace.js'][39] = 0;
+ _$jscoverage['plugins/searchreplace.js'][40] = 0;
+ _$jscoverage['plugins/searchreplace.js'][41] = 0;
+ _$jscoverage['plugins/searchreplace.js'][42] = 0;
+ _$jscoverage['plugins/searchreplace.js'][43] = 0;
+ _$jscoverage['plugins/searchreplace.js'][44] = 0;
+ _$jscoverage['plugins/searchreplace.js'][46] = 0;
+ _$jscoverage['plugins/searchreplace.js'][50] = 0;
+ _$jscoverage['plugins/searchreplace.js'][51] = 0;
+ _$jscoverage['plugins/searchreplace.js'][52] = 0;
+ _$jscoverage['plugins/searchreplace.js'][55] = 0;
+ _$jscoverage['plugins/searchreplace.js'][57] = 0;
+ _$jscoverage['plugins/searchreplace.js'][58] = 0;
+ _$jscoverage['plugins/searchreplace.js'][60] = 0;
+ _$jscoverage['plugins/searchreplace.js'][61] = 0;
+ _$jscoverage['plugins/searchreplace.js'][62] = 0;
+ _$jscoverage['plugins/searchreplace.js'][64] = 0;
+ _$jscoverage['plugins/searchreplace.js'][65] = 0;
+ _$jscoverage['plugins/searchreplace.js'][68] = 0;
+ _$jscoverage['plugins/searchreplace.js'][69] = 0;
+ _$jscoverage['plugins/searchreplace.js'][70] = 0;
+ _$jscoverage['plugins/searchreplace.js'][71] = 0;
+ _$jscoverage['plugins/searchreplace.js'][72] = 0;
+ _$jscoverage['plugins/searchreplace.js'][73] = 0;
+ _$jscoverage['plugins/searchreplace.js'][75] = 0;
+ _$jscoverage['plugins/searchreplace.js'][77] = 0;
+ _$jscoverage['plugins/searchreplace.js'][78] = 0;
+ _$jscoverage['plugins/searchreplace.js'][79] = 0;
+ _$jscoverage['plugins/searchreplace.js'][80] = 0;
+ _$jscoverage['plugins/searchreplace.js'][83] = 0;
+ _$jscoverage['plugins/searchreplace.js'][84] = 0;
+ _$jscoverage['plugins/searchreplace.js'][85] = 0;
+ _$jscoverage['plugins/searchreplace.js'][90] = 0;
+ _$jscoverage['plugins/searchreplace.js'][91] = 0;
+ _$jscoverage['plugins/searchreplace.js'][92] = 0;
+ _$jscoverage['plugins/searchreplace.js'][93] = 0;
+ _$jscoverage['plugins/searchreplace.js'][94] = 0;
+ _$jscoverage['plugins/searchreplace.js'][95] = 0;
+ _$jscoverage['plugins/searchreplace.js'][97] = 0;
+ _$jscoverage['plugins/searchreplace.js'][98] = 0;
+ _$jscoverage['plugins/searchreplace.js'][99] = 0;
+ _$jscoverage['plugins/searchreplace.js'][102] = 0;
+ _$jscoverage['plugins/searchreplace.js'][103] = 0;
+ _$jscoverage['plugins/searchreplace.js'][104] = 0;
+ _$jscoverage['plugins/searchreplace.js'][105] = 0;
+ _$jscoverage['plugins/searchreplace.js'][108] = 0;
+ _$jscoverage['plugins/searchreplace.js'][109] = 0;
+ _$jscoverage['plugins/searchreplace.js'][112] = 0;
+ _$jscoverage['plugins/searchreplace.js'][113] = 0;
+ _$jscoverage['plugins/searchreplace.js'][114] = 0;
+ _$jscoverage['plugins/searchreplace.js'][116] = 0;
+ _$jscoverage['plugins/searchreplace.js'][119] = 0;
+ _$jscoverage['plugins/searchreplace.js'][120] = 0;
+ _$jscoverage['plugins/searchreplace.js'][126] = 0;
+ _$jscoverage['plugins/searchreplace.js'][127] = 0;
+ _$jscoverage['plugins/searchreplace.js'][128] = 0;
+ _$jscoverage['plugins/searchreplace.js'][129] = 0;
+ _$jscoverage['plugins/searchreplace.js'][131] = 0;
+ _$jscoverage['plugins/searchreplace.js'][135] = 0;
+ _$jscoverage['plugins/searchreplace.js'][136] = 0;
+ _$jscoverage['plugins/searchreplace.js'][138] = 0;
+ _$jscoverage['plugins/searchreplace.js'][139] = 0;
+ _$jscoverage['plugins/searchreplace.js'][140] = 0;
+ _$jscoverage['plugins/searchreplace.js'][142] = 0;
+ _$jscoverage['plugins/searchreplace.js'][144] = 0;
+ _$jscoverage['plugins/searchreplace.js'][146] = 0;
+ _$jscoverage['plugins/searchreplace.js'][147] = 0;
+ _$jscoverage['plugins/searchreplace.js'][148] = 0;
+ _$jscoverage['plugins/searchreplace.js'][150] = 0;
+ _$jscoverage['plugins/searchreplace.js'][151] = 0;
+ _$jscoverage['plugins/searchreplace.js'][153] = 0;
+ _$jscoverage['plugins/searchreplace.js'][154] = 0;
+ _$jscoverage['plugins/searchreplace.js'][155] = 0;
+ _$jscoverage['plugins/searchreplace.js'][157] = 0;
+ _$jscoverage['plugins/searchreplace.js'][158] = 0;
+ _$jscoverage['plugins/searchreplace.js'][159] = 0;
+ _$jscoverage['plugins/searchreplace.js'][160] = 0;
+ _$jscoverage['plugins/searchreplace.js'][162] = 0;
+ _$jscoverage['plugins/searchreplace.js'][163] = 0;
+ _$jscoverage['plugins/searchreplace.js'][164] = 0;
+ _$jscoverage['plugins/searchreplace.js'][166] = 0;
+ _$jscoverage['plugins/searchreplace.js'][167] = 0;
+ _$jscoverage['plugins/searchreplace.js'][168] = 0;
+ _$jscoverage['plugins/searchreplace.js'][169] = 0;
+ _$jscoverage['plugins/searchreplace.js'][170] = 0;
+ _$jscoverage['plugins/searchreplace.js'][171] = 0;
+ _$jscoverage['plugins/searchreplace.js'][174] = 0;
+ _$jscoverage['plugins/searchreplace.js'][176] = 0;
+ _$jscoverage['plugins/searchreplace.js'][177] = 0;
+ _$jscoverage['plugins/searchreplace.js'][178] = 0;
+ _$jscoverage['plugins/searchreplace.js'][183] = 0;
+}
+_$jscoverage['plugins/searchreplace.js'].source = ["///import core ","///commands 查找替换 ","///commandsName SearchReplace ","///commandsTitle 查询替换 ","///commandsDialog dialogs\\searchreplace ","/* "," * @description 查找替换 "," * @author zhanyi "," */ ","UE. plugins[ 'searchreplace' ] = function () { ",""," var currentRange, "," first, "," me = this ; "," me. addListener( 'reset' , function () { "," currentRange = null ; "," first = null ; "," } ); "," me. commands[ 'searchreplace' ] = { "," execCommand : function ( cmdName, opt) { "," var me = this , "," sel = me. selection, "," range, "," nativeRange, "," num = 0 , "," opt = utils. extend( opt, { "," all : false , "," casesensitive : false , "," dir : 1 "," } , true ); "," var searchStr = opt. searchStr; "," if ( browser. ie) { "," me. focus(); "," while ( 1 ) { "," var tmpRange; ",""," nativeRange = me. document. selection. createRange(); "," tmpRange = nativeRange. duplicate(); "," tmpRange. moveToElementText( me. document. body); "," if ( opt. all) { "," first = 0 ; "," opt. dir = 1 ; "," if ( currentRange) { "," tmpRange. setEndPoint( opt. dir == - 1 ? 'EndToStart' : 'StartToEnd' , currentRange); "," } else { "," tmpRange. moveToElementText( me. document. body); "," } ",""," } else { "," tmpRange. setEndPoint( opt. dir == - 1 ? 'EndToStart' : 'StartToEnd' , nativeRange); "," if ( opt. hasOwnProperty( \"replaceStr\" )) { "," tmpRange. setEndPoint( opt. dir == - 1 ? 'StartToEnd' : 'EndToStart' , nativeRange); "," } "," } "," nativeRange = tmpRange. duplicate(); ",""," if ( /^\\/[^/]+\\/\\w*$/ . test( opt. searchStr)) { "," var str = tmpRange. text, "," reg = new RegExp( opt. searchStr. replace( /^\\/|\\/\\w*$/g , '' ), 'g' + ( opt. casesensitive ? '' : 'i' )); "," var match = str. match( reg); "," if ( match && match. length) { "," searchStr = opt. dir < 0 ? match[ match. length - 1 ] : match[ 0 ]; "," } else { "," currentRange = null ; "," return num; "," } "," } "," if (! tmpRange. findText( searchStr, opt. dir, opt. casesensitive ? 4 : 0 )) { "," currentRange = null ; "," tmpRange = me. document. selection. createRange(); "," tmpRange. scrollIntoView(); "," currentRange = null ; "," return num; "," } "," tmpRange. select(); "," //替换 "," if ( opt. hasOwnProperty( \"replaceStr\" )) { "," range = sel. getRange(); "," range. deleteContents(). insertNode( range. document. createTextNode( opt. replaceStr)). select(); "," currentRange = sel. getNative(). createRange(); ",""," } "," num++; "," if (! opt. all) { "," break ; "," } "," } "," } else { ",""," var w = me. window, nativeSel = sel. getNative(); "," while ( 1 ) { "," if ( opt. all) { "," if ( currentRange) { "," currentRange. collapse( false ); "," nativeRange = currentRange; "," } else { "," nativeRange = me. document. createRange(); "," nativeRange. setStart( me. document. body, 0 ); "," nativeRange. collapse( true ); "," } ",""," nativeSel. removeAllRanges(); "," nativeSel. addRange( nativeRange ); "," first = 0 ; "," opt. dir = 1 ; "," } else { "," //safari弹出层,原生已经找不到range了,所以需要先选回来,再取原生 "," if ( browser. safari) { "," me. selection. getRange(). select(); ",""," } "," var nativeSel = w. getSelection(); "," if (! nativeSel. rangeCount) { "," nativeRange = currentRange || me. _bakNativeRange; "," } else { "," nativeRange = nativeSel. getRangeAt( 0 ); "," } ",""," if ( opt. hasOwnProperty( \"replaceStr\" )) { "," nativeRange. collapse( opt. dir == 1 ? true : false ); "," } "," } ",""," //如果是第一次并且海选中了内容那就要清除,为find做准备 ",""," if (! first) { "," nativeRange. collapse( opt. dir < 0 ? true : false ); "," nativeSel. removeAllRanges(); "," nativeSel. addRange( nativeRange ); "," } else { "," nativeSel. removeAllRanges(); "," } "," //是正则查找 ",""," if ( /^\\/[^/]+\\/\\w*$/ . test( opt. searchStr)) { "," var tmpRange = nativeRange. cloneRange(); "," //向前查找 "," if ( opt. dir < 0 ) { "," nativeRange. collapse( true ); "," nativeRange. setStart( me. body, 0 ); "," } else { "," nativeRange. setEnd( me. body, me. body. childNodes. length); "," } "," var str = nativeRange + '' , "," reg = new RegExp( opt. searchStr. replace( /^\\/|\\/\\w*$/g , '' ), 'g' + ( opt. casesensitive ? '' : 'i' )); "," var match = str. match( reg); "," if ( match && match. length) { "," searchStr = opt. dir < 0 ? match[ match. length - 1 ] : match[ 0 ]; "," } else { "," currentRange = null ; "," return num; "," } "," nativeSel. removeAllRanges(); "," nativeRange = tmpRange; "," nativeSel. addRange( nativeRange); "," } "," if (! w. find( searchStr, opt. casesensitive, opt. dir < 0 ? true : false ) ) { "," currentRange = null ; "," nativeSel. removeAllRanges(); "," return num; "," } "," first = 0 ; "," range = w. getSelection(). getRangeAt( 0 ); "," if (! range. collapsed) { ",""," if ( opt. hasOwnProperty( \"replaceStr\" )) { "," range. deleteContents(); "," var text = w. document. createTextNode( opt. replaceStr); "," range. insertNode( text); "," range. selectNode( text); "," nativeSel. addRange( range); ",""," } "," currentRange = range. cloneRange(); "," } "," num++; "," if (! opt. all) { "," break ; "," } "," } ",""," } "," return true ; "," } "," } ; ","","} ; "];
+_$jscoverage['plugins/searchreplace.js'][10]++;
+UE.plugins.searchreplace = (function () {
+ _$jscoverage['plugins/searchreplace.js'][12]++;
+ var currentRange, first, me = this;
+ _$jscoverage['plugins/searchreplace.js'][15]++;
+ me.addListener("reset", (function () {
+ _$jscoverage['plugins/searchreplace.js'][16]++;
+ currentRange = null;
+ _$jscoverage['plugins/searchreplace.js'][17]++;
+ first = null;
+}));
+ _$jscoverage['plugins/searchreplace.js'][19]++;
+ me.commands.searchreplace = {execCommand: (function (cmdName, opt) {
+ _$jscoverage['plugins/searchreplace.js'][21]++;
+ var me = this, sel = me.selection, range, nativeRange, num = 0, opt = utils.extend(opt, {all: false, casesensitive: false, dir: 1}, true);
+ _$jscoverage['plugins/searchreplace.js'][31]++;
+ var searchStr = opt.searchStr;
+ _$jscoverage['plugins/searchreplace.js'][32]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/searchreplace.js'][33]++;
+ me.focus();
+ _$jscoverage['plugins/searchreplace.js'][34]++;
+ while (true) {
+ _$jscoverage['plugins/searchreplace.js'][35]++;
+ var tmpRange;
+ _$jscoverage['plugins/searchreplace.js'][37]++;
+ nativeRange = me.document.selection.createRange();
+ _$jscoverage['plugins/searchreplace.js'][38]++;
+ tmpRange = nativeRange.duplicate();
+ _$jscoverage['plugins/searchreplace.js'][39]++;
+ tmpRange.moveToElementText(me.document.body);
+ _$jscoverage['plugins/searchreplace.js'][40]++;
+ if (opt.all) {
+ _$jscoverage['plugins/searchreplace.js'][41]++;
+ first = 0;
+ _$jscoverage['plugins/searchreplace.js'][42]++;
+ opt.dir = 1;
+ _$jscoverage['plugins/searchreplace.js'][43]++;
+ if (currentRange) {
+ _$jscoverage['plugins/searchreplace.js'][44]++;
+ tmpRange.setEndPoint(((opt.dir == -1)? "EndToStart": "StartToEnd"), currentRange);
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][46]++;
+ tmpRange.moveToElementText(me.document.body);
+ }
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][50]++;
+ tmpRange.setEndPoint(((opt.dir == -1)? "EndToStart": "StartToEnd"), nativeRange);
+ _$jscoverage['plugins/searchreplace.js'][51]++;
+ if (opt.hasOwnProperty("replaceStr")) {
+ _$jscoverage['plugins/searchreplace.js'][52]++;
+ tmpRange.setEndPoint(((opt.dir == -1)? "StartToEnd": "EndToStart"), nativeRange);
+ }
+ }
+ _$jscoverage['plugins/searchreplace.js'][55]++;
+ nativeRange = tmpRange.duplicate();
+ _$jscoverage['plugins/searchreplace.js'][57]++;
+ if (/^\/[^/]+\/\w*$/.test(opt.searchStr)) {
+ _$jscoverage['plugins/searchreplace.js'][58]++;
+ var str = tmpRange.text, reg = new RegExp(opt.searchStr.replace(/^\/|\/\w*$/g, ""), ("g" + (opt.casesensitive? "": "i")));
+ _$jscoverage['plugins/searchreplace.js'][60]++;
+ var match = str.match(reg);
+ _$jscoverage['plugins/searchreplace.js'][61]++;
+ if ((match && match.length)) {
+ _$jscoverage['plugins/searchreplace.js'][62]++;
+ searchStr = ((opt.dir < 0)? match[(match.length - 1)]: match[0]);
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][64]++;
+ currentRange = null;
+ _$jscoverage['plugins/searchreplace.js'][65]++;
+ return num;
+ }
+ }
+ _$jscoverage['plugins/searchreplace.js'][68]++;
+ if ((! tmpRange.findText(searchStr, opt.dir, (opt.casesensitive? 4: 0)))) {
+ _$jscoverage['plugins/searchreplace.js'][69]++;
+ currentRange = null;
+ _$jscoverage['plugins/searchreplace.js'][70]++;
+ tmpRange = me.document.selection.createRange();
+ _$jscoverage['plugins/searchreplace.js'][71]++;
+ tmpRange.scrollIntoView();
+ _$jscoverage['plugins/searchreplace.js'][72]++;
+ currentRange = null;
+ _$jscoverage['plugins/searchreplace.js'][73]++;
+ return num;
+ }
+ _$jscoverage['plugins/searchreplace.js'][75]++;
+ tmpRange.select();
+ _$jscoverage['plugins/searchreplace.js'][77]++;
+ if (opt.hasOwnProperty("replaceStr")) {
+ _$jscoverage['plugins/searchreplace.js'][78]++;
+ range = sel.getRange();
+ _$jscoverage['plugins/searchreplace.js'][79]++;
+ range.deleteContents().insertNode(range.document.createTextNode(opt.replaceStr)).select();
+ _$jscoverage['plugins/searchreplace.js'][80]++;
+ currentRange = sel.getNative().createRange();
+ }
+ _$jscoverage['plugins/searchreplace.js'][83]++;
+ (num++);
+ _$jscoverage['plugins/searchreplace.js'][84]++;
+ if ((! opt.all)) {
+ _$jscoverage['plugins/searchreplace.js'][85]++;
+ break;
+ }
+}
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][90]++;
+ var w = me.window, nativeSel = sel.getNative();
+ _$jscoverage['plugins/searchreplace.js'][91]++;
+ while (true) {
+ _$jscoverage['plugins/searchreplace.js'][92]++;
+ if (opt.all) {
+ _$jscoverage['plugins/searchreplace.js'][93]++;
+ if (currentRange) {
+ _$jscoverage['plugins/searchreplace.js'][94]++;
+ currentRange.collapse(false);
+ _$jscoverage['plugins/searchreplace.js'][95]++;
+ nativeRange = currentRange;
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][97]++;
+ nativeRange = me.document.createRange();
+ _$jscoverage['plugins/searchreplace.js'][98]++;
+ nativeRange.setStart(me.document.body, 0);
+ _$jscoverage['plugins/searchreplace.js'][99]++;
+ nativeRange.collapse(true);
+ }
+ _$jscoverage['plugins/searchreplace.js'][102]++;
+ nativeSel.removeAllRanges();
+ _$jscoverage['plugins/searchreplace.js'][103]++;
+ nativeSel.addRange(nativeRange);
+ _$jscoverage['plugins/searchreplace.js'][104]++;
+ first = 0;
+ _$jscoverage['plugins/searchreplace.js'][105]++;
+ opt.dir = 1;
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][108]++;
+ if (browser.safari) {
+ _$jscoverage['plugins/searchreplace.js'][109]++;
+ me.selection.getRange().select();
+ }
+ _$jscoverage['plugins/searchreplace.js'][112]++;
+ var nativeSel = w.getSelection();
+ _$jscoverage['plugins/searchreplace.js'][113]++;
+ if ((! nativeSel.rangeCount)) {
+ _$jscoverage['plugins/searchreplace.js'][114]++;
+ nativeRange = (currentRange || me._bakNativeRange);
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][116]++;
+ nativeRange = nativeSel.getRangeAt(0);
+ }
+ _$jscoverage['plugins/searchreplace.js'][119]++;
+ if (opt.hasOwnProperty("replaceStr")) {
+ _$jscoverage['plugins/searchreplace.js'][120]++;
+ nativeRange.collapse(((opt.dir == 1)? true: false));
+ }
+ }
+ _$jscoverage['plugins/searchreplace.js'][126]++;
+ if ((! first)) {
+ _$jscoverage['plugins/searchreplace.js'][127]++;
+ nativeRange.collapse(((opt.dir < 0)? true: false));
+ _$jscoverage['plugins/searchreplace.js'][128]++;
+ nativeSel.removeAllRanges();
+ _$jscoverage['plugins/searchreplace.js'][129]++;
+ nativeSel.addRange(nativeRange);
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][131]++;
+ nativeSel.removeAllRanges();
+ }
+ _$jscoverage['plugins/searchreplace.js'][135]++;
+ if (/^\/[^/]+\/\w*$/.test(opt.searchStr)) {
+ _$jscoverage['plugins/searchreplace.js'][136]++;
+ var tmpRange = nativeRange.cloneRange();
+ _$jscoverage['plugins/searchreplace.js'][138]++;
+ if ((opt.dir < 0)) {
+ _$jscoverage['plugins/searchreplace.js'][139]++;
+ nativeRange.collapse(true);
+ _$jscoverage['plugins/searchreplace.js'][140]++;
+ nativeRange.setStart(me.body, 0);
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][142]++;
+ nativeRange.setEnd(me.body, me.body.childNodes.length);
+ }
+ _$jscoverage['plugins/searchreplace.js'][144]++;
+ var str = (nativeRange + ""), reg = new RegExp(opt.searchStr.replace(/^\/|\/\w*$/g, ""), ("g" + (opt.casesensitive? "": "i")));
+ _$jscoverage['plugins/searchreplace.js'][146]++;
+ var match = str.match(reg);
+ _$jscoverage['plugins/searchreplace.js'][147]++;
+ if ((match && match.length)) {
+ _$jscoverage['plugins/searchreplace.js'][148]++;
+ searchStr = ((opt.dir < 0)? match[(match.length - 1)]: match[0]);
+ }
+ else {
+ _$jscoverage['plugins/searchreplace.js'][150]++;
+ currentRange = null;
+ _$jscoverage['plugins/searchreplace.js'][151]++;
+ return num;
+ }
+ _$jscoverage['plugins/searchreplace.js'][153]++;
+ nativeSel.removeAllRanges();
+ _$jscoverage['plugins/searchreplace.js'][154]++;
+ nativeRange = tmpRange;
+ _$jscoverage['plugins/searchreplace.js'][155]++;
+ nativeSel.addRange(nativeRange);
+ }
+ _$jscoverage['plugins/searchreplace.js'][157]++;
+ if ((! w.find(searchStr, opt.casesensitive, ((opt.dir < 0)? true: false)))) {
+ _$jscoverage['plugins/searchreplace.js'][158]++;
+ currentRange = null;
+ _$jscoverage['plugins/searchreplace.js'][159]++;
+ nativeSel.removeAllRanges();
+ _$jscoverage['plugins/searchreplace.js'][160]++;
+ return num;
+ }
+ _$jscoverage['plugins/searchreplace.js'][162]++;
+ first = 0;
+ _$jscoverage['plugins/searchreplace.js'][163]++;
+ range = w.getSelection().getRangeAt(0);
+ _$jscoverage['plugins/searchreplace.js'][164]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/searchreplace.js'][166]++;
+ if (opt.hasOwnProperty("replaceStr")) {
+ _$jscoverage['plugins/searchreplace.js'][167]++;
+ range.deleteContents();
+ _$jscoverage['plugins/searchreplace.js'][168]++;
+ var text = w.document.createTextNode(opt.replaceStr);
+ _$jscoverage['plugins/searchreplace.js'][169]++;
+ range.insertNode(text);
+ _$jscoverage['plugins/searchreplace.js'][170]++;
+ range.selectNode(text);
+ _$jscoverage['plugins/searchreplace.js'][171]++;
+ nativeSel.addRange(range);
+ }
+ _$jscoverage['plugins/searchreplace.js'][174]++;
+ currentRange = range.cloneRange();
+ }
+ _$jscoverage['plugins/searchreplace.js'][176]++;
+ (num++);
+ _$jscoverage['plugins/searchreplace.js'][177]++;
+ if ((! opt.all)) {
+ _$jscoverage['plugins/searchreplace.js'][178]++;
+ break;
+ }
+}
+ }
+ _$jscoverage['plugins/searchreplace.js'][183]++;
+ return true;
+})};
+});
diff --git a/_test/coverage/plugins/selectall.js b/_test/coverage/plugins/selectall.js
new file mode 100644
index 000000000..a59fe08d2
--- /dev/null
+++ b/_test/coverage/plugins/selectall.js
@@ -0,0 +1,80 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/selectall.js']) {
+ _$jscoverage['plugins/selectall.js'] = [];
+ _$jscoverage['plugins/selectall.js'][17] = 0;
+ _$jscoverage['plugins/selectall.js'][18] = 0;
+ _$jscoverage['plugins/selectall.js'][19] = 0;
+ _$jscoverage['plugins/selectall.js'][22] = 0;
+ _$jscoverage['plugins/selectall.js'][24] = 0;
+ _$jscoverage['plugins/selectall.js'][25] = 0;
+ _$jscoverage['plugins/selectall.js'][27] = 0;
+ _$jscoverage['plugins/selectall.js'][28] = 0;
+ _$jscoverage['plugins/selectall.js'][30] = 0;
+ _$jscoverage['plugins/selectall.js'][32] = 0;
+ _$jscoverage['plugins/selectall.js'][39] = 0;
+}
+_$jscoverage['plugins/selectall.js'].source = ["/** "," * 全选 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 选中编辑器里的所有内容 "," * @command selectall "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'selectall' ); "," * ``` "," */ ","UE. plugins[ 'selectall' ] = function () { "," var me = this ; "," me. commands[ 'selectall' ] = { "," execCommand : function () { "," //去掉了原生的selectAll,因为会出现报错和当内容为空时,不能出现闭合状态的光标 "," var me = this , body = me. body, "," range = me. selection. getRange(); "," range. selectNodeContents( body); "," if ( domUtils. isEmptyBlock( body)) { "," //opera不能自动合并到元素的里边,要手动处理一下 "," if ( browser. opera && body. firstChild && body. firstChild. nodeType == 1 ) { "," range. setStartAtFirst( body. firstChild); "," } "," range. collapse( true ); "," } "," range. select( true ); "," } , "," notNeedUndo : 1 "," } ; ","",""," //快捷键 "," me. addshortcutkey( { "," \"selectAll\" : \"ctrl+65\" "," } ); ","} ; "];
+_$jscoverage['plugins/selectall.js'][17]++;
+UE.plugins.selectall = (function () {
+ _$jscoverage['plugins/selectall.js'][18]++;
+ var me = this;
+ _$jscoverage['plugins/selectall.js'][19]++;
+ me.commands.selectall = {execCommand: (function () {
+ _$jscoverage['plugins/selectall.js'][22]++;
+ var me = this, body = me.body, range = me.selection.getRange();
+ _$jscoverage['plugins/selectall.js'][24]++;
+ range.selectNodeContents(body);
+ _$jscoverage['plugins/selectall.js'][25]++;
+ if (domUtils.isEmptyBlock(body)) {
+ _$jscoverage['plugins/selectall.js'][27]++;
+ if ((browser.opera && body.firstChild && (body.firstChild.nodeType == 1))) {
+ _$jscoverage['plugins/selectall.js'][28]++;
+ range.setStartAtFirst(body.firstChild);
+ }
+ _$jscoverage['plugins/selectall.js'][30]++;
+ range.collapse(true);
+ }
+ _$jscoverage['plugins/selectall.js'][32]++;
+ range.select(true);
+}), notNeedUndo: 1};
+ _$jscoverage['plugins/selectall.js'][39]++;
+ me.addshortcutkey({"selectAll": "ctrl+65"});
+});
diff --git a/_test/coverage/plugins/shortcutmenu.js b/_test/coverage/plugins/shortcutmenu.js
new file mode 100644
index 000000000..1f728c1db
--- /dev/null
+++ b/_test/coverage/plugins/shortcutmenu.js
@@ -0,0 +1,145 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/shortcutmenu.js']) {
+ _$jscoverage['plugins/shortcutmenu.js'] = [];
+ _$jscoverage['plugins/shortcutmenu.js'][12] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][13] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][17] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][18] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][21] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][22] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][32] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][33] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][34] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][36] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][37] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][44] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][45] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][48] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][52] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][53] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][54] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][55] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][56] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][57] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][59] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][61] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][62] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][63] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][69] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][70] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][74] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][75] = 0;
+ _$jscoverage['plugins/shortcutmenu.js'][76] = 0;
+}
+_$jscoverage['plugins/shortcutmenu.js'].source = ["///import core ","///commands 弹出菜单 ","// commandsName popupmenu ","///commandsTitle 弹出菜单 ","/* "," * 弹出菜单 "," * @function "," * @name baidu.editor.plugins.popupmenu "," * @author xuheng "," */ ","","UE. plugins[ 'shortcutmenu' ] = function () { "," var me = this , "," menu, "," items = me. options. shortcutMenu || []; ",""," if (! items. length) { "," return ; "," } ",""," me. addListener ( 'contextmenu mouseup' , function ( type , e) { "," var me = this , "," customEvt = { "," type : type , "," target : e. target || e. srcElement , "," screenX : e. screenX , "," screenY : e. screenY , "," clientX : e. clientX , "," clientY : e. clientY"," } ; ",""," setTimeout ( function () { "," var rng = me. selection. getRange (); "," if ( rng. collapsed === false || type == \"contextmenu\" ) { ",""," if (! menu) { "," menu = new baidu. editor. ui. ShortCutMenu ( { "," editor : me , "," items : items , "," theme : me. options. theme , "," className : 'edui-shortcutmenu' "," } ); ",""," menu. render (); "," me. fireEvent ( \"afterrendershortcutmenu\" , menu); "," } ",""," menu. show ( customEvt , !! UE. plugins[ 'contextmenu' ]); "," } "," } ); ",""," if ( type == 'contextmenu' ) { "," domUtils. preventDefault ( e); "," if ( browser. ie) { "," var ieRange; "," try { "," ieRange = me. selection. getNative (). createRange (); "," } catch ( e) { "," return ; "," } "," if ( ieRange. item) { "," var range = new dom. Range ( me. document); "," range. selectNode ( ieRange. item ( 0 )). select ( true , true ); ",""," } "," } "," } ",""," if ( type == \"keydown\" ) { "," menu && ! menu. isHidden && menu. hide (); "," } "," } ); ",""," me. addListener ( 'keydown' , function ( type) { "," if ( type == \"keydown\" ) { "," menu && ! menu. isHidden && menu. hide (); "," } ",""," } ); ","","} ; ","",""];
+_$jscoverage['plugins/shortcutmenu.js'][12]++;
+UE.plugins.shortcutmenu = (function () {
+ _$jscoverage['plugins/shortcutmenu.js'][13]++;
+ var me = this, menu, items = (me.options.shortcutMenu || []);
+ _$jscoverage['plugins/shortcutmenu.js'][17]++;
+ if ((! items.length)) {
+ _$jscoverage['plugins/shortcutmenu.js'][18]++;
+ return;
+ }
+ _$jscoverage['plugins/shortcutmenu.js'][21]++;
+ me.addListener("contextmenu mouseup", (function (type, e) {
+ _$jscoverage['plugins/shortcutmenu.js'][22]++;
+ var me = this, customEvt = {type: type, target: (e.target || e.srcElement), screenX: e.screenX, screenY: e.screenY, clientX: e.clientX, clientY: e.clientY};
+ _$jscoverage['plugins/shortcutmenu.js'][32]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/shortcutmenu.js'][33]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/shortcutmenu.js'][34]++;
+ if (((rng.collapsed === false) || (type == "contextmenu"))) {
+ _$jscoverage['plugins/shortcutmenu.js'][36]++;
+ if ((! menu)) {
+ _$jscoverage['plugins/shortcutmenu.js'][37]++;
+ menu = new (baidu.editor.ui.ShortCutMenu)({editor: me, items: items, theme: me.options.theme, className: "edui-shortcutmenu"});
+ _$jscoverage['plugins/shortcutmenu.js'][44]++;
+ menu.render();
+ _$jscoverage['plugins/shortcutmenu.js'][45]++;
+ me.fireEvent("afterrendershortcutmenu", menu);
+ }
+ _$jscoverage['plugins/shortcutmenu.js'][48]++;
+ menu.show(customEvt, (! (! UE.plugins.contextmenu)));
+ }
+}));
+ _$jscoverage['plugins/shortcutmenu.js'][52]++;
+ if ((type == "contextmenu")) {
+ _$jscoverage['plugins/shortcutmenu.js'][53]++;
+ domUtils.preventDefault(e);
+ _$jscoverage['plugins/shortcutmenu.js'][54]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/shortcutmenu.js'][55]++;
+ var ieRange;
+ _$jscoverage['plugins/shortcutmenu.js'][56]++;
+ try {
+ _$jscoverage['plugins/shortcutmenu.js'][57]++;
+ ieRange = me.selection.getNative().createRange();
+ }
+ catch (e) {
+ _$jscoverage['plugins/shortcutmenu.js'][59]++;
+ return;
+ }
+ _$jscoverage['plugins/shortcutmenu.js'][61]++;
+ if (ieRange.item) {
+ _$jscoverage['plugins/shortcutmenu.js'][62]++;
+ var range = new (dom.Range)(me.document);
+ _$jscoverage['plugins/shortcutmenu.js'][63]++;
+ range.selectNode(ieRange.item(0)).select(true, true);
+ }
+ }
+ }
+ _$jscoverage['plugins/shortcutmenu.js'][69]++;
+ if ((type == "keydown")) {
+ _$jscoverage['plugins/shortcutmenu.js'][70]++;
+ (menu && (! menu.isHidden) && menu.hide());
+ }
+}));
+ _$jscoverage['plugins/shortcutmenu.js'][74]++;
+ me.addListener("keydown", (function (type) {
+ _$jscoverage['plugins/shortcutmenu.js'][75]++;
+ if ((type == "keydown")) {
+ _$jscoverage['plugins/shortcutmenu.js'][76]++;
+ (menu && (! menu.isHidden) && menu.hide());
+ }
+}));
+});
diff --git a/_test/coverage/plugins/snapscreen.js b/_test/coverage/plugins/snapscreen.js
new file mode 100644
index 000000000..11e252cb1
--- /dev/null
+++ b/_test/coverage/plugins/snapscreen.js
@@ -0,0 +1,173 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/snapscreen.js']) {
+ _$jscoverage['plugins/snapscreen.js'] = [];
+ _$jscoverage['plugins/snapscreen.js'][20] = 0;
+ _$jscoverage['plugins/snapscreen.js'][21] = 0;
+ _$jscoverage['plugins/snapscreen.js'][25] = 0;
+ _$jscoverage['plugins/snapscreen.js'][31] = 0;
+ _$jscoverage['plugins/snapscreen.js'][33] = 0;
+ _$jscoverage['plugins/snapscreen.js'][34] = 0;
+ _$jscoverage['plugins/snapscreen.js'][35] = 0;
+ _$jscoverage['plugins/snapscreen.js'][36] = 0;
+ _$jscoverage['plugins/snapscreen.js'][37] = 0;
+ _$jscoverage['plugins/snapscreen.js'][38] = 0;
+ _$jscoverage['plugins/snapscreen.js'][39] = 0;
+ _$jscoverage['plugins/snapscreen.js'][41] = 0;
+ _$jscoverage['plugins/snapscreen.js'][42] = 0;
+ _$jscoverage['plugins/snapscreen.js'][43] = 0;
+ _$jscoverage['plugins/snapscreen.js'][44] = 0;
+ _$jscoverage['plugins/snapscreen.js'][48] = 0;
+ _$jscoverage['plugins/snapscreen.js'][50] = 0;
+ _$jscoverage['plugins/snapscreen.js'][51] = 0;
+ _$jscoverage['plugins/snapscreen.js'][52] = 0;
+ _$jscoverage['plugins/snapscreen.js'][54] = 0;
+ _$jscoverage['plugins/snapscreen.js'][55] = 0;
+ _$jscoverage['plugins/snapscreen.js'][58] = 0;
+ _$jscoverage['plugins/snapscreen.js'][59] = 0;
+ _$jscoverage['plugins/snapscreen.js'][60] = 0;
+ _$jscoverage['plugins/snapscreen.js'][62] = 0;
+ _$jscoverage['plugins/snapscreen.js'][68] = 0;
+ _$jscoverage['plugins/snapscreen.js'][71] = 0;
+ _$jscoverage['plugins/snapscreen.js'][72] = 0;
+ _$jscoverage['plugins/snapscreen.js'][74] = 0;
+ _$jscoverage['plugins/snapscreen.js'][75] = 0;
+ _$jscoverage['plugins/snapscreen.js'][76] = 0;
+ _$jscoverage['plugins/snapscreen.js'][77] = 0;
+ _$jscoverage['plugins/snapscreen.js'][78] = 0;
+ _$jscoverage['plugins/snapscreen.js'][79] = 0;
+ _$jscoverage['plugins/snapscreen.js'][81] = 0;
+ _$jscoverage['plugins/snapscreen.js'][82] = 0;
+ _$jscoverage['plugins/snapscreen.js'][84] = 0;
+}
+_$jscoverage['plugins/snapscreen.js'].source = ["/** "," * 截屏 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 截屏 "," * @command snapscreen "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //执行截屏命令, 需要服务器端配合接收图片 "," * editor.execCommand( 'snapscreen' ); "," * ``` "," */ ","","UE. plugins[ 'snapscreen' ] = function () { "," var me = this , "," doc, "," snapplugin; ",""," me. setOpt( { "," snapscreenServerPort: location. port //屏幕截图的server端端口 "," , snapscreenImgAlign: '' //截图的图片默认的排版方式 "," , snapscreenHost: location. hostname //屏幕截图的server端文件所在的网站地址或者ip,请不要加http:// ",""," } ); "," me. commands[ 'snapscreen' ] = { "," execCommand: function () { "," var me = this , lang = me. getLang( \"snapScreen_plugin\" ); "," if (! snapplugin) { "," var container = me. container; "," doc = container. ownerDocument || container. document; "," snapplugin = doc. createElement( \"object\" ); "," try { snapplugin. type = \"application/x-pluginbaidusnap\" ; } catch ( e) { "," return ; "," } "," snapplugin. style. cssText = \"position:absolute;left:-9999px;\" ; "," snapplugin. setAttribute( \"width\" , \"0\" ); "," snapplugin. setAttribute( \"height\" , \"0\" ); "," container. appendChild( snapplugin); "," } ","",""," var editorOptions = me. options; ",""," var onSuccess = function ( rs) { "," try { "," rs = eval( \"(\" + rs + \")\" ); "," } catch ( e) { "," alert( lang. callBackErrorMsg); "," return ; "," } ",""," if ( rs. state != 'SUCCESS' ) { "," alert( rs. state); "," return ; "," } "," me. execCommand( 'insertimage' , { "," src: editorOptions. snapscreenPath + rs. url, "," floatStyle: editorOptions. snapscreenImgAlign, "," _src: editorOptions. snapscreenPath + rs. url"," } ); "," } ; "," var onStartUpload = function () { "," //开始截图上传 "," } ; "," var onError = function () { "," alert( lang. uploadErrorMsg); "," } ; "," try { "," var port = editorOptions. snapscreenServerPort + '' ; "," editorOptions. snapscreenServerUrl = editorOptions. snapscreenServerUrl. split( editorOptions. snapscreenHost ); "," editorOptions. snapscreenServerUrl = editorOptions. snapscreenServerUrl[ 1 ] || editorOptions. snapscreenServerUrl[ 0 ]; "," if ( editorOptions. snapscreenServerUrl. indexOf( \":\" + port) === 0 ) { "," editorOptions. snapscreenServerUrl = editorOptions. snapscreenServerUrl. substring( port. length+ 1 ); "," } "," var ret = snapplugin. saveSnapshot( editorOptions. snapscreenHost, editorOptions. snapscreenServerUrl, port); "," onSuccess( ret); "," } catch ( e) { "," me. ui. _dialogs[ 'snapscreenDialog' ]. open(); "," } "," } "," } ; ","} ",""];
+_$jscoverage['plugins/snapscreen.js'][20]++;
+UE.plugins.snapscreen = (function () {
+ _$jscoverage['plugins/snapscreen.js'][21]++;
+ var me = this, doc, snapplugin;
+ _$jscoverage['plugins/snapscreen.js'][25]++;
+ me.setOpt({snapscreenServerPort: location.port, snapscreenImgAlign: "", snapscreenHost: location.hostname});
+ _$jscoverage['plugins/snapscreen.js'][31]++;
+ me.commands.snapscreen = {execCommand: (function () {
+ _$jscoverage['plugins/snapscreen.js'][33]++;
+ var me = this, lang = me.getLang("snapScreen_plugin");
+ _$jscoverage['plugins/snapscreen.js'][34]++;
+ if ((! snapplugin)) {
+ _$jscoverage['plugins/snapscreen.js'][35]++;
+ var container = me.container;
+ _$jscoverage['plugins/snapscreen.js'][36]++;
+ doc = (container.ownerDocument || container.document);
+ _$jscoverage['plugins/snapscreen.js'][37]++;
+ snapplugin = doc.createElement("object");
+ _$jscoverage['plugins/snapscreen.js'][38]++;
+ try {
+ _$jscoverage['plugins/snapscreen.js'][38]++;
+ snapplugin.type = "application/x-pluginbaidusnap";
+ }
+ catch (e) {
+ _$jscoverage['plugins/snapscreen.js'][39]++;
+ return;
+ }
+ _$jscoverage['plugins/snapscreen.js'][41]++;
+ snapplugin.style.cssText = "position:absolute;left:-9999px;";
+ _$jscoverage['plugins/snapscreen.js'][42]++;
+ snapplugin.setAttribute("width", "0");
+ _$jscoverage['plugins/snapscreen.js'][43]++;
+ snapplugin.setAttribute("height", "0");
+ _$jscoverage['plugins/snapscreen.js'][44]++;
+ container.appendChild(snapplugin);
+ }
+ _$jscoverage['plugins/snapscreen.js'][48]++;
+ var editorOptions = me.options;
+ _$jscoverage['plugins/snapscreen.js'][50]++;
+ var onSuccess = (function (rs) {
+ _$jscoverage['plugins/snapscreen.js'][51]++;
+ try {
+ _$jscoverage['plugins/snapscreen.js'][52]++;
+ rs = eval(("(" + rs + ")"));
+ }
+ catch (e) {
+ _$jscoverage['plugins/snapscreen.js'][54]++;
+ alert(lang.callBackErrorMsg);
+ _$jscoverage['plugins/snapscreen.js'][55]++;
+ return;
+ }
+ _$jscoverage['plugins/snapscreen.js'][58]++;
+ if ((rs.state != "SUCCESS")) {
+ _$jscoverage['plugins/snapscreen.js'][59]++;
+ alert(rs.state);
+ _$jscoverage['plugins/snapscreen.js'][60]++;
+ return;
+ }
+ _$jscoverage['plugins/snapscreen.js'][62]++;
+ me.execCommand("insertimage", {src: (editorOptions.snapscreenPath + rs.url), floatStyle: editorOptions.snapscreenImgAlign, _src: (editorOptions.snapscreenPath + rs.url)});
+});
+ _$jscoverage['plugins/snapscreen.js'][68]++;
+ var onStartUpload = (function () {
+});
+ _$jscoverage['plugins/snapscreen.js'][71]++;
+ var onError = (function () {
+ _$jscoverage['plugins/snapscreen.js'][72]++;
+ alert(lang.uploadErrorMsg);
+});
+ _$jscoverage['plugins/snapscreen.js'][74]++;
+ try {
+ _$jscoverage['plugins/snapscreen.js'][75]++;
+ var port = (editorOptions.snapscreenServerPort + "");
+ _$jscoverage['plugins/snapscreen.js'][76]++;
+ editorOptions.snapscreenServerUrl = editorOptions.snapscreenServerUrl.split(editorOptions.snapscreenHost);
+ _$jscoverage['plugins/snapscreen.js'][77]++;
+ editorOptions.snapscreenServerUrl = (editorOptions.snapscreenServerUrl[1] || editorOptions.snapscreenServerUrl[0]);
+ _$jscoverage['plugins/snapscreen.js'][78]++;
+ if ((editorOptions.snapscreenServerUrl.indexOf((":" + port)) === 0)) {
+ _$jscoverage['plugins/snapscreen.js'][79]++;
+ editorOptions.snapscreenServerUrl = editorOptions.snapscreenServerUrl.substring((port.length + 1));
+ }
+ _$jscoverage['plugins/snapscreen.js'][81]++;
+ var ret = snapplugin.saveSnapshot(editorOptions.snapscreenHost, editorOptions.snapscreenServerUrl, port);
+ _$jscoverage['plugins/snapscreen.js'][82]++;
+ onSuccess(ret);
+ }
+ catch (e) {
+ _$jscoverage['plugins/snapscreen.js'][84]++;
+ me.ui._dialogs.snapscreenDialog.open();
+ }
+})};
+});
diff --git a/_test/coverage/plugins/source.js b/_test/coverage/plugins/source.js
new file mode 100644
index 000000000..a67509153
--- /dev/null
+++ b/_test/coverage/plugins/source.js
@@ -0,0 +1,476 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/source.js']) {
+ _$jscoverage['plugins/source.js'] = [];
+ _$jscoverage['plugins/source.js'][7] = 0;
+ _$jscoverage['plugins/source.js'][8] = 0;
+ _$jscoverage['plugins/source.js'][10] = 0;
+ _$jscoverage['plugins/source.js'][11] = 0;
+ _$jscoverage['plugins/source.js'][13] = 0;
+ _$jscoverage['plugins/source.js'][14] = 0;
+ _$jscoverage['plugins/source.js'][15] = 0;
+ _$jscoverage['plugins/source.js'][16] = 0;
+ _$jscoverage['plugins/source.js'][17] = 0;
+ _$jscoverage['plugins/source.js'][18] = 0;
+ _$jscoverage['plugins/source.js'][21] = 0;
+ _$jscoverage['plugins/source.js'][22] = 0;
+ _$jscoverage['plugins/source.js'][24] = 0;
+ _$jscoverage['plugins/source.js'][27] = 0;
+ _$jscoverage['plugins/source.js'][30] = 0;
+ _$jscoverage['plugins/source.js'][31] = 0;
+ _$jscoverage['plugins/source.js'][32] = 0;
+ _$jscoverage['plugins/source.js'][33] = 0;
+ _$jscoverage['plugins/source.js'][34] = 0;
+ _$jscoverage['plugins/source.js'][37] = 0;
+ _$jscoverage['plugins/source.js'][38] = 0;
+ _$jscoverage['plugins/source.js'][42] = 0;
+ _$jscoverage['plugins/source.js'][44] = 0;
+ _$jscoverage['plugins/source.js'][45] = 0;
+ _$jscoverage['plugins/source.js'][46] = 0;
+ _$jscoverage['plugins/source.js'][52] = 0;
+ _$jscoverage['plugins/source.js'][58] = 0;
+ _$jscoverage['plugins/source.js'][59] = 0;
+ _$jscoverage['plugins/source.js'][60] = 0;
+ _$jscoverage['plugins/source.js'][61] = 0;
+ _$jscoverage['plugins/source.js'][62] = 0;
+ _$jscoverage['plugins/source.js'][64] = 0;
+ _$jscoverage['plugins/source.js'][67] = 0;
+ _$jscoverage['plugins/source.js'][70] = 0;
+ _$jscoverage['plugins/source.js'][73] = 0;
+ _$jscoverage['plugins/source.js'][76] = 0;
+ _$jscoverage['plugins/source.js'][77] = 0;
+ _$jscoverage['plugins/source.js'][78] = 0;
+ _$jscoverage['plugins/source.js'][84] = 0;
+ _$jscoverage['plugins/source.js'][85] = 0;
+ _$jscoverage['plugins/source.js'][86] = 0;
+ _$jscoverage['plugins/source.js'][87] = 0;
+ _$jscoverage['plugins/source.js'][88] = 0;
+ _$jscoverage['plugins/source.js'][90] = 0;
+ _$jscoverage['plugins/source.js'][92] = 0;
+ _$jscoverage['plugins/source.js'][95] = 0;
+ _$jscoverage['plugins/source.js'][96] = 0;
+ _$jscoverage['plugins/source.js'][99] = 0;
+ _$jscoverage['plugins/source.js'][101] = 0;
+ _$jscoverage['plugins/source.js'][127] = 0;
+ _$jscoverage['plugins/source.js'][130] = 0;
+ _$jscoverage['plugins/source.js'][131] = 0;
+ _$jscoverage['plugins/source.js'][132] = 0;
+ _$jscoverage['plugins/source.js'][133] = 0;
+ _$jscoverage['plugins/source.js'][134] = 0;
+ _$jscoverage['plugins/source.js'][135] = 0;
+ _$jscoverage['plugins/source.js'][138] = 0;
+ _$jscoverage['plugins/source.js'][139] = 0;
+ _$jscoverage['plugins/source.js'][142] = 0;
+ _$jscoverage['plugins/source.js'][143] = 0;
+ _$jscoverage['plugins/source.js'][144] = 0;
+ _$jscoverage['plugins/source.js'][145] = 0;
+ _$jscoverage['plugins/source.js'][146] = 0;
+ _$jscoverage['plugins/source.js'][147] = 0;
+ _$jscoverage['plugins/source.js'][151] = 0;
+ _$jscoverage['plugins/source.js'][152] = 0;
+ _$jscoverage['plugins/source.js'][153] = 0;
+ _$jscoverage['plugins/source.js'][155] = 0;
+ _$jscoverage['plugins/source.js'][156] = 0;
+ _$jscoverage['plugins/source.js'][158] = 0;
+ _$jscoverage['plugins/source.js'][164] = 0;
+ _$jscoverage['plugins/source.js'][166] = 0;
+ _$jscoverage['plugins/source.js'][168] = 0;
+ _$jscoverage['plugins/source.js'][170] = 0;
+ _$jscoverage['plugins/source.js'][171] = 0;
+ _$jscoverage['plugins/source.js'][172] = 0;
+ _$jscoverage['plugins/source.js'][173] = 0;
+ _$jscoverage['plugins/source.js'][174] = 0;
+ _$jscoverage['plugins/source.js'][175] = 0;
+ _$jscoverage['plugins/source.js'][180] = 0;
+ _$jscoverage['plugins/source.js'][181] = 0;
+ _$jscoverage['plugins/source.js'][184] = 0;
+ _$jscoverage['plugins/source.js'][185] = 0;
+ _$jscoverage['plugins/source.js'][187] = 0;
+ _$jscoverage['plugins/source.js'][188] = 0;
+ _$jscoverage['plugins/source.js'][189] = 0;
+ _$jscoverage['plugins/source.js'][191] = 0;
+ _$jscoverage['plugins/source.js'][193] = 0;
+ _$jscoverage['plugins/source.js'][194] = 0;
+ _$jscoverage['plugins/source.js'][195] = 0;
+ _$jscoverage['plugins/source.js'][197] = 0;
+ _$jscoverage['plugins/source.js'][198] = 0;
+ _$jscoverage['plugins/source.js'][200] = 0;
+ _$jscoverage['plugins/source.js'][201] = 0;
+ _$jscoverage['plugins/source.js'][202] = 0;
+ _$jscoverage['plugins/source.js'][206] = 0;
+ _$jscoverage['plugins/source.js'][208] = 0;
+ _$jscoverage['plugins/source.js'][210] = 0;
+ _$jscoverage['plugins/source.js'][211] = 0;
+ _$jscoverage['plugins/source.js'][213] = 0;
+ _$jscoverage['plugins/source.js'][215] = 0;
+ _$jscoverage['plugins/source.js'][216] = 0;
+ _$jscoverage['plugins/source.js'][217] = 0;
+ _$jscoverage['plugins/source.js'][218] = 0;
+ _$jscoverage['plugins/source.js'][219] = 0;
+ _$jscoverage['plugins/source.js'][220] = 0;
+ _$jscoverage['plugins/source.js'][221] = 0;
+ _$jscoverage['plugins/source.js'][222] = 0;
+ _$jscoverage['plugins/source.js'][228] = 0;
+ _$jscoverage['plugins/source.js'][229] = 0;
+ _$jscoverage['plugins/source.js'][234] = 0;
+ _$jscoverage['plugins/source.js'][237] = 0;
+ _$jscoverage['plugins/source.js'][241] = 0;
+ _$jscoverage['plugins/source.js'][243] = 0;
+ _$jscoverage['plugins/source.js'][244] = 0;
+ _$jscoverage['plugins/source.js'][245] = 0;
+ _$jscoverage['plugins/source.js'][247] = 0;
+ _$jscoverage['plugins/source.js'][252] = 0;
+ _$jscoverage['plugins/source.js'][255] = 0;
+ _$jscoverage['plugins/source.js'][257] = 0;
+ _$jscoverage['plugins/source.js'][258] = 0;
+ _$jscoverage['plugins/source.js'][264] = 0;
+ _$jscoverage['plugins/source.js'][265] = 0;
+ _$jscoverage['plugins/source.js'][266] = 0;
+ _$jscoverage['plugins/source.js'][270] = 0;
+}
+_$jscoverage['plugins/source.js'].source = ["/** "," * 源码编辑插件 "," * @file "," * @since 1.2.6.1 "," */ ","","( function () { "," var sourceEditors = { "," textarea: function ( editor, holder) { "," var textarea = holder. ownerDocument. createElement( 'textarea' ); "," textarea. style. cssText = 'position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;' ; "," // todo: IE下只有onresize属性可用... 很纠结 "," if ( browser. ie && browser. version < 8 ) { "," textarea. style. width = holder. offsetWidth + 'px' ; "," textarea. style. height = holder. offsetHeight + 'px' ; "," holder. onresize = function () { "," textarea. style. width = holder. offsetWidth + 'px' ; "," textarea. style. height = holder. offsetHeight + 'px' ; "," } ; "," } "," holder. appendChild( textarea); "," return { "," setContent: function ( content) { "," textarea. value = content; "," } , "," getContent: function () { "," return textarea. value; "," } , "," select: function () { "," var range; "," if ( browser. ie) { "," range = textarea. createTextRange(); "," range. collapse( true ); "," range. select(); "," } else { "," //todo: chrome下无法设置焦点 "," textarea. setSelectionRange( 0 , 0 ); "," textarea. focus(); "," } "," } , "," dispose: function () { "," holder. removeChild( textarea); "," // todo "," holder. onresize = null ; "," textarea = null ; "," holder = null ; "," } "," } ; "," } , "," codemirror: function ( editor, holder) { ",""," var codeEditor = window. CodeMirror( holder, { "," mode: \"text/html\" , "," tabMode: \"indent\" , "," lineNumbers: true , "," lineWrapping: true "," } ); "," var dom = codeEditor. getWrapperElement(); "," dom. style. cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,\"Courier new\",monospace;font-size:13px;' ; "," codeEditor. getScrollerElement(). style. cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;' ; "," codeEditor. refresh(); "," return { "," getCodeMirror: function () { "," return codeEditor; "," } , "," setContent: function ( content) { "," codeEditor. setValue( content); "," } , "," getContent: function () { "," return codeEditor. getValue(); "," } , "," select: function () { "," codeEditor. focus(); "," } , "," dispose: function () { "," holder. removeChild( dom); "," dom = null ; "," codeEditor = null ; "," } "," } ; "," } "," } ; ",""," UE. plugins[ 'source' ] = function () { "," var me = this ; "," var opt = this . options; "," var sourceMode = false ; "," var sourceEditor; ",""," opt. sourceEditor = browser. ie ? 'textarea' : ( opt. sourceEditor || 'codemirror' ); ",""," me. setOpt( { "," sourceEditorFirst: false "," } ); "," function createSourceEditor( holder) { "," return sourceEditors[ opt. sourceEditor == 'codemirror' && window. CodeMirror ? 'codemirror' : 'textarea' ]( me, holder); "," } ",""," var bakCssText; "," //解决在源码模式下getContent不能得到最新的内容问题 "," var oldGetContent = me. getContent, "," bakAddress; ","",""," /** "," * 切换源码编辑模式和可视化编辑模式 "," * @command source "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'source'); "," * ``` "," */ ",""," /** "," * 查询当前编辑区域的状态是源码模式还是可视化模式 "," * @command source "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 如果当前是源码编辑模式,返回1,否则返回0 "," * @example "," * ```javascript "," * editor.queryCommandState( 'source' ); "," * ``` "," */ "," me. commands[ 'source' ] = { "," execCommand: function () { ",""," sourceMode = ! sourceMode; "," if ( sourceMode) { "," bakAddress = me. selection. getRange(). createAddress( false , true ); "," me. undoManger && me. undoManger. save( true ); "," if ( browser. gecko) { "," me. body. contentEditable = false ; "," } ",""," bakCssText = me. iframe. style. cssText; "," me. iframe. style. cssText += 'position:absolute;left:-32768px;top:-32768px;' ; ","",""," me. fireEvent( 'beforegetcontent' ); "," var root = UE. htmlparser( me. body. innerHTML); "," me. filterOutputRule( root); "," root. traversal( function ( node) { "," if ( node. type == 'element' ) { "," switch ( node. tagName) { "," case 'td' : "," case 'th' : "," case 'caption' : "," if ( node. children && node. children. length == 1 ) { "," if ( node. firstChild(). tagName == 'br' ) { "," node. removeChild( node. firstChild()) "," } "," } ; "," break ; "," case 'pre' : "," node. innerText( node. innerText(). replace( / /g , ' ' )) ",""," } "," } "," } ); ",""," me. fireEvent( 'aftergetcontent' ); ",""," var content = root. toHtml( true ); ",""," sourceEditor = createSourceEditor( me. iframe. parentNode); ",""," sourceEditor. setContent( content); "," setTimeout( function () { "," sourceEditor. select(); "," me. addListener( 'fullscreenchanged' , function () { "," try { "," sourceEditor. getCodeMirror(). refresh() "," } catch ( e) {} "," } ); "," } ); "," //重置getContent,源码模式下取值也能是最新的数据 "," me. getContent = function () { "," return sourceEditor. getContent() || '<p>' + ( browser. ie ? '' : '<br/>' )+ '</p>' ; "," } ; "," } else { "," me. iframe. style. cssText = bakCssText; "," var cont = sourceEditor. getContent() || '<p>' + ( browser. ie ? '' : '<br/>' )+ '</p>' ; "," //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 "," cont = cont. replace( new RegExp( '[ \\\\ r \\\\ t \\\\ n ]*< \\/ ?( \\\\ w+) \\\\ s*(?:[^>]*)>' , 'g' ), function ( a, b) { "," if ( b && ! dtd. $inlineWithA[ b. toLowerCase()]) { "," return a. replace( /(^[\\n\\r\\t ]*)|([\\n\\r\\t ]*$)/g , '' ); "," } "," return a. replace( /(^[\\n\\r\\t]*)|([\\n\\r\\t]*$)/g , '' ) "," } ); "," me. setContent( cont); "," sourceEditor. dispose(); "," sourceEditor = null ; "," //还原getContent方法 "," me. getContent = oldGetContent; "," var first = me. body. firstChild; "," //trace:1106 都删除空了,下边会报错,所以补充一个p占位 "," if (! first) { "," me. body. innerHTML = '<p>' +( browser. ie? '' : '<br/>' )+ '</p>' ; "," first = me. body. firstChild; "," } "," //要在ifm为显示时ff才能取到selection,否则报错 "," //这里不能比较位置了 "," me. undoManger && me. undoManger. save( true ); ",""," if ( browser. gecko) { ",""," var input = document. createElement( 'input' ); "," input. style. cssText = 'position:absolute;left:0;top:-32768px' ; ",""," document. body. appendChild( input); ",""," me. body. contentEditable = false ; "," setTimeout( function () { "," domUtils. setViewportOffset( input, { left: - 32768 , top: 0 } ); "," input. focus(); "," setTimeout( function () { "," me. body. contentEditable = true ; "," me. selection. getRange(). moveToAddress( bakAddress). select( true ); "," domUtils. remove( input); "," } ); ",""," } ); "," } else { "," //ie下有可能报错,比如在代码顶头的情况 "," try { "," me. selection. getRange(). moveToAddress( bakAddress). select( true ); "," } catch ( e) {} ",""," } "," } "," this . fireEvent( 'sourcemodechanged' , sourceMode); "," } , "," queryCommandState: function () { "," return sourceMode| 0 ; "," } , "," notNeedUndo : 1 "," } ; "," var oldQueryCommandState = me. queryCommandState; ",""," me. queryCommandState = function ( cmdName) { "," cmdName = cmdName. toLowerCase(); "," if ( sourceMode) { "," //源码模式下可以开启的命令 "," return cmdName in { "," 'source' : 1 , "," 'fullscreen' : 1 "," } ? 1 : - 1 "," } "," return oldQueryCommandState. apply( this , arguments); "," } ; ",""," if ( opt. sourceEditor == \"codemirror\" ) { ",""," me. addListener( \"ready\" , function () { "," utils. loadFile( document, { "," src : opt. codeMirrorJsUrl || opt. UEDITOR_HOME_URL + \"third-party/codemirror/codemirror.js\" , "," tag : \"script\" , "," type : \"text/javascript\" , "," defer : \"defer\" "," } , function () { "," if ( opt. sourceEditorFirst) { "," setTimeout( function () { "," me. execCommand( \"source\" ); "," } , 0 ); "," } "," } ); "," utils. loadFile( document, { "," tag : \"link\" , "," rel : \"stylesheet\" , "," type : \"text/css\" , "," href : opt. codeMirrorCssUrl || opt. UEDITOR_HOME_URL + \"third-party/codemirror/codemirror.css\" "," } ); ",""," } ); "," } ",""," } ; ","","} )(); "];
+_$jscoverage['plugins/source.js'][7]++;
+(function () {
+ _$jscoverage['plugins/source.js'][8]++;
+ var sourceEditors = {textarea: (function (editor, holder) {
+ _$jscoverage['plugins/source.js'][10]++;
+ var textarea = holder.ownerDocument.createElement("textarea");
+ _$jscoverage['plugins/source.js'][11]++;
+ textarea.style.cssText = "position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;";
+ _$jscoverage['plugins/source.js'][13]++;
+ if ((browser.ie && (browser.version < 8))) {
+ _$jscoverage['plugins/source.js'][14]++;
+ textarea.style.width = (holder.offsetWidth + "px");
+ _$jscoverage['plugins/source.js'][15]++;
+ textarea.style.height = (holder.offsetHeight + "px");
+ _$jscoverage['plugins/source.js'][16]++;
+ holder.onresize = (function () {
+ _$jscoverage['plugins/source.js'][17]++;
+ textarea.style.width = (holder.offsetWidth + "px");
+ _$jscoverage['plugins/source.js'][18]++;
+ textarea.style.height = (holder.offsetHeight + "px");
+});
+ }
+ _$jscoverage['plugins/source.js'][21]++;
+ holder.appendChild(textarea);
+ _$jscoverage['plugins/source.js'][22]++;
+ return ({setContent: (function (content) {
+ _$jscoverage['plugins/source.js'][24]++;
+ textarea.value = content;
+}), getContent: (function () {
+ _$jscoverage['plugins/source.js'][27]++;
+ return textarea.value;
+}), select: (function () {
+ _$jscoverage['plugins/source.js'][30]++;
+ var range;
+ _$jscoverage['plugins/source.js'][31]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/source.js'][32]++;
+ range = textarea.createTextRange();
+ _$jscoverage['plugins/source.js'][33]++;
+ range.collapse(true);
+ _$jscoverage['plugins/source.js'][34]++;
+ range.select();
+ }
+ else {
+ _$jscoverage['plugins/source.js'][37]++;
+ textarea.setSelectionRange(0, 0);
+ _$jscoverage['plugins/source.js'][38]++;
+ textarea.focus();
+ }
+}), dispose: (function () {
+ _$jscoverage['plugins/source.js'][42]++;
+ holder.removeChild(textarea);
+ _$jscoverage['plugins/source.js'][44]++;
+ holder.onresize = null;
+ _$jscoverage['plugins/source.js'][45]++;
+ textarea = null;
+ _$jscoverage['plugins/source.js'][46]++;
+ holder = null;
+})});
+}), codemirror: (function (editor, holder) {
+ _$jscoverage['plugins/source.js'][52]++;
+ var codeEditor = window.CodeMirror(holder, {mode: "text/html", tabMode: "indent", lineNumbers: true, lineWrapping: true});
+ _$jscoverage['plugins/source.js'][58]++;
+ var dom = codeEditor.getWrapperElement();
+ _$jscoverage['plugins/source.js'][59]++;
+ dom.style.cssText = "position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,\"Courier new\",monospace;font-size:13px;";
+ _$jscoverage['plugins/source.js'][60]++;
+ codeEditor.getScrollerElement().style.cssText = "position:absolute;left:0;top:0;width:100%;height:100%;";
+ _$jscoverage['plugins/source.js'][61]++;
+ codeEditor.refresh();
+ _$jscoverage['plugins/source.js'][62]++;
+ return ({getCodeMirror: (function () {
+ _$jscoverage['plugins/source.js'][64]++;
+ return codeEditor;
+}), setContent: (function (content) {
+ _$jscoverage['plugins/source.js'][67]++;
+ codeEditor.setValue(content);
+}), getContent: (function () {
+ _$jscoverage['plugins/source.js'][70]++;
+ return codeEditor.getValue();
+}), select: (function () {
+ _$jscoverage['plugins/source.js'][73]++;
+ codeEditor.focus();
+}), dispose: (function () {
+ _$jscoverage['plugins/source.js'][76]++;
+ holder.removeChild(dom);
+ _$jscoverage['plugins/source.js'][77]++;
+ dom = null;
+ _$jscoverage['plugins/source.js'][78]++;
+ codeEditor = null;
+})});
+})};
+ _$jscoverage['plugins/source.js'][84]++;
+ UE.plugins.source = (function () {
+ _$jscoverage['plugins/source.js'][85]++;
+ var me = this;
+ _$jscoverage['plugins/source.js'][86]++;
+ var opt = this.options;
+ _$jscoverage['plugins/source.js'][87]++;
+ var sourceMode = false;
+ _$jscoverage['plugins/source.js'][88]++;
+ var sourceEditor;
+ _$jscoverage['plugins/source.js'][90]++;
+ opt.sourceEditor = (browser.ie? "textarea": (opt.sourceEditor || "codemirror"));
+ _$jscoverage['plugins/source.js'][92]++;
+ me.setOpt({sourceEditorFirst: false});
+ _$jscoverage['plugins/source.js'][95]++;
+ function createSourceEditor(holder) {
+ _$jscoverage['plugins/source.js'][96]++;
+ return (sourceEditors[(((opt.sourceEditor == "codemirror") && window.CodeMirror)? "codemirror": "textarea")])(me, holder);
+}
+ _$jscoverage['plugins/source.js'][99]++;
+ var bakCssText;
+ _$jscoverage['plugins/source.js'][101]++;
+ var oldGetContent = me.getContent, bakAddress;
+ _$jscoverage['plugins/source.js'][127]++;
+ me.commands.source = {execCommand: (function () {
+ _$jscoverage['plugins/source.js'][130]++;
+ sourceMode = (! sourceMode);
+ _$jscoverage['plugins/source.js'][131]++;
+ if (sourceMode) {
+ _$jscoverage['plugins/source.js'][132]++;
+ bakAddress = me.selection.getRange().createAddress(false, true);
+ _$jscoverage['plugins/source.js'][133]++;
+ (me.undoManger && me.undoManger.save(true));
+ _$jscoverage['plugins/source.js'][134]++;
+ if (browser.gecko) {
+ _$jscoverage['plugins/source.js'][135]++;
+ me.body.contentEditable = false;
+ }
+ _$jscoverage['plugins/source.js'][138]++;
+ bakCssText = me.iframe.style.cssText;
+ _$jscoverage['plugins/source.js'][139]++;
+ me.iframe.style.cssText += "position:absolute;left:-32768px;top:-32768px;";
+ _$jscoverage['plugins/source.js'][142]++;
+ me.fireEvent("beforegetcontent");
+ _$jscoverage['plugins/source.js'][143]++;
+ var root = UE.htmlparser(me.body.innerHTML);
+ _$jscoverage['plugins/source.js'][144]++;
+ me.filterOutputRule(root);
+ _$jscoverage['plugins/source.js'][145]++;
+ root.traversal((function (node) {
+ _$jscoverage['plugins/source.js'][146]++;
+ if ((node.type == "element")) {
+ _$jscoverage['plugins/source.js'][147]++;
+ switch (node.tagName) {
+ case "td":
+ case "th":
+ case "caption":
+ _$jscoverage['plugins/source.js'][151]++;
+ if ((node.children && (node.children.length == 1))) {
+ _$jscoverage['plugins/source.js'][152]++;
+ if ((node.firstChild().tagName == "br")) {
+ _$jscoverage['plugins/source.js'][153]++;
+ node.removeChild(node.firstChild());
+ }
+ }
+ _$jscoverage['plugins/source.js'][155]++;
+ ;
+ _$jscoverage['plugins/source.js'][156]++;
+ break;
+ case "pre":
+ _$jscoverage['plugins/source.js'][158]++;
+ node.innerText(node.innerText().replace(/ /g, " "));
+ }
+ }
+}));
+ _$jscoverage['plugins/source.js'][164]++;
+ me.fireEvent("aftergetcontent");
+ _$jscoverage['plugins/source.js'][166]++;
+ var content = root.toHtml(true);
+ _$jscoverage['plugins/source.js'][168]++;
+ sourceEditor = createSourceEditor(me.iframe.parentNode);
+ _$jscoverage['plugins/source.js'][170]++;
+ sourceEditor.setContent(content);
+ _$jscoverage['plugins/source.js'][171]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/source.js'][172]++;
+ sourceEditor.select();
+ _$jscoverage['plugins/source.js'][173]++;
+ me.addListener("fullscreenchanged", (function () {
+ _$jscoverage['plugins/source.js'][174]++;
+ try {
+ _$jscoverage['plugins/source.js'][175]++;
+ sourceEditor.getCodeMirror().refresh();
+ }
+ catch (e) {
+ }
+}));
+}));
+ _$jscoverage['plugins/source.js'][180]++;
+ me.getContent = (function () {
+ _$jscoverage['plugins/source.js'][181]++;
+ return (sourceEditor.getContent() || ("" + (browser.ie? "": " ") + "
"));
+});
+ }
+ else {
+ _$jscoverage['plugins/source.js'][184]++;
+ me.iframe.style.cssText = bakCssText;
+ _$jscoverage['plugins/source.js'][185]++;
+ var cont = (sourceEditor.getContent() || ("" + (browser.ie? "": " ") + "
"));
+ _$jscoverage['plugins/source.js'][187]++;
+ cont = cont.replace(new RegExp("[\\r\\t\\n ]*?(\\w+)\\s*(?:[^>]*)>", "g"), (function (a, b) {
+ _$jscoverage['plugins/source.js'][188]++;
+ if ((b && (! dtd.$inlineWithA[b.toLowerCase()]))) {
+ _$jscoverage['plugins/source.js'][189]++;
+ return a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g, "");
+ }
+ _$jscoverage['plugins/source.js'][191]++;
+ return a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g, "");
+}));
+ _$jscoverage['plugins/source.js'][193]++;
+ me.setContent(cont);
+ _$jscoverage['plugins/source.js'][194]++;
+ sourceEditor.dispose();
+ _$jscoverage['plugins/source.js'][195]++;
+ sourceEditor = null;
+ _$jscoverage['plugins/source.js'][197]++;
+ me.getContent = oldGetContent;
+ _$jscoverage['plugins/source.js'][198]++;
+ var first = me.body.firstChild;
+ _$jscoverage['plugins/source.js'][200]++;
+ if ((! first)) {
+ _$jscoverage['plugins/source.js'][201]++;
+ me.body.innerHTML = ("" + (browser.ie? "": " ") + "
");
+ _$jscoverage['plugins/source.js'][202]++;
+ first = me.body.firstChild;
+ }
+ _$jscoverage['plugins/source.js'][206]++;
+ (me.undoManger && me.undoManger.save(true));
+ _$jscoverage['plugins/source.js'][208]++;
+ if (browser.gecko) {
+ _$jscoverage['plugins/source.js'][210]++;
+ var input = document.createElement("input");
+ _$jscoverage['plugins/source.js'][211]++;
+ input.style.cssText = "position:absolute;left:0;top:-32768px";
+ _$jscoverage['plugins/source.js'][213]++;
+ document.body.appendChild(input);
+ _$jscoverage['plugins/source.js'][215]++;
+ me.body.contentEditable = false;
+ _$jscoverage['plugins/source.js'][216]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/source.js'][217]++;
+ domUtils.setViewportOffset(input, {left: -32768, top: 0});
+ _$jscoverage['plugins/source.js'][218]++;
+ input.focus();
+ _$jscoverage['plugins/source.js'][219]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/source.js'][220]++;
+ me.body.contentEditable = true;
+ _$jscoverage['plugins/source.js'][221]++;
+ me.selection.getRange().moveToAddress(bakAddress).select(true);
+ _$jscoverage['plugins/source.js'][222]++;
+ domUtils.remove(input);
+}));
+}));
+ }
+ else {
+ _$jscoverage['plugins/source.js'][228]++;
+ try {
+ _$jscoverage['plugins/source.js'][229]++;
+ me.selection.getRange().moveToAddress(bakAddress).select(true);
+ }
+ catch (e) {
+ }
+ }
+ }
+ _$jscoverage['plugins/source.js'][234]++;
+ this.fireEvent("sourcemodechanged", sourceMode);
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/source.js'][237]++;
+ return (sourceMode | 0);
+}), notNeedUndo: 1};
+ _$jscoverage['plugins/source.js'][241]++;
+ var oldQueryCommandState = me.queryCommandState;
+ _$jscoverage['plugins/source.js'][243]++;
+ me.queryCommandState = (function (cmdName) {
+ _$jscoverage['plugins/source.js'][244]++;
+ cmdName = cmdName.toLowerCase();
+ _$jscoverage['plugins/source.js'][245]++;
+ if (sourceMode) {
+ _$jscoverage['plugins/source.js'][247]++;
+ return ((cmdName in {"source": 1, "fullscreen": 1})? 1: -1);
+ }
+ _$jscoverage['plugins/source.js'][252]++;
+ return oldQueryCommandState.apply(this, arguments);
+});
+ _$jscoverage['plugins/source.js'][255]++;
+ if ((opt.sourceEditor == "codemirror")) {
+ _$jscoverage['plugins/source.js'][257]++;
+ me.addListener("ready", (function () {
+ _$jscoverage['plugins/source.js'][258]++;
+ utils.loadFile(document, {src: (opt.codeMirrorJsUrl || (opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.js")), tag: "script", type: "text/javascript", defer: "defer"}, (function () {
+ _$jscoverage['plugins/source.js'][264]++;
+ if (opt.sourceEditorFirst) {
+ _$jscoverage['plugins/source.js'][265]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/source.js'][266]++;
+ me.execCommand("source");
+}), 0);
+ }
+}));
+ _$jscoverage['plugins/source.js'][270]++;
+ utils.loadFile(document, {tag: "link", rel: "stylesheet", type: "text/css", href: (opt.codeMirrorCssUrl || (opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.css"))});
+}));
+ }
+});
+})();
diff --git a/_test/coverage/plugins/table.action.js b/_test/coverage/plugins/table.action.js
new file mode 100644
index 000000000..f42a061c2
--- /dev/null
+++ b/_test/coverage/plugins/table.action.js
@@ -0,0 +1,3173 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/table.action.js']) {
+ _$jscoverage['plugins/table.action.js'] = [];
+ _$jscoverage['plugins/table.action.js'][8] = 0;
+ _$jscoverage['plugins/table.action.js'][9] = 0;
+ _$jscoverage['plugins/table.action.js'][29] = 0;
+ _$jscoverage['plugins/table.action.js'][32] = 0;
+ _$jscoverage['plugins/table.action.js'][35] = 0;
+ _$jscoverage['plugins/table.action.js'][38] = 0;
+ _$jscoverage['plugins/table.action.js'][41] = 0;
+ _$jscoverage['plugins/table.action.js'][44] = 0;
+ _$jscoverage['plugins/table.action.js'][45] = 0;
+ _$jscoverage['plugins/table.action.js'][46] = 0;
+ _$jscoverage['plugins/table.action.js'][47] = 0;
+ _$jscoverage['plugins/table.action.js'][48] = 0;
+ _$jscoverage['plugins/table.action.js'][49] = 0;
+ _$jscoverage['plugins/table.action.js'][50] = 0;
+ _$jscoverage['plugins/table.action.js'][51] = 0;
+ _$jscoverage['plugins/table.action.js'][52] = 0;
+ _$jscoverage['plugins/table.action.js'][54] = 0;
+ _$jscoverage['plugins/table.action.js'][56] = 0;
+ _$jscoverage['plugins/table.action.js'][63] = 0;
+ _$jscoverage['plugins/table.action.js'][72] = 0;
+ _$jscoverage['plugins/table.action.js'][76] = 0;
+ _$jscoverage['plugins/table.action.js'][86] = 0;
+ _$jscoverage['plugins/table.action.js'][87] = 0;
+ _$jscoverage['plugins/table.action.js'][115] = 0;
+ _$jscoverage['plugins/table.action.js'][116] = 0;
+ _$jscoverage['plugins/table.action.js'][128] = 0;
+ _$jscoverage['plugins/table.action.js'][130] = 0;
+ _$jscoverage['plugins/table.action.js'][131] = 0;
+ _$jscoverage['plugins/table.action.js'][132] = 0;
+ _$jscoverage['plugins/table.action.js'][134] = 0;
+ _$jscoverage['plugins/table.action.js'][136] = 0;
+ _$jscoverage['plugins/table.action.js'][137] = 0;
+ _$jscoverage['plugins/table.action.js'][139] = 0;
+ _$jscoverage['plugins/table.action.js'][140] = 0;
+ _$jscoverage['plugins/table.action.js'][141] = 0;
+ _$jscoverage['plugins/table.action.js'][142] = 0;
+ _$jscoverage['plugins/table.action.js'][144] = 0;
+ _$jscoverage['plugins/table.action.js'][146] = 0;
+ _$jscoverage['plugins/table.action.js'][149] = 0;
+ _$jscoverage['plugins/table.action.js'][151] = 0;
+ _$jscoverage['plugins/table.action.js'][152] = 0;
+ _$jscoverage['plugins/table.action.js'][153] = 0;
+ _$jscoverage['plugins/table.action.js'][154] = 0;
+ _$jscoverage['plugins/table.action.js'][155] = 0;
+ _$jscoverage['plugins/table.action.js'][156] = 0;
+ _$jscoverage['plugins/table.action.js'][158] = 0;
+ _$jscoverage['plugins/table.action.js'][163] = 0;
+ _$jscoverage['plugins/table.action.js'][165] = 0;
+ _$jscoverage['plugins/table.action.js'][166] = 0;
+ _$jscoverage['plugins/table.action.js'][167] = 0;
+ _$jscoverage['plugins/table.action.js'][168] = 0;
+ _$jscoverage['plugins/table.action.js'][169] = 0;
+ _$jscoverage['plugins/table.action.js'][171] = 0;
+ _$jscoverage['plugins/table.action.js'][172] = 0;
+ _$jscoverage['plugins/table.action.js'][177] = 0;
+ _$jscoverage['plugins/table.action.js'][179] = 0;
+ _$jscoverage['plugins/table.action.js'][181] = 0;
+ _$jscoverage['plugins/table.action.js'][182] = 0;
+ _$jscoverage['plugins/table.action.js'][183] = 0;
+ _$jscoverage['plugins/table.action.js'][185] = 0;
+ _$jscoverage['plugins/table.action.js'][186] = 0;
+ _$jscoverage['plugins/table.action.js'][188] = 0;
+ _$jscoverage['plugins/table.action.js'][189] = 0;
+ _$jscoverage['plugins/table.action.js'][192] = 0;
+ _$jscoverage['plugins/table.action.js'][193] = 0;
+ _$jscoverage['plugins/table.action.js'][195] = 0;
+ _$jscoverage['plugins/table.action.js'][196] = 0;
+ _$jscoverage['plugins/table.action.js'][197] = 0;
+ _$jscoverage['plugins/table.action.js'][198] = 0;
+ _$jscoverage['plugins/table.action.js'][201] = 0;
+ _$jscoverage['plugins/table.action.js'][202] = 0;
+ _$jscoverage['plugins/table.action.js'][203] = 0;
+ _$jscoverage['plugins/table.action.js'][204] = 0;
+ _$jscoverage['plugins/table.action.js'][205] = 0;
+ _$jscoverage['plugins/table.action.js'][213] = 0;
+ _$jscoverage['plugins/table.action.js'][214] = 0;
+ _$jscoverage['plugins/table.action.js'][215] = 0;
+ _$jscoverage['plugins/table.action.js'][216] = 0;
+ _$jscoverage['plugins/table.action.js'][217] = 0;
+ _$jscoverage['plugins/table.action.js'][218] = 0;
+ _$jscoverage['plugins/table.action.js'][219] = 0;
+ _$jscoverage['plugins/table.action.js'][220] = 0;
+ _$jscoverage['plugins/table.action.js'][223] = 0;
+ _$jscoverage['plugins/table.action.js'][224] = 0;
+ _$jscoverage['plugins/table.action.js'][225] = 0;
+ _$jscoverage['plugins/table.action.js'][227] = 0;
+ _$jscoverage['plugins/table.action.js'][234] = 0;
+ _$jscoverage['plugins/table.action.js'][235] = 0;
+ _$jscoverage['plugins/table.action.js'][236] = 0;
+ _$jscoverage['plugins/table.action.js'][239] = 0;
+ _$jscoverage['plugins/table.action.js'][240] = 0;
+ _$jscoverage['plugins/table.action.js'][241] = 0;
+ _$jscoverage['plugins/table.action.js'][242] = 0;
+ _$jscoverage['plugins/table.action.js'][243] = 0;
+ _$jscoverage['plugins/table.action.js'][244] = 0;
+ _$jscoverage['plugins/table.action.js'][245] = 0;
+ _$jscoverage['plugins/table.action.js'][246] = 0;
+ _$jscoverage['plugins/table.action.js'][248] = 0;
+ _$jscoverage['plugins/table.action.js'][249] = 0;
+ _$jscoverage['plugins/table.action.js'][250] = 0;
+ _$jscoverage['plugins/table.action.js'][251] = 0;
+ _$jscoverage['plugins/table.action.js'][252] = 0;
+ _$jscoverage['plugins/table.action.js'][253] = 0;
+ _$jscoverage['plugins/table.action.js'][254] = 0;
+ _$jscoverage['plugins/table.action.js'][255] = 0;
+ _$jscoverage['plugins/table.action.js'][256] = 0;
+ _$jscoverage['plugins/table.action.js'][257] = 0;
+ _$jscoverage['plugins/table.action.js'][258] = 0;
+ _$jscoverage['plugins/table.action.js'][260] = 0;
+ _$jscoverage['plugins/table.action.js'][261] = 0;
+ _$jscoverage['plugins/table.action.js'][262] = 0;
+ _$jscoverage['plugins/table.action.js'][263] = 0;
+ _$jscoverage['plugins/table.action.js'][264] = 0;
+ _$jscoverage['plugins/table.action.js'][265] = 0;
+ _$jscoverage['plugins/table.action.js'][267] = 0;
+ _$jscoverage['plugins/table.action.js'][268] = 0;
+ _$jscoverage['plugins/table.action.js'][269] = 0;
+ _$jscoverage['plugins/table.action.js'][270] = 0;
+ _$jscoverage['plugins/table.action.js'][271] = 0;
+ _$jscoverage['plugins/table.action.js'][273] = 0;
+ _$jscoverage['plugins/table.action.js'][274] = 0;
+ _$jscoverage['plugins/table.action.js'][275] = 0;
+ _$jscoverage['plugins/table.action.js'][276] = 0;
+ _$jscoverage['plugins/table.action.js'][277] = 0;
+ _$jscoverage['plugins/table.action.js'][278] = 0;
+ _$jscoverage['plugins/table.action.js'][279] = 0;
+ _$jscoverage['plugins/table.action.js'][280] = 0;
+ _$jscoverage['plugins/table.action.js'][284] = 0;
+ _$jscoverage['plugins/table.action.js'][285] = 0;
+ _$jscoverage['plugins/table.action.js'][286] = 0;
+ _$jscoverage['plugins/table.action.js'][287] = 0;
+ _$jscoverage['plugins/table.action.js'][288] = 0;
+ _$jscoverage['plugins/table.action.js'][290] = 0;
+ _$jscoverage['plugins/table.action.js'][291] = 0;
+ _$jscoverage['plugins/table.action.js'][292] = 0;
+ _$jscoverage['plugins/table.action.js'][294] = 0;
+ _$jscoverage['plugins/table.action.js'][295] = 0;
+ _$jscoverage['plugins/table.action.js'][296] = 0;
+ _$jscoverage['plugins/table.action.js'][297] = 0;
+ _$jscoverage['plugins/table.action.js'][300] = 0;
+ _$jscoverage['plugins/table.action.js'][301] = 0;
+ _$jscoverage['plugins/table.action.js'][302] = 0;
+ _$jscoverage['plugins/table.action.js'][303] = 0;
+ _$jscoverage['plugins/table.action.js'][304] = 0;
+ _$jscoverage['plugins/table.action.js'][306] = 0;
+ _$jscoverage['plugins/table.action.js'][307] = 0;
+ _$jscoverage['plugins/table.action.js'][308] = 0;
+ _$jscoverage['plugins/table.action.js'][309] = 0;
+ _$jscoverage['plugins/table.action.js'][310] = 0;
+ _$jscoverage['plugins/table.action.js'][311] = 0;
+ _$jscoverage['plugins/table.action.js'][313] = 0;
+ _$jscoverage['plugins/table.action.js'][314] = 0;
+ _$jscoverage['plugins/table.action.js'][316] = 0;
+ _$jscoverage['plugins/table.action.js'][319] = 0;
+ _$jscoverage['plugins/table.action.js'][320] = 0;
+ _$jscoverage['plugins/table.action.js'][321] = 0;
+ _$jscoverage['plugins/table.action.js'][322] = 0;
+ _$jscoverage['plugins/table.action.js'][323] = 0;
+ _$jscoverage['plugins/table.action.js'][324] = 0;
+ _$jscoverage['plugins/table.action.js'][325] = 0;
+ _$jscoverage['plugins/table.action.js'][326] = 0;
+ _$jscoverage['plugins/table.action.js'][330] = 0;
+ _$jscoverage['plugins/table.action.js'][332] = 0;
+ _$jscoverage['plugins/table.action.js'][333] = 0;
+ _$jscoverage['plugins/table.action.js'][334] = 0;
+ _$jscoverage['plugins/table.action.js'][335] = 0;
+ _$jscoverage['plugins/table.action.js'][336] = 0;
+ _$jscoverage['plugins/table.action.js'][337] = 0;
+ _$jscoverage['plugins/table.action.js'][338] = 0;
+ _$jscoverage['plugins/table.action.js'][340] = 0;
+ _$jscoverage['plugins/table.action.js'][341] = 0;
+ _$jscoverage['plugins/table.action.js'][345] = 0;
+ _$jscoverage['plugins/table.action.js'][348] = 0;
+ _$jscoverage['plugins/table.action.js'][352] = 0;
+ _$jscoverage['plugins/table.action.js'][353] = 0;
+ _$jscoverage['plugins/table.action.js'][354] = 0;
+ _$jscoverage['plugins/table.action.js'][355] = 0;
+ _$jscoverage['plugins/table.action.js'][357] = 0;
+ _$jscoverage['plugins/table.action.js'][358] = 0;
+ _$jscoverage['plugins/table.action.js'][359] = 0;
+ _$jscoverage['plugins/table.action.js'][360] = 0;
+ _$jscoverage['plugins/table.action.js'][361] = 0;
+ _$jscoverage['plugins/table.action.js'][362] = 0;
+ _$jscoverage['plugins/table.action.js'][364] = 0;
+ _$jscoverage['plugins/table.action.js'][365] = 0;
+ _$jscoverage['plugins/table.action.js'][368] = 0;
+ _$jscoverage['plugins/table.action.js'][369] = 0;
+ _$jscoverage['plugins/table.action.js'][370] = 0;
+ _$jscoverage['plugins/table.action.js'][371] = 0;
+ _$jscoverage['plugins/table.action.js'][372] = 0;
+ _$jscoverage['plugins/table.action.js'][373] = 0;
+ _$jscoverage['plugins/table.action.js'][375] = 0;
+ _$jscoverage['plugins/table.action.js'][380] = 0;
+ _$jscoverage['plugins/table.action.js'][384] = 0;
+ _$jscoverage['plugins/table.action.js'][385] = 0;
+ _$jscoverage['plugins/table.action.js'][386] = 0;
+ _$jscoverage['plugins/table.action.js'][387] = 0;
+ _$jscoverage['plugins/table.action.js'][388] = 0;
+ _$jscoverage['plugins/table.action.js'][392] = 0;
+ _$jscoverage['plugins/table.action.js'][393] = 0;
+ _$jscoverage['plugins/table.action.js'][395] = 0;
+ _$jscoverage['plugins/table.action.js'][396] = 0;
+ _$jscoverage['plugins/table.action.js'][397] = 0;
+ _$jscoverage['plugins/table.action.js'][398] = 0;
+ _$jscoverage['plugins/table.action.js'][399] = 0;
+ _$jscoverage['plugins/table.action.js'][401] = 0;
+ _$jscoverage['plugins/table.action.js'][402] = 0;
+ _$jscoverage['plugins/table.action.js'][403] = 0;
+ _$jscoverage['plugins/table.action.js'][404] = 0;
+ _$jscoverage['plugins/table.action.js'][410] = 0;
+ _$jscoverage['plugins/table.action.js'][411] = 0;
+ _$jscoverage['plugins/table.action.js'][417] = 0;
+ _$jscoverage['plugins/table.action.js'][418] = 0;
+ _$jscoverage['plugins/table.action.js'][420] = 0;
+ _$jscoverage['plugins/table.action.js'][421] = 0;
+ _$jscoverage['plugins/table.action.js'][422] = 0;
+ _$jscoverage['plugins/table.action.js'][423] = 0;
+ _$jscoverage['plugins/table.action.js'][424] = 0;
+ _$jscoverage['plugins/table.action.js'][425] = 0;
+ _$jscoverage['plugins/table.action.js'][426] = 0;
+ _$jscoverage['plugins/table.action.js'][427] = 0;
+ _$jscoverage['plugins/table.action.js'][428] = 0;
+ _$jscoverage['plugins/table.action.js'][430] = 0;
+ _$jscoverage['plugins/table.action.js'][431] = 0;
+ _$jscoverage['plugins/table.action.js'][432] = 0;
+ _$jscoverage['plugins/table.action.js'][433] = 0;
+ _$jscoverage['plugins/table.action.js'][437] = 0;
+ _$jscoverage['plugins/table.action.js'][438] = 0;
+ _$jscoverage['plugins/table.action.js'][439] = 0;
+ _$jscoverage['plugins/table.action.js'][440] = 0;
+ _$jscoverage['plugins/table.action.js'][441] = 0;
+ _$jscoverage['plugins/table.action.js'][445] = 0;
+ _$jscoverage['plugins/table.action.js'][446] = 0;
+ _$jscoverage['plugins/table.action.js'][448] = 0;
+ _$jscoverage['plugins/table.action.js'][449] = 0;
+ _$jscoverage['plugins/table.action.js'][450] = 0;
+ _$jscoverage['plugins/table.action.js'][452] = 0;
+ _$jscoverage['plugins/table.action.js'][453] = 0;
+ _$jscoverage['plugins/table.action.js'][454] = 0;
+ _$jscoverage['plugins/table.action.js'][455] = 0;
+ _$jscoverage['plugins/table.action.js'][457] = 0;
+ _$jscoverage['plugins/table.action.js'][458] = 0;
+ _$jscoverage['plugins/table.action.js'][459] = 0;
+ _$jscoverage['plugins/table.action.js'][460] = 0;
+ _$jscoverage['plugins/table.action.js'][461] = 0;
+ _$jscoverage['plugins/table.action.js'][475] = 0;
+ _$jscoverage['plugins/table.action.js'][476] = 0;
+ _$jscoverage['plugins/table.action.js'][477] = 0;
+ _$jscoverage['plugins/table.action.js'][478] = 0;
+ _$jscoverage['plugins/table.action.js'][479] = 0;
+ _$jscoverage['plugins/table.action.js'][480] = 0;
+ _$jscoverage['plugins/table.action.js'][482] = 0;
+ _$jscoverage['plugins/table.action.js'][485] = 0;
+ _$jscoverage['plugins/table.action.js'][486] = 0;
+ _$jscoverage['plugins/table.action.js'][487] = 0;
+ _$jscoverage['plugins/table.action.js'][489] = 0;
+ _$jscoverage['plugins/table.action.js'][492] = 0;
+ _$jscoverage['plugins/table.action.js'][494] = 0;
+ _$jscoverage['plugins/table.action.js'][495] = 0;
+ _$jscoverage['plugins/table.action.js'][496] = 0;
+ _$jscoverage['plugins/table.action.js'][497] = 0;
+ _$jscoverage['plugins/table.action.js'][498] = 0;
+ _$jscoverage['plugins/table.action.js'][499] = 0;
+ _$jscoverage['plugins/table.action.js'][501] = 0;
+ _$jscoverage['plugins/table.action.js'][504] = 0;
+ _$jscoverage['plugins/table.action.js'][505] = 0;
+ _$jscoverage['plugins/table.action.js'][506] = 0;
+ _$jscoverage['plugins/table.action.js'][508] = 0;
+ _$jscoverage['plugins/table.action.js'][515] = 0;
+ _$jscoverage['plugins/table.action.js'][518] = 0;
+ _$jscoverage['plugins/table.action.js'][520] = 0;
+ _$jscoverage['plugins/table.action.js'][521] = 0;
+ _$jscoverage['plugins/table.action.js'][522] = 0;
+ _$jscoverage['plugins/table.action.js'][523] = 0;
+ _$jscoverage['plugins/table.action.js'][529] = 0;
+ _$jscoverage['plugins/table.action.js'][530] = 0;
+ _$jscoverage['plugins/table.action.js'][531] = 0;
+ _$jscoverage['plugins/table.action.js'][535] = 0;
+ _$jscoverage['plugins/table.action.js'][537] = 0;
+ _$jscoverage['plugins/table.action.js'][538] = 0;
+ _$jscoverage['plugins/table.action.js'][541] = 0;
+ _$jscoverage['plugins/table.action.js'][542] = 0;
+ _$jscoverage['plugins/table.action.js'][543] = 0;
+ _$jscoverage['plugins/table.action.js'][547] = 0;
+ _$jscoverage['plugins/table.action.js'][548] = 0;
+ _$jscoverage['plugins/table.action.js'][552] = 0;
+ _$jscoverage['plugins/table.action.js'][553] = 0;
+ _$jscoverage['plugins/table.action.js'][555] = 0;
+ _$jscoverage['plugins/table.action.js'][556] = 0;
+ _$jscoverage['plugins/table.action.js'][559] = 0;
+ _$jscoverage['plugins/table.action.js'][560] = 0;
+ _$jscoverage['plugins/table.action.js'][561] = 0;
+ _$jscoverage['plugins/table.action.js'][563] = 0;
+ _$jscoverage['plugins/table.action.js'][564] = 0;
+ _$jscoverage['plugins/table.action.js'][567] = 0;
+ _$jscoverage['plugins/table.action.js'][568] = 0;
+ _$jscoverage['plugins/table.action.js'][569] = 0;
+ _$jscoverage['plugins/table.action.js'][570] = 0;
+ _$jscoverage['plugins/table.action.js'][571] = 0;
+ _$jscoverage['plugins/table.action.js'][574] = 0;
+ _$jscoverage['plugins/table.action.js'][576] = 0;
+ _$jscoverage['plugins/table.action.js'][577] = 0;
+ _$jscoverage['plugins/table.action.js'][578] = 0;
+ _$jscoverage['plugins/table.action.js'][579] = 0;
+ _$jscoverage['plugins/table.action.js'][580] = 0;
+ _$jscoverage['plugins/table.action.js'][582] = 0;
+ _$jscoverage['plugins/table.action.js'][585] = 0;
+ _$jscoverage['plugins/table.action.js'][586] = 0;
+ _$jscoverage['plugins/table.action.js'][587] = 0;
+ _$jscoverage['plugins/table.action.js'][588] = 0;
+ _$jscoverage['plugins/table.action.js'][589] = 0;
+ _$jscoverage['plugins/table.action.js'][590] = 0;
+ _$jscoverage['plugins/table.action.js'][591] = 0;
+ _$jscoverage['plugins/table.action.js'][594] = 0;
+ _$jscoverage['plugins/table.action.js'][598] = 0;
+ _$jscoverage['plugins/table.action.js'][599] = 0;
+ _$jscoverage['plugins/table.action.js'][601] = 0;
+ _$jscoverage['plugins/table.action.js'][602] = 0;
+ _$jscoverage['plugins/table.action.js'][604] = 0;
+ _$jscoverage['plugins/table.action.js'][605] = 0;
+ _$jscoverage['plugins/table.action.js'][606] = 0;
+ _$jscoverage['plugins/table.action.js'][608] = 0;
+ _$jscoverage['plugins/table.action.js'][609] = 0;
+ _$jscoverage['plugins/table.action.js'][610] = 0;
+ _$jscoverage['plugins/table.action.js'][611] = 0;
+ _$jscoverage['plugins/table.action.js'][612] = 0;
+ _$jscoverage['plugins/table.action.js'][615] = 0;
+ _$jscoverage['plugins/table.action.js'][616] = 0;
+ _$jscoverage['plugins/table.action.js'][617] = 0;
+ _$jscoverage['plugins/table.action.js'][618] = 0;
+ _$jscoverage['plugins/table.action.js'][619] = 0;
+ _$jscoverage['plugins/table.action.js'][623] = 0;
+ _$jscoverage['plugins/table.action.js'][624] = 0;
+ _$jscoverage['plugins/table.action.js'][626] = 0;
+ _$jscoverage['plugins/table.action.js'][627] = 0;
+ _$jscoverage['plugins/table.action.js'][630] = 0;
+ _$jscoverage['plugins/table.action.js'][631] = 0;
+ _$jscoverage['plugins/table.action.js'][632] = 0;
+ _$jscoverage['plugins/table.action.js'][634] = 0;
+ _$jscoverage['plugins/table.action.js'][635] = 0;
+ _$jscoverage['plugins/table.action.js'][636] = 0;
+ _$jscoverage['plugins/table.action.js'][638] = 0;
+ _$jscoverage['plugins/table.action.js'][639] = 0;
+ _$jscoverage['plugins/table.action.js'][641] = 0;
+ _$jscoverage['plugins/table.action.js'][642] = 0;
+ _$jscoverage['plugins/table.action.js'][644] = 0;
+ _$jscoverage['plugins/table.action.js'][650] = 0;
+ _$jscoverage['plugins/table.action.js'][651] = 0;
+ _$jscoverage['plugins/table.action.js'][653] = 0;
+ _$jscoverage['plugins/table.action.js'][656] = 0;
+ _$jscoverage['plugins/table.action.js'][657] = 0;
+ _$jscoverage['plugins/table.action.js'][661] = 0;
+ _$jscoverage['plugins/table.action.js'][662] = 0;
+ _$jscoverage['plugins/table.action.js'][663] = 0;
+ _$jscoverage['plugins/table.action.js'][664] = 0;
+ _$jscoverage['plugins/table.action.js'][665] = 0;
+ _$jscoverage['plugins/table.action.js'][666] = 0;
+ _$jscoverage['plugins/table.action.js'][667] = 0;
+ _$jscoverage['plugins/table.action.js'][668] = 0;
+ _$jscoverage['plugins/table.action.js'][669] = 0;
+ _$jscoverage['plugins/table.action.js'][671] = 0;
+ _$jscoverage['plugins/table.action.js'][673] = 0;
+ _$jscoverage['plugins/table.action.js'][674] = 0;
+ _$jscoverage['plugins/table.action.js'][675] = 0;
+ _$jscoverage['plugins/table.action.js'][676] = 0;
+ _$jscoverage['plugins/table.action.js'][677] = 0;
+ _$jscoverage['plugins/table.action.js'][678] = 0;
+ _$jscoverage['plugins/table.action.js'][679] = 0;
+ _$jscoverage['plugins/table.action.js'][682] = 0;
+ _$jscoverage['plugins/table.action.js'][683] = 0;
+ _$jscoverage['plugins/table.action.js'][684] = 0;
+ _$jscoverage['plugins/table.action.js'][685] = 0;
+ _$jscoverage['plugins/table.action.js'][689] = 0;
+ _$jscoverage['plugins/table.action.js'][690] = 0;
+ _$jscoverage['plugins/table.action.js'][691] = 0;
+ _$jscoverage['plugins/table.action.js'][692] = 0;
+ _$jscoverage['plugins/table.action.js'][693] = 0;
+ _$jscoverage['plugins/table.action.js'][695] = 0;
+ _$jscoverage['plugins/table.action.js'][697] = 0;
+ _$jscoverage['plugins/table.action.js'][707] = 0;
+ _$jscoverage['plugins/table.action.js'][708] = 0;
+ _$jscoverage['plugins/table.action.js'][709] = 0;
+ _$jscoverage['plugins/table.action.js'][712] = 0;
+ _$jscoverage['plugins/table.action.js'][713] = 0;
+ _$jscoverage['plugins/table.action.js'][714] = 0;
+ _$jscoverage['plugins/table.action.js'][715] = 0;
+ _$jscoverage['plugins/table.action.js'][719] = 0;
+ _$jscoverage['plugins/table.action.js'][720] = 0;
+ _$jscoverage['plugins/table.action.js'][721] = 0;
+ _$jscoverage['plugins/table.action.js'][722] = 0;
+ _$jscoverage['plugins/table.action.js'][723] = 0;
+ _$jscoverage['plugins/table.action.js'][726] = 0;
+ _$jscoverage['plugins/table.action.js'][727] = 0;
+ _$jscoverage['plugins/table.action.js'][728] = 0;
+ _$jscoverage['plugins/table.action.js'][729] = 0;
+ _$jscoverage['plugins/table.action.js'][731] = 0;
+ _$jscoverage['plugins/table.action.js'][732] = 0;
+ _$jscoverage['plugins/table.action.js'][733] = 0;
+ _$jscoverage['plugins/table.action.js'][736] = 0;
+ _$jscoverage['plugins/table.action.js'][740] = 0;
+ _$jscoverage['plugins/table.action.js'][741] = 0;
+ _$jscoverage['plugins/table.action.js'][742] = 0;
+ _$jscoverage['plugins/table.action.js'][744] = 0;
+ _$jscoverage['plugins/table.action.js'][750] = 0;
+ _$jscoverage['plugins/table.action.js'][752] = 0;
+ _$jscoverage['plugins/table.action.js'][753] = 0;
+ _$jscoverage['plugins/table.action.js'][756] = 0;
+ _$jscoverage['plugins/table.action.js'][759] = 0;
+ _$jscoverage['plugins/table.action.js'][763] = 0;
+ _$jscoverage['plugins/table.action.js'][765] = 0;
+ _$jscoverage['plugins/table.action.js'][767] = 0;
+ _$jscoverage['plugins/table.action.js'][768] = 0;
+ _$jscoverage['plugins/table.action.js'][769] = 0;
+ _$jscoverage['plugins/table.action.js'][770] = 0;
+ _$jscoverage['plugins/table.action.js'][772] = 0;
+ _$jscoverage['plugins/table.action.js'][777] = 0;
+ _$jscoverage['plugins/table.action.js'][778] = 0;
+ _$jscoverage['plugins/table.action.js'][779] = 0;
+ _$jscoverage['plugins/table.action.js'][780] = 0;
+ _$jscoverage['plugins/table.action.js'][781] = 0;
+ _$jscoverage['plugins/table.action.js'][782] = 0;
+ _$jscoverage['plugins/table.action.js'][783] = 0;
+ _$jscoverage['plugins/table.action.js'][784] = 0;
+ _$jscoverage['plugins/table.action.js'][785] = 0;
+ _$jscoverage['plugins/table.action.js'][786] = 0;
+ _$jscoverage['plugins/table.action.js'][788] = 0;
+ _$jscoverage['plugins/table.action.js'][791] = 0;
+ _$jscoverage['plugins/table.action.js'][793] = 0;
+ _$jscoverage['plugins/table.action.js'][794] = 0;
+ _$jscoverage['plugins/table.action.js'][795] = 0;
+ _$jscoverage['plugins/table.action.js'][796] = 0;
+ _$jscoverage['plugins/table.action.js'][799] = 0;
+ _$jscoverage['plugins/table.action.js'][800] = 0;
+ _$jscoverage['plugins/table.action.js'][801] = 0;
+ _$jscoverage['plugins/table.action.js'][802] = 0;
+ _$jscoverage['plugins/table.action.js'][803] = 0;
+ _$jscoverage['plugins/table.action.js'][804] = 0;
+ _$jscoverage['plugins/table.action.js'][806] = 0;
+ _$jscoverage['plugins/table.action.js'][807] = 0;
+ _$jscoverage['plugins/table.action.js'][808] = 0;
+ _$jscoverage['plugins/table.action.js'][809] = 0;
+ _$jscoverage['plugins/table.action.js'][810] = 0;
+ _$jscoverage['plugins/table.action.js'][813] = 0;
+ _$jscoverage['plugins/table.action.js'][817] = 0;
+ _$jscoverage['plugins/table.action.js'][821] = 0;
+ _$jscoverage['plugins/table.action.js'][825] = 0;
+ _$jscoverage['plugins/table.action.js'][827] = 0;
+ _$jscoverage['plugins/table.action.js'][828] = 0;
+ _$jscoverage['plugins/table.action.js'][829] = 0;
+ _$jscoverage['plugins/table.action.js'][830] = 0;
+ _$jscoverage['plugins/table.action.js'][831] = 0;
+ _$jscoverage['plugins/table.action.js'][834] = 0;
+ _$jscoverage['plugins/table.action.js'][838] = 0;
+ _$jscoverage['plugins/table.action.js'][839] = 0;
+ _$jscoverage['plugins/table.action.js'][841] = 0;
+ _$jscoverage['plugins/table.action.js'][842] = 0;
+ _$jscoverage['plugins/table.action.js'][843] = 0;
+ _$jscoverage['plugins/table.action.js'][844] = 0;
+ _$jscoverage['plugins/table.action.js'][845] = 0;
+ _$jscoverage['plugins/table.action.js'][846] = 0;
+ _$jscoverage['plugins/table.action.js'][847] = 0;
+ _$jscoverage['plugins/table.action.js'][848] = 0;
+ _$jscoverage['plugins/table.action.js'][850] = 0;
+ _$jscoverage['plugins/table.action.js'][851] = 0;
+ _$jscoverage['plugins/table.action.js'][853] = 0;
+ _$jscoverage['plugins/table.action.js'][854] = 0;
+ _$jscoverage['plugins/table.action.js'][856] = 0;
+ _$jscoverage['plugins/table.action.js'][857] = 0;
+ _$jscoverage['plugins/table.action.js'][859] = 0;
+ _$jscoverage['plugins/table.action.js'][860] = 0;
+ _$jscoverage['plugins/table.action.js'][862] = 0;
+ _$jscoverage['plugins/table.action.js'][864] = 0;
+ _$jscoverage['plugins/table.action.js'][866] = 0;
+ _$jscoverage['plugins/table.action.js'][867] = 0;
+ _$jscoverage['plugins/table.action.js'][868] = 0;
+ _$jscoverage['plugins/table.action.js'][872] = 0;
+ _$jscoverage['plugins/table.action.js'][873] = 0;
+ _$jscoverage['plugins/table.action.js'][874] = 0;
+ _$jscoverage['plugins/table.action.js'][878] = 0;
+ _$jscoverage['plugins/table.action.js'][879] = 0;
+ _$jscoverage['plugins/table.action.js'][882] = 0;
+ _$jscoverage['plugins/table.action.js'][897] = 0;
+ _$jscoverage['plugins/table.action.js'][898] = 0;
+ _$jscoverage['plugins/table.action.js'][901] = 0;
+ _$jscoverage['plugins/table.action.js'][902] = 0;
+ _$jscoverage['plugins/table.action.js'][904] = 0;
+ _$jscoverage['plugins/table.action.js'][906] = 0;
+ _$jscoverage['plugins/table.action.js'][915] = 0;
+ _$jscoverage['plugins/table.action.js'][916] = 0;
+ _$jscoverage['plugins/table.action.js'][917] = 0;
+ _$jscoverage['plugins/table.action.js'][918] = 0;
+ _$jscoverage['plugins/table.action.js'][924] = 0;
+ _$jscoverage['plugins/table.action.js'][925] = 0;
+ _$jscoverage['plugins/table.action.js'][927] = 0;
+ _$jscoverage['plugins/table.action.js'][934] = 0;
+ _$jscoverage['plugins/table.action.js'][935] = 0;
+ _$jscoverage['plugins/table.action.js'][936] = 0;
+ _$jscoverage['plugins/table.action.js'][938] = 0;
+ _$jscoverage['plugins/table.action.js'][940] = 0;
+ _$jscoverage['plugins/table.action.js'][947] = 0;
+ _$jscoverage['plugins/table.action.js'][948] = 0;
+ _$jscoverage['plugins/table.action.js'][949] = 0;
+ _$jscoverage['plugins/table.action.js'][950] = 0;
+ _$jscoverage['plugins/table.action.js'][951] = 0;
+ _$jscoverage['plugins/table.action.js'][952] = 0;
+ _$jscoverage['plugins/table.action.js'][953] = 0;
+ _$jscoverage['plugins/table.action.js'][955] = 0;
+ _$jscoverage['plugins/table.action.js'][958] = 0;
+ _$jscoverage['plugins/table.action.js'][960] = 0;
+ _$jscoverage['plugins/table.action.js'][968] = 0;
+ _$jscoverage['plugins/table.action.js'][970] = 0;
+ _$jscoverage['plugins/table.action.js'][973] = 0;
+ _$jscoverage['plugins/table.action.js'][974] = 0;
+ _$jscoverage['plugins/table.action.js'][975] = 0;
+ _$jscoverage['plugins/table.action.js'][976] = 0;
+ _$jscoverage['plugins/table.action.js'][977] = 0;
+ _$jscoverage['plugins/table.action.js'][979] = 0;
+ _$jscoverage['plugins/table.action.js'][989] = 0;
+ _$jscoverage['plugins/table.action.js'][990] = 0;
+ _$jscoverage['plugins/table.action.js'][993] = 0;
+ _$jscoverage['plugins/table.action.js'][995] = 0;
+ _$jscoverage['plugins/table.action.js'][999] = 0;
+ _$jscoverage['plugins/table.action.js'][1006] = 0;
+ _$jscoverage['plugins/table.action.js'][1008] = 0;
+ _$jscoverage['plugins/table.action.js'][1017] = 0;
+ _$jscoverage['plugins/table.action.js'][1024] = 0;
+ _$jscoverage['plugins/table.action.js'][1026] = 0;
+ _$jscoverage['plugins/table.action.js'][1028] = 0;
+ _$jscoverage['plugins/table.action.js'][1037] = 0;
+ _$jscoverage['plugins/table.action.js'][1038] = 0;
+ _$jscoverage['plugins/table.action.js'][1040] = 0;
+ _$jscoverage['plugins/table.action.js'][1041] = 0;
+ _$jscoverage['plugins/table.action.js'][1044] = 0;
+ _$jscoverage['plugins/table.action.js'][1045] = 0;
+ _$jscoverage['plugins/table.action.js'][1047] = 0;
+ _$jscoverage['plugins/table.action.js'][1048] = 0;
+ _$jscoverage['plugins/table.action.js'][1050] = 0;
+ _$jscoverage['plugins/table.action.js'][1051] = 0;
+ _$jscoverage['plugins/table.action.js'][1053] = 0;
+ _$jscoverage['plugins/table.action.js'][1054] = 0;
+ _$jscoverage['plugins/table.action.js'][1056] = 0;
+ _$jscoverage['plugins/table.action.js'][1059] = 0;
+ _$jscoverage['plugins/table.action.js'][1061] = 0;
+ _$jscoverage['plugins/table.action.js'][1062] = 0;
+ _$jscoverage['plugins/table.action.js'][1065] = 0;
+ _$jscoverage['plugins/table.action.js'][1071] = 0;
+ _$jscoverage['plugins/table.action.js'][1072] = 0;
+ _$jscoverage['plugins/table.action.js'][1075] = 0;
+ _$jscoverage['plugins/table.action.js'][1076] = 0;
+ _$jscoverage['plugins/table.action.js'][1077] = 0;
+ _$jscoverage['plugins/table.action.js'][1078] = 0;
+ _$jscoverage['plugins/table.action.js'][1079] = 0;
+ _$jscoverage['plugins/table.action.js'][1082] = 0;
+ _$jscoverage['plugins/table.action.js'][1083] = 0;
+ _$jscoverage['plugins/table.action.js'][1084] = 0;
+ _$jscoverage['plugins/table.action.js'][1086] = 0;
+ _$jscoverage['plugins/table.action.js'][1087] = 0;
+ _$jscoverage['plugins/table.action.js'][1088] = 0;
+ _$jscoverage['plugins/table.action.js'][1094] = 0;
+ _$jscoverage['plugins/table.action.js'][1100] = 0;
+ _$jscoverage['plugins/table.action.js'][1101] = 0;
+ _$jscoverage['plugins/table.action.js'][1102] = 0;
+ _$jscoverage['plugins/table.action.js'][1106] = 0;
+ _$jscoverage['plugins/table.action.js'][1107] = 0;
+ _$jscoverage['plugins/table.action.js'][1108] = 0;
+ _$jscoverage['plugins/table.action.js'][1109] = 0;
+ _$jscoverage['plugins/table.action.js'][1110] = 0;
+ _$jscoverage['plugins/table.action.js'][1111] = 0;
+ _$jscoverage['plugins/table.action.js'][1112] = 0;
+ _$jscoverage['plugins/table.action.js'][1114] = 0;
+ _$jscoverage['plugins/table.action.js'][1116] = 0;
+ _$jscoverage['plugins/table.action.js'][1117] = 0;
+ _$jscoverage['plugins/table.action.js'][1118] = 0;
+ _$jscoverage['plugins/table.action.js'][1119] = 0;
+ _$jscoverage['plugins/table.action.js'][1121] = 0;
+ _$jscoverage['plugins/table.action.js'][1122] = 0;
+ _$jscoverage['plugins/table.action.js'][1123] = 0;
+ _$jscoverage['plugins/table.action.js'][1124] = 0;
+ _$jscoverage['plugins/table.action.js'][1128] = 0;
+ _$jscoverage['plugins/table.action.js'][1129] = 0;
+ _$jscoverage['plugins/table.action.js'][1133] = 0;
+ _$jscoverage['plugins/table.action.js'][1135] = 0;
+ _$jscoverage['plugins/table.action.js'][1137] = 0;
+ _$jscoverage['plugins/table.action.js'][1140] = 0;
+ _$jscoverage['plugins/table.action.js'][1142] = 0;
+ _$jscoverage['plugins/table.action.js'][1146] = 0;
+ _$jscoverage['plugins/table.action.js'][1148] = 0;
+ _$jscoverage['plugins/table.action.js'][1152] = 0;
+ _$jscoverage['plugins/table.action.js'][1155] = 0;
+ _$jscoverage['plugins/table.action.js'][1157] = 0;
+ _$jscoverage['plugins/table.action.js'][1159] = 0;
+ _$jscoverage['plugins/table.action.js'][1161] = 0;
+ _$jscoverage['plugins/table.action.js'][1162] = 0;
+ _$jscoverage['plugins/table.action.js'][1163] = 0;
+ _$jscoverage['plugins/table.action.js'][1166] = 0;
+ _$jscoverage['plugins/table.action.js'][1170] = 0;
+ _$jscoverage['plugins/table.action.js'][1172] = 0;
+ _$jscoverage['plugins/table.action.js'][1174] = 0;
+ _$jscoverage['plugins/table.action.js'][1194] = 0;
+ _$jscoverage['plugins/table.action.js'][1196] = 0;
+ _$jscoverage['plugins/table.action.js'][1199] = 0;
+ _$jscoverage['plugins/table.action.js'][1200] = 0;
+ _$jscoverage['plugins/table.action.js'][1202] = 0;
+ _$jscoverage['plugins/table.action.js'][1203] = 0;
+ _$jscoverage['plugins/table.action.js'][1204] = 0;
+ _$jscoverage['plugins/table.action.js'][1205] = 0;
+ _$jscoverage['plugins/table.action.js'][1206] = 0;
+ _$jscoverage['plugins/table.action.js'][1209] = 0;
+ _$jscoverage['plugins/table.action.js'][1210] = 0;
+ _$jscoverage['plugins/table.action.js'][1211] = 0;
+ _$jscoverage['plugins/table.action.js'][1212] = 0;
+ _$jscoverage['plugins/table.action.js'][1215] = 0;
+ _$jscoverage['plugins/table.action.js'][1222] = 0;
+ _$jscoverage['plugins/table.action.js'][1224] = 0;
+ _$jscoverage['plugins/table.action.js'][1225] = 0;
+ _$jscoverage['plugins/table.action.js'][1228] = 0;
+ _$jscoverage['plugins/table.action.js'][1231] = 0;
+ _$jscoverage['plugins/table.action.js'][1233] = 0;
+ _$jscoverage['plugins/table.action.js'][1234] = 0;
+ _$jscoverage['plugins/table.action.js'][1239] = 0;
+ _$jscoverage['plugins/table.action.js'][1241] = 0;
+ _$jscoverage['plugins/table.action.js'][1244] = 0;
+ _$jscoverage['plugins/table.action.js'][1246] = 0;
+ _$jscoverage['plugins/table.action.js'][1248] = 0;
+ _$jscoverage['plugins/table.action.js'][1249] = 0;
+ _$jscoverage['plugins/table.action.js'][1254] = 0;
+ _$jscoverage['plugins/table.action.js'][1258] = 0;
+ _$jscoverage['plugins/table.action.js'][1259] = 0;
+ _$jscoverage['plugins/table.action.js'][1260] = 0;
+ _$jscoverage['plugins/table.action.js'][1263] = 0;
+ _$jscoverage['plugins/table.action.js'][1265] = 0;
+ _$jscoverage['plugins/table.action.js'][1268] = 0;
+ _$jscoverage['plugins/table.action.js'][1270] = 0;
+ _$jscoverage['plugins/table.action.js'][1271] = 0;
+ _$jscoverage['plugins/table.action.js'][1272] = 0;
+ _$jscoverage['plugins/table.action.js'][1277] = 0;
+ _$jscoverage['plugins/table.action.js'][1282] = 0;
+ _$jscoverage['plugins/table.action.js'][1284] = 0;
+ _$jscoverage['plugins/table.action.js'][1286] = 0;
+ _$jscoverage['plugins/table.action.js'][1287] = 0;
+ _$jscoverage['plugins/table.action.js'][1289] = 0;
+ _$jscoverage['plugins/table.action.js'][1290] = 0;
+ _$jscoverage['plugins/table.action.js'][1291] = 0;
+ _$jscoverage['plugins/table.action.js'][1293] = 0;
+ _$jscoverage['plugins/table.action.js'][1294] = 0;
+ _$jscoverage['plugins/table.action.js'][1295] = 0;
+ _$jscoverage['plugins/table.action.js'][1296] = 0;
+ _$jscoverage['plugins/table.action.js'][1297] = 0;
+ _$jscoverage['plugins/table.action.js'][1299] = 0;
+ _$jscoverage['plugins/table.action.js'][1300] = 0;
+ _$jscoverage['plugins/table.action.js'][1303] = 0;
+ _$jscoverage['plugins/table.action.js'][1305] = 0;
+ _$jscoverage['plugins/table.action.js'][1306] = 0;
+ _$jscoverage['plugins/table.action.js'][1309] = 0;
+ _$jscoverage['plugins/table.action.js'][1311] = 0;
+ _$jscoverage['plugins/table.action.js'][1313] = 0;
+ _$jscoverage['plugins/table.action.js'][1314] = 0;
+ _$jscoverage['plugins/table.action.js'][1316] = 0;
+ _$jscoverage['plugins/table.action.js'][1321] = 0;
+ _$jscoverage['plugins/table.action.js'][1322] = 0;
+ _$jscoverage['plugins/table.action.js'][1325] = 0;
+ _$jscoverage['plugins/table.action.js'][1327] = 0;
+ _$jscoverage['plugins/table.action.js'][1328] = 0;
+ _$jscoverage['plugins/table.action.js'][1329] = 0;
+ _$jscoverage['plugins/table.action.js'][1335] = 0;
+ _$jscoverage['plugins/table.action.js'][1336] = 0;
+ _$jscoverage['plugins/table.action.js'][1338] = 0;
+ _$jscoverage['plugins/table.action.js'][1342] = 0;
+ _$jscoverage['plugins/table.action.js'][1343] = 0;
+ _$jscoverage['plugins/table.action.js'][1344] = 0;
+ _$jscoverage['plugins/table.action.js'][1345] = 0;
+ _$jscoverage['plugins/table.action.js'][1346] = 0;
+ _$jscoverage['plugins/table.action.js'][1347] = 0;
+ _$jscoverage['plugins/table.action.js'][1350] = 0;
+ _$jscoverage['plugins/table.action.js'][1353] = 0;
+ _$jscoverage['plugins/table.action.js'][1354] = 0;
+ _$jscoverage['plugins/table.action.js'][1356] = 0;
+ _$jscoverage['plugins/table.action.js'][1358] = 0;
+ _$jscoverage['plugins/table.action.js'][1360] = 0;
+ _$jscoverage['plugins/table.action.js'][1361] = 0;
+ _$jscoverage['plugins/table.action.js'][1363] = 0;
+ _$jscoverage['plugins/table.action.js'][1366] = 0;
+ _$jscoverage['plugins/table.action.js'][1368] = 0;
+ _$jscoverage['plugins/table.action.js'][1369] = 0;
+ _$jscoverage['plugins/table.action.js'][1371] = 0;
+ _$jscoverage['plugins/table.action.js'][1372] = 0;
+ _$jscoverage['plugins/table.action.js'][1375] = 0;
+ _$jscoverage['plugins/table.action.js'][1376] = 0;
+ _$jscoverage['plugins/table.action.js'][1378] = 0;
+ _$jscoverage['plugins/table.action.js'][1379] = 0;
+ _$jscoverage['plugins/table.action.js'][1380] = 0;
+ _$jscoverage['plugins/table.action.js'][1383] = 0;
+ _$jscoverage['plugins/table.action.js'][1384] = 0;
+ _$jscoverage['plugins/table.action.js'][1385] = 0;
+ _$jscoverage['plugins/table.action.js'][1386] = 0;
+ _$jscoverage['plugins/table.action.js'][1387] = 0;
+ _$jscoverage['plugins/table.action.js'][1388] = 0;
+ _$jscoverage['plugins/table.action.js'][1389] = 0;
+ _$jscoverage['plugins/table.action.js'][1392] = 0;
+ _$jscoverage['plugins/table.action.js'][1394] = 0;
+ _$jscoverage['plugins/table.action.js'][1395] = 0;
+ _$jscoverage['plugins/table.action.js'][1396] = 0;
+ _$jscoverage['plugins/table.action.js'][1397] = 0;
+ _$jscoverage['plugins/table.action.js'][1399] = 0;
+ _$jscoverage['plugins/table.action.js'][1402] = 0;
+ _$jscoverage['plugins/table.action.js'][1403] = 0;
+ _$jscoverage['plugins/table.action.js'][1404] = 0;
+ _$jscoverage['plugins/table.action.js'][1407] = 0;
+ _$jscoverage['plugins/table.action.js'][1408] = 0;
+ _$jscoverage['plugins/table.action.js'][1412] = 0;
+ _$jscoverage['plugins/table.action.js'][1413] = 0;
+ _$jscoverage['plugins/table.action.js'][1415] = 0;
+ _$jscoverage['plugins/table.action.js'][1418] = 0;
+ _$jscoverage['plugins/table.action.js'][1420] = 0;
+ _$jscoverage['plugins/table.action.js'][1421] = 0;
+ _$jscoverage['plugins/table.action.js'][1424] = 0;
+ _$jscoverage['plugins/table.action.js'][1426] = 0;
+ _$jscoverage['plugins/table.action.js'][1428] = 0;
+ _$jscoverage['plugins/table.action.js'][1431] = 0;
+ _$jscoverage['plugins/table.action.js'][1432] = 0;
+ _$jscoverage['plugins/table.action.js'][1433] = 0;
+ _$jscoverage['plugins/table.action.js'][1434] = 0;
+ _$jscoverage['plugins/table.action.js'][1435] = 0;
+ _$jscoverage['plugins/table.action.js'][1436] = 0;
+ _$jscoverage['plugins/table.action.js'][1438] = 0;
+ _$jscoverage['plugins/table.action.js'][1439] = 0;
+ _$jscoverage['plugins/table.action.js'][1443] = 0;
+ _$jscoverage['plugins/table.action.js'][1446] = 0;
+ _$jscoverage['plugins/table.action.js'][1447] = 0;
+ _$jscoverage['plugins/table.action.js'][1449] = 0;
+ _$jscoverage['plugins/table.action.js'][1450] = 0;
+ _$jscoverage['plugins/table.action.js'][1451] = 0;
+ _$jscoverage['plugins/table.action.js'][1454] = 0;
+ _$jscoverage['plugins/table.action.js'][1455] = 0;
+ _$jscoverage['plugins/table.action.js'][1456] = 0;
+ _$jscoverage['plugins/table.action.js'][1459] = 0;
+ _$jscoverage['plugins/table.action.js'][1461] = 0;
+ _$jscoverage['plugins/table.action.js'][1462] = 0;
+ _$jscoverage['plugins/table.action.js'][1465] = 0;
+ _$jscoverage['plugins/table.action.js'][1468] = 0;
+ _$jscoverage['plugins/table.action.js'][1469] = 0;
+ _$jscoverage['plugins/table.action.js'][1472] = 0;
+ _$jscoverage['plugins/table.action.js'][1474] = 0;
+ _$jscoverage['plugins/table.action.js'][1476] = 0;
+ _$jscoverage['plugins/table.action.js'][1478] = 0;
+ _$jscoverage['plugins/table.action.js'][1480] = 0;
+ _$jscoverage['plugins/table.action.js'][1481] = 0;
+ _$jscoverage['plugins/table.action.js'][1487] = 0;
+ _$jscoverage['plugins/table.action.js'][1488] = 0;
+ _$jscoverage['plugins/table.action.js'][1496] = 0;
+ _$jscoverage['plugins/table.action.js'][1497] = 0;
+ _$jscoverage['plugins/table.action.js'][1500] = 0;
+ _$jscoverage['plugins/table.action.js'][1501] = 0;
+ _$jscoverage['plugins/table.action.js'][1502] = 0;
+ _$jscoverage['plugins/table.action.js'][1503] = 0;
+ _$jscoverage['plugins/table.action.js'][1504] = 0;
+ _$jscoverage['plugins/table.action.js'][1507] = 0;
+ _$jscoverage['plugins/table.action.js'][1508] = 0;
+ _$jscoverage['plugins/table.action.js'][1518] = 0;
+ _$jscoverage['plugins/table.action.js'][1520] = 0;
+ _$jscoverage['plugins/table.action.js'][1521] = 0;
+ _$jscoverage['plugins/table.action.js'][1524] = 0;
+ _$jscoverage['plugins/table.action.js'][1525] = 0;
+ _$jscoverage['plugins/table.action.js'][1529] = 0;
+ _$jscoverage['plugins/table.action.js'][1534] = 0;
+ _$jscoverage['plugins/table.action.js'][1536] = 0;
+ _$jscoverage['plugins/table.action.js'][1537] = 0;
+ _$jscoverage['plugins/table.action.js'][1539] = 0;
+ _$jscoverage['plugins/table.action.js'][1542] = 0;
+ _$jscoverage['plugins/table.action.js'][1545] = 0;
+ _$jscoverage['plugins/table.action.js'][1547] = 0;
+ _$jscoverage['plugins/table.action.js'][1549] = 0;
+ _$jscoverage['plugins/table.action.js'][1552] = 0;
+ _$jscoverage['plugins/table.action.js'][1554] = 0;
+ _$jscoverage['plugins/table.action.js'][1556] = 0;
+ _$jscoverage['plugins/table.action.js'][1558] = 0;
+ _$jscoverage['plugins/table.action.js'][1563] = 0;
+ _$jscoverage['plugins/table.action.js'][1565] = 0;
+ _$jscoverage['plugins/table.action.js'][1567] = 0;
+ _$jscoverage['plugins/table.action.js'][1568] = 0;
+ _$jscoverage['plugins/table.action.js'][1573] = 0;
+ _$jscoverage['plugins/table.action.js'][1581] = 0;
+ _$jscoverage['plugins/table.action.js'][1589] = 0;
+ _$jscoverage['plugins/table.action.js'][1591] = 0;
+ _$jscoverage['plugins/table.action.js'][1593] = 0;
+ _$jscoverage['plugins/table.action.js'][1595] = 0;
+ _$jscoverage['plugins/table.action.js'][1599] = 0;
+ _$jscoverage['plugins/table.action.js'][1603] = 0;
+ _$jscoverage['plugins/table.action.js'][1606] = 0;
+ _$jscoverage['plugins/table.action.js'][1608] = 0;
+ _$jscoverage['plugins/table.action.js'][1609] = 0;
+ _$jscoverage['plugins/table.action.js'][1612] = 0;
+ _$jscoverage['plugins/table.action.js'][1615] = 0;
+ _$jscoverage['plugins/table.action.js'][1617] = 0;
+ _$jscoverage['plugins/table.action.js'][1620] = 0;
+ _$jscoverage['plugins/table.action.js'][1622] = 0;
+ _$jscoverage['plugins/table.action.js'][1625] = 0;
+ _$jscoverage['plugins/table.action.js'][1626] = 0;
+ _$jscoverage['plugins/table.action.js'][1634] = 0;
+ _$jscoverage['plugins/table.action.js'][1636] = 0;
+ _$jscoverage['plugins/table.action.js'][1640] = 0;
+ _$jscoverage['plugins/table.action.js'][1642] = 0;
+ _$jscoverage['plugins/table.action.js'][1648] = 0;
+ _$jscoverage['plugins/table.action.js'][1650] = 0;
+ _$jscoverage['plugins/table.action.js'][1654] = 0;
+ _$jscoverage['plugins/table.action.js'][1656] = 0;
+ _$jscoverage['plugins/table.action.js'][1657] = 0;
+ _$jscoverage['plugins/table.action.js'][1661] = 0;
+ _$jscoverage['plugins/table.action.js'][1668] = 0;
+ _$jscoverage['plugins/table.action.js'][1670] = 0;
+ _$jscoverage['plugins/table.action.js'][1672] = 0;
+ _$jscoverage['plugins/table.action.js'][1674] = 0;
+ _$jscoverage['plugins/table.action.js'][1676] = 0;
+ _$jscoverage['plugins/table.action.js'][1679] = 0;
+ _$jscoverage['plugins/table.action.js'][1682] = 0;
+ _$jscoverage['plugins/table.action.js'][1687] = 0;
+ _$jscoverage['plugins/table.action.js'][1691] = 0;
+ _$jscoverage['plugins/table.action.js'][1693] = 0;
+ _$jscoverage['plugins/table.action.js'][1695] = 0;
+ _$jscoverage['plugins/table.action.js'][1702] = 0;
+ _$jscoverage['plugins/table.action.js'][1703] = 0;
+ _$jscoverage['plugins/table.action.js'][1705] = 0;
+ _$jscoverage['plugins/table.action.js'][1706] = 0;
+ _$jscoverage['plugins/table.action.js'][1708] = 0;
+ _$jscoverage['plugins/table.action.js'][1710] = 0;
+ _$jscoverage['plugins/table.action.js'][1712] = 0;
+ _$jscoverage['plugins/table.action.js'][1714] = 0;
+ _$jscoverage['plugins/table.action.js'][1716] = 0;
+ _$jscoverage['plugins/table.action.js'][1718] = 0;
+ _$jscoverage['plugins/table.action.js'][1720] = 0;
+ _$jscoverage['plugins/table.action.js'][1721] = 0;
+ _$jscoverage['plugins/table.action.js'][1723] = 0;
+ _$jscoverage['plugins/table.action.js'][1725] = 0;
+ _$jscoverage['plugins/table.action.js'][1727] = 0;
+ _$jscoverage['plugins/table.action.js'][1731] = 0;
+ _$jscoverage['plugins/table.action.js'][1733] = 0;
+ _$jscoverage['plugins/table.action.js'][1737] = 0;
+ _$jscoverage['plugins/table.action.js'][1738] = 0;
+ _$jscoverage['plugins/table.action.js'][1739] = 0;
+ _$jscoverage['plugins/table.action.js'][1740] = 0;
+ _$jscoverage['plugins/table.action.js'][1749] = 0;
+ _$jscoverage['plugins/table.action.js'][1752] = 0;
+ _$jscoverage['plugins/table.action.js'][1753] = 0;
+ _$jscoverage['plugins/table.action.js'][1754] = 0;
+ _$jscoverage['plugins/table.action.js'][1755] = 0;
+ _$jscoverage['plugins/table.action.js'][1756] = 0;
+ _$jscoverage['plugins/table.action.js'][1765] = 0;
+ _$jscoverage['plugins/table.action.js'][1766] = 0;
+ _$jscoverage['plugins/table.action.js'][1767] = 0;
+ _$jscoverage['plugins/table.action.js'][1773] = 0;
+ _$jscoverage['plugins/table.action.js'][1775] = 0;
+ _$jscoverage['plugins/table.action.js'][1776] = 0;
+ _$jscoverage['plugins/table.action.js'][1777] = 0;
+ _$jscoverage['plugins/table.action.js'][1779] = 0;
+ _$jscoverage['plugins/table.action.js'][1781] = 0;
+ _$jscoverage['plugins/table.action.js'][1782] = 0;
+ _$jscoverage['plugins/table.action.js'][1792] = 0;
+ _$jscoverage['plugins/table.action.js'][1793] = 0;
+ _$jscoverage['plugins/table.action.js'][1794] = 0;
+ _$jscoverage['plugins/table.action.js'][1795] = 0;
+ _$jscoverage['plugins/table.action.js'][1796] = 0;
+ _$jscoverage['plugins/table.action.js'][1797] = 0;
+ _$jscoverage['plugins/table.action.js'][1798] = 0;
+ _$jscoverage['plugins/table.action.js'][1799] = 0;
+ _$jscoverage['plugins/table.action.js'][1800] = 0;
+ _$jscoverage['plugins/table.action.js'][1802] = 0;
+ _$jscoverage['plugins/table.action.js'][1809] = 0;
+ _$jscoverage['plugins/table.action.js'][1810] = 0;
+ _$jscoverage['plugins/table.action.js'][1811] = 0;
+ _$jscoverage['plugins/table.action.js'][1817] = 0;
+ _$jscoverage['plugins/table.action.js'][1819] = 0;
+ _$jscoverage['plugins/table.action.js'][1822] = 0;
+ _$jscoverage['plugins/table.action.js'][1823] = 0;
+ _$jscoverage['plugins/table.action.js'][1826] = 0;
+ _$jscoverage['plugins/table.action.js'][1830] = 0;
+ _$jscoverage['plugins/table.action.js'][1831] = 0;
+ _$jscoverage['plugins/table.action.js'][1834] = 0;
+ _$jscoverage['plugins/table.action.js'][1836] = 0;
+ _$jscoverage['plugins/table.action.js'][1839] = 0;
+ _$jscoverage['plugins/table.action.js'][1840] = 0;
+ _$jscoverage['plugins/table.action.js'][1843] = 0;
+ _$jscoverage['plugins/table.action.js'][1845] = 0;
+ _$jscoverage['plugins/table.action.js'][1848] = 0;
+ _$jscoverage['plugins/table.action.js'][1849] = 0;
+ _$jscoverage['plugins/table.action.js'][1856] = 0;
+}
+_$jscoverage['plugins/table.action.js'].source = ["/* "," * Created with JetBrains PhpStorm. "," * User: taoqili "," * Date: 12-10-12 "," * Time: 上午10:05 "," * To change this template use File | Settings | File Templates. "," */ ","UE. plugins[ 'table' ] = function () { "," var me = this , "," tabTimer = null , "," //拖动计时器 "," tableDragTimer = null , "," //双击计时器 "," tableResizeTimer = null , "," //单元格最小宽度 "," cellMinWidth = 5 , "," isInResizeBuffer = false , "," //单元格边框大小 "," cellBorderWidth = 5 , "," //鼠标偏移距离 "," offsetOfTableCell = 10 , "," //记录在有限时间内的点击状态, 共有3个取值, 0, 1, 2。 0代表未初始化, 1代表单击了1次,2代表2次 "," singleClickState = 0 , "," userActionStatus = null , "," //双击允许的时间范围 "," dblclickTime = 360 , "," UT = UE. UETable, "," getUETable = function ( tdOrTable) { "," return UT. getUETable( tdOrTable); "," } , "," getUETableBySelected = function ( editor) { "," return UT. getUETableBySelected( editor); "," } , "," getDefaultValue = function ( editor, table) { "," return UT. getDefaultValue( editor, table); "," } , "," removeSelectedClass = function ( cells) { "," return UT. removeSelectedClass( cells); "," } ; ",""," function showError( e) { ","// throw e; "," } "," me. ready( function () { "," var me = this ; "," var orgGetText = me. selection. getText; "," me. selection. getText = function () { "," var table = getUETableBySelected( me); "," if ( table) { "," var str = '' ; "," utils. each( table. selectedTds, function ( td) { "," str += td[ browser. ie? 'innerText' : 'textContent' ]; "," } ) "," return str; "," } else { "," return orgGetText. call( me. selection) "," } ",""," } "," } ) ",""," //处理拖动及框选相关方法 "," var startTd = null , //鼠标按下时的锚点td "," currentTd = null , //当前鼠标经过时的td "," onDrag = \"\" , //指示当前拖动状态,其值可为\"\",\"h\",\"v\" ,分别表示未拖动状态,横向拖动状态,纵向拖动状态,用于鼠标移动过程中的判断 "," onBorder = false , //检测鼠标按下时是否处在单元格边缘位置 "," dragButton = null , "," dragOver = false , "," dragLine = null , //模拟的拖动线 "," dragTd = null ; //发生拖动的目标td ",""," var mousedown = false , "," //todo 判断混乱模式 "," needIEHack = true ; ",""," me. setOpt( { "," 'maxColNum' : 20 , "," 'maxRowNum' : 100 , "," 'defaultCols' : 5 , "," 'defaultRows' : 5 , "," 'tdvalign' : 'top' , "," 'cursorpath' : me. options. UEDITOR_HOME_URL + \"themes/default/images/cursor_\" , "," 'tableDragable' : false , "," 'classList' :[ \"ue-table-interlace-color-single\" , \"ue-table-interlace-color-double\" ] "," } ); "," me. getUETable = getUETable; "," var commands = { "," 'deletetable' : 1 , "," 'inserttable' : 1 , "," 'cellvalign' : 1 , "," 'insertcaption' : 1 , "," 'deletecaption' : 1 , "," 'inserttitle' : 1 , "," 'deletetitle' : 1 , "," \"mergeright\" : 1 , "," \"mergedown\" : 1 , "," \"mergecells\" : 1 , "," \"insertrow\" : 1 , "," \"insertrownext\" : 1 , "," \"deleterow\" : 1 , "," \"insertcol\" : 1 , "," \"insertcolnext\" : 1 , "," \"deletecol\" : 1 , "," \"splittocells\" : 1 , "," \"splittorows\" : 1 , "," \"splittocols\" : 1 , "," \"adaptbytext\" : 1 , "," \"adaptbywindow\" : 1 , "," \"adaptbycustomer\" : 1 , "," \"insertparagraph\" : 1 , "," \"insertparagraphbeforetable\" : 1 , "," \"averagedistributecol\" : 1 , "," \"averagedistributerow\" : 1 "," } ; "," me. ready( function () { "," utils. cssRule( 'table' , "," //选中的td上的样式 "," '.selectTdClass{background-color:#edf5fa !important}' + "," 'table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}' + "," //插入的表格的默认样式 "," 'table{margin-bottom:10px;border-collapse:collapse;display:table;}' + "," 'td,th{padding: 5px 10px;border: 1px solid #DDD;}' + "," 'caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' + "," 'th{border-top:2px solid #BBB;background:#F7F7F7;}' + "," '.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }' + "," 'td p{margin:0;padding:0;}' , me. document); ",""," var tableCopyList, isFullCol, isFullRow; "," //注册del/backspace事件 "," me. addListener( 'keydown' , function ( cmd, evt) { "," var me = this ; "," var keyCode = evt. keyCode || evt. which; ",""," if ( keyCode == 8 ) { ",""," var ut = getUETableBySelected( me); "," if ( ut && ut. selectedTds. length) { ",""," if ( ut. isFullCol()) { "," me. execCommand( 'deletecol' ) "," } else if ( ut. isFullRow()) { "," me. execCommand( 'deleterow' ) "," } else { "," me. fireEvent( 'delcells' ); "," } "," domUtils. preventDefault( evt); "," } ",""," var caption = domUtils. findParentByTagName( me. selection. getStart(), 'caption' , true ), "," range = me. selection. getRange(); "," if ( range. collapsed && caption && isEmptyBlock( caption)) { "," me. fireEvent( 'saveScene' ); "," var table = caption. parentNode; "," domUtils. remove( caption); "," if ( table) { "," range. setStart( table. rows[ 0 ]. cells[ 0 ], 0 ). setCursor( false , true ); "," } "," me. fireEvent( 'saveScene' ); "," } ",""," } ",""," if ( keyCode == 46 ) { ",""," ut = getUETableBySelected( me); "," if ( ut) { "," me. fireEvent( 'saveScene' ); "," for ( var i = 0 , ci; ci = ut. selectedTds[ i++];) { "," domUtils. fillNode( me. document, ci) "," } "," me. fireEvent( 'saveScene' ); "," domUtils. preventDefault( evt); ",""," } ",""," } "," if ( keyCode == 13 ) { ",""," var rng = me. selection. getRange(), "," caption = domUtils. findParentByTagName( rng. startContainer, 'caption' , true ); "," if ( caption) { "," var table = domUtils. findParentByTagName( caption, 'table' ); "," if (! rng. collapsed) { ",""," rng. deleteContents(); "," me. fireEvent( 'saveScene' ); "," } else { "," if ( caption) { "," rng. setStart( table. rows[ 0 ]. cells[ 0 ], 0 ). setCursor( false , true ); "," } "," } "," domUtils. preventDefault( evt); "," return ; "," } "," if ( rng. collapsed) { "," var table = domUtils. findParentByTagName( rng. startContainer, 'table' ); "," if ( table) { "," var cell = table. rows[ 0 ]. cells[ 0 ], "," start = domUtils. findParentByTagName( me. selection. getStart(), [ 'td' , 'th' ], true ), "," preNode = table. previousSibling; "," if ( cell === start && (! preNode || preNode. nodeType == 1 && preNode. tagName == 'TABLE' ) && domUtils. isStartInblock( rng)) { "," var first = domUtils. findParent( me. selection. getStart(), function ( n) { return domUtils. isBlockElm( n) } , true ); "," if ( first && ( /t(h|d)/i . test( first. tagName) || first === start. firstChild )) { "," me. execCommand( 'insertparagraphbeforetable' ); "," domUtils. preventDefault( evt); "," } ",""," } "," } "," } "," } ",""," if (( evt. ctrlKey || evt. metaKey) && evt. keyCode == '67' ) { "," tableCopyList = null ; "," var ut = getUETableBySelected( me); "," if ( ut) { "," var tds = ut. selectedTds; "," isFullCol = ut. isFullCol(); "," isFullRow = ut. isFullRow(); "," tableCopyList = [ "," [ ut. cloneCell( tds[ 0 ], null , true )] "," ]; "," for ( var i = 1 , ci; ci = tds[ i]; i++) { "," if ( ci. parentNode !== tds[ i - 1 ]. parentNode) { "," tableCopyList. push([ ut. cloneCell( ci, null , true )]); "," } else { "," tableCopyList[ tableCopyList. length - 1 ]. push( ut. cloneCell( ci, null , true )); "," } ",""," } "," } "," } "," } ); "," me. addListener( \"tablehasdeleted\" , function () { "," toggleDraggableState( this , false , \"\" , null ); "," if ( dragButton) domUtils. remove( dragButton); "," } ); ",""," me. addListener( 'beforepaste' , function ( cmd, html) { "," var me = this ; "," var rng = me. selection. getRange(); "," if ( domUtils. findParentByTagName( rng. startContainer, 'caption' , true )) { "," var div = me. document. createElement( \"div\" ); "," div. innerHTML = html. html; "," html. html = div[ browser. ie ? 'innerText' : 'textContent' ]; "," return ; "," } "," var table = getUETableBySelected( me); "," if ( tableCopyList) { "," me. fireEvent( 'saveScene' ); "," var rng = me. selection. getRange(); "," var td = domUtils. findParentByTagName( rng. startContainer, [ 'td' , 'th' ], true ), tmpNode, preNode; "," if ( td) { "," var ut = getUETable( td); "," if ( isFullRow) { "," var rowIndex = ut. getCellInfo( td). rowIndex; "," if ( td. tagName == 'TH' ) { "," rowIndex++; "," } "," for ( var i = 0 , ci; ci = tableCopyList[ i++];) { "," var tr = ut. insertRow( rowIndex++, \"td\" ); "," for ( var j = 0 , cj; cj = ci[ j]; j++) { "," var cell = tr. cells[ j]; "," if (! cell) { "," cell = tr. insertCell( j) "," } "," cell. innerHTML = cj. innerHTML; "," cj. getAttribute( 'width' ) && cell. setAttribute( 'width' , cj. getAttribute( 'width' )); "," cj. getAttribute( 'vAlign' ) && cell. setAttribute( 'vAlign' , cj. getAttribute( 'vAlign' )); "," cj. getAttribute( 'align' ) && cell. setAttribute( 'align' , cj. getAttribute( 'align' )); "," cj. style. cssText && ( cell. style. cssText = cj. style. cssText) "," } "," for ( var j = 0 , cj; cj = tr. cells[ j]; j++) { "," if (! ci[ j]) "," break ; "," cj. innerHTML = ci[ j]. innerHTML; "," ci[ j]. getAttribute( 'width' ) && cj. setAttribute( 'width' , ci[ j]. getAttribute( 'width' )); "," ci[ j]. getAttribute( 'vAlign' ) && cj. setAttribute( 'vAlign' , ci[ j]. getAttribute( 'vAlign' )); "," ci[ j]. getAttribute( 'align' ) && cj. setAttribute( 'align' , ci[ j]. getAttribute( 'align' )); "," ci[ j]. style. cssText && ( cj. style. cssText = ci[ j]. style. cssText) "," } "," } "," } else { "," if ( isFullCol) { "," cellInfo = ut. getCellInfo( td); "," var maxColNum = 0 ; "," for ( var j = 0 , ci = tableCopyList[ 0 ], cj; cj = ci[ j++];) { "," maxColNum += cj. colSpan || 1 ; "," } "," me. __hasEnterExecCommand = true ; "," for ( i = 0 ; i < maxColNum; i++) { "," me. execCommand( 'insertcol' ); "," } "," me. __hasEnterExecCommand = false ; "," td = ut. table. rows[ 0 ]. cells[ cellInfo. cellIndex]; "," if ( td. tagName == 'TH' ) { "," td = ut. table. rows[ 1 ]. cells[ cellInfo. cellIndex]; "," } "," } "," for ( var i = 0 , ci; ci = tableCopyList[ i++];) { "," tmpNode = td; "," for ( var j = 0 , cj; cj = ci[ j++];) { "," if ( td) { "," td. innerHTML = cj. innerHTML; "," //todo 定制处理 "," cj. getAttribute( 'width' ) && td. setAttribute( 'width' , cj. getAttribute( 'width' )); "," cj. getAttribute( 'vAlign' ) && td. setAttribute( 'vAlign' , cj. getAttribute( 'vAlign' )); "," cj. getAttribute( 'align' ) && td. setAttribute( 'align' , cj. getAttribute( 'align' )); "," cj. style. cssText && ( td. style. cssText = cj. style. cssText); "," preNode = td; "," td = td. nextSibling; "," } else { "," var cloneTd = cj. cloneNode( true ); "," domUtils. removeAttributes( cloneTd, [ 'class' , 'rowSpan' , 'colSpan' ]); ",""," preNode. parentNode. appendChild( cloneTd) "," } "," } "," td = ut. getNextCell( tmpNode, true , true ); "," if (! tableCopyList[ i]) "," break ; "," if (! td) { "," var cellInfo = ut. getCellInfo( tmpNode); "," ut. table. insertRow( ut. table. rows. length); "," ut. update(); "," td = ut. getVSideCell( tmpNode, true ); "," } "," } "," } "," ut. update(); "," } else { "," table = me. document. createElement( 'table' ); "," for ( var i = 0 , ci; ci = tableCopyList[ i++];) { "," var tr = table. insertRow( table. rows. length); "," for ( var j = 0 , cj; cj = ci[ j++];) { "," cloneTd = UT. cloneCell( cj, null , true ); "," domUtils. removeAttributes( cloneTd, [ 'class' ]); "," tr. appendChild( cloneTd) "," } "," if ( j == 2 && cloneTd. rowSpan > 1 ) { "," cloneTd. rowSpan = 1 ; "," } "," } ",""," var defaultValue = getDefaultValue( me), "," width = me. body. offsetWidth - "," ( needIEHack ? parseInt( domUtils. getComputedStyle( me. body, 'margin-left' ), 10 ) * 2 : 0 ) - defaultValue. tableBorder * 2 - ( me. options. offsetWidth || 0 ); "," me. execCommand( 'insertHTML' , '<table ' + "," ( isFullCol && isFullRow ? 'width=\"' + width + '\"' : '' ) + "," '>' + table. innerHTML. replace( />\\s*</g , '><' ). replace( /\\bth\\b/gi , \"td\" ) + '</table>' ) "," } "," me. fireEvent( 'contentchange' ); "," me. fireEvent( 'saveScene' ); "," html. html = '' ; "," return true ; "," } else { "," var div = me. document. createElement( \"div\" ), tables; "," div. innerHTML = html. html; "," tables = div. getElementsByTagName( \"table\" ); "," if ( domUtils. findParentByTagName( me. selection. getStart(), 'table' )) { "," utils. each( tables, function ( t) { "," domUtils. remove( t) "," } ); "," if ( domUtils. findParentByTagName( me. selection. getStart(), 'caption' , true )) { "," div. innerHTML = div[ browser. ie ? 'innerText' : 'textContent' ]; "," } "," } else { "," utils. each( tables, function ( table) { "," removeStyleSize( table, true ); "," domUtils. removeAttributes( table, [ 'style' , 'border' ]); "," utils. each( domUtils. getElementsByTagName( table, \"td\" ), function ( td) { "," if ( isEmptyBlock( td)) { "," domUtils. fillNode( me. document, td); "," } "," removeStyleSize( td, true ); ","// domUtils.removeAttributes(td, ['style']) "," } ); "," } ); "," } "," html. html = div. innerHTML; "," } "," } ); ",""," me. addListener( 'afterpaste' , function () { "," utils. each( domUtils. getElementsByTagName( me. body, \"table\" ), function ( table) { "," if ( table. offsetWidth > me. body. offsetWidth) { "," var defaultValue = getDefaultValue( me, table); "," table. style. width = me. body. offsetWidth - ( needIEHack ? parseInt( domUtils. getComputedStyle( me. body, 'margin-left' ), 10 ) * 2 : 0 ) - defaultValue. tableBorder * 2 - ( me. options. offsetWidth || 0 ) + 'px' "," } "," } ) "," } ); "," me. addListener( 'blur' , function () { "," tableCopyList = null ; "," } ); "," var timer; "," me. addListener( 'keydown' , function () { "," clearTimeout( timer); "," timer = setTimeout( function () { "," var rng = me. selection. getRange(), "," cell = domUtils. findParentByTagName( rng. startContainer, [ 'th' , 'td' ], true ); "," if ( cell) { "," var table = cell. parentNode. parentNode. parentNode; "," if ( table. offsetWidth > table. getAttribute( \"width\" )) { "," cell. style. wordBreak = \"break-all\" ; "," } "," } ",""," } , 100 ); "," } ); "," me. addListener( \"selectionchange\" , function () { "," toggleDraggableState( me, false , \"\" , null ); "," } ); ","",""," //内容变化时触发索引更新 "," //todo 可否考虑标记检测,如果不涉及表格的变化就不进行索引重建和更新 "," me. addListener( \"contentchange\" , function () { "," var me = this ; "," //尽可能排除一些不需要更新的状况 "," hideDragLine( me); "," if ( getUETableBySelected( me)) return ; "," var rng = me. selection. getRange(); "," var start = rng. startContainer; "," start = domUtils. findParentByTagName( start, [ 'td' , 'th' ], true ); "," utils. each( domUtils. getElementsByTagName( me. document, 'table' ), function ( table) { "," if ( me. fireEvent( \"excludetable\" , table) === true ) return ; "," table. ueTable = new UT( table); "," utils. each( domUtils. getElementsByTagName( me. document, 'td' ), function ( td) { ",""," if ( domUtils. isEmptyBlock( td) && td !== start) { "," domUtils. fillNode( me. document, td); "," if ( browser. ie && browser. version == 6 ) { "," td. innerHTML = ' ' "," } "," } "," } ); "," utils. each( domUtils. getElementsByTagName( me. document, 'th' ), function ( th) { "," if ( domUtils. isEmptyBlock( th) && th !== start) { "," domUtils. fillNode( me. document, th); "," if ( browser. ie && browser. version == 6 ) { "," th. innerHTML = ' ' "," } "," } "," } ); "," table. onmouseover = function () { "," me. fireEvent( 'tablemouseover' , table); "," } ; "," table. onmousemove = function () { "," me. fireEvent( 'tablemousemove' , table); "," me. options. tableDragable && toggleDragButton( true , this , me); "," } ; "," table. onmouseout = function () { "," me. fireEvent( 'tablemouseout' , table); "," toggleDraggableState( me, false , \"\" , null ); "," hideDragLine( me); "," } ; "," table. onclick = function ( evt) { "," evt = me. window. event || evt; "," var target = getParentTdOrTh( evt. target || evt. srcElement); "," if (! target) return ; "," var ut = getUETable( target), "," table = ut. table, "," cellInfo = ut. getCellInfo( target), "," cellsRange, "," rng = me. selection. getRange(); ","// if (\"topLeft\" == inPosition(table, mouseCoords(evt))) { ","// cellsRange = ut.getCellsRange(ut.table.rows[0].cells[0], ut.getLastCell()); ","// ut.setSelected(cellsRange); ","// return; ","// } ","// if (\"bottomRight\" == inPosition(table, mouseCoords(evt))) { ","// ","// return; ","// } "," if ( inTableSide( table, target, evt, true )) { "," var endTdCol = ut. getCell( ut. indexTable[ ut. rowsNum - 1 ][ cellInfo. colIndex]. rowIndex, ut. indexTable[ ut. rowsNum - 1 ][ cellInfo. colIndex]. cellIndex); "," if ( evt. shiftKey && ut. selectedTds. length) { "," if ( ut. selectedTds[ 0 ] !== endTdCol) { "," cellsRange = ut. getCellsRange( ut. selectedTds[ 0 ], endTdCol); "," ut. setSelected( cellsRange); "," } else { "," rng && rng. selectNodeContents( endTdCol). select(); "," } "," } else { "," if ( target !== endTdCol) { "," cellsRange = ut. getCellsRange( target, endTdCol); "," ut. setSelected( cellsRange); "," } else { "," rng && rng. selectNodeContents( endTdCol). select(); "," } "," } "," return ; "," } "," if ( inTableSide( table, target, evt)) { "," var endTdRow = ut. getCell( ut. indexTable[ cellInfo. rowIndex][ ut. colsNum - 1 ]. rowIndex, ut. indexTable[ cellInfo. rowIndex][ ut. colsNum - 1 ]. cellIndex); "," if ( evt. shiftKey && ut. selectedTds. length) { "," if ( ut. selectedTds[ 0 ] !== endTdRow) { "," cellsRange = ut. getCellsRange( ut. selectedTds[ 0 ], endTdRow); "," ut. setSelected( cellsRange); "," } else { "," rng && rng. selectNodeContents( endTdRow). select(); "," } "," } else { "," if ( target !== endTdRow) { "," cellsRange = ut. getCellsRange( target, endTdRow); "," ut. setSelected( cellsRange); "," } else { "," rng && rng. selectNodeContents( endTdRow). select(); "," } "," } "," } "," } ; "," } ); ",""," switchBorderColor( me, true ); "," } ); ",""," domUtils. on( me. document, \"mousemove\" , mouseMoveEvent); ",""," domUtils. on( me. document, \"mouseout\" , function ( evt) { "," var target = evt. target || evt. srcElement; "," if ( target. tagName == \"TABLE\" ) { "," toggleDraggableState( me, false , \"\" , null ); "," } "," } ); "," /* "," * 表格隔行变色 "," */ "," me. addListener( \"interlacetable\" , function ( type, table, classList) { "," if (! table) return ; "," var me = this , "," rows = table. rows, "," len = rows. length, "," getClass = function ( list, index, repeat) { "," return list[ index] ? list[ index] : repeat ? list[ index % list. length]: \"\" ; "," } ; "," for ( var i = 0 ; i< len; i++) { "," rows[ i]. className = getClass( classList|| me. options. classList, i, true ); "," } "," } ); "," me. addListener( \"uninterlacetable\" , function ( type, table) { "," if (! table) return ; "," var me = this , "," rows = table. rows, "," classList = me. options. classList, "," len = rows. length; "," for ( var i = 0 ; i< len; i++) { "," domUtils. removeClasses( rows[ i], classList ); "," } "," } ); ",""," me. addListener( \"mousedown\" , mouseDownEvent); "," me. addListener( \"mouseup\" , mouseUpEvent); "," //拖动的时候不出发mouseup "," domUtils. on( me. body, 'dragstart' , function ( evt ) { "," mouseUpEvent. call( me, 'dragstart' , evt ); "," } ); ",""," var currentRowIndex = 0 ; "," me. addListener( \"mousedown\" , function () { "," currentRowIndex = 0 ; "," } ); "," me. addListener( 'tabkeydown' , function () { "," var range = this . selection. getRange(), "," common = range. getCommonAncestor( true , true ), "," table = domUtils. findParentByTagName( common, 'table' ); "," if ( table) { "," if ( domUtils. findParentByTagName( common, 'caption' , true )) { "," var cell = domUtils. getElementsByTagName( table, 'th td' ); "," if ( cell && cell. length) { "," range. setStart( cell[ 0 ], 0 ). setCursor( false , true ) "," } "," } else { "," var cell = domUtils. findParentByTagName( common, [ 'td' , 'th' ], true ), "," ua = getUETable( cell); "," currentRowIndex = cell. rowSpan > 1 ? currentRowIndex : ua. getCellInfo( cell). rowIndex; "," var nextCell = ua. getTabNextCell( cell, currentRowIndex); "," if ( nextCell) { "," if ( isEmptyBlock( nextCell)) { "," range. setStart( nextCell, 0 ). setCursor( false , true ) "," } else { "," range. selectNodeContents( nextCell). select() "," } "," } else { "," me. fireEvent( 'saveScene' ); "," me. __hasEnterExecCommand = true ; "," this . execCommand( 'insertrownext' ); "," me. __hasEnterExecCommand = false ; "," range = this . selection. getRange(); "," range. setStart( table. rows[ table. rows. length - 1 ]. cells[ 0 ], 0 ). setCursor(); "," me. fireEvent( 'saveScene' ); "," } "," } "," return true ; "," } ",""," } ); "," browser. ie && me. addListener( 'selectionchange' , function () { "," toggleDraggableState( this , false , \"\" , null ); "," } ); "," me. addListener( \"keydown\" , function ( type, evt) { "," var me = this ; "," //处理在表格的最后一个输入tab产生新的表格 "," var keyCode = evt. keyCode || evt. which; "," if ( keyCode == 8 || keyCode == 46 ) { "," return ; "," } "," var notCtrlKey = ! evt. ctrlKey && ! evt. metaKey && ! evt. shiftKey && ! evt. altKey; "," notCtrlKey && removeSelectedClass( domUtils. getElementsByTagName( me. body, \"td\" )); "," var ut = getUETableBySelected( me); "," if (! ut) return ; "," notCtrlKey && ut. clearSelected(); "," } ); ",""," me. addListener( \"beforegetcontent\" , function () { "," switchBorderColor( this , false ); "," browser. ie && utils. each( this . document. getElementsByTagName( 'caption' ), function ( ci) { "," if ( domUtils. isEmptyNode( ci)) { "," ci. innerHTML = ' ' "," } "," } ); "," } ); "," me. addListener( \"aftergetcontent\" , function () { "," switchBorderColor( this , true ); "," } ); "," me. addListener( \"getAllHtml\" , function () { "," removeSelectedClass( me. document. getElementsByTagName( \"td\" )); "," } ); "," //修正全屏状态下插入的表格宽度在非全屏状态下撑开编辑器的情况 "," me. addListener( \"fullscreenchanged\" , function ( type, fullscreen) { "," if (! fullscreen) { "," var ratio = this . body. offsetWidth / document. body. offsetWidth, "," tables = domUtils. getElementsByTagName( this . body, \"table\" ); "," utils. each( tables, function ( table) { "," if ( table. offsetWidth < me. body. offsetWidth) return false ; "," var tds = domUtils. getElementsByTagName( table, \"td\" ), "," backWidths = []; "," utils. each( tds, function ( td) { "," backWidths. push( td. offsetWidth); "," } ); "," for ( var i = 0 , td; td = tds[ i]; i++) { "," td. setAttribute( \"width\" , Math. floor( backWidths[ i] * ratio)); "," } "," table. setAttribute( \"width\" , Math. floor( getTableWidth( me, needIEHack, getDefaultValue( me)))) "," } ); "," } "," } ); ",""," //重写execCommand命令,用于处理框选时的处理 "," var oldExecCommand = me. execCommand; "," me. execCommand = function ( cmd, datatat) { ",""," var me = this , "," args = arguments; ",""," cmd = cmd. toLowerCase(); "," var ut = getUETableBySelected( me), tds, "," range = new dom. Range( me. document), "," cmdFun = me. commands[ cmd] || UE. commands[ cmd], "," result; "," if (! cmdFun) return ; "," if ( ut && ! commands[ cmd] && ! cmdFun. notNeedUndo && ! me. __hasEnterExecCommand) { "," me. __hasEnterExecCommand = true ; "," me. fireEvent( \"beforeexeccommand\" , cmd); "," tds = ut. selectedTds; "," var lastState = - 2 , lastValue = - 2 , value, state; "," for ( var i = 0 , td; td = tds[ i]; i++) { "," if ( isEmptyBlock( td)) { "," range. setStart( td, 0 ). setCursor( false , true ) "," } else { "," range. selectNode( td). select( true ); "," } "," state = me. queryCommandState( cmd); "," value = me. queryCommandValue( cmd); "," if ( state != - 1 ) { "," if ( lastState !== state || lastValue !== value) { "," me. _ignoreContentChange = true ; "," result = oldExecCommand. apply( me, arguments); "," me. _ignoreContentChange = false ; ",""," } "," lastState = me. queryCommandState( cmd); "," lastValue = me. queryCommandValue( cmd); "," if ( domUtils. isEmptyBlock( td)) { "," domUtils. fillNode( me. document, td) "," } "," } "," } "," range. setStart( tds[ 0 ], 0 ). shrinkBoundary( true ). setCursor( false , true ); "," me. fireEvent( 'contentchange' ); "," me. fireEvent( \"afterexeccommand\" , cmd); "," me. __hasEnterExecCommand = false ; "," me. _selectionChange(); "," } else { "," result = oldExecCommand. apply( me, arguments); "," } "," return result; "," } ; ","",""," } ); "," /* "," * 删除obj的宽高style,改成属性宽高 "," * @param obj "," * @param replaceToProperty "," */ "," function removeStyleSize( obj, replaceToProperty) { "," removeStyle( obj, \"width\" , true ); "," removeStyle( obj, \"height\" , true ); "," } ",""," function removeStyle( obj, styleName, replaceToProperty) { "," if ( obj. style[ styleName]) { "," replaceToProperty && obj. setAttribute( styleName, parseInt( obj. style[ styleName], 10 )); "," obj. style[ styleName] = \"\" ; "," } "," } ",""," function getParentTdOrTh( ele) { "," if ( ele. tagName == \"TD\" || ele. tagName == \"TH\" ) return ele; "," var td; "," if ( td = domUtils. findParentByTagName( ele, \"td\" , true ) || domUtils. findParentByTagName( ele, \"th\" , true )) return td; "," return null ; "," } ",""," function isEmptyBlock( node) { "," var reg = new RegExp( domUtils. fillChar, 'g' ); "," if ( node[ browser. ie ? 'innerText' : 'textContent' ]. replace( /^\\s*$/ , '' ). replace( reg, '' ). length > 0 ) { "," return 0 ; "," } "," for ( var n in dtd. $isNotEmpty) { "," if ( node. getElementsByTagName( n). length) { "," return 0 ; "," } "," } "," return 1 ; "," } ","",""," function mouseCoords( evt) { "," if ( evt. pageX || evt. pageY) { "," return { x: evt. pageX, y: evt. pageY } ; "," } "," return { "," x: evt. clientX + me. document. body. scrollLeft - me. document. body. clientLeft, "," y: evt. clientY + me. document. body. scrollTop - me. document. body. clientTop"," } ; "," } ",""," function mouseMoveEvent( evt) { ",""," if ( isEditorDisabled() ) { "," return ; "," } ",""," try { ",""," //普通状态下鼠标移动 "," var target = getParentTdOrTh( evt. target || evt. srcElement), "," pos; ",""," //区分用户的行为是拖动还是双击 "," if ( isInResizeBuffer ) { ",""," me. body. style. webkitUserSelect = 'none' ; ",""," if ( Math. abs( userActionStatus. x - evt. clientX ) > offsetOfTableCell || Math. abs( userActionStatus. y - evt. clientY ) > offsetOfTableCell ) { "," clearTableDragTimer(); "," isInResizeBuffer = false ; "," singleClickState = 0 ; "," //drag action "," tableBorderDrag( evt); "," } "," } ",""," //修改单元格大小时的鼠标移动 "," if ( onDrag && dragTd) { "," singleClickState = 0 ; "," me. body. style. webkitUserSelect = 'none' ; "," me. selection. getNative()[ browser. ie ? 'empty' : 'removeAllRanges' ](); "," pos = mouseCoords( evt); "," toggleDraggableState( me, true , onDrag, pos, target); "," if ( onDrag == \"h\" ) { "," dragLine. style. left = getPermissionX( dragTd, evt) + \"px\" ; "," } else if ( onDrag == \"v\" ) { "," dragLine. style. top = getPermissionY( dragTd, evt) + \"px\" ; "," } "," return ; "," } "," //当鼠标处于table上时,修改移动过程中的光标状态 "," if ( target) { "," //针对使用table作为容器的组件不触发拖拽效果 "," if ( me. fireEvent( 'excludetable' , target) === true ) "," return ; "," pos = mouseCoords( evt); "," var state = getRelation( target, pos), "," table = domUtils. findParentByTagName( target, \"table\" , true ); ",""," if ( inTableSide( table, target, evt, true )) { "," if ( me. fireEvent( \"excludetable\" , table) === true ) return ; "," me. body. style. cursor = \"url(\" + me. options. cursorpath + \"h.png),pointer\" ; "," } else if ( inTableSide( table, target, evt)) { "," if ( me. fireEvent( \"excludetable\" , table) === true ) return ; "," me. body. style. cursor = \"url(\" + me. options. cursorpath + \"v.png),pointer\" ; "," } else { "," me. body. style. cursor = \"text\" ; "," var curCell = target; "," if ( /\\d/ . test( state)) { "," state = state. replace( /\\d/ , '' ); "," target = getUETable( target). getPreviewCell( target, state == \"v\" ); "," } "," //位于第一行的顶部或者第一列的左边时不可拖动 "," toggleDraggableState( me, target ? !! state : false , target ? state : '' , pos, target); ",""," } "," } else { "," toggleDragButton( false , table, me); "," } ",""," } catch ( e) { "," showError( e); "," } "," } ",""," var dragButtonTimer; ",""," function toggleDragButton( show, table, editor) { "," if (! show) { "," if ( dragOver) return ; "," dragButtonTimer = setTimeout( function () { "," ! dragOver && dragButton && dragButton. parentNode && dragButton. parentNode. removeChild( dragButton); "," } , 2000 ); "," } else { "," createDragButton( table, editor); "," } "," } ",""," function createDragButton( table, editor) { "," var pos = domUtils. getXY( table), "," doc = table. ownerDocument; "," if ( dragButton && dragButton. parentNode) return dragButton; "," dragButton = doc. createElement( \"div\" ); "," dragButton. contentEditable = false ; "," dragButton. innerHTML = \"\" ; "," dragButton. style. cssText = \"width:15px;height:15px;background-image:url(\" + editor. options. UEDITOR_HOME_URL + \"dialogs/table/dragicon.png);position: absolute;cursor:move;top:\" + ( pos. y - 15 ) + \"px;left:\" + ( pos. x) + \"px;\" ; "," domUtils. unSelectable( dragButton); "," dragButton. onmouseover = function ( evt) { "," dragOver = true ; "," } ; "," dragButton. onmouseout = function ( evt) { "," dragOver = false ; "," } ; "," domUtils. on( dragButton, 'click' , function ( type, evt) { "," doClick( evt, this ); "," } ); "," domUtils. on( dragButton, 'dblclick' , function ( type, evt) { "," doDblClick( evt); "," } ); "," domUtils. on( dragButton, 'dragstart' , function ( type, evt) { "," domUtils. preventDefault( evt); "," } ); "," var timer; ",""," function doClick( evt, button) { "," // 部分浏览器下需要清理 "," clearTimeout( timer); "," timer = setTimeout( function () { "," editor. fireEvent( \"tableClicked\" , table, button); "," } , 300 ); "," } ",""," function doDblClick( evt) { "," clearTimeout( timer); "," var ut = getUETable( table), "," start = table. rows[ 0 ]. cells[ 0 ], "," end = ut. getLastCell(), "," range = ut. getCellsRange( start, end); "," editor. selection. getRange(). setStart( start, 0 ). setCursor( false , true ); "," ut. setSelected( range); "," } ",""," doc. body. appendChild( dragButton); "," } ","","","// function inPosition(table, pos) { ","// var tablePos = domUtils.getXY(table), ","// width = table.offsetWidth, ","// height = table.offsetHeight; ","// if (pos.x - tablePos.x < 5 && pos.y - tablePos.y < 5) { ","// return \"topLeft\"; ","// } else if (tablePos.x + width - pos.x < 5 && tablePos.y + height - pos.y < 5) { ","// return \"bottomRight\"; ","// } ","// } ",""," function inTableSide( table, cell, evt, top) { "," var pos = mouseCoords( evt), "," state = getRelation( cell, pos); ",""," if ( top) { "," var caption = table. getElementsByTagName( \"caption\" )[ 0 ], "," capHeight = caption ? caption. offsetHeight : 0 ; "," return ( state == \"v1\" ) && (( pos. y - domUtils. getXY( table). y - capHeight) < 8 ); "," } else { "," return ( state == \"h1\" ) && (( pos. x - domUtils. getXY( table). x) < 8 ); "," } "," } ",""," /* "," * 获取拖动时允许的X轴坐标 "," * @param dragTd "," * @param evt "," */ "," function getPermissionX( dragTd, evt) { "," var ut = getUETable( dragTd); "," if ( ut) { "," var preTd = ut. getSameEndPosCells( dragTd, \"x\" )[ 0 ], "," nextTd = ut. getSameStartPosXCells( dragTd)[ 0 ], "," mouseX = mouseCoords( evt). x, "," left = ( preTd ? domUtils. getXY( preTd). x : domUtils. getXY( ut. table). x) + 20 , "," right = nextTd ? domUtils. getXY( nextTd). x + nextTd. offsetWidth - 20 : ( me. body. offsetWidth + 5 || parseInt( domUtils. getComputedStyle( me. body, \"width\" ), 10 )); ",""," left += cellMinWidth; "," right -= cellMinWidth; ",""," return mouseX < left ? left : mouseX > right ? right : mouseX; "," } "," } ",""," /* "," * 获取拖动时允许的Y轴坐标 "," */ "," function getPermissionY( dragTd, evt) { "," try { "," var top = domUtils. getXY( dragTd). y, "," mousePosY = mouseCoords( evt). y; "," return mousePosY < top ? top : mousePosY; "," } catch ( e) { "," showError( e); "," } "," } ",""," /* "," * 移动状态切换 "," */ "," function toggleDraggableState( editor, draggable, dir, mousePos, cell) { "," try { "," editor. body. style. cursor = dir == \"h\" ? \"col-resize\" : dir == \"v\" ? \"row-resize\" : \"text\" ; "," if ( browser. ie) { "," if ( dir && ! mousedown && ! getUETableBySelected( editor)) { "," getDragLine( editor, editor. document); "," showDragLineAt( dir, cell); "," } else { "," hideDragLine( editor) "," } "," } "," onBorder = draggable; "," } catch ( e) { "," showError( e); "," } "," } ",""," /* "," * 获取与UETable相关的resize line "," * @param uetable UETable对象 "," */ "," function getResizeLineByUETable() { ",""," var lineId = '_UETableResizeLine' , "," line = this . document. getElementById( lineId ); ",""," if ( ! line ) { "," line = this . document. createElement( \"div\" ); "," line. id = lineId; "," line. contnetEditable = false ; "," line. setAttribute( \"unselectable\" , \"on\" ); ",""," var styles = { "," width: 2 * cellBorderWidth + 1 + 'px' , "," position: 'absolute' , "," 'z-index' : 100000 , "," cursor: 'col-resize' , "," background: 'red' , "," display: 'none' "," } ; ",""," //切换状态 "," line. onmouseout = function () { "," this . style. display = 'none' ; "," } ; ",""," utils. extend( line. style, styles ); ",""," this . document. body. appendChild( line ); ",""," } ",""," return line; ",""," } ",""," /* "," * 更新resize-line "," */ "," function updateResizeLine( cell, uetable ) { ",""," var line = getResizeLineByUETable. call( this ), "," table = uetable. table, "," styles = { "," top: domUtils. getXY( table ). y + 'px' , "," left: domUtils. getXY( cell). x + cell. offsetWidth - cellBorderWidth + 'px' , "," display: 'block' , "," height: table. offsetHeight + 'px' "," } ; ",""," utils. extend( line. style, styles ); ",""," } ",""," /* "," * 显示resize-line "," */ "," function showResizeLine( cell ) { ",""," var uetable = getUETable( cell ); ",""," updateResizeLine. call( this , cell, uetable ); ",""," } ",""," /* "," * 获取鼠标与当前单元格的相对位置 "," * @param ele "," * @param mousePos "," */ "," function getRelation( ele, mousePos) { "," var elePos = domUtils. getXY( ele); ",""," if ( ! elePos ) { "," return '' ; "," } ",""," if ( elePos. x + ele. offsetWidth - mousePos. x < cellBorderWidth) { "," return \"h\" ; "," } "," if ( mousePos. x - elePos. x < cellBorderWidth) { "," return 'h1' "," } "," if ( elePos. y + ele. offsetHeight - mousePos. y < cellBorderWidth) { "," return \"v\" ; "," } "," if ( mousePos. y - elePos. y < cellBorderWidth) { "," return 'v1' "," } "," return '' ; "," } ",""," function mouseDownEvent( type, evt) { ",""," if ( isEditorDisabled() ) { "," return ; "," } ",""," userActionStatus = { "," x: evt. clientX, "," y: evt. clientY"," } ; ",""," //右键菜单单独处理 "," if ( evt. button == 2 ) { "," var ut = getUETableBySelected( me), "," flag = false ; ",""," if ( ut) { "," var td = getTargetTd( me, evt); "," utils. each( ut. selectedTds, function ( ti) { "," if ( ti === td) { "," flag = true ; "," } "," } ); "," if (! flag) { "," removeSelectedClass( domUtils. getElementsByTagName( me. body, \"th td\" )); "," ut. clearSelected() "," } else { "," td = ut. selectedTds[ 0 ]; "," setTimeout( function () { "," me. selection. getRange(). setStart( td, 0 ). setCursor( false , true ); "," } , 0 ); ",""," } "," } "," } else { "," tableClickHander( evt ); "," } ",""," } ",""," //清除表格的计时器 "," function clearTableTimer() { "," tabTimer && clearTimeout( tabTimer ); "," tabTimer = null ; "," } ",""," //双击收缩 "," function tableDbclickHandler( evt) { "," singleClickState = 0 ; "," evt = evt || me. window. event; "," var target = getParentTdOrTh( evt. target || evt. srcElement); "," if ( target) { "," var h; "," if ( h = getRelation( target, mouseCoords( evt))) { ",""," hideDragLine( me ); ",""," if ( h == 'h1' ) { "," h = 'h' ; "," if ( inTableSide( domUtils. findParentByTagName( target, \"table\" ), target, evt)) { "," me. execCommand( 'adaptbywindow' ); "," } else { "," target = getUETable( target). getPreviewCell( target); "," if ( target) { "," var rng = me. selection. getRange(); "," rng. selectNodeContents( target). setCursor( true , true ) "," } "," } "," } "," if ( h == 'h' ) { "," var ut = getUETable( target), "," table = ut. table, "," cells = getCellsByMoveBorder( target, table, true ); ",""," cells = extractArray( cells, 'left' ); ",""," ut. width = ut. offsetWidth; ",""," var oldWidth = [], "," newWidth = []; ",""," utils. each( cells, function ( cell ) { ",""," oldWidth. push( cell. offsetWidth ); ",""," } ); ",""," utils. each( cells, function ( cell ) { ",""," cell. removeAttribute( \"width\" ); ",""," } ); ",""," window. setTimeout( function () { ",""," //是否允许改变 "," var changeable = true ; ",""," utils. each( cells, function ( cell, index ) { ",""," var width = cell. offsetWidth; ",""," if ( width > oldWidth[ index] ) { "," changeable = false ; "," return false ; "," } ",""," newWidth. push( width ); ",""," } ); ",""," var change = changeable ? newWidth : oldWidth; ",""," utils. each( cells, function ( cell, index ) { ",""," cell. width = change[ index] - getTabcellSpace(); ",""," } ); ","",""," } , 0 ); ","","// minWidth -= cellMinWidth; ","// ","// table.removeAttribute(\"width\"); ","// utils.each(cells, function (cell) { ","// cell.style.width = \"\"; ","// cell.width -= minWidth; ","// }); ",""," } "," } "," } "," } ",""," function tableClickHander( evt ) { ",""," removeSelectedClass( domUtils. getElementsByTagName( me. body, \"td th\" )); "," //trace:3113 "," //选中单元格,点击table外部,不会清掉table上挂的ueTable,会引起getUETableBySelected方法返回值 "," utils. each( me. document. getElementsByTagName( 'table' ), function ( t) { "," t. ueTable = null ; "," } ); "," startTd = getTargetTd( me, evt); "," if ( ! startTd ) return ; "," var table = domUtils. findParentByTagName( startTd, \"table\" , true ); "," ut = getUETable( table); "," ut && ut. clearSelected(); ",""," //判断当前鼠标状态 "," if (! onBorder) { "," me. document. body. style. webkitUserSelect = '' ; "," mousedown = true ; "," me. addListener( 'mouseover' , mouseOverEvent); "," } else { "," //边框上的动作处理 "," borderActionHandler( evt ); "," } ","",""," } ",""," //处理表格边框上的动作, 这里做延时处理,避免两种动作互相影响 "," function borderActionHandler( evt ) { ",""," if ( browser. ie ) { "," evt = reconstruct( evt ); "," } ",""," clearTableDragTimer(); ",""," //是否正在等待resize的缓冲中 "," isInResizeBuffer = true ; ",""," tableDragTimer = setTimeout( function () { "," tableBorderDrag( evt ); "," } , dblclickTime); ",""," } ",""," function extractArray( originArr, key ) { ",""," var result = [], "," tmp = null ; ",""," for ( var i = 0 , len = originArr. length; i< len; i++ ) { ",""," tmp = originArr[ i ][ key ]; ",""," if ( tmp ) { "," result. push( tmp ); "," } ",""," } ",""," return result; ",""," } ",""," function clearTableDragTimer() { "," tableDragTimer && clearTimeout( tableDragTimer); "," tableDragTimer = null ; "," } ",""," function reconstruct( obj ) { ",""," var attrs = [ 'pageX' , 'pageY' , 'clientX' , 'clientY' , 'srcElement' , 'target' ], "," newObj = {} ; ",""," if ( obj ) { ",""," for ( var i = 0 , key, val; key = attrs[ i]; i++ ) { "," val= obj[ key ]; "," val && ( newObj[ key ] = val); "," } ",""," } ",""," return newObj; ",""," } ",""," //边框拖动 "," function tableBorderDrag( evt ) { ",""," isInResizeBuffer = false ; ",""," if ( ! startTd ) return ; "," var state = Math. abs( userActionStatus. x - evt. clientX ) >= Math. abs( userActionStatus. y - evt. clientY ) ? 'h' : 'v' ; ","// var state = getRelation(startTd, mouseCoords(evt)); "," if ( /\\d/ . test( state)) { "," state = state. replace( /\\d/ , '' ); "," startTd = getUETable( startTd). getPreviewCell( startTd, state == 'v' ); "," } "," hideDragLine( me); "," getDragLine( me, me. document); "," me. fireEvent( 'saveScene' ); "," showDragLineAt( state, startTd); "," mousedown = true ; "," //拖动开始 "," onDrag = state; "," dragTd = startTd; "," } ",""," function mouseUpEvent( type, evt) { ",""," if ( isEditorDisabled() ) { "," return ; "," } ",""," clearTableDragTimer(); ",""," isInResizeBuffer = false ; ",""," if ( onBorder ) { "," singleClickState = ++ singleClickState % 3 ; ",""," userActionStatus = { "," x: evt. clientX, "," y: evt. clientY"," } ; ",""," tableResizeTimer = setTimeout( function () { "," singleClickState > 0 && singleClickState--; "," } , dblclickTime ); ",""," if ( singleClickState === 2 ) { ",""," singleClickState = 0 ; "," tableDbclickHandler( evt); "," return ; ",""," } ",""," } ",""," if ( evt. button == 2 ) return ; "," var me = this ; "," //清除表格上原生跨选问题 "," var range = me. selection. getRange(), "," start = domUtils. findParentByTagName( range. startContainer, 'table' , true ), "," end = domUtils. findParentByTagName( range. endContainer, 'table' , true ); ",""," if ( start || end) { "," if ( start === end) { "," start = domUtils. findParentByTagName( range. startContainer, [ 'td' , 'th' , 'caption' ], true ); "," end = domUtils. findParentByTagName( range. endContainer, [ 'td' , 'th' , 'caption' ], true ); "," if ( start !== end) { "," me. selection. clearRange() "," } "," } else { "," me. selection. clearRange() "," } "," } "," mousedown = false ; "," me. document. body. style. webkitUserSelect = '' ; "," //拖拽状态下的mouseUP "," if ( onDrag && dragTd ) { ",""," me. selection. getNative()[ browser. ie ? 'empty' : 'removeAllRanges' ](); ",""," singleClickState = 0 ; "," dragLine = me. document. getElementById( 'ue_tableDragLine' ); ",""," var dragTdPos = domUtils. getXY( dragTd), "," dragLinePos = domUtils. getXY( dragLine); ",""," switch ( onDrag) { "," case \"h\" : "," changeColWidth( dragTd, dragLinePos. x - dragTdPos. x); "," break ; "," case \"v\" : "," changeRowHeight( dragTd, dragLinePos. y - dragTdPos. y - dragTd. offsetHeight); "," break ; "," default : "," } "," onDrag = \"\" ; "," dragTd = null ; ",""," hideDragLine( me); "," me. fireEvent( 'saveScene' ); "," return ; "," } "," //正常状态下的mouseup "," if (! startTd) { "," var target = domUtils. findParentByTagName( evt. target || evt. srcElement, \"td\" , true ); "," if (! target) target = domUtils. findParentByTagName( evt. target || evt. srcElement, \"th\" , true ); "," if ( target && ( target. tagName == \"TD\" || target. tagName == \"TH\" )) { "," if ( me. fireEvent( \"excludetable\" , target) === true ) return ; "," range = new dom. Range( me. document); "," range. setStart( target, 0 ). setCursor( false , true ); "," } "," } else { "," var ut = getUETable( startTd), "," cell = ut ? ut. selectedTds[ 0 ] : null ; "," if ( cell) { "," range = new dom. Range( me. document); "," if ( domUtils. isEmptyBlock( cell)) { "," range. setStart( cell, 0 ). setCursor( false , true ); "," } else { "," range. selectNodeContents( cell). shrinkBoundary(). setCursor( false , true ); "," } "," } else { "," range = me. selection. getRange(). shrinkBoundary(); "," if (! range. collapsed) { "," var start = domUtils. findParentByTagName( range. startContainer, [ 'td' , 'th' ], true ), "," end = domUtils. findParentByTagName( range. endContainer, [ 'td' , 'th' ], true ); "," //在table里边的不能清除 "," if ( start && ! end || ! start && end || start && end && start !== end) { "," range. setCursor( false , true ); "," } "," } "," } "," startTd = null ; "," me. removeListener( 'mouseover' , mouseOverEvent); "," } "," me. _selectionChange( 250 , evt); "," } ",""," function mouseOverEvent( type, evt) { ",""," if ( isEditorDisabled() ) { "," return ; "," } ",""," var me = this , "," tar = evt. target || evt. srcElement; "," currentTd = domUtils. findParentByTagName( tar, \"td\" , true ) || domUtils. findParentByTagName( tar, \"th\" , true ); "," //需要判断两个TD是否位于同一个表格内 "," if ( startTd && currentTd && "," (( startTd. tagName == \"TD\" && currentTd. tagName == \"TD\" ) || ( startTd. tagName == \"TH\" && currentTd. tagName == \"TH\" )) && "," domUtils. findParentByTagName( startTd, 'table' ) == domUtils. findParentByTagName( currentTd, 'table' )) { "," var ut = getUETable( currentTd); "," if ( startTd != currentTd) { "," me. document. body. style. webkitUserSelect = 'none' ; "," me. selection. getNative()[ browser. ie ? 'empty' : 'removeAllRanges' ](); "," var range = ut. getCellsRange( startTd, currentTd); "," ut. setSelected( range); "," } else { "," me. document. body. style. webkitUserSelect = '' ; "," ut. clearSelected(); "," } ",""," } "," evt. preventDefault ? evt. preventDefault() : ( evt. returnValue = false ); "," } ",""," function setCellHeight( cell, height, backHeight) { "," var lineHight = parseInt( domUtils. getComputedStyle( cell, \"line-height\" ), 10 ), "," tmpHeight = backHeight + height; "," height = tmpHeight < lineHight ? lineHight : tmpHeight; "," if ( cell. style. height) cell. style. height = \"\" ; "," cell. rowSpan == 1 ? cell. setAttribute( \"height\" , height) : ( cell. removeAttribute && cell. removeAttribute( \"height\" )); "," } ",""," function getWidth( cell) { "," if (! cell) return 0 ; "," return parseInt( domUtils. getComputedStyle( cell, \"width\" ), 10 ); "," } ",""," function changeColWidth( cell, changeValue) { ",""," var ut = getUETable( cell); "," if ( ut) { ",""," //根据当前移动的边框获取相关的单元格 "," var table = ut. table, "," cells = getCellsByMoveBorder( cell, table ); ",""," table. style. width = \"\" ; "," table. removeAttribute( \"width\" ); ",""," //修正改变量 "," changeValue = correctChangeValue( changeValue, cell, cells ); ",""," if ( cell. nextSibling) { ",""," var i= 0 ; ",""," utils. each( cells, function ( cellGroup ) { ",""," cellGroup. left. width = (+ cellGroup. left. width)+ changeValue; "," cellGroup. right && ( cellGroup. right. width = (+ cellGroup. right. width)- changeValue ); ",""," } ); ",""," } else { ",""," utils. each( cells, function ( cellGroup ) { "," cellGroup. left. width -= - changeValue; "," } ); ",""," } "," } ",""," } ",""," function isEditorDisabled() { "," return me. body. contentEditable === \"false\" ; "," } ",""," function changeRowHeight( td, changeValue) { "," if ( Math. abs( changeValue) < 10 ) return ; "," var ut = getUETable( td); "," if ( ut) { "," var cells = ut. getSameEndPosCells( td, \"y\" ), "," //备份需要连带变化的td的原始高度,否则后期无法获取正确的值 "," backHeight = cells[ 0 ] ? cells[ 0 ]. offsetHeight : 0 ; "," for ( var i = 0 , cell; cell = cells[ i++];) { "," setCellHeight( cell, changeValue, backHeight); "," } "," } ",""," } ",""," /* "," * 获取调整单元格大小的相关单元格 "," * @isContainMergeCell 返回的结果中是否包含发生合并后的单元格 "," */ "," function getCellsByMoveBorder( cell, table, isContainMergeCell ) { ",""," if ( ! table ) { "," table = domUtils. findParentByTagName( cell, 'table' ); "," } ",""," if ( ! table ) { "," return null ; "," } ",""," //获取到该单元格所在行的序列号 "," var index = domUtils. getNodeIndex( cell ), "," temp = cell, "," rows = table. rows, "," colIndex = 0 ; ",""," while ( temp ) { "," //获取到当前单元格在未发生单元格合并时的序列 "," if ( temp. nodeType === 1 ) { "," colIndex += ( temp. colSpan || 1 ); "," } "," temp = temp. previousSibling; "," } ",""," temp = null ; ",""," //记录想关的单元格 "," var borderCells = []; ",""," utils. each( rows, function ( tabRow ) { ",""," var cells = tabRow. cells, "," currIndex = 0 ; ",""," utils. each( cells, function ( tabCell ) { ",""," currIndex += ( tabCell. colSpan || 1 ); ",""," if ( currIndex === colIndex ) { ",""," borderCells. push( { "," left: tabCell, "," right: tabCell. nextSibling || null "," } ); ",""," return false ; ",""," } else if ( currIndex > colIndex ) { ",""," if ( isContainMergeCell ) { "," borderCells. push( { "," left: tabCell"," } ); "," } ",""," return false ; "," } ","",""," } ); ",""," } ); ",""," return borderCells; ",""," } ","",""," /* "," * 通过给定的单元格集合获取最小的单元格width "," */ "," function getMinWidthByTableCells( cells ) { ",""," var minWidth = Number. MAX_VALUE; ",""," for ( var i = 0 , curCell; curCell = cells[ i ] ; i++ ) { ",""," minWidth = Math. min( minWidth, curCell. width || getTableCellWidth( curCell ) ); ",""," } ",""," return minWidth; ",""," } ",""," function correctChangeValue( changeValue, relatedCell, cells ) { ",""," //为单元格的paading预留空间 "," changeValue -= getTabcellSpace(); ",""," if ( changeValue < 0 ) { "," return 0 ; "," } ",""," changeValue -= getTableCellWidth( relatedCell ); ",""," //确定方向 "," var direction = changeValue < 0 ? 'left' : 'right' ; ",""," changeValue = Math. abs( changeValue); ",""," //只关心非最后一个单元格就可以 "," utils. each( cells, function ( cellGroup ) { ",""," var curCell = cellGroup[ direction]; ",""," //为单元格保留最小空间 "," if ( curCell ) { "," changeValue = Math. min( changeValue, getTableCellWidth( curCell )- cellMinWidth ); "," } ","",""," } ); ","",""," //修正越界 "," changeValue = changeValue < 0 ? 0 : changeValue; ",""," return direction === 'left' ? - changeValue : changeValue; ",""," } ",""," function getTableCellWidth( cell ) { ",""," var width = 0 , "," //偏移纠正量 "," offset = 0 , "," width = cell. offsetWidth - getTabcellSpace(); ",""," //最后一个节点纠正一下 "," if ( ! cell. nextSibling ) { ",""," width -= getTableCellOffset( cell ); ",""," } ",""," width = width < 0 ? 0 : width; ",""," try { "," cell. width = width; "," } catch ( e) { "," } ",""," return width; ",""," } ",""," /* "," * 获取单元格所在表格的最末单元格的偏移量 "," */ "," function getTableCellOffset( cell ) { ",""," tab = domUtils. findParentByTagName( cell, \"table\" , false ); ",""," if ( tab. offsetVal === undefined ) { ",""," var prev = cell. previousSibling; ",""," if ( prev ) { ",""," //最后一个单元格和前一个单元格的width diff结果 如果恰好为一个border width, 则条件成立 "," tab. offsetVal = cell. offsetWidth - prev. offsetWidth === UT. borderWidth ? UT. borderWidth : 0 ; ",""," } else { "," tab. offsetVal = 0 ; "," } ",""," } ",""," return tab. offsetVal; ",""," } ",""," function getTabcellSpace() { ",""," if ( UT. tabcellSpace === undefined ) { ",""," var cell = null , "," tab = me. document. createElement( \"table\" ), "," tbody = me. document. createElement( \"tbody\" ), "," trow = me. document. createElement( \"tr\" ), "," tabcell = me. document. createElement( \"td\" ), "," mirror = null ; ",""," tabcell. style. cssText = 'border: 0;' ; "," tabcell. width = 1 ; ",""," trow. appendChild( tabcell ); "," trow. appendChild( mirror = tabcell. cloneNode( false ) ); ",""," tbody. appendChild( trow ); ",""," tab. appendChild( tbody ); ",""," tab. style. cssText = \"visibility: hidden;\" ; ",""," me. body. appendChild( tab ); ",""," UT. paddingSpace = tabcell. offsetWidth - 1 ; ",""," var tmpTabWidth = tab. offsetWidth; ",""," tabcell. style. cssText = '' ; "," mirror. style. cssText = '' ; ",""," UT. borderWidth = ( tab. offsetWidth - tmpTabWidth ) / 3 ; ",""," UT. tabcellSpace = UT. paddingSpace + UT. borderWidth; ",""," me. body. removeChild( tab ); ",""," } ",""," getTabcellSpace = function () { return UT. tabcellSpace; } ; ",""," return UT. tabcellSpace; ",""," } ",""," function getDragLine( editor, doc) { "," if ( mousedown) return ; "," dragLine = editor. document. createElement( \"div\" ); "," domUtils. setAttributes( dragLine, { "," id: \"ue_tableDragLine\" , "," unselectable: 'on' , "," contenteditable: false , "," 'onresizestart' : 'return false' , "," 'ondragstart' : 'return false' , "," 'onselectstart' : 'return false' , "," style: \"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)\" "," } ); "," editor. body. appendChild( dragLine); "," } ",""," function hideDragLine( editor) { "," if ( mousedown) return ; "," var line; "," while ( line = editor. document. getElementById( 'ue_tableDragLine' )) { "," domUtils. remove( line) "," } "," } ",""," /* "," * 依据state(v|h)在cell位置显示横线 "," * @param state "," * @param cell "," */ "," function showDragLineAt( state, cell) { "," if (! cell) return ; "," var table = domUtils. findParentByTagName( cell, \"table\" ), "," caption = table. getElementsByTagName( 'caption' ), "," width = table. offsetWidth, "," height = table. offsetHeight - ( caption. length > 0 ? caption[ 0 ]. offsetHeight : 0 ), "," tablePos = domUtils. getXY( table), "," cellPos = domUtils. getXY( cell), css; "," switch ( state) { "," case \"h\" : "," css = 'height:' + height + 'px;top:' + ( tablePos. y + ( caption. length > 0 ? caption[ 0 ]. offsetHeight : 0 )) + 'px;left:' + ( cellPos. x + cell. offsetWidth); "," dragLine. style. cssText = css + 'px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)' ; "," break ; "," case \"v\" : "," css = 'width:' + width + 'px;left:' + tablePos. x + 'px;top:' + ( cellPos. y + cell. offsetHeight ); "," //必须加上border:0和color:blue,否则低版ie不支持背景色显示 "," dragLine. style. cssText = css + 'px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)' ; "," break ; "," default : "," } "," } ",""," /* "," * 当表格边框颜色为白色时设置为虚线,true为添加虚线 "," * @param editor "," * @param flag "," */ "," function switchBorderColor( editor, flag) { "," var tableArr = domUtils. getElementsByTagName( editor. body, \"table\" ), color; "," for ( var i = 0 , node; node = tableArr[ i++];) { "," var td = domUtils. getElementsByTagName( node, \"td\" ); "," if ( td[ 0 ]) { "," if ( flag) { "," color = ( td[ 0 ]. style. borderColor). replace( /\\s/g , \"\" ); "," if ( /(#ffffff)|(rgb\\(255,f55,255\\))/ig . test( color)) "," domUtils. addClass( node, \"noBorderTable\" ) "," } else { "," domUtils. removeClasses( node, \"noBorderTable\" ) "," } "," } ",""," } "," } ",""," function getTableWidth( editor, needIEHack, defaultValue) { "," var body = editor. body; "," return body. offsetWidth - ( needIEHack ? parseInt( domUtils. getComputedStyle( body, 'margin-left' ), 10 ) * 2 : 0 ) - defaultValue. tableBorder * 2 - ( editor. options. offsetWidth || 0 ); "," } ",""," /* "," * 获取当前拖动的单元格 "," */ "," function getTargetTd( editor, evt) { ",""," var target = domUtils. findParentByTagName( evt. target || evt. srcElement, [ \"td\" , \"th\" ], true ), "," dir = null ; ",""," if ( ! target ) { "," return null ; "," } ",""," dir = getRelation( target, mouseCoords( evt ) ); ",""," //如果有前一个节点, 需要做一个修正, 否则可能会得到一个错误的td ",""," if ( ! target ) { "," return null ; "," } ",""," if ( dir === 'h1' && target. previousSibling ) { ",""," var position = domUtils. getXY( target), "," cellWidth = target. offsetWidth; ",""," if ( Math. abs( position. x + cellWidth - evt. clientX ) > cellWidth / 3 ) { "," target = target. previousSibling; "," } ",""," } else if ( dir === 'v1' && target. parentNode. previousSibling ) { ",""," var position = domUtils. getXY( target), "," cellHeight = target. offsetHeight; ",""," if ( Math. abs( position. y + cellHeight - evt. clientY ) > cellHeight / 3 ) { "," target = target. parentNode. previousSibling. firstChild; "," } ",""," } ","",""," //排除了非td内部以及用于代码高亮部分的td "," return target && !( editor. fireEvent( \"excludetable\" , target) === true ) ? target : null ; "," } ","","} ; "];
+_$jscoverage['plugins/table.action.js'][8]++;
+UE.plugins.table = (function () {
+ _$jscoverage['plugins/table.action.js'][9]++;
+ var me = this, tabTimer = null, tableDragTimer = null, tableResizeTimer = null, cellMinWidth = 5, isInResizeBuffer = false, cellBorderWidth = 5, offsetOfTableCell = 10, singleClickState = 0, userActionStatus = null, dblclickTime = 360, UT = UE.UETable, getUETable = (function (tdOrTable) {
+ _$jscoverage['plugins/table.action.js'][29]++;
+ return UT.getUETable(tdOrTable);
+}), getUETableBySelected = (function (editor) {
+ _$jscoverage['plugins/table.action.js'][32]++;
+ return UT.getUETableBySelected(editor);
+}), getDefaultValue = (function (editor, table) {
+ _$jscoverage['plugins/table.action.js'][35]++;
+ return UT.getDefaultValue(editor, table);
+}), removeSelectedClass = (function (cells) {
+ _$jscoverage['plugins/table.action.js'][38]++;
+ return UT.removeSelectedClass(cells);
+});
+ _$jscoverage['plugins/table.action.js'][41]++;
+ function showError(e) {
+}
+ _$jscoverage['plugins/table.action.js'][44]++;
+ me.ready((function () {
+ _$jscoverage['plugins/table.action.js'][45]++;
+ var me = this;
+ _$jscoverage['plugins/table.action.js'][46]++;
+ var orgGetText = me.selection.getText;
+ _$jscoverage['plugins/table.action.js'][47]++;
+ me.selection.getText = (function () {
+ _$jscoverage['plugins/table.action.js'][48]++;
+ var table = getUETableBySelected(me);
+ _$jscoverage['plugins/table.action.js'][49]++;
+ if (table) {
+ _$jscoverage['plugins/table.action.js'][50]++;
+ var str = "";
+ _$jscoverage['plugins/table.action.js'][51]++;
+ utils.each(table.selectedTds, (function (td) {
+ _$jscoverage['plugins/table.action.js'][52]++;
+ str += td[(browser.ie? "innerText": "textContent")];
+}));
+ _$jscoverage['plugins/table.action.js'][54]++;
+ return str;
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][56]++;
+ return orgGetText.call(me.selection);
+ }
+});
+}));
+ _$jscoverage['plugins/table.action.js'][63]++;
+ var startTd = null, currentTd = null, onDrag = "", onBorder = false, dragButton = null, dragOver = false, dragLine = null, dragTd = null;
+ _$jscoverage['plugins/table.action.js'][72]++;
+ var mousedown = false, needIEHack = true;
+ _$jscoverage['plugins/table.action.js'][76]++;
+ me.setOpt({"maxColNum": 20, "maxRowNum": 100, "defaultCols": 5, "defaultRows": 5, "tdvalign": "top", "cursorpath": (me.options.UEDITOR_HOME_URL + "themes/default/images/cursor_"), "tableDragable": false, "classList": ["ue-table-interlace-color-single", "ue-table-interlace-color-double"]});
+ _$jscoverage['plugins/table.action.js'][86]++;
+ me.getUETable = getUETable;
+ _$jscoverage['plugins/table.action.js'][87]++;
+ var commands = {"deletetable": 1, "inserttable": 1, "cellvalign": 1, "insertcaption": 1, "deletecaption": 1, "inserttitle": 1, "deletetitle": 1, "mergeright": 1, "mergedown": 1, "mergecells": 1, "insertrow": 1, "insertrownext": 1, "deleterow": 1, "insertcol": 1, "insertcolnext": 1, "deletecol": 1, "splittocells": 1, "splittorows": 1, "splittocols": 1, "adaptbytext": 1, "adaptbywindow": 1, "adaptbycustomer": 1, "insertparagraph": 1, "insertparagraphbeforetable": 1, "averagedistributecol": 1, "averagedistributerow": 1};
+ _$jscoverage['plugins/table.action.js'][115]++;
+ me.ready((function () {
+ _$jscoverage['plugins/table.action.js'][116]++;
+ utils.cssRule("table", ".selectTdClass{background-color:#edf5fa !important}table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}table{margin-bottom:10px;border-collapse:collapse;display:table;}td,th{padding: 5px 10px;border: 1px solid #DDD;}caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}th{border-top:2px solid #BBB;background:#F7F7F7;}.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }td p{margin:0;padding:0;}", me.document);
+ _$jscoverage['plugins/table.action.js'][128]++;
+ var tableCopyList, isFullCol, isFullRow;
+ _$jscoverage['plugins/table.action.js'][130]++;
+ me.addListener("keydown", (function (cmd, evt) {
+ _$jscoverage['plugins/table.action.js'][131]++;
+ var me = this;
+ _$jscoverage['plugins/table.action.js'][132]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/table.action.js'][134]++;
+ if ((keyCode == 8)) {
+ _$jscoverage['plugins/table.action.js'][136]++;
+ var ut = getUETableBySelected(me);
+ _$jscoverage['plugins/table.action.js'][137]++;
+ if ((ut && ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.action.js'][139]++;
+ if (ut.isFullCol()) {
+ _$jscoverage['plugins/table.action.js'][140]++;
+ me.execCommand("deletecol");
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][141]++;
+ if (ut.isFullRow()) {
+ _$jscoverage['plugins/table.action.js'][142]++;
+ me.execCommand("deleterow");
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][144]++;
+ me.fireEvent("delcells");
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][146]++;
+ domUtils.preventDefault(evt);
+ }
+ _$jscoverage['plugins/table.action.js'][149]++;
+ var caption = domUtils.findParentByTagName(me.selection.getStart(), "caption", true), range = me.selection.getRange();
+ _$jscoverage['plugins/table.action.js'][151]++;
+ if ((range.collapsed && caption && isEmptyBlock(caption))) {
+ _$jscoverage['plugins/table.action.js'][152]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/table.action.js'][153]++;
+ var table = caption.parentNode;
+ _$jscoverage['plugins/table.action.js'][154]++;
+ domUtils.remove(caption);
+ _$jscoverage['plugins/table.action.js'][155]++;
+ if (table) {
+ _$jscoverage['plugins/table.action.js'][156]++;
+ range.setStart(table.rows[0].cells[0], 0).setCursor(false, true);
+ }
+ _$jscoverage['plugins/table.action.js'][158]++;
+ me.fireEvent("saveScene");
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][163]++;
+ if ((keyCode == 46)) {
+ _$jscoverage['plugins/table.action.js'][165]++;
+ ut = getUETableBySelected(me);
+ _$jscoverage['plugins/table.action.js'][166]++;
+ if (ut) {
+ _$jscoverage['plugins/table.action.js'][167]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/table.action.js'][168]++;
+ for (var i = 0, ci; (ci = ut.selectedTds[(i++)]);) {
+ _$jscoverage['plugins/table.action.js'][169]++;
+ domUtils.fillNode(me.document, ci);
+}
+ _$jscoverage['plugins/table.action.js'][171]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/table.action.js'][172]++;
+ domUtils.preventDefault(evt);
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][177]++;
+ if ((keyCode == 13)) {
+ _$jscoverage['plugins/table.action.js'][179]++;
+ var rng = me.selection.getRange(), caption = domUtils.findParentByTagName(rng.startContainer, "caption", true);
+ _$jscoverage['plugins/table.action.js'][181]++;
+ if (caption) {
+ _$jscoverage['plugins/table.action.js'][182]++;
+ var table = domUtils.findParentByTagName(caption, "table");
+ _$jscoverage['plugins/table.action.js'][183]++;
+ if ((! rng.collapsed)) {
+ _$jscoverage['plugins/table.action.js'][185]++;
+ rng.deleteContents();
+ _$jscoverage['plugins/table.action.js'][186]++;
+ me.fireEvent("saveScene");
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][188]++;
+ if (caption) {
+ _$jscoverage['plugins/table.action.js'][189]++;
+ rng.setStart(table.rows[0].cells[0], 0).setCursor(false, true);
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][192]++;
+ domUtils.preventDefault(evt);
+ _$jscoverage['plugins/table.action.js'][193]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][195]++;
+ if (rng.collapsed) {
+ _$jscoverage['plugins/table.action.js'][196]++;
+ var table = domUtils.findParentByTagName(rng.startContainer, "table");
+ _$jscoverage['plugins/table.action.js'][197]++;
+ if (table) {
+ _$jscoverage['plugins/table.action.js'][198]++;
+ var cell = table.rows[0].cells[0], start = domUtils.findParentByTagName(me.selection.getStart(), ["td", "th"], true), preNode = table.previousSibling;
+ _$jscoverage['plugins/table.action.js'][201]++;
+ if (((cell === start) && ((! preNode) || ((preNode.nodeType == 1) && (preNode.tagName == "TABLE"))) && domUtils.isStartInblock(rng))) {
+ _$jscoverage['plugins/table.action.js'][202]++;
+ var first = domUtils.findParent(me.selection.getStart(), (function (n) {
+ _$jscoverage['plugins/table.action.js'][202]++;
+ return domUtils.isBlockElm(n);
+}), true);
+ _$jscoverage['plugins/table.action.js'][203]++;
+ if ((first && (/t(h|d)/i.test(first.tagName) || (first === start.firstChild)))) {
+ _$jscoverage['plugins/table.action.js'][204]++;
+ me.execCommand("insertparagraphbeforetable");
+ _$jscoverage['plugins/table.action.js'][205]++;
+ domUtils.preventDefault(evt);
+ }
+ }
+ }
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][213]++;
+ if (((evt.ctrlKey || evt.metaKey) && (evt.keyCode == "67"))) {
+ _$jscoverage['plugins/table.action.js'][214]++;
+ tableCopyList = null;
+ _$jscoverage['plugins/table.action.js'][215]++;
+ var ut = getUETableBySelected(me);
+ _$jscoverage['plugins/table.action.js'][216]++;
+ if (ut) {
+ _$jscoverage['plugins/table.action.js'][217]++;
+ var tds = ut.selectedTds;
+ _$jscoverage['plugins/table.action.js'][218]++;
+ isFullCol = ut.isFullCol();
+ _$jscoverage['plugins/table.action.js'][219]++;
+ isFullRow = ut.isFullRow();
+ _$jscoverage['plugins/table.action.js'][220]++;
+ tableCopyList = [[ut.cloneCell(tds[0], null, true)]];
+ _$jscoverage['plugins/table.action.js'][223]++;
+ for (var i = 1, ci = ci; (ci = tds[i]); (i++)) {
+ _$jscoverage['plugins/table.action.js'][224]++;
+ if ((ci.parentNode !== tds[(i - 1)].parentNode)) {
+ _$jscoverage['plugins/table.action.js'][225]++;
+ tableCopyList.push([ut.cloneCell(ci, null, true)]);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][227]++;
+ tableCopyList[(tableCopyList.length - 1)].push(ut.cloneCell(ci, null, true));
+ }
+}
+ }
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][234]++;
+ me.addListener("tablehasdeleted", (function () {
+ _$jscoverage['plugins/table.action.js'][235]++;
+ toggleDraggableState(this, false, "", null);
+ _$jscoverage['plugins/table.action.js'][236]++;
+ if (dragButton) {
+ _$jscoverage['plugins/table.action.js'][236]++;
+ domUtils.remove(dragButton);
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][239]++;
+ me.addListener("beforepaste", (function (cmd, html) {
+ _$jscoverage['plugins/table.action.js'][240]++;
+ var me = this;
+ _$jscoverage['plugins/table.action.js'][241]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/table.action.js'][242]++;
+ if (domUtils.findParentByTagName(rng.startContainer, "caption", true)) {
+ _$jscoverage['plugins/table.action.js'][243]++;
+ var div = me.document.createElement("div");
+ _$jscoverage['plugins/table.action.js'][244]++;
+ div.innerHTML = html.html;
+ _$jscoverage['plugins/table.action.js'][245]++;
+ html.html = div[(browser.ie? "innerText": "textContent")];
+ _$jscoverage['plugins/table.action.js'][246]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][248]++;
+ var table = getUETableBySelected(me);
+ _$jscoverage['plugins/table.action.js'][249]++;
+ if (tableCopyList) {
+ _$jscoverage['plugins/table.action.js'][250]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/table.action.js'][251]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/table.action.js'][252]++;
+ var td = domUtils.findParentByTagName(rng.startContainer, ["td", "th"], true), tmpNode, preNode;
+ _$jscoverage['plugins/table.action.js'][253]++;
+ if (td) {
+ _$jscoverage['plugins/table.action.js'][254]++;
+ var ut = getUETable(td);
+ _$jscoverage['plugins/table.action.js'][255]++;
+ if (isFullRow) {
+ _$jscoverage['plugins/table.action.js'][256]++;
+ var rowIndex = ut.getCellInfo(td).rowIndex;
+ _$jscoverage['plugins/table.action.js'][257]++;
+ if ((td.tagName == "TH")) {
+ _$jscoverage['plugins/table.action.js'][258]++;
+ (rowIndex++);
+ }
+ _$jscoverage['plugins/table.action.js'][260]++;
+ for (var i = 0, ci; (ci = tableCopyList[(i++)]);) {
+ _$jscoverage['plugins/table.action.js'][261]++;
+ var tr = ut.insertRow((rowIndex++), "td");
+ _$jscoverage['plugins/table.action.js'][262]++;
+ for (var j = 0, cj; (cj = ci[j]); (j++)) {
+ _$jscoverage['plugins/table.action.js'][263]++;
+ var cell = tr.cells[j];
+ _$jscoverage['plugins/table.action.js'][264]++;
+ if ((! cell)) {
+ _$jscoverage['plugins/table.action.js'][265]++;
+ cell = tr.insertCell(j);
+ }
+ _$jscoverage['plugins/table.action.js'][267]++;
+ cell.innerHTML = cj.innerHTML;
+ _$jscoverage['plugins/table.action.js'][268]++;
+ (cj.getAttribute("width") && cell.setAttribute("width", cj.getAttribute("width")));
+ _$jscoverage['plugins/table.action.js'][269]++;
+ (cj.getAttribute("vAlign") && cell.setAttribute("vAlign", cj.getAttribute("vAlign")));
+ _$jscoverage['plugins/table.action.js'][270]++;
+ (cj.getAttribute("align") && cell.setAttribute("align", cj.getAttribute("align")));
+ _$jscoverage['plugins/table.action.js'][271]++;
+ (cj.style.cssText && (cell.style.cssText = cj.style.cssText));
+}
+ _$jscoverage['plugins/table.action.js'][273]++;
+ for (var j = 0, cj = cj; (cj = tr.cells[j]); (j++)) {
+ _$jscoverage['plugins/table.action.js'][274]++;
+ if ((! ci[j])) {
+ _$jscoverage['plugins/table.action.js'][275]++;
+ break;
+ }
+ _$jscoverage['plugins/table.action.js'][276]++;
+ cj.innerHTML = ci[j].innerHTML;
+ _$jscoverage['plugins/table.action.js'][277]++;
+ (ci[j].getAttribute("width") && cj.setAttribute("width", ci[j].getAttribute("width")));
+ _$jscoverage['plugins/table.action.js'][278]++;
+ (ci[j].getAttribute("vAlign") && cj.setAttribute("vAlign", ci[j].getAttribute("vAlign")));
+ _$jscoverage['plugins/table.action.js'][279]++;
+ (ci[j].getAttribute("align") && cj.setAttribute("align", ci[j].getAttribute("align")));
+ _$jscoverage['plugins/table.action.js'][280]++;
+ (ci[j].style.cssText && (cj.style.cssText = ci[j].style.cssText));
+}
+}
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][284]++;
+ if (isFullCol) {
+ _$jscoverage['plugins/table.action.js'][285]++;
+ cellInfo = ut.getCellInfo(td);
+ _$jscoverage['plugins/table.action.js'][286]++;
+ var maxColNum = 0;
+ _$jscoverage['plugins/table.action.js'][287]++;
+ for (var j = 0, ci = tableCopyList[0], cj = cj; (cj = ci[(j++)]);) {
+ _$jscoverage['plugins/table.action.js'][288]++;
+ maxColNum += (cj.colSpan || 1);
+}
+ _$jscoverage['plugins/table.action.js'][290]++;
+ me.__hasEnterExecCommand = true;
+ _$jscoverage['plugins/table.action.js'][291]++;
+ for (i = 0; (i < maxColNum); (i++)) {
+ _$jscoverage['plugins/table.action.js'][292]++;
+ me.execCommand("insertcol");
+}
+ _$jscoverage['plugins/table.action.js'][294]++;
+ me.__hasEnterExecCommand = false;
+ _$jscoverage['plugins/table.action.js'][295]++;
+ td = ut.table.rows[0].cells[cellInfo.cellIndex];
+ _$jscoverage['plugins/table.action.js'][296]++;
+ if ((td.tagName == "TH")) {
+ _$jscoverage['plugins/table.action.js'][297]++;
+ td = ut.table.rows[1].cells[cellInfo.cellIndex];
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][300]++;
+ for (var i = 0, ci = ci; (ci = tableCopyList[(i++)]);) {
+ _$jscoverage['plugins/table.action.js'][301]++;
+ tmpNode = td;
+ _$jscoverage['plugins/table.action.js'][302]++;
+ for (var j = 0, cj = cj; (cj = ci[(j++)]);) {
+ _$jscoverage['plugins/table.action.js'][303]++;
+ if (td) {
+ _$jscoverage['plugins/table.action.js'][304]++;
+ td.innerHTML = cj.innerHTML;
+ _$jscoverage['plugins/table.action.js'][306]++;
+ (cj.getAttribute("width") && td.setAttribute("width", cj.getAttribute("width")));
+ _$jscoverage['plugins/table.action.js'][307]++;
+ (cj.getAttribute("vAlign") && td.setAttribute("vAlign", cj.getAttribute("vAlign")));
+ _$jscoverage['plugins/table.action.js'][308]++;
+ (cj.getAttribute("align") && td.setAttribute("align", cj.getAttribute("align")));
+ _$jscoverage['plugins/table.action.js'][309]++;
+ (cj.style.cssText && (td.style.cssText = cj.style.cssText));
+ _$jscoverage['plugins/table.action.js'][310]++;
+ preNode = td;
+ _$jscoverage['plugins/table.action.js'][311]++;
+ td = td.nextSibling;
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][313]++;
+ var cloneTd = cj.cloneNode(true);
+ _$jscoverage['plugins/table.action.js'][314]++;
+ domUtils.removeAttributes(cloneTd, ["class", "rowSpan", "colSpan"]);
+ _$jscoverage['plugins/table.action.js'][316]++;
+ preNode.parentNode.appendChild(cloneTd);
+ }
+}
+ _$jscoverage['plugins/table.action.js'][319]++;
+ td = ut.getNextCell(tmpNode, true, true);
+ _$jscoverage['plugins/table.action.js'][320]++;
+ if ((! tableCopyList[i])) {
+ _$jscoverage['plugins/table.action.js'][321]++;
+ break;
+ }
+ _$jscoverage['plugins/table.action.js'][322]++;
+ if ((! td)) {
+ _$jscoverage['plugins/table.action.js'][323]++;
+ var cellInfo = ut.getCellInfo(tmpNode);
+ _$jscoverage['plugins/table.action.js'][324]++;
+ ut.table.insertRow(ut.table.rows.length);
+ _$jscoverage['plugins/table.action.js'][325]++;
+ ut.update();
+ _$jscoverage['plugins/table.action.js'][326]++;
+ td = ut.getVSideCell(tmpNode, true);
+ }
+}
+ }
+ _$jscoverage['plugins/table.action.js'][330]++;
+ ut.update();
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][332]++;
+ table = me.document.createElement("table");
+ _$jscoverage['plugins/table.action.js'][333]++;
+ for (var i = 0, ci = ci; (ci = tableCopyList[(i++)]);) {
+ _$jscoverage['plugins/table.action.js'][334]++;
+ var tr = table.insertRow(table.rows.length);
+ _$jscoverage['plugins/table.action.js'][335]++;
+ for (var j = 0, cj = cj; (cj = ci[(j++)]);) {
+ _$jscoverage['plugins/table.action.js'][336]++;
+ cloneTd = UT.cloneCell(cj, null, true);
+ _$jscoverage['plugins/table.action.js'][337]++;
+ domUtils.removeAttributes(cloneTd, ["class"]);
+ _$jscoverage['plugins/table.action.js'][338]++;
+ tr.appendChild(cloneTd);
+}
+ _$jscoverage['plugins/table.action.js'][340]++;
+ if (((j == 2) && (cloneTd.rowSpan > 1))) {
+ _$jscoverage['plugins/table.action.js'][341]++;
+ cloneTd.rowSpan = 1;
+ }
+}
+ _$jscoverage['plugins/table.action.js'][345]++;
+ var defaultValue = getDefaultValue(me), width = (me.body.offsetWidth - (needIEHack? (parseInt(domUtils.getComputedStyle(me.body, "margin-left"), 10) * 2): 0) - (defaultValue.tableBorder * 2) - (me.options.offsetWidth || 0));
+ _$jscoverage['plugins/table.action.js'][348]++;
+ me.execCommand("insertHTML", ("" + table.innerHTML.replace(/>\s*<").replace(/\bth\b/gi, "td") + "
"));
+ }
+ _$jscoverage['plugins/table.action.js'][352]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['plugins/table.action.js'][353]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/table.action.js'][354]++;
+ html.html = "";
+ _$jscoverage['plugins/table.action.js'][355]++;
+ return true;
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][357]++;
+ var div = me.document.createElement("div"), tables;
+ _$jscoverage['plugins/table.action.js'][358]++;
+ div.innerHTML = html.html;
+ _$jscoverage['plugins/table.action.js'][359]++;
+ tables = div.getElementsByTagName("table");
+ _$jscoverage['plugins/table.action.js'][360]++;
+ if (domUtils.findParentByTagName(me.selection.getStart(), "table")) {
+ _$jscoverage['plugins/table.action.js'][361]++;
+ utils.each(tables, (function (t) {
+ _$jscoverage['plugins/table.action.js'][362]++;
+ domUtils.remove(t);
+}));
+ _$jscoverage['plugins/table.action.js'][364]++;
+ if (domUtils.findParentByTagName(me.selection.getStart(), "caption", true)) {
+ _$jscoverage['plugins/table.action.js'][365]++;
+ div.innerHTML = div[(browser.ie? "innerText": "textContent")];
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][368]++;
+ utils.each(tables, (function (table) {
+ _$jscoverage['plugins/table.action.js'][369]++;
+ removeStyleSize(table, true);
+ _$jscoverage['plugins/table.action.js'][370]++;
+ domUtils.removeAttributes(table, ["style", "border"]);
+ _$jscoverage['plugins/table.action.js'][371]++;
+ utils.each(domUtils.getElementsByTagName(table, "td"), (function (td) {
+ _$jscoverage['plugins/table.action.js'][372]++;
+ if (isEmptyBlock(td)) {
+ _$jscoverage['plugins/table.action.js'][373]++;
+ domUtils.fillNode(me.document, td);
+ }
+ _$jscoverage['plugins/table.action.js'][375]++;
+ removeStyleSize(td, true);
+}));
+}));
+ }
+ _$jscoverage['plugins/table.action.js'][380]++;
+ html.html = div.innerHTML;
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][384]++;
+ me.addListener("afterpaste", (function () {
+ _$jscoverage['plugins/table.action.js'][385]++;
+ utils.each(domUtils.getElementsByTagName(me.body, "table"), (function (table) {
+ _$jscoverage['plugins/table.action.js'][386]++;
+ if ((table.offsetWidth > me.body.offsetWidth)) {
+ _$jscoverage['plugins/table.action.js'][387]++;
+ var defaultValue = getDefaultValue(me, table);
+ _$jscoverage['plugins/table.action.js'][388]++;
+ table.style.width = ((me.body.offsetWidth - (needIEHack? (parseInt(domUtils.getComputedStyle(me.body, "margin-left"), 10) * 2): 0) - (defaultValue.tableBorder * 2) - (me.options.offsetWidth || 0)) + "px");
+ }
+}));
+}));
+ _$jscoverage['plugins/table.action.js'][392]++;
+ me.addListener("blur", (function () {
+ _$jscoverage['plugins/table.action.js'][393]++;
+ tableCopyList = null;
+}));
+ _$jscoverage['plugins/table.action.js'][395]++;
+ var timer;
+ _$jscoverage['plugins/table.action.js'][396]++;
+ me.addListener("keydown", (function () {
+ _$jscoverage['plugins/table.action.js'][397]++;
+ clearTimeout(timer);
+ _$jscoverage['plugins/table.action.js'][398]++;
+ timer = setTimeout((function () {
+ _$jscoverage['plugins/table.action.js'][399]++;
+ var rng = me.selection.getRange(), cell = domUtils.findParentByTagName(rng.startContainer, ["th", "td"], true);
+ _$jscoverage['plugins/table.action.js'][401]++;
+ if (cell) {
+ _$jscoverage['plugins/table.action.js'][402]++;
+ var table = cell.parentNode.parentNode.parentNode;
+ _$jscoverage['plugins/table.action.js'][403]++;
+ if ((table.offsetWidth > table.getAttribute("width"))) {
+ _$jscoverage['plugins/table.action.js'][404]++;
+ cell.style.wordBreak = "break-all";
+ }
+ }
+}), 100);
+}));
+ _$jscoverage['plugins/table.action.js'][410]++;
+ me.addListener("selectionchange", (function () {
+ _$jscoverage['plugins/table.action.js'][411]++;
+ toggleDraggableState(me, false, "", null);
+}));
+ _$jscoverage['plugins/table.action.js'][417]++;
+ me.addListener("contentchange", (function () {
+ _$jscoverage['plugins/table.action.js'][418]++;
+ var me = this;
+ _$jscoverage['plugins/table.action.js'][420]++;
+ hideDragLine(me);
+ _$jscoverage['plugins/table.action.js'][421]++;
+ if (getUETableBySelected(me)) {
+ _$jscoverage['plugins/table.action.js'][421]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][422]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/table.action.js'][423]++;
+ var start = rng.startContainer;
+ _$jscoverage['plugins/table.action.js'][424]++;
+ start = domUtils.findParentByTagName(start, ["td", "th"], true);
+ _$jscoverage['plugins/table.action.js'][425]++;
+ utils.each(domUtils.getElementsByTagName(me.document, "table"), (function (table) {
+ _$jscoverage['plugins/table.action.js'][426]++;
+ if ((me.fireEvent("excludetable", table) === true)) {
+ _$jscoverage['plugins/table.action.js'][426]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][427]++;
+ table.ueTable = new UT(table);
+ _$jscoverage['plugins/table.action.js'][428]++;
+ utils.each(domUtils.getElementsByTagName(me.document, "td"), (function (td) {
+ _$jscoverage['plugins/table.action.js'][430]++;
+ if ((domUtils.isEmptyBlock(td) && (td !== start))) {
+ _$jscoverage['plugins/table.action.js'][431]++;
+ domUtils.fillNode(me.document, td);
+ _$jscoverage['plugins/table.action.js'][432]++;
+ if ((browser.ie && (browser.version == 6))) {
+ _$jscoverage['plugins/table.action.js'][433]++;
+ td.innerHTML = " ";
+ }
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][437]++;
+ utils.each(domUtils.getElementsByTagName(me.document, "th"), (function (th) {
+ _$jscoverage['plugins/table.action.js'][438]++;
+ if ((domUtils.isEmptyBlock(th) && (th !== start))) {
+ _$jscoverage['plugins/table.action.js'][439]++;
+ domUtils.fillNode(me.document, th);
+ _$jscoverage['plugins/table.action.js'][440]++;
+ if ((browser.ie && (browser.version == 6))) {
+ _$jscoverage['plugins/table.action.js'][441]++;
+ th.innerHTML = " ";
+ }
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][445]++;
+ table.onmouseover = (function () {
+ _$jscoverage['plugins/table.action.js'][446]++;
+ me.fireEvent("tablemouseover", table);
+});
+ _$jscoverage['plugins/table.action.js'][448]++;
+ table.onmousemove = (function () {
+ _$jscoverage['plugins/table.action.js'][449]++;
+ me.fireEvent("tablemousemove", table);
+ _$jscoverage['plugins/table.action.js'][450]++;
+ (me.options.tableDragable && toggleDragButton(true, this, me));
+});
+ _$jscoverage['plugins/table.action.js'][452]++;
+ table.onmouseout = (function () {
+ _$jscoverage['plugins/table.action.js'][453]++;
+ me.fireEvent("tablemouseout", table);
+ _$jscoverage['plugins/table.action.js'][454]++;
+ toggleDraggableState(me, false, "", null);
+ _$jscoverage['plugins/table.action.js'][455]++;
+ hideDragLine(me);
+});
+ _$jscoverage['plugins/table.action.js'][457]++;
+ table.onclick = (function (evt) {
+ _$jscoverage['plugins/table.action.js'][458]++;
+ evt = (me.window.event || evt);
+ _$jscoverage['plugins/table.action.js'][459]++;
+ var target = getParentTdOrTh((evt.target || evt.srcElement));
+ _$jscoverage['plugins/table.action.js'][460]++;
+ if ((! target)) {
+ _$jscoverage['plugins/table.action.js'][460]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][461]++;
+ var ut = getUETable(target), table = ut.table, cellInfo = ut.getCellInfo(target), cellsRange, rng = me.selection.getRange();
+ _$jscoverage['plugins/table.action.js'][475]++;
+ if (inTableSide(table, target, evt, true)) {
+ _$jscoverage['plugins/table.action.js'][476]++;
+ var endTdCol = ut.getCell(ut.indexTable[(ut.rowsNum - 1)][cellInfo.colIndex].rowIndex, ut.indexTable[(ut.rowsNum - 1)][cellInfo.colIndex].cellIndex);
+ _$jscoverage['plugins/table.action.js'][477]++;
+ if ((evt.shiftKey && ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.action.js'][478]++;
+ if ((ut.selectedTds[0] !== endTdCol)) {
+ _$jscoverage['plugins/table.action.js'][479]++;
+ cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdCol);
+ _$jscoverage['plugins/table.action.js'][480]++;
+ ut.setSelected(cellsRange);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][482]++;
+ (rng && rng.selectNodeContents(endTdCol).select());
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][485]++;
+ if ((target !== endTdCol)) {
+ _$jscoverage['plugins/table.action.js'][486]++;
+ cellsRange = ut.getCellsRange(target, endTdCol);
+ _$jscoverage['plugins/table.action.js'][487]++;
+ ut.setSelected(cellsRange);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][489]++;
+ (rng && rng.selectNodeContents(endTdCol).select());
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][492]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][494]++;
+ if (inTableSide(table, target, evt)) {
+ _$jscoverage['plugins/table.action.js'][495]++;
+ var endTdRow = ut.getCell(ut.indexTable[cellInfo.rowIndex][(ut.colsNum - 1)].rowIndex, ut.indexTable[cellInfo.rowIndex][(ut.colsNum - 1)].cellIndex);
+ _$jscoverage['plugins/table.action.js'][496]++;
+ if ((evt.shiftKey && ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.action.js'][497]++;
+ if ((ut.selectedTds[0] !== endTdRow)) {
+ _$jscoverage['plugins/table.action.js'][498]++;
+ cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdRow);
+ _$jscoverage['plugins/table.action.js'][499]++;
+ ut.setSelected(cellsRange);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][501]++;
+ (rng && rng.selectNodeContents(endTdRow).select());
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][504]++;
+ if ((target !== endTdRow)) {
+ _$jscoverage['plugins/table.action.js'][505]++;
+ cellsRange = ut.getCellsRange(target, endTdRow);
+ _$jscoverage['plugins/table.action.js'][506]++;
+ ut.setSelected(cellsRange);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][508]++;
+ (rng && rng.selectNodeContents(endTdRow).select());
+ }
+ }
+ }
+});
+}));
+ _$jscoverage['plugins/table.action.js'][515]++;
+ switchBorderColor(me, true);
+}));
+ _$jscoverage['plugins/table.action.js'][518]++;
+ domUtils.on(me.document, "mousemove", mouseMoveEvent);
+ _$jscoverage['plugins/table.action.js'][520]++;
+ domUtils.on(me.document, "mouseout", (function (evt) {
+ _$jscoverage['plugins/table.action.js'][521]++;
+ var target = (evt.target || evt.srcElement);
+ _$jscoverage['plugins/table.action.js'][522]++;
+ if ((target.tagName == "TABLE")) {
+ _$jscoverage['plugins/table.action.js'][523]++;
+ toggleDraggableState(me, false, "", null);
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][529]++;
+ me.addListener("interlacetable", (function (type, table, classList) {
+ _$jscoverage['plugins/table.action.js'][530]++;
+ if ((! table)) {
+ _$jscoverage['plugins/table.action.js'][530]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][531]++;
+ var me = this, rows = table.rows, len = rows.length, getClass = (function (list, index, repeat) {
+ _$jscoverage['plugins/table.action.js'][535]++;
+ return (list[index]? list[index]: (repeat? list[(index % list.length)]: ""));
+});
+ _$jscoverage['plugins/table.action.js'][537]++;
+ for (var i = 0; (i < len); (i++)) {
+ _$jscoverage['plugins/table.action.js'][538]++;
+ rows[i].className = getClass((classList || me.options.classList), i, true);
+}
+}));
+ _$jscoverage['plugins/table.action.js'][541]++;
+ me.addListener("uninterlacetable", (function (type, table) {
+ _$jscoverage['plugins/table.action.js'][542]++;
+ if ((! table)) {
+ _$jscoverage['plugins/table.action.js'][542]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][543]++;
+ var me = this, rows = table.rows, classList = me.options.classList, len = rows.length;
+ _$jscoverage['plugins/table.action.js'][547]++;
+ for (var i = 0; (i < len); (i++)) {
+ _$jscoverage['plugins/table.action.js'][548]++;
+ domUtils.removeClasses(rows[i], classList);
+}
+}));
+ _$jscoverage['plugins/table.action.js'][552]++;
+ me.addListener("mousedown", mouseDownEvent);
+ _$jscoverage['plugins/table.action.js'][553]++;
+ me.addListener("mouseup", mouseUpEvent);
+ _$jscoverage['plugins/table.action.js'][555]++;
+ domUtils.on(me.body, "dragstart", (function (evt) {
+ _$jscoverage['plugins/table.action.js'][556]++;
+ mouseUpEvent.call(me, "dragstart", evt);
+}));
+ _$jscoverage['plugins/table.action.js'][559]++;
+ var currentRowIndex = 0;
+ _$jscoverage['plugins/table.action.js'][560]++;
+ me.addListener("mousedown", (function () {
+ _$jscoverage['plugins/table.action.js'][561]++;
+ currentRowIndex = 0;
+}));
+ _$jscoverage['plugins/table.action.js'][563]++;
+ me.addListener("tabkeydown", (function () {
+ _$jscoverage['plugins/table.action.js'][564]++;
+ var range = this.selection.getRange(), common = range.getCommonAncestor(true, true), table = domUtils.findParentByTagName(common, "table");
+ _$jscoverage['plugins/table.action.js'][567]++;
+ if (table) {
+ _$jscoverage['plugins/table.action.js'][568]++;
+ if (domUtils.findParentByTagName(common, "caption", true)) {
+ _$jscoverage['plugins/table.action.js'][569]++;
+ var cell = domUtils.getElementsByTagName(table, "th td");
+ _$jscoverage['plugins/table.action.js'][570]++;
+ if ((cell && cell.length)) {
+ _$jscoverage['plugins/table.action.js'][571]++;
+ range.setStart(cell[0], 0).setCursor(false, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][574]++;
+ var cell = domUtils.findParentByTagName(common, ["td", "th"], true), ua = getUETable(cell);
+ _$jscoverage['plugins/table.action.js'][576]++;
+ currentRowIndex = ((cell.rowSpan > 1)? currentRowIndex: ua.getCellInfo(cell).rowIndex);
+ _$jscoverage['plugins/table.action.js'][577]++;
+ var nextCell = ua.getTabNextCell(cell, currentRowIndex);
+ _$jscoverage['plugins/table.action.js'][578]++;
+ if (nextCell) {
+ _$jscoverage['plugins/table.action.js'][579]++;
+ if (isEmptyBlock(nextCell)) {
+ _$jscoverage['plugins/table.action.js'][580]++;
+ range.setStart(nextCell, 0).setCursor(false, true);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][582]++;
+ range.selectNodeContents(nextCell).select();
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][585]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/table.action.js'][586]++;
+ me.__hasEnterExecCommand = true;
+ _$jscoverage['plugins/table.action.js'][587]++;
+ this.execCommand("insertrownext");
+ _$jscoverage['plugins/table.action.js'][588]++;
+ me.__hasEnterExecCommand = false;
+ _$jscoverage['plugins/table.action.js'][589]++;
+ range = this.selection.getRange();
+ _$jscoverage['plugins/table.action.js'][590]++;
+ range.setStart(table.rows[(table.rows.length - 1)].cells[0], 0).setCursor();
+ _$jscoverage['plugins/table.action.js'][591]++;
+ me.fireEvent("saveScene");
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][594]++;
+ return true;
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][598]++;
+ (browser.ie && me.addListener("selectionchange", (function () {
+ _$jscoverage['plugins/table.action.js'][599]++;
+ toggleDraggableState(this, false, "", null);
+})));
+ _$jscoverage['plugins/table.action.js'][601]++;
+ me.addListener("keydown", (function (type, evt) {
+ _$jscoverage['plugins/table.action.js'][602]++;
+ var me = this;
+ _$jscoverage['plugins/table.action.js'][604]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/table.action.js'][605]++;
+ if (((keyCode == 8) || (keyCode == 46))) {
+ _$jscoverage['plugins/table.action.js'][606]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][608]++;
+ var notCtrlKey = ((! evt.ctrlKey) && (! evt.metaKey) && (! evt.shiftKey) && (! evt.altKey));
+ _$jscoverage['plugins/table.action.js'][609]++;
+ (notCtrlKey && removeSelectedClass(domUtils.getElementsByTagName(me.body, "td")));
+ _$jscoverage['plugins/table.action.js'][610]++;
+ var ut = getUETableBySelected(me);
+ _$jscoverage['plugins/table.action.js'][611]++;
+ if ((! ut)) {
+ _$jscoverage['plugins/table.action.js'][611]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][612]++;
+ (notCtrlKey && ut.clearSelected());
+}));
+ _$jscoverage['plugins/table.action.js'][615]++;
+ me.addListener("beforegetcontent", (function () {
+ _$jscoverage['plugins/table.action.js'][616]++;
+ switchBorderColor(this, false);
+ _$jscoverage['plugins/table.action.js'][617]++;
+ (browser.ie && utils.each(this.document.getElementsByTagName("caption"), (function (ci) {
+ _$jscoverage['plugins/table.action.js'][618]++;
+ if (domUtils.isEmptyNode(ci)) {
+ _$jscoverage['plugins/table.action.js'][619]++;
+ ci.innerHTML = " ";
+ }
+})));
+}));
+ _$jscoverage['plugins/table.action.js'][623]++;
+ me.addListener("aftergetcontent", (function () {
+ _$jscoverage['plugins/table.action.js'][624]++;
+ switchBorderColor(this, true);
+}));
+ _$jscoverage['plugins/table.action.js'][626]++;
+ me.addListener("getAllHtml", (function () {
+ _$jscoverage['plugins/table.action.js'][627]++;
+ removeSelectedClass(me.document.getElementsByTagName("td"));
+}));
+ _$jscoverage['plugins/table.action.js'][630]++;
+ me.addListener("fullscreenchanged", (function (type, fullscreen) {
+ _$jscoverage['plugins/table.action.js'][631]++;
+ if ((! fullscreen)) {
+ _$jscoverage['plugins/table.action.js'][632]++;
+ var ratio = (this.body.offsetWidth / document.body.offsetWidth), tables = domUtils.getElementsByTagName(this.body, "table");
+ _$jscoverage['plugins/table.action.js'][634]++;
+ utils.each(tables, (function (table) {
+ _$jscoverage['plugins/table.action.js'][635]++;
+ if ((table.offsetWidth < me.body.offsetWidth)) {
+ _$jscoverage['plugins/table.action.js'][635]++;
+ return false;
+ }
+ _$jscoverage['plugins/table.action.js'][636]++;
+ var tds = domUtils.getElementsByTagName(table, "td"), backWidths = [];
+ _$jscoverage['plugins/table.action.js'][638]++;
+ utils.each(tds, (function (td) {
+ _$jscoverage['plugins/table.action.js'][639]++;
+ backWidths.push(td.offsetWidth);
+}));
+ _$jscoverage['plugins/table.action.js'][641]++;
+ for (var i = 0, td; (td = tds[i]); (i++)) {
+ _$jscoverage['plugins/table.action.js'][642]++;
+ td.setAttribute("width", Math.floor((backWidths[i] * ratio)));
+}
+ _$jscoverage['plugins/table.action.js'][644]++;
+ table.setAttribute("width", Math.floor(getTableWidth(me, needIEHack, getDefaultValue(me))));
+}));
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][650]++;
+ var oldExecCommand = me.execCommand;
+ _$jscoverage['plugins/table.action.js'][651]++;
+ me.execCommand = (function (cmd, datatat) {
+ _$jscoverage['plugins/table.action.js'][653]++;
+ var me = this, args = arguments;
+ _$jscoverage['plugins/table.action.js'][656]++;
+ cmd = cmd.toLowerCase();
+ _$jscoverage['plugins/table.action.js'][657]++;
+ var ut = getUETableBySelected(me), tds, range = new (dom.Range)(me.document), cmdFun = (me.commands[cmd] || UE.commands[cmd]), result;
+ _$jscoverage['plugins/table.action.js'][661]++;
+ if ((! cmdFun)) {
+ _$jscoverage['plugins/table.action.js'][661]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][662]++;
+ if ((ut && (! commands[cmd]) && (! cmdFun.notNeedUndo) && (! me.__hasEnterExecCommand))) {
+ _$jscoverage['plugins/table.action.js'][663]++;
+ me.__hasEnterExecCommand = true;
+ _$jscoverage['plugins/table.action.js'][664]++;
+ me.fireEvent("beforeexeccommand", cmd);
+ _$jscoverage['plugins/table.action.js'][665]++;
+ tds = ut.selectedTds;
+ _$jscoverage['plugins/table.action.js'][666]++;
+ var lastState = -2, lastValue = -2, value, state;
+ _$jscoverage['plugins/table.action.js'][667]++;
+ for (var i = 0, td; (td = tds[i]); (i++)) {
+ _$jscoverage['plugins/table.action.js'][668]++;
+ if (isEmptyBlock(td)) {
+ _$jscoverage['plugins/table.action.js'][669]++;
+ range.setStart(td, 0).setCursor(false, true);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][671]++;
+ range.selectNode(td).select(true);
+ }
+ _$jscoverage['plugins/table.action.js'][673]++;
+ state = me.queryCommandState(cmd);
+ _$jscoverage['plugins/table.action.js'][674]++;
+ value = me.queryCommandValue(cmd);
+ _$jscoverage['plugins/table.action.js'][675]++;
+ if ((state != -1)) {
+ _$jscoverage['plugins/table.action.js'][676]++;
+ if (((lastState !== state) || (lastValue !== value))) {
+ _$jscoverage['plugins/table.action.js'][677]++;
+ me._ignoreContentChange = true;
+ _$jscoverage['plugins/table.action.js'][678]++;
+ result = oldExecCommand.apply(me, arguments);
+ _$jscoverage['plugins/table.action.js'][679]++;
+ me._ignoreContentChange = false;
+ }
+ _$jscoverage['plugins/table.action.js'][682]++;
+ lastState = me.queryCommandState(cmd);
+ _$jscoverage['plugins/table.action.js'][683]++;
+ lastValue = me.queryCommandValue(cmd);
+ _$jscoverage['plugins/table.action.js'][684]++;
+ if (domUtils.isEmptyBlock(td)) {
+ _$jscoverage['plugins/table.action.js'][685]++;
+ domUtils.fillNode(me.document, td);
+ }
+ }
+}
+ _$jscoverage['plugins/table.action.js'][689]++;
+ range.setStart(tds[0], 0).shrinkBoundary(true).setCursor(false, true);
+ _$jscoverage['plugins/table.action.js'][690]++;
+ me.fireEvent("contentchange");
+ _$jscoverage['plugins/table.action.js'][691]++;
+ me.fireEvent("afterexeccommand", cmd);
+ _$jscoverage['plugins/table.action.js'][692]++;
+ me.__hasEnterExecCommand = false;
+ _$jscoverage['plugins/table.action.js'][693]++;
+ me._selectionChange();
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][695]++;
+ result = oldExecCommand.apply(me, arguments);
+ }
+ _$jscoverage['plugins/table.action.js'][697]++;
+ return result;
+});
+}));
+ _$jscoverage['plugins/table.action.js'][707]++;
+ function removeStyleSize(obj, replaceToProperty) {
+ _$jscoverage['plugins/table.action.js'][708]++;
+ removeStyle(obj, "width", true);
+ _$jscoverage['plugins/table.action.js'][709]++;
+ removeStyle(obj, "height", true);
+}
+ _$jscoverage['plugins/table.action.js'][712]++;
+ function removeStyle(obj, styleName, replaceToProperty) {
+ _$jscoverage['plugins/table.action.js'][713]++;
+ if (obj.style[styleName]) {
+ _$jscoverage['plugins/table.action.js'][714]++;
+ (replaceToProperty && obj.setAttribute(styleName, parseInt(obj.style[styleName], 10)));
+ _$jscoverage['plugins/table.action.js'][715]++;
+ obj.style[styleName] = "";
+ }
+}
+ _$jscoverage['plugins/table.action.js'][719]++;
+ function getParentTdOrTh(ele) {
+ _$jscoverage['plugins/table.action.js'][720]++;
+ if (((ele.tagName == "TD") || (ele.tagName == "TH"))) {
+ _$jscoverage['plugins/table.action.js'][720]++;
+ return ele;
+ }
+ _$jscoverage['plugins/table.action.js'][721]++;
+ var td;
+ _$jscoverage['plugins/table.action.js'][722]++;
+ if ((td = (domUtils.findParentByTagName(ele, "td", true) || domUtils.findParentByTagName(ele, "th", true)))) {
+ _$jscoverage['plugins/table.action.js'][722]++;
+ return td;
+ }
+ _$jscoverage['plugins/table.action.js'][723]++;
+ return null;
+}
+ _$jscoverage['plugins/table.action.js'][726]++;
+ function isEmptyBlock(node) {
+ _$jscoverage['plugins/table.action.js'][727]++;
+ var reg = new RegExp(domUtils.fillChar, "g");
+ _$jscoverage['plugins/table.action.js'][728]++;
+ if ((node[(browser.ie? "innerText": "textContent")].replace(/^\s*$/, "").replace(reg, "").length > 0)) {
+ _$jscoverage['plugins/table.action.js'][729]++;
+ return 0;
+ }
+ _$jscoverage['plugins/table.action.js'][731]++;
+ for (var n in dtd.$isNotEmpty) {
+ _$jscoverage['plugins/table.action.js'][732]++;
+ if (node.getElementsByTagName(n).length) {
+ _$jscoverage['plugins/table.action.js'][733]++;
+ return 0;
+ }
+}
+ _$jscoverage['plugins/table.action.js'][736]++;
+ return 1;
+}
+ _$jscoverage['plugins/table.action.js'][740]++;
+ function mouseCoords(evt) {
+ _$jscoverage['plugins/table.action.js'][741]++;
+ if ((evt.pageX || evt.pageY)) {
+ _$jscoverage['plugins/table.action.js'][742]++;
+ return ({x: evt.pageX, y: evt.pageY});
+ }
+ _$jscoverage['plugins/table.action.js'][744]++;
+ return ({x: ((evt.clientX + me.document.body.scrollLeft) - me.document.body.clientLeft), y: ((evt.clientY + me.document.body.scrollTop) - me.document.body.clientTop)});
+}
+ _$jscoverage['plugins/table.action.js'][750]++;
+ function mouseMoveEvent(evt) {
+ _$jscoverage['plugins/table.action.js'][752]++;
+ if (isEditorDisabled()) {
+ _$jscoverage['plugins/table.action.js'][753]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][756]++;
+ try {
+ _$jscoverage['plugins/table.action.js'][759]++;
+ var target = getParentTdOrTh((evt.target || evt.srcElement)), pos;
+ _$jscoverage['plugins/table.action.js'][763]++;
+ if (isInResizeBuffer) {
+ _$jscoverage['plugins/table.action.js'][765]++;
+ me.body.style.webkitUserSelect = "none";
+ _$jscoverage['plugins/table.action.js'][767]++;
+ if (((Math.abs((userActionStatus.x - evt.clientX)) > offsetOfTableCell) || (Math.abs((userActionStatus.y - evt.clientY)) > offsetOfTableCell))) {
+ _$jscoverage['plugins/table.action.js'][768]++;
+ clearTableDragTimer();
+ _$jscoverage['plugins/table.action.js'][769]++;
+ isInResizeBuffer = false;
+ _$jscoverage['plugins/table.action.js'][770]++;
+ singleClickState = 0;
+ _$jscoverage['plugins/table.action.js'][772]++;
+ tableBorderDrag(evt);
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][777]++;
+ if ((onDrag && dragTd)) {
+ _$jscoverage['plugins/table.action.js'][778]++;
+ singleClickState = 0;
+ _$jscoverage['plugins/table.action.js'][779]++;
+ me.body.style.webkitUserSelect = "none";
+ _$jscoverage['plugins/table.action.js'][780]++;
+ (me.selection.getNative()[(browser.ie? "empty": "removeAllRanges")])();
+ _$jscoverage['plugins/table.action.js'][781]++;
+ pos = mouseCoords(evt);
+ _$jscoverage['plugins/table.action.js'][782]++;
+ toggleDraggableState(me, true, onDrag, pos, target);
+ _$jscoverage['plugins/table.action.js'][783]++;
+ if ((onDrag == "h")) {
+ _$jscoverage['plugins/table.action.js'][784]++;
+ dragLine.style.left = (getPermissionX(dragTd, evt) + "px");
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][785]++;
+ if ((onDrag == "v")) {
+ _$jscoverage['plugins/table.action.js'][786]++;
+ dragLine.style.top = (getPermissionY(dragTd, evt) + "px");
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][788]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][791]++;
+ if (target) {
+ _$jscoverage['plugins/table.action.js'][793]++;
+ if ((me.fireEvent("excludetable", target) === true)) {
+ _$jscoverage['plugins/table.action.js'][794]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][795]++;
+ pos = mouseCoords(evt);
+ _$jscoverage['plugins/table.action.js'][796]++;
+ var state = getRelation(target, pos), table = domUtils.findParentByTagName(target, "table", true);
+ _$jscoverage['plugins/table.action.js'][799]++;
+ if (inTableSide(table, target, evt, true)) {
+ _$jscoverage['plugins/table.action.js'][800]++;
+ if ((me.fireEvent("excludetable", table) === true)) {
+ _$jscoverage['plugins/table.action.js'][800]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][801]++;
+ me.body.style.cursor = ("url(" + me.options.cursorpath + "h.png),pointer");
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][802]++;
+ if (inTableSide(table, target, evt)) {
+ _$jscoverage['plugins/table.action.js'][803]++;
+ if ((me.fireEvent("excludetable", table) === true)) {
+ _$jscoverage['plugins/table.action.js'][803]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][804]++;
+ me.body.style.cursor = ("url(" + me.options.cursorpath + "v.png),pointer");
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][806]++;
+ me.body.style.cursor = "text";
+ _$jscoverage['plugins/table.action.js'][807]++;
+ var curCell = target;
+ _$jscoverage['plugins/table.action.js'][808]++;
+ if (/\d/.test(state)) {
+ _$jscoverage['plugins/table.action.js'][809]++;
+ state = state.replace(/\d/, "");
+ _$jscoverage['plugins/table.action.js'][810]++;
+ target = getUETable(target).getPreviewCell(target, (state == "v"));
+ }
+ _$jscoverage['plugins/table.action.js'][813]++;
+ toggleDraggableState(me, (target? (! (! state)): false), (target? state: ""), pos, target);
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][817]++;
+ toggleDragButton(false, table, me);
+ }
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.action.js'][821]++;
+ showError(e);
+ }
+}
+ _$jscoverage['plugins/table.action.js'][825]++;
+ var dragButtonTimer;
+ _$jscoverage['plugins/table.action.js'][827]++;
+ function toggleDragButton(show, table, editor) {
+ _$jscoverage['plugins/table.action.js'][828]++;
+ if ((! show)) {
+ _$jscoverage['plugins/table.action.js'][829]++;
+ if (dragOver) {
+ _$jscoverage['plugins/table.action.js'][829]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][830]++;
+ dragButtonTimer = setTimeout((function () {
+ _$jscoverage['plugins/table.action.js'][831]++;
+ ((! dragOver) && dragButton && dragButton.parentNode && dragButton.parentNode.removeChild(dragButton));
+}), 2000);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][834]++;
+ createDragButton(table, editor);
+ }
+}
+ _$jscoverage['plugins/table.action.js'][838]++;
+ function createDragButton(table, editor) {
+ _$jscoverage['plugins/table.action.js'][839]++;
+ var pos = domUtils.getXY(table), doc = table.ownerDocument;
+ _$jscoverage['plugins/table.action.js'][841]++;
+ if ((dragButton && dragButton.parentNode)) {
+ _$jscoverage['plugins/table.action.js'][841]++;
+ return dragButton;
+ }
+ _$jscoverage['plugins/table.action.js'][842]++;
+ dragButton = doc.createElement("div");
+ _$jscoverage['plugins/table.action.js'][843]++;
+ dragButton.contentEditable = false;
+ _$jscoverage['plugins/table.action.js'][844]++;
+ dragButton.innerHTML = "";
+ _$jscoverage['plugins/table.action.js'][845]++;
+ dragButton.style.cssText = ("width:15px;height:15px;background-image:url(" + editor.options.UEDITOR_HOME_URL + "dialogs/table/dragicon.png);position: absolute;cursor:move;top:" + (pos.y - 15) + "px;left:" + pos.x + "px;");
+ _$jscoverage['plugins/table.action.js'][846]++;
+ domUtils.unSelectable(dragButton);
+ _$jscoverage['plugins/table.action.js'][847]++;
+ dragButton.onmouseover = (function (evt) {
+ _$jscoverage['plugins/table.action.js'][848]++;
+ dragOver = true;
+});
+ _$jscoverage['plugins/table.action.js'][850]++;
+ dragButton.onmouseout = (function (evt) {
+ _$jscoverage['plugins/table.action.js'][851]++;
+ dragOver = false;
+});
+ _$jscoverage['plugins/table.action.js'][853]++;
+ domUtils.on(dragButton, "click", (function (type, evt) {
+ _$jscoverage['plugins/table.action.js'][854]++;
+ doClick(evt, this);
+}));
+ _$jscoverage['plugins/table.action.js'][856]++;
+ domUtils.on(dragButton, "dblclick", (function (type, evt) {
+ _$jscoverage['plugins/table.action.js'][857]++;
+ doDblClick(evt);
+}));
+ _$jscoverage['plugins/table.action.js'][859]++;
+ domUtils.on(dragButton, "dragstart", (function (type, evt) {
+ _$jscoverage['plugins/table.action.js'][860]++;
+ domUtils.preventDefault(evt);
+}));
+ _$jscoverage['plugins/table.action.js'][862]++;
+ var timer;
+ _$jscoverage['plugins/table.action.js'][864]++;
+ function doClick(evt, button) {
+ _$jscoverage['plugins/table.action.js'][866]++;
+ clearTimeout(timer);
+ _$jscoverage['plugins/table.action.js'][867]++;
+ timer = setTimeout((function () {
+ _$jscoverage['plugins/table.action.js'][868]++;
+ editor.fireEvent("tableClicked", table, button);
+}), 300);
+}
+ _$jscoverage['plugins/table.action.js'][872]++;
+ function doDblClick(evt) {
+ _$jscoverage['plugins/table.action.js'][873]++;
+ clearTimeout(timer);
+ _$jscoverage['plugins/table.action.js'][874]++;
+ var ut = getUETable(table), start = table.rows[0].cells[0], end = ut.getLastCell(), range = ut.getCellsRange(start, end);
+ _$jscoverage['plugins/table.action.js'][878]++;
+ editor.selection.getRange().setStart(start, 0).setCursor(false, true);
+ _$jscoverage['plugins/table.action.js'][879]++;
+ ut.setSelected(range);
+}
+ _$jscoverage['plugins/table.action.js'][882]++;
+ doc.body.appendChild(dragButton);
+}
+ _$jscoverage['plugins/table.action.js'][897]++;
+ function inTableSide(table, cell, evt, top) {
+ _$jscoverage['plugins/table.action.js'][898]++;
+ var pos = mouseCoords(evt), state = getRelation(cell, pos);
+ _$jscoverage['plugins/table.action.js'][901]++;
+ if (top) {
+ _$jscoverage['plugins/table.action.js'][902]++;
+ var caption = table.getElementsByTagName("caption")[0], capHeight = (caption? caption.offsetHeight: 0);
+ _$jscoverage['plugins/table.action.js'][904]++;
+ return ((state == "v1") && ((pos.y - domUtils.getXY(table).y - capHeight) < 8));
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][906]++;
+ return ((state == "h1") && ((pos.x - domUtils.getXY(table).x) < 8));
+ }
+}
+ _$jscoverage['plugins/table.action.js'][915]++;
+ function getPermissionX(dragTd, evt) {
+ _$jscoverage['plugins/table.action.js'][916]++;
+ var ut = getUETable(dragTd);
+ _$jscoverage['plugins/table.action.js'][917]++;
+ if (ut) {
+ _$jscoverage['plugins/table.action.js'][918]++;
+ var preTd = ut.getSameEndPosCells(dragTd, "x")[0], nextTd = ut.getSameStartPosXCells(dragTd)[0], mouseX = mouseCoords(evt).x, left = ((preTd? domUtils.getXY(preTd).x: domUtils.getXY(ut.table).x) + 20), right = (nextTd? ((domUtils.getXY(nextTd).x + nextTd.offsetWidth) - 20): ((me.body.offsetWidth + 5) || parseInt(domUtils.getComputedStyle(me.body, "width"), 10)));
+ _$jscoverage['plugins/table.action.js'][924]++;
+ left += cellMinWidth;
+ _$jscoverage['plugins/table.action.js'][925]++;
+ right -= cellMinWidth;
+ _$jscoverage['plugins/table.action.js'][927]++;
+ return ((mouseX < left)? left: ((mouseX > right)? right: mouseX));
+ }
+}
+ _$jscoverage['plugins/table.action.js'][934]++;
+ function getPermissionY(dragTd, evt) {
+ _$jscoverage['plugins/table.action.js'][935]++;
+ try {
+ _$jscoverage['plugins/table.action.js'][936]++;
+ var top = domUtils.getXY(dragTd).y, mousePosY = mouseCoords(evt).y;
+ _$jscoverage['plugins/table.action.js'][938]++;
+ return ((mousePosY < top)? top: mousePosY);
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.action.js'][940]++;
+ showError(e);
+ }
+}
+ _$jscoverage['plugins/table.action.js'][947]++;
+ function toggleDraggableState(editor, draggable, dir, mousePos, cell) {
+ _$jscoverage['plugins/table.action.js'][948]++;
+ try {
+ _$jscoverage['plugins/table.action.js'][949]++;
+ editor.body.style.cursor = ((dir == "h")? "col-resize": ((dir == "v")? "row-resize": "text"));
+ _$jscoverage['plugins/table.action.js'][950]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/table.action.js'][951]++;
+ if ((dir && (! mousedown) && (! getUETableBySelected(editor)))) {
+ _$jscoverage['plugins/table.action.js'][952]++;
+ getDragLine(editor, editor.document);
+ _$jscoverage['plugins/table.action.js'][953]++;
+ showDragLineAt(dir, cell);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][955]++;
+ hideDragLine(editor);
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][958]++;
+ onBorder = draggable;
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.action.js'][960]++;
+ showError(e);
+ }
+}
+ _$jscoverage['plugins/table.action.js'][968]++;
+ function getResizeLineByUETable() {
+ _$jscoverage['plugins/table.action.js'][970]++;
+ var lineId = "_UETableResizeLine", line = this.document.getElementById(lineId);
+ _$jscoverage['plugins/table.action.js'][973]++;
+ if ((! line)) {
+ _$jscoverage['plugins/table.action.js'][974]++;
+ line = this.document.createElement("div");
+ _$jscoverage['plugins/table.action.js'][975]++;
+ line.id = lineId;
+ _$jscoverage['plugins/table.action.js'][976]++;
+ line.contnetEditable = false;
+ _$jscoverage['plugins/table.action.js'][977]++;
+ line.setAttribute("unselectable", "on");
+ _$jscoverage['plugins/table.action.js'][979]++;
+ var styles = {width: ((2 * cellBorderWidth) + 1 + "px"), position: "absolute", "z-index": 100000, cursor: "col-resize", background: "red", display: "none"};
+ _$jscoverage['plugins/table.action.js'][989]++;
+ line.onmouseout = (function () {
+ _$jscoverage['plugins/table.action.js'][990]++;
+ this.style.display = "none";
+});
+ _$jscoverage['plugins/table.action.js'][993]++;
+ utils.extend(line.style, styles);
+ _$jscoverage['plugins/table.action.js'][995]++;
+ this.document.body.appendChild(line);
+ }
+ _$jscoverage['plugins/table.action.js'][999]++;
+ return line;
+}
+ _$jscoverage['plugins/table.action.js'][1006]++;
+ function updateResizeLine(cell, uetable) {
+ _$jscoverage['plugins/table.action.js'][1008]++;
+ var line = getResizeLineByUETable.call(this), table = uetable.table, styles = {top: (domUtils.getXY(table).y + "px"), left: (((domUtils.getXY(cell).x + cell.offsetWidth) - cellBorderWidth) + "px"), display: "block", height: (table.offsetHeight + "px")};
+ _$jscoverage['plugins/table.action.js'][1017]++;
+ utils.extend(line.style, styles);
+}
+ _$jscoverage['plugins/table.action.js'][1024]++;
+ function showResizeLine(cell) {
+ _$jscoverage['plugins/table.action.js'][1026]++;
+ var uetable = getUETable(cell);
+ _$jscoverage['plugins/table.action.js'][1028]++;
+ updateResizeLine.call(this, cell, uetable);
+}
+ _$jscoverage['plugins/table.action.js'][1037]++;
+ function getRelation(ele, mousePos) {
+ _$jscoverage['plugins/table.action.js'][1038]++;
+ var elePos = domUtils.getXY(ele);
+ _$jscoverage['plugins/table.action.js'][1040]++;
+ if ((! elePos)) {
+ _$jscoverage['plugins/table.action.js'][1041]++;
+ return "";
+ }
+ _$jscoverage['plugins/table.action.js'][1044]++;
+ if ((((elePos.x + ele.offsetWidth) - mousePos.x) < cellBorderWidth)) {
+ _$jscoverage['plugins/table.action.js'][1045]++;
+ return "h";
+ }
+ _$jscoverage['plugins/table.action.js'][1047]++;
+ if (((mousePos.x - elePos.x) < cellBorderWidth)) {
+ _$jscoverage['plugins/table.action.js'][1048]++;
+ return "h1";
+ }
+ _$jscoverage['plugins/table.action.js'][1050]++;
+ if ((((elePos.y + ele.offsetHeight) - mousePos.y) < cellBorderWidth)) {
+ _$jscoverage['plugins/table.action.js'][1051]++;
+ return "v";
+ }
+ _$jscoverage['plugins/table.action.js'][1053]++;
+ if (((mousePos.y - elePos.y) < cellBorderWidth)) {
+ _$jscoverage['plugins/table.action.js'][1054]++;
+ return "v1";
+ }
+ _$jscoverage['plugins/table.action.js'][1056]++;
+ return "";
+}
+ _$jscoverage['plugins/table.action.js'][1059]++;
+ function mouseDownEvent(type, evt) {
+ _$jscoverage['plugins/table.action.js'][1061]++;
+ if (isEditorDisabled()) {
+ _$jscoverage['plugins/table.action.js'][1062]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1065]++;
+ userActionStatus = {x: evt.clientX, y: evt.clientY};
+ _$jscoverage['plugins/table.action.js'][1071]++;
+ if ((evt.button == 2)) {
+ _$jscoverage['plugins/table.action.js'][1072]++;
+ var ut = getUETableBySelected(me), flag = false;
+ _$jscoverage['plugins/table.action.js'][1075]++;
+ if (ut) {
+ _$jscoverage['plugins/table.action.js'][1076]++;
+ var td = getTargetTd(me, evt);
+ _$jscoverage['plugins/table.action.js'][1077]++;
+ utils.each(ut.selectedTds, (function (ti) {
+ _$jscoverage['plugins/table.action.js'][1078]++;
+ if ((ti === td)) {
+ _$jscoverage['plugins/table.action.js'][1079]++;
+ flag = true;
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][1082]++;
+ if ((! flag)) {
+ _$jscoverage['plugins/table.action.js'][1083]++;
+ removeSelectedClass(domUtils.getElementsByTagName(me.body, "th td"));
+ _$jscoverage['plugins/table.action.js'][1084]++;
+ ut.clearSelected();
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1086]++;
+ td = ut.selectedTds[0];
+ _$jscoverage['plugins/table.action.js'][1087]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/table.action.js'][1088]++;
+ me.selection.getRange().setStart(td, 0).setCursor(false, true);
+}), 0);
+ }
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1094]++;
+ tableClickHander(evt);
+ }
+}
+ _$jscoverage['plugins/table.action.js'][1100]++;
+ function clearTableTimer() {
+ _$jscoverage['plugins/table.action.js'][1101]++;
+ (tabTimer && clearTimeout(tabTimer));
+ _$jscoverage['plugins/table.action.js'][1102]++;
+ tabTimer = null;
+}
+ _$jscoverage['plugins/table.action.js'][1106]++;
+ function tableDbclickHandler(evt) {
+ _$jscoverage['plugins/table.action.js'][1107]++;
+ singleClickState = 0;
+ _$jscoverage['plugins/table.action.js'][1108]++;
+ evt = (evt || me.window.event);
+ _$jscoverage['plugins/table.action.js'][1109]++;
+ var target = getParentTdOrTh((evt.target || evt.srcElement));
+ _$jscoverage['plugins/table.action.js'][1110]++;
+ if (target) {
+ _$jscoverage['plugins/table.action.js'][1111]++;
+ var h;
+ _$jscoverage['plugins/table.action.js'][1112]++;
+ if ((h = getRelation(target, mouseCoords(evt)))) {
+ _$jscoverage['plugins/table.action.js'][1114]++;
+ hideDragLine(me);
+ _$jscoverage['plugins/table.action.js'][1116]++;
+ if ((h == "h1")) {
+ _$jscoverage['plugins/table.action.js'][1117]++;
+ h = "h";
+ _$jscoverage['plugins/table.action.js'][1118]++;
+ if (inTableSide(domUtils.findParentByTagName(target, "table"), target, evt)) {
+ _$jscoverage['plugins/table.action.js'][1119]++;
+ me.execCommand("adaptbywindow");
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1121]++;
+ target = getUETable(target).getPreviewCell(target);
+ _$jscoverage['plugins/table.action.js'][1122]++;
+ if (target) {
+ _$jscoverage['plugins/table.action.js'][1123]++;
+ var rng = me.selection.getRange();
+ _$jscoverage['plugins/table.action.js'][1124]++;
+ rng.selectNodeContents(target).setCursor(true, true);
+ }
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][1128]++;
+ if ((h == "h")) {
+ _$jscoverage['plugins/table.action.js'][1129]++;
+ var ut = getUETable(target), table = ut.table, cells = getCellsByMoveBorder(target, table, true);
+ _$jscoverage['plugins/table.action.js'][1133]++;
+ cells = extractArray(cells, "left");
+ _$jscoverage['plugins/table.action.js'][1135]++;
+ ut.width = ut.offsetWidth;
+ _$jscoverage['plugins/table.action.js'][1137]++;
+ var oldWidth = [], newWidth = [];
+ _$jscoverage['plugins/table.action.js'][1140]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.action.js'][1142]++;
+ oldWidth.push(cell.offsetWidth);
+}));
+ _$jscoverage['plugins/table.action.js'][1146]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.action.js'][1148]++;
+ cell.removeAttribute("width");
+}));
+ _$jscoverage['plugins/table.action.js'][1152]++;
+ window.setTimeout((function () {
+ _$jscoverage['plugins/table.action.js'][1155]++;
+ var changeable = true;
+ _$jscoverage['plugins/table.action.js'][1157]++;
+ utils.each(cells, (function (cell, index) {
+ _$jscoverage['plugins/table.action.js'][1159]++;
+ var width = cell.offsetWidth;
+ _$jscoverage['plugins/table.action.js'][1161]++;
+ if ((width > oldWidth[index])) {
+ _$jscoverage['plugins/table.action.js'][1162]++;
+ changeable = false;
+ _$jscoverage['plugins/table.action.js'][1163]++;
+ return false;
+ }
+ _$jscoverage['plugins/table.action.js'][1166]++;
+ newWidth.push(width);
+}));
+ _$jscoverage['plugins/table.action.js'][1170]++;
+ var change = (changeable? newWidth: oldWidth);
+ _$jscoverage['plugins/table.action.js'][1172]++;
+ utils.each(cells, (function (cell, index) {
+ _$jscoverage['plugins/table.action.js'][1174]++;
+ cell.width = (change[index] - getTabcellSpace());
+}));
+}), 0);
+ }
+ }
+ }
+}
+ _$jscoverage['plugins/table.action.js'][1194]++;
+ function tableClickHander(evt) {
+ _$jscoverage['plugins/table.action.js'][1196]++;
+ removeSelectedClass(domUtils.getElementsByTagName(me.body, "td th"));
+ _$jscoverage['plugins/table.action.js'][1199]++;
+ utils.each(me.document.getElementsByTagName("table"), (function (t) {
+ _$jscoverage['plugins/table.action.js'][1200]++;
+ t.ueTable = null;
+}));
+ _$jscoverage['plugins/table.action.js'][1202]++;
+ startTd = getTargetTd(me, evt);
+ _$jscoverage['plugins/table.action.js'][1203]++;
+ if ((! startTd)) {
+ _$jscoverage['plugins/table.action.js'][1203]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1204]++;
+ var table = domUtils.findParentByTagName(startTd, "table", true);
+ _$jscoverage['plugins/table.action.js'][1205]++;
+ ut = getUETable(table);
+ _$jscoverage['plugins/table.action.js'][1206]++;
+ (ut && ut.clearSelected());
+ _$jscoverage['plugins/table.action.js'][1209]++;
+ if ((! onBorder)) {
+ _$jscoverage['plugins/table.action.js'][1210]++;
+ me.document.body.style.webkitUserSelect = "";
+ _$jscoverage['plugins/table.action.js'][1211]++;
+ mousedown = true;
+ _$jscoverage['plugins/table.action.js'][1212]++;
+ me.addListener("mouseover", mouseOverEvent);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1215]++;
+ borderActionHandler(evt);
+ }
+}
+ _$jscoverage['plugins/table.action.js'][1222]++;
+ function borderActionHandler(evt) {
+ _$jscoverage['plugins/table.action.js'][1224]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/table.action.js'][1225]++;
+ evt = reconstruct(evt);
+ }
+ _$jscoverage['plugins/table.action.js'][1228]++;
+ clearTableDragTimer();
+ _$jscoverage['plugins/table.action.js'][1231]++;
+ isInResizeBuffer = true;
+ _$jscoverage['plugins/table.action.js'][1233]++;
+ tableDragTimer = setTimeout((function () {
+ _$jscoverage['plugins/table.action.js'][1234]++;
+ tableBorderDrag(evt);
+}), dblclickTime);
+}
+ _$jscoverage['plugins/table.action.js'][1239]++;
+ function extractArray(originArr, key) {
+ _$jscoverage['plugins/table.action.js'][1241]++;
+ var result = [], tmp = null;
+ _$jscoverage['plugins/table.action.js'][1244]++;
+ for (var i = 0, len = originArr.length; (i < len); (i++)) {
+ _$jscoverage['plugins/table.action.js'][1246]++;
+ tmp = originArr[i][key];
+ _$jscoverage['plugins/table.action.js'][1248]++;
+ if (tmp) {
+ _$jscoverage['plugins/table.action.js'][1249]++;
+ result.push(tmp);
+ }
+}
+ _$jscoverage['plugins/table.action.js'][1254]++;
+ return result;
+}
+ _$jscoverage['plugins/table.action.js'][1258]++;
+ function clearTableDragTimer() {
+ _$jscoverage['plugins/table.action.js'][1259]++;
+ (tableDragTimer && clearTimeout(tableDragTimer));
+ _$jscoverage['plugins/table.action.js'][1260]++;
+ tableDragTimer = null;
+}
+ _$jscoverage['plugins/table.action.js'][1263]++;
+ function reconstruct(obj) {
+ _$jscoverage['plugins/table.action.js'][1265]++;
+ var attrs = ["pageX", "pageY", "clientX", "clientY", "srcElement", "target"], newObj = {};
+ _$jscoverage['plugins/table.action.js'][1268]++;
+ if (obj) {
+ _$jscoverage['plugins/table.action.js'][1270]++;
+ for (var i = 0, key, val; (key = attrs[i]); (i++)) {
+ _$jscoverage['plugins/table.action.js'][1271]++;
+ val = obj[key];
+ _$jscoverage['plugins/table.action.js'][1272]++;
+ (val && (newObj[key] = val));
+}
+ }
+ _$jscoverage['plugins/table.action.js'][1277]++;
+ return newObj;
+}
+ _$jscoverage['plugins/table.action.js'][1282]++;
+ function tableBorderDrag(evt) {
+ _$jscoverage['plugins/table.action.js'][1284]++;
+ isInResizeBuffer = false;
+ _$jscoverage['plugins/table.action.js'][1286]++;
+ if ((! startTd)) {
+ _$jscoverage['plugins/table.action.js'][1286]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1287]++;
+ var state = ((Math.abs((userActionStatus.x - evt.clientX)) >= Math.abs((userActionStatus.y - evt.clientY)))? "h": "v");
+ _$jscoverage['plugins/table.action.js'][1289]++;
+ if (/\d/.test(state)) {
+ _$jscoverage['plugins/table.action.js'][1290]++;
+ state = state.replace(/\d/, "");
+ _$jscoverage['plugins/table.action.js'][1291]++;
+ startTd = getUETable(startTd).getPreviewCell(startTd, (state == "v"));
+ }
+ _$jscoverage['plugins/table.action.js'][1293]++;
+ hideDragLine(me);
+ _$jscoverage['plugins/table.action.js'][1294]++;
+ getDragLine(me, me.document);
+ _$jscoverage['plugins/table.action.js'][1295]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/table.action.js'][1296]++;
+ showDragLineAt(state, startTd);
+ _$jscoverage['plugins/table.action.js'][1297]++;
+ mousedown = true;
+ _$jscoverage['plugins/table.action.js'][1299]++;
+ onDrag = state;
+ _$jscoverage['plugins/table.action.js'][1300]++;
+ dragTd = startTd;
+}
+ _$jscoverage['plugins/table.action.js'][1303]++;
+ function mouseUpEvent(type, evt) {
+ _$jscoverage['plugins/table.action.js'][1305]++;
+ if (isEditorDisabled()) {
+ _$jscoverage['plugins/table.action.js'][1306]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1309]++;
+ clearTableDragTimer();
+ _$jscoverage['plugins/table.action.js'][1311]++;
+ isInResizeBuffer = false;
+ _$jscoverage['plugins/table.action.js'][1313]++;
+ if (onBorder) {
+ _$jscoverage['plugins/table.action.js'][1314]++;
+ singleClickState = ((++singleClickState) % 3);
+ _$jscoverage['plugins/table.action.js'][1316]++;
+ userActionStatus = {x: evt.clientX, y: evt.clientY};
+ _$jscoverage['plugins/table.action.js'][1321]++;
+ tableResizeTimer = setTimeout((function () {
+ _$jscoverage['plugins/table.action.js'][1322]++;
+ ((singleClickState > 0) && (singleClickState--));
+}), dblclickTime);
+ _$jscoverage['plugins/table.action.js'][1325]++;
+ if ((singleClickState === 2)) {
+ _$jscoverage['plugins/table.action.js'][1327]++;
+ singleClickState = 0;
+ _$jscoverage['plugins/table.action.js'][1328]++;
+ tableDbclickHandler(evt);
+ _$jscoverage['plugins/table.action.js'][1329]++;
+ return;
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][1335]++;
+ if ((evt.button == 2)) {
+ _$jscoverage['plugins/table.action.js'][1335]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1336]++;
+ var me = this;
+ _$jscoverage['plugins/table.action.js'][1338]++;
+ var range = me.selection.getRange(), start = domUtils.findParentByTagName(range.startContainer, "table", true), end = domUtils.findParentByTagName(range.endContainer, "table", true);
+ _$jscoverage['plugins/table.action.js'][1342]++;
+ if ((start || end)) {
+ _$jscoverage['plugins/table.action.js'][1343]++;
+ if ((start === end)) {
+ _$jscoverage['plugins/table.action.js'][1344]++;
+ start = domUtils.findParentByTagName(range.startContainer, ["td", "th", "caption"], true);
+ _$jscoverage['plugins/table.action.js'][1345]++;
+ end = domUtils.findParentByTagName(range.endContainer, ["td", "th", "caption"], true);
+ _$jscoverage['plugins/table.action.js'][1346]++;
+ if ((start !== end)) {
+ _$jscoverage['plugins/table.action.js'][1347]++;
+ me.selection.clearRange();
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1350]++;
+ me.selection.clearRange();
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][1353]++;
+ mousedown = false;
+ _$jscoverage['plugins/table.action.js'][1354]++;
+ me.document.body.style.webkitUserSelect = "";
+ _$jscoverage['plugins/table.action.js'][1356]++;
+ if ((onDrag && dragTd)) {
+ _$jscoverage['plugins/table.action.js'][1358]++;
+ (me.selection.getNative()[(browser.ie? "empty": "removeAllRanges")])();
+ _$jscoverage['plugins/table.action.js'][1360]++;
+ singleClickState = 0;
+ _$jscoverage['plugins/table.action.js'][1361]++;
+ dragLine = me.document.getElementById("ue_tableDragLine");
+ _$jscoverage['plugins/table.action.js'][1363]++;
+ var dragTdPos = domUtils.getXY(dragTd), dragLinePos = domUtils.getXY(dragLine);
+ _$jscoverage['plugins/table.action.js'][1366]++;
+ switch (onDrag) {
+ case "h":
+ _$jscoverage['plugins/table.action.js'][1368]++;
+ changeColWidth(dragTd, (dragLinePos.x - dragTdPos.x));
+ _$jscoverage['plugins/table.action.js'][1369]++;
+ break;
+ case "v":
+ _$jscoverage['plugins/table.action.js'][1371]++;
+ changeRowHeight(dragTd, (dragLinePos.y - dragTdPos.y - dragTd.offsetHeight));
+ _$jscoverage['plugins/table.action.js'][1372]++;
+ break;
+ default:
+ }
+ _$jscoverage['plugins/table.action.js'][1375]++;
+ onDrag = "";
+ _$jscoverage['plugins/table.action.js'][1376]++;
+ dragTd = null;
+ _$jscoverage['plugins/table.action.js'][1378]++;
+ hideDragLine(me);
+ _$jscoverage['plugins/table.action.js'][1379]++;
+ me.fireEvent("saveScene");
+ _$jscoverage['plugins/table.action.js'][1380]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1383]++;
+ if ((! startTd)) {
+ _$jscoverage['plugins/table.action.js'][1384]++;
+ var target = domUtils.findParentByTagName((evt.target || evt.srcElement), "td", true);
+ _$jscoverage['plugins/table.action.js'][1385]++;
+ if ((! target)) {
+ _$jscoverage['plugins/table.action.js'][1385]++;
+ target = domUtils.findParentByTagName((evt.target || evt.srcElement), "th", true);
+ }
+ _$jscoverage['plugins/table.action.js'][1386]++;
+ if ((target && ((target.tagName == "TD") || (target.tagName == "TH")))) {
+ _$jscoverage['plugins/table.action.js'][1387]++;
+ if ((me.fireEvent("excludetable", target) === true)) {
+ _$jscoverage['plugins/table.action.js'][1387]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1388]++;
+ range = new (dom.Range)(me.document);
+ _$jscoverage['plugins/table.action.js'][1389]++;
+ range.setStart(target, 0).setCursor(false, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1392]++;
+ var ut = getUETable(startTd), cell = (ut? ut.selectedTds[0]: null);
+ _$jscoverage['plugins/table.action.js'][1394]++;
+ if (cell) {
+ _$jscoverage['plugins/table.action.js'][1395]++;
+ range = new (dom.Range)(me.document);
+ _$jscoverage['plugins/table.action.js'][1396]++;
+ if (domUtils.isEmptyBlock(cell)) {
+ _$jscoverage['plugins/table.action.js'][1397]++;
+ range.setStart(cell, 0).setCursor(false, true);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1399]++;
+ range.selectNodeContents(cell).shrinkBoundary().setCursor(false, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1402]++;
+ range = me.selection.getRange().shrinkBoundary();
+ _$jscoverage['plugins/table.action.js'][1403]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/table.action.js'][1404]++;
+ var start = domUtils.findParentByTagName(range.startContainer, ["td", "th"], true), end = domUtils.findParentByTagName(range.endContainer, ["td", "th"], true);
+ _$jscoverage['plugins/table.action.js'][1407]++;
+ if (((start && (! end)) || ((! start) && end) || (start && end && (start !== end)))) {
+ _$jscoverage['plugins/table.action.js'][1408]++;
+ range.setCursor(false, true);
+ }
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][1412]++;
+ startTd = null;
+ _$jscoverage['plugins/table.action.js'][1413]++;
+ me.removeListener("mouseover", mouseOverEvent);
+ }
+ _$jscoverage['plugins/table.action.js'][1415]++;
+ me._selectionChange(250, evt);
+}
+ _$jscoverage['plugins/table.action.js'][1418]++;
+ function mouseOverEvent(type, evt) {
+ _$jscoverage['plugins/table.action.js'][1420]++;
+ if (isEditorDisabled()) {
+ _$jscoverage['plugins/table.action.js'][1421]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1424]++;
+ var me = this, tar = (evt.target || evt.srcElement);
+ _$jscoverage['plugins/table.action.js'][1426]++;
+ currentTd = (domUtils.findParentByTagName(tar, "td", true) || domUtils.findParentByTagName(tar, "th", true));
+ _$jscoverage['plugins/table.action.js'][1428]++;
+ if ((startTd && currentTd && (((startTd.tagName == "TD") && (currentTd.tagName == "TD")) || ((startTd.tagName == "TH") && (currentTd.tagName == "TH"))) && (domUtils.findParentByTagName(startTd, "table") == domUtils.findParentByTagName(currentTd, "table")))) {
+ _$jscoverage['plugins/table.action.js'][1431]++;
+ var ut = getUETable(currentTd);
+ _$jscoverage['plugins/table.action.js'][1432]++;
+ if ((startTd != currentTd)) {
+ _$jscoverage['plugins/table.action.js'][1433]++;
+ me.document.body.style.webkitUserSelect = "none";
+ _$jscoverage['plugins/table.action.js'][1434]++;
+ (me.selection.getNative()[(browser.ie? "empty": "removeAllRanges")])();
+ _$jscoverage['plugins/table.action.js'][1435]++;
+ var range = ut.getCellsRange(startTd, currentTd);
+ _$jscoverage['plugins/table.action.js'][1436]++;
+ ut.setSelected(range);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1438]++;
+ me.document.body.style.webkitUserSelect = "";
+ _$jscoverage['plugins/table.action.js'][1439]++;
+ ut.clearSelected();
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][1443]++;
+ (evt.preventDefault? evt.preventDefault(): (evt.returnValue = false));
+}
+ _$jscoverage['plugins/table.action.js'][1446]++;
+ function setCellHeight(cell, height, backHeight) {
+ _$jscoverage['plugins/table.action.js'][1447]++;
+ var lineHight = parseInt(domUtils.getComputedStyle(cell, "line-height"), 10), tmpHeight = (backHeight + height);
+ _$jscoverage['plugins/table.action.js'][1449]++;
+ height = ((tmpHeight < lineHight)? lineHight: tmpHeight);
+ _$jscoverage['plugins/table.action.js'][1450]++;
+ if (cell.style.height) {
+ _$jscoverage['plugins/table.action.js'][1450]++;
+ cell.style.height = "";
+ }
+ _$jscoverage['plugins/table.action.js'][1451]++;
+ ((cell.rowSpan == 1)? cell.setAttribute("height", height): (cell.removeAttribute && cell.removeAttribute("height")));
+}
+ _$jscoverage['plugins/table.action.js'][1454]++;
+ function getWidth(cell) {
+ _$jscoverage['plugins/table.action.js'][1455]++;
+ if ((! cell)) {
+ _$jscoverage['plugins/table.action.js'][1455]++;
+ return 0;
+ }
+ _$jscoverage['plugins/table.action.js'][1456]++;
+ return parseInt(domUtils.getComputedStyle(cell, "width"), 10);
+}
+ _$jscoverage['plugins/table.action.js'][1459]++;
+ function changeColWidth(cell, changeValue) {
+ _$jscoverage['plugins/table.action.js'][1461]++;
+ var ut = getUETable(cell);
+ _$jscoverage['plugins/table.action.js'][1462]++;
+ if (ut) {
+ _$jscoverage['plugins/table.action.js'][1465]++;
+ var table = ut.table, cells = getCellsByMoveBorder(cell, table);
+ _$jscoverage['plugins/table.action.js'][1468]++;
+ table.style.width = "";
+ _$jscoverage['plugins/table.action.js'][1469]++;
+ table.removeAttribute("width");
+ _$jscoverage['plugins/table.action.js'][1472]++;
+ changeValue = correctChangeValue(changeValue, cell, cells);
+ _$jscoverage['plugins/table.action.js'][1474]++;
+ if (cell.nextSibling) {
+ _$jscoverage['plugins/table.action.js'][1476]++;
+ var i = 0;
+ _$jscoverage['plugins/table.action.js'][1478]++;
+ utils.each(cells, (function (cellGroup) {
+ _$jscoverage['plugins/table.action.js'][1480]++;
+ cellGroup.left.width = ((+ cellGroup.left.width) + changeValue);
+ _$jscoverage['plugins/table.action.js'][1481]++;
+ (cellGroup.right && (cellGroup.right.width = ((+ cellGroup.right.width) - changeValue)));
+}));
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1487]++;
+ utils.each(cells, (function (cellGroup) {
+ _$jscoverage['plugins/table.action.js'][1488]++;
+ cellGroup.left.width -= (- changeValue);
+}));
+ }
+ }
+}
+ _$jscoverage['plugins/table.action.js'][1496]++;
+ function isEditorDisabled() {
+ _$jscoverage['plugins/table.action.js'][1497]++;
+ return (me.body.contentEditable === "false");
+}
+ _$jscoverage['plugins/table.action.js'][1500]++;
+ function changeRowHeight(td, changeValue) {
+ _$jscoverage['plugins/table.action.js'][1501]++;
+ if ((Math.abs(changeValue) < 10)) {
+ _$jscoverage['plugins/table.action.js'][1501]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1502]++;
+ var ut = getUETable(td);
+ _$jscoverage['plugins/table.action.js'][1503]++;
+ if (ut) {
+ _$jscoverage['plugins/table.action.js'][1504]++;
+ var cells = ut.getSameEndPosCells(td, "y"), backHeight = (cells[0]? cells[0].offsetHeight: 0);
+ _$jscoverage['plugins/table.action.js'][1507]++;
+ for (var i = 0, cell; (cell = cells[(i++)]);) {
+ _$jscoverage['plugins/table.action.js'][1508]++;
+ setCellHeight(cell, changeValue, backHeight);
+}
+ }
+}
+ _$jscoverage['plugins/table.action.js'][1518]++;
+ function getCellsByMoveBorder(cell, table, isContainMergeCell) {
+ _$jscoverage['plugins/table.action.js'][1520]++;
+ if ((! table)) {
+ _$jscoverage['plugins/table.action.js'][1521]++;
+ table = domUtils.findParentByTagName(cell, "table");
+ }
+ _$jscoverage['plugins/table.action.js'][1524]++;
+ if ((! table)) {
+ _$jscoverage['plugins/table.action.js'][1525]++;
+ return null;
+ }
+ _$jscoverage['plugins/table.action.js'][1529]++;
+ var index = domUtils.getNodeIndex(cell), temp = cell, rows = table.rows, colIndex = 0;
+ _$jscoverage['plugins/table.action.js'][1534]++;
+ while (temp) {
+ _$jscoverage['plugins/table.action.js'][1536]++;
+ if ((temp.nodeType === 1)) {
+ _$jscoverage['plugins/table.action.js'][1537]++;
+ colIndex += (temp.colSpan || 1);
+ }
+ _$jscoverage['plugins/table.action.js'][1539]++;
+ temp = temp.previousSibling;
+}
+ _$jscoverage['plugins/table.action.js'][1542]++;
+ temp = null;
+ _$jscoverage['plugins/table.action.js'][1545]++;
+ var borderCells = [];
+ _$jscoverage['plugins/table.action.js'][1547]++;
+ utils.each(rows, (function (tabRow) {
+ _$jscoverage['plugins/table.action.js'][1549]++;
+ var cells = tabRow.cells, currIndex = 0;
+ _$jscoverage['plugins/table.action.js'][1552]++;
+ utils.each(cells, (function (tabCell) {
+ _$jscoverage['plugins/table.action.js'][1554]++;
+ currIndex += (tabCell.colSpan || 1);
+ _$jscoverage['plugins/table.action.js'][1556]++;
+ if ((currIndex === colIndex)) {
+ _$jscoverage['plugins/table.action.js'][1558]++;
+ borderCells.push({left: tabCell, right: (tabCell.nextSibling || null)});
+ _$jscoverage['plugins/table.action.js'][1563]++;
+ return false;
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1565]++;
+ if ((currIndex > colIndex)) {
+ _$jscoverage['plugins/table.action.js'][1567]++;
+ if (isContainMergeCell) {
+ _$jscoverage['plugins/table.action.js'][1568]++;
+ borderCells.push({left: tabCell});
+ }
+ _$jscoverage['plugins/table.action.js'][1573]++;
+ return false;
+ }
+ }
+}));
+}));
+ _$jscoverage['plugins/table.action.js'][1581]++;
+ return borderCells;
+}
+ _$jscoverage['plugins/table.action.js'][1589]++;
+ function getMinWidthByTableCells(cells) {
+ _$jscoverage['plugins/table.action.js'][1591]++;
+ var minWidth = Number.MAX_VALUE;
+ _$jscoverage['plugins/table.action.js'][1593]++;
+ for (var i = 0, curCell; (curCell = cells[i]); (i++)) {
+ _$jscoverage['plugins/table.action.js'][1595]++;
+ minWidth = Math.min(minWidth, (curCell.width || getTableCellWidth(curCell)));
+}
+ _$jscoverage['plugins/table.action.js'][1599]++;
+ return minWidth;
+}
+ _$jscoverage['plugins/table.action.js'][1603]++;
+ function correctChangeValue(changeValue, relatedCell, cells) {
+ _$jscoverage['plugins/table.action.js'][1606]++;
+ changeValue -= getTabcellSpace();
+ _$jscoverage['plugins/table.action.js'][1608]++;
+ if ((changeValue < 0)) {
+ _$jscoverage['plugins/table.action.js'][1609]++;
+ return 0;
+ }
+ _$jscoverage['plugins/table.action.js'][1612]++;
+ changeValue -= getTableCellWidth(relatedCell);
+ _$jscoverage['plugins/table.action.js'][1615]++;
+ var direction = ((changeValue < 0)? "left": "right");
+ _$jscoverage['plugins/table.action.js'][1617]++;
+ changeValue = Math.abs(changeValue);
+ _$jscoverage['plugins/table.action.js'][1620]++;
+ utils.each(cells, (function (cellGroup) {
+ _$jscoverage['plugins/table.action.js'][1622]++;
+ var curCell = cellGroup[direction];
+ _$jscoverage['plugins/table.action.js'][1625]++;
+ if (curCell) {
+ _$jscoverage['plugins/table.action.js'][1626]++;
+ changeValue = Math.min(changeValue, (getTableCellWidth(curCell) - cellMinWidth));
+ }
+}));
+ _$jscoverage['plugins/table.action.js'][1634]++;
+ changeValue = ((changeValue < 0)? 0: changeValue);
+ _$jscoverage['plugins/table.action.js'][1636]++;
+ return ((direction === "left")? (- changeValue): changeValue);
+}
+ _$jscoverage['plugins/table.action.js'][1640]++;
+ function getTableCellWidth(cell) {
+ _$jscoverage['plugins/table.action.js'][1642]++;
+ var width = 0, offset = 0, width = (cell.offsetWidth - getTabcellSpace());
+ _$jscoverage['plugins/table.action.js'][1648]++;
+ if ((! cell.nextSibling)) {
+ _$jscoverage['plugins/table.action.js'][1650]++;
+ width -= getTableCellOffset(cell);
+ }
+ _$jscoverage['plugins/table.action.js'][1654]++;
+ width = ((width < 0)? 0: width);
+ _$jscoverage['plugins/table.action.js'][1656]++;
+ try {
+ _$jscoverage['plugins/table.action.js'][1657]++;
+ cell.width = width;
+ }
+ catch (e) {
+ }
+ _$jscoverage['plugins/table.action.js'][1661]++;
+ return width;
+}
+ _$jscoverage['plugins/table.action.js'][1668]++;
+ function getTableCellOffset(cell) {
+ _$jscoverage['plugins/table.action.js'][1670]++;
+ tab = domUtils.findParentByTagName(cell, "table", false);
+ _$jscoverage['plugins/table.action.js'][1672]++;
+ if ((tab.offsetVal === undefined)) {
+ _$jscoverage['plugins/table.action.js'][1674]++;
+ var prev = cell.previousSibling;
+ _$jscoverage['plugins/table.action.js'][1676]++;
+ if (prev) {
+ _$jscoverage['plugins/table.action.js'][1679]++;
+ tab.offsetVal = (((cell.offsetWidth - prev.offsetWidth) === UT.borderWidth)? UT.borderWidth: 0);
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1682]++;
+ tab.offsetVal = 0;
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][1687]++;
+ return tab.offsetVal;
+}
+ _$jscoverage['plugins/table.action.js'][1691]++;
+ function getTabcellSpace() {
+ _$jscoverage['plugins/table.action.js'][1693]++;
+ if ((UT.tabcellSpace === undefined)) {
+ _$jscoverage['plugins/table.action.js'][1695]++;
+ var cell = null, tab = me.document.createElement("table"), tbody = me.document.createElement("tbody"), trow = me.document.createElement("tr"), tabcell = me.document.createElement("td"), mirror = null;
+ _$jscoverage['plugins/table.action.js'][1702]++;
+ tabcell.style.cssText = "border: 0;";
+ _$jscoverage['plugins/table.action.js'][1703]++;
+ tabcell.width = 1;
+ _$jscoverage['plugins/table.action.js'][1705]++;
+ trow.appendChild(tabcell);
+ _$jscoverage['plugins/table.action.js'][1706]++;
+ trow.appendChild((mirror = tabcell.cloneNode(false)));
+ _$jscoverage['plugins/table.action.js'][1708]++;
+ tbody.appendChild(trow);
+ _$jscoverage['plugins/table.action.js'][1710]++;
+ tab.appendChild(tbody);
+ _$jscoverage['plugins/table.action.js'][1712]++;
+ tab.style.cssText = "visibility: hidden;";
+ _$jscoverage['plugins/table.action.js'][1714]++;
+ me.body.appendChild(tab);
+ _$jscoverage['plugins/table.action.js'][1716]++;
+ UT.paddingSpace = (tabcell.offsetWidth - 1);
+ _$jscoverage['plugins/table.action.js'][1718]++;
+ var tmpTabWidth = tab.offsetWidth;
+ _$jscoverage['plugins/table.action.js'][1720]++;
+ tabcell.style.cssText = "";
+ _$jscoverage['plugins/table.action.js'][1721]++;
+ mirror.style.cssText = "";
+ _$jscoverage['plugins/table.action.js'][1723]++;
+ UT.borderWidth = ((tab.offsetWidth - tmpTabWidth) / 3);
+ _$jscoverage['plugins/table.action.js'][1725]++;
+ UT.tabcellSpace = (UT.paddingSpace + UT.borderWidth);
+ _$jscoverage['plugins/table.action.js'][1727]++;
+ me.body.removeChild(tab);
+ }
+ _$jscoverage['plugins/table.action.js'][1731]++;
+ getTabcellSpace = (function () {
+ _$jscoverage['plugins/table.action.js'][1731]++;
+ return UT.tabcellSpace;
+});
+ _$jscoverage['plugins/table.action.js'][1733]++;
+ return UT.tabcellSpace;
+}
+ _$jscoverage['plugins/table.action.js'][1737]++;
+ function getDragLine(editor, doc) {
+ _$jscoverage['plugins/table.action.js'][1738]++;
+ if (mousedown) {
+ _$jscoverage['plugins/table.action.js'][1738]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1739]++;
+ dragLine = editor.document.createElement("div");
+ _$jscoverage['plugins/table.action.js'][1740]++;
+ domUtils.setAttributes(dragLine, {id: "ue_tableDragLine", unselectable: "on", contenteditable: false, "onresizestart": "return false", "ondragstart": "return false", "onselectstart": "return false", style: "background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)"});
+ _$jscoverage['plugins/table.action.js'][1749]++;
+ editor.body.appendChild(dragLine);
+}
+ _$jscoverage['plugins/table.action.js'][1752]++;
+ function hideDragLine(editor) {
+ _$jscoverage['plugins/table.action.js'][1753]++;
+ if (mousedown) {
+ _$jscoverage['plugins/table.action.js'][1753]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1754]++;
+ var line;
+ _$jscoverage['plugins/table.action.js'][1755]++;
+ while ((line = editor.document.getElementById("ue_tableDragLine"))) {
+ _$jscoverage['plugins/table.action.js'][1756]++;
+ domUtils.remove(line);
+}
+}
+ _$jscoverage['plugins/table.action.js'][1765]++;
+ function showDragLineAt(state, cell) {
+ _$jscoverage['plugins/table.action.js'][1766]++;
+ if ((! cell)) {
+ _$jscoverage['plugins/table.action.js'][1766]++;
+ return;
+ }
+ _$jscoverage['plugins/table.action.js'][1767]++;
+ var table = domUtils.findParentByTagName(cell, "table"), caption = table.getElementsByTagName("caption"), width = table.offsetWidth, height = (table.offsetHeight - ((caption.length > 0)? caption[0].offsetHeight: 0)), tablePos = domUtils.getXY(table), cellPos = domUtils.getXY(cell), css;
+ _$jscoverage['plugins/table.action.js'][1773]++;
+ switch (state) {
+ case "h":
+ _$jscoverage['plugins/table.action.js'][1775]++;
+ css = ("height:" + height + "px;top:" + (tablePos.y + ((caption.length > 0)? caption[0].offsetHeight: 0)) + "px;left:" + (cellPos.x + cell.offsetWidth));
+ _$jscoverage['plugins/table.action.js'][1776]++;
+ dragLine.style.cssText = (css + "px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)");
+ _$jscoverage['plugins/table.action.js'][1777]++;
+ break;
+ case "v":
+ _$jscoverage['plugins/table.action.js'][1779]++;
+ css = ("width:" + width + "px;left:" + tablePos.x + "px;top:" + (cellPos.y + cell.offsetHeight));
+ _$jscoverage['plugins/table.action.js'][1781]++;
+ dragLine.style.cssText = (css + "px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)");
+ _$jscoverage['plugins/table.action.js'][1782]++;
+ break;
+ default:
+ }
+}
+ _$jscoverage['plugins/table.action.js'][1792]++;
+ function switchBorderColor(editor, flag) {
+ _$jscoverage['plugins/table.action.js'][1793]++;
+ var tableArr = domUtils.getElementsByTagName(editor.body, "table"), color;
+ _$jscoverage['plugins/table.action.js'][1794]++;
+ for (var i = 0, node; (node = tableArr[(i++)]);) {
+ _$jscoverage['plugins/table.action.js'][1795]++;
+ var td = domUtils.getElementsByTagName(node, "td");
+ _$jscoverage['plugins/table.action.js'][1796]++;
+ if (td[0]) {
+ _$jscoverage['plugins/table.action.js'][1797]++;
+ if (flag) {
+ _$jscoverage['plugins/table.action.js'][1798]++;
+ color = td[0].style.borderColor.replace(/\s/g, "");
+ _$jscoverage['plugins/table.action.js'][1799]++;
+ if (/(#ffffff)|(rgb\(255,f55,255\))/gi.test(color)) {
+ _$jscoverage['plugins/table.action.js'][1800]++;
+ domUtils.addClass(node, "noBorderTable");
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1802]++;
+ domUtils.removeClasses(node, "noBorderTable");
+ }
+ }
+}
+}
+ _$jscoverage['plugins/table.action.js'][1809]++;
+ function getTableWidth(editor, needIEHack, defaultValue) {
+ _$jscoverage['plugins/table.action.js'][1810]++;
+ var body = editor.body;
+ _$jscoverage['plugins/table.action.js'][1811]++;
+ return (body.offsetWidth - (needIEHack? (parseInt(domUtils.getComputedStyle(body, "margin-left"), 10) * 2): 0) - (defaultValue.tableBorder * 2) - (editor.options.offsetWidth || 0));
+}
+ _$jscoverage['plugins/table.action.js'][1817]++;
+ function getTargetTd(editor, evt) {
+ _$jscoverage['plugins/table.action.js'][1819]++;
+ var target = domUtils.findParentByTagName((evt.target || evt.srcElement), ["td", "th"], true), dir = null;
+ _$jscoverage['plugins/table.action.js'][1822]++;
+ if ((! target)) {
+ _$jscoverage['plugins/table.action.js'][1823]++;
+ return null;
+ }
+ _$jscoverage['plugins/table.action.js'][1826]++;
+ dir = getRelation(target, mouseCoords(evt));
+ _$jscoverage['plugins/table.action.js'][1830]++;
+ if ((! target)) {
+ _$jscoverage['plugins/table.action.js'][1831]++;
+ return null;
+ }
+ _$jscoverage['plugins/table.action.js'][1834]++;
+ if (((dir === "h1") && target.previousSibling)) {
+ _$jscoverage['plugins/table.action.js'][1836]++;
+ var position = domUtils.getXY(target), cellWidth = target.offsetWidth;
+ _$jscoverage['plugins/table.action.js'][1839]++;
+ if ((Math.abs(((position.x + cellWidth) - evt.clientX)) > (cellWidth / 3))) {
+ _$jscoverage['plugins/table.action.js'][1840]++;
+ target = target.previousSibling;
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.action.js'][1843]++;
+ if (((dir === "v1") && target.parentNode.previousSibling)) {
+ _$jscoverage['plugins/table.action.js'][1845]++;
+ var position = domUtils.getXY(target), cellHeight = target.offsetHeight;
+ _$jscoverage['plugins/table.action.js'][1848]++;
+ if ((Math.abs(((position.y + cellHeight) - evt.clientY)) > (cellHeight / 3))) {
+ _$jscoverage['plugins/table.action.js'][1849]++;
+ target = target.parentNode.previousSibling.firstChild;
+ }
+ }
+ }
+ _$jscoverage['plugins/table.action.js'][1856]++;
+ return ((target && (! (editor.fireEvent("excludetable", target) === true)))? target: null);
+}
+});
diff --git a/_test/coverage/plugins/table.cmds.js b/_test/coverage/plugins/table.cmds.js
new file mode 100644
index 000000000..f90fa6651
--- /dev/null
+++ b/_test/coverage/plugins/table.cmds.js
@@ -0,0 +1,1622 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/table.cmds.js']) {
+ _$jscoverage['plugins/table.cmds.js'] = [];
+ _$jscoverage['plugins/table.cmds.js'][8] = 0;
+ _$jscoverage['plugins/table.cmds.js'][9] = 0;
+ _$jscoverage['plugins/table.cmds.js'][10] = 0;
+ _$jscoverage['plugins/table.cmds.js'][12] = 0;
+ _$jscoverage['plugins/table.cmds.js'][15] = 0;
+ _$jscoverage['plugins/table.cmds.js'][18] = 0;
+ _$jscoverage['plugins/table.cmds.js'][21] = 0;
+ _$jscoverage['plugins/table.cmds.js'][25] = 0;
+ _$jscoverage['plugins/table.cmds.js'][27] = 0;
+ _$jscoverage['plugins/table.cmds.js'][30] = 0;
+ _$jscoverage['plugins/table.cmds.js'][31] = 0;
+ _$jscoverage['plugins/table.cmds.js'][34] = 0;
+ _$jscoverage['plugins/table.cmds.js'][35] = 0;
+ _$jscoverage['plugins/table.cmds.js'][36] = 0;
+ _$jscoverage['plugins/table.cmds.js'][37] = 0;
+ _$jscoverage['plugins/table.cmds.js'][39] = 0;
+ _$jscoverage['plugins/table.cmds.js'][42] = 0;
+ _$jscoverage['plugins/table.cmds.js'][45] = 0;
+ _$jscoverage['plugins/table.cmds.js'][46] = 0;
+ _$jscoverage['plugins/table.cmds.js'][52] = 0;
+ _$jscoverage['plugins/table.cmds.js'][53] = 0;
+ _$jscoverage['plugins/table.cmds.js'][56] = 0;
+ _$jscoverage['plugins/table.cmds.js'][59] = 0;
+ _$jscoverage['plugins/table.cmds.js'][64] = 0;
+ _$jscoverage['plugins/table.cmds.js'][65] = 0;
+ _$jscoverage['plugins/table.cmds.js'][69] = 0;
+ _$jscoverage['plugins/table.cmds.js'][71] = 0;
+ _$jscoverage['plugins/table.cmds.js'][74] = 0;
+ _$jscoverage['plugins/table.cmds.js'][75] = 0;
+ _$jscoverage['plugins/table.cmds.js'][76] = 0;
+ _$jscoverage['plugins/table.cmds.js'][77] = 0;
+ _$jscoverage['plugins/table.cmds.js'][78] = 0;
+ _$jscoverage['plugins/table.cmds.js'][79] = 0;
+ _$jscoverage['plugins/table.cmds.js'][84] = 0;
+ _$jscoverage['plugins/table.cmds.js'][86] = 0;
+ _$jscoverage['plugins/table.cmds.js'][87] = 0;
+ _$jscoverage['plugins/table.cmds.js'][90] = 0;
+ _$jscoverage['plugins/table.cmds.js'][91] = 0;
+ _$jscoverage['plugins/table.cmds.js'][92] = 0;
+ _$jscoverage['plugins/table.cmds.js'][93] = 0;
+ _$jscoverage['plugins/table.cmds.js'][94] = 0;
+ _$jscoverage['plugins/table.cmds.js'][95] = 0;
+ _$jscoverage['plugins/table.cmds.js'][98] = 0;
+ _$jscoverage['plugins/table.cmds.js'][100] = 0;
+ _$jscoverage['plugins/table.cmds.js'][101] = 0;
+ _$jscoverage['plugins/table.cmds.js'][102] = 0;
+ _$jscoverage['plugins/table.cmds.js'][103] = 0;
+ _$jscoverage['plugins/table.cmds.js'][105] = 0;
+ _$jscoverage['plugins/table.cmds.js'][107] = 0;
+ _$jscoverage['plugins/table.cmds.js'][108] = 0;
+ _$jscoverage['plugins/table.cmds.js'][114] = 0;
+ _$jscoverage['plugins/table.cmds.js'][116] = 0;
+ _$jscoverage['plugins/table.cmds.js'][119] = 0;
+ _$jscoverage['plugins/table.cmds.js'][120] = 0;
+ _$jscoverage['plugins/table.cmds.js'][121] = 0;
+ _$jscoverage['plugins/table.cmds.js'][122] = 0;
+ _$jscoverage['plugins/table.cmds.js'][127] = 0;
+ _$jscoverage['plugins/table.cmds.js'][129] = 0;
+ _$jscoverage['plugins/table.cmds.js'][132] = 0;
+ _$jscoverage['plugins/table.cmds.js'][133] = 0;
+ _$jscoverage['plugins/table.cmds.js'][134] = 0;
+ _$jscoverage['plugins/table.cmds.js'][135] = 0;
+ _$jscoverage['plugins/table.cmds.js'][140] = 0;
+ _$jscoverage['plugins/table.cmds.js'][142] = 0;
+ _$jscoverage['plugins/table.cmds.js'][143] = 0;
+ _$jscoverage['plugins/table.cmds.js'][144] = 0;
+ _$jscoverage['plugins/table.cmds.js'][146] = 0;
+ _$jscoverage['plugins/table.cmds.js'][149] = 0;
+ _$jscoverage['plugins/table.cmds.js'][150] = 0;
+ _$jscoverage['plugins/table.cmds.js'][151] = 0;
+ _$jscoverage['plugins/table.cmds.js'][152] = 0;
+ _$jscoverage['plugins/table.cmds.js'][153] = 0;
+ _$jscoverage['plugins/table.cmds.js'][154] = 0;
+ _$jscoverage['plugins/table.cmds.js'][155] = 0;
+ _$jscoverage['plugins/table.cmds.js'][160] = 0;
+ _$jscoverage['plugins/table.cmds.js'][162] = 0;
+ _$jscoverage['plugins/table.cmds.js'][164] = 0;
+ _$jscoverage['plugins/table.cmds.js'][165] = 0;
+ _$jscoverage['plugins/table.cmds.js'][167] = 0;
+ _$jscoverage['plugins/table.cmds.js'][170] = 0;
+ _$jscoverage['plugins/table.cmds.js'][172] = 0;
+ _$jscoverage['plugins/table.cmds.js'][173] = 0;
+ _$jscoverage['plugins/table.cmds.js'][174] = 0;
+ _$jscoverage['plugins/table.cmds.js'][175] = 0;
+ _$jscoverage['plugins/table.cmds.js'][180] = 0;
+ _$jscoverage['plugins/table.cmds.js'][182] = 0;
+ _$jscoverage['plugins/table.cmds.js'][183] = 0;
+ _$jscoverage['plugins/table.cmds.js'][184] = 0;
+ _$jscoverage['plugins/table.cmds.js'][185] = 0;
+ _$jscoverage['plugins/table.cmds.js'][187] = 0;
+ _$jscoverage['plugins/table.cmds.js'][190] = 0;
+ _$jscoverage['plugins/table.cmds.js'][191] = 0;
+ _$jscoverage['plugins/table.cmds.js'][192] = 0;
+ _$jscoverage['plugins/table.cmds.js'][194] = 0;
+ _$jscoverage['plugins/table.cmds.js'][195] = 0;
+ _$jscoverage['plugins/table.cmds.js'][198] = 0;
+ _$jscoverage['plugins/table.cmds.js'][200] = 0;
+ _$jscoverage['plugins/table.cmds.js'][201] = 0;
+ _$jscoverage['plugins/table.cmds.js'][202] = 0;
+ _$jscoverage['plugins/table.cmds.js'][203] = 0;
+ _$jscoverage['plugins/table.cmds.js'][205] = 0;
+ _$jscoverage['plugins/table.cmds.js'][208] = 0;
+ _$jscoverage['plugins/table.cmds.js'][209] = 0;
+ _$jscoverage['plugins/table.cmds.js'][210] = 0;
+ _$jscoverage['plugins/table.cmds.js'][212] = 0;
+ _$jscoverage['plugins/table.cmds.js'][213] = 0;
+ _$jscoverage['plugins/table.cmds.js'][217] = 0;
+ _$jscoverage['plugins/table.cmds.js'][219] = 0;
+ _$jscoverage['plugins/table.cmds.js'][220] = 0;
+ _$jscoverage['plugins/table.cmds.js'][221] = 0;
+ _$jscoverage['plugins/table.cmds.js'][222] = 0;
+ _$jscoverage['plugins/table.cmds.js'][223] = 0;
+ _$jscoverage['plugins/table.cmds.js'][225] = 0;
+ _$jscoverage['plugins/table.cmds.js'][226] = 0;
+ _$jscoverage['plugins/table.cmds.js'][227] = 0;
+ _$jscoverage['plugins/table.cmds.js'][231] = 0;
+ _$jscoverage['plugins/table.cmds.js'][233] = 0;
+ _$jscoverage['plugins/table.cmds.js'][235] = 0;
+ _$jscoverage['plugins/table.cmds.js'][236] = 0;
+ _$jscoverage['plugins/table.cmds.js'][239] = 0;
+ _$jscoverage['plugins/table.cmds.js'][241] = 0;
+ _$jscoverage['plugins/table.cmds.js'][243] = 0;
+ _$jscoverage['plugins/table.cmds.js'][244] = 0;
+ _$jscoverage['plugins/table.cmds.js'][245] = 0;
+ _$jscoverage['plugins/table.cmds.js'][246] = 0;
+ _$jscoverage['plugins/table.cmds.js'][249] = 0;
+ _$jscoverage['plugins/table.cmds.js'][250] = 0;
+ _$jscoverage['plugins/table.cmds.js'][252] = 0;
+ _$jscoverage['plugins/table.cmds.js'][256] = 0;
+ _$jscoverage['plugins/table.cmds.js'][258] = 0;
+ _$jscoverage['plugins/table.cmds.js'][260] = 0;
+ _$jscoverage['plugins/table.cmds.js'][261] = 0;
+ _$jscoverage['plugins/table.cmds.js'][264] = 0;
+ _$jscoverage['plugins/table.cmds.js'][266] = 0;
+ _$jscoverage['plugins/table.cmds.js'][269] = 0;
+ _$jscoverage['plugins/table.cmds.js'][270] = 0;
+ _$jscoverage['plugins/table.cmds.js'][271] = 0;
+ _$jscoverage['plugins/table.cmds.js'][272] = 0;
+ _$jscoverage['plugins/table.cmds.js'][273] = 0;
+ _$jscoverage['plugins/table.cmds.js'][274] = 0;
+ _$jscoverage['plugins/table.cmds.js'][275] = 0;
+ _$jscoverage['plugins/table.cmds.js'][277] = 0;
+ _$jscoverage['plugins/table.cmds.js'][279] = 0;
+ _$jscoverage['plugins/table.cmds.js'][285] = 0;
+ _$jscoverage['plugins/table.cmds.js'][287] = 0;
+ _$jscoverage['plugins/table.cmds.js'][289] = 0;
+ _$jscoverage['plugins/table.cmds.js'][292] = 0;
+ _$jscoverage['plugins/table.cmds.js'][294] = 0;
+ _$jscoverage['plugins/table.cmds.js'][300] = 0;
+ _$jscoverage['plugins/table.cmds.js'][301] = 0;
+ _$jscoverage['plugins/table.cmds.js'][303] = 0;
+ _$jscoverage['plugins/table.cmds.js'][304] = 0;
+ _$jscoverage['plugins/table.cmds.js'][305] = 0;
+ _$jscoverage['plugins/table.cmds.js'][308] = 0;
+ _$jscoverage['plugins/table.cmds.js'][309] = 0;
+ _$jscoverage['plugins/table.cmds.js'][313] = 0;
+ _$jscoverage['plugins/table.cmds.js'][315] = 0;
+ _$jscoverage['plugins/table.cmds.js'][317] = 0;
+ _$jscoverage['plugins/table.cmds.js'][320] = 0;
+ _$jscoverage['plugins/table.cmds.js'][322] = 0;
+ _$jscoverage['plugins/table.cmds.js'][328] = 0;
+ _$jscoverage['plugins/table.cmds.js'][329] = 0;
+ _$jscoverage['plugins/table.cmds.js'][331] = 0;
+ _$jscoverage['plugins/table.cmds.js'][332] = 0;
+ _$jscoverage['plugins/table.cmds.js'][333] = 0;
+ _$jscoverage['plugins/table.cmds.js'][336] = 0;
+ _$jscoverage['plugins/table.cmds.js'][337] = 0;
+ _$jscoverage['plugins/table.cmds.js'][340] = 0;
+ _$jscoverage['plugins/table.cmds.js'][342] = 0;
+ _$jscoverage['plugins/table.cmds.js'][343] = 0;
+ _$jscoverage['plugins/table.cmds.js'][344] = 0;
+ _$jscoverage['plugins/table.cmds.js'][348] = 0;
+ _$jscoverage['plugins/table.cmds.js'][355] = 0;
+ _$jscoverage['plugins/table.cmds.js'][356] = 0;
+ _$jscoverage['plugins/table.cmds.js'][358] = 0;
+ _$jscoverage['plugins/table.cmds.js'][359] = 0;
+ _$jscoverage['plugins/table.cmds.js'][362] = 0;
+ _$jscoverage['plugins/table.cmds.js'][363] = 0;
+ _$jscoverage['plugins/table.cmds.js'][364] = 0;
+ _$jscoverage['plugins/table.cmds.js'][365] = 0;
+ _$jscoverage['plugins/table.cmds.js'][366] = 0;
+ _$jscoverage['plugins/table.cmds.js'][367] = 0;
+ _$jscoverage['plugins/table.cmds.js'][370] = 0;
+ _$jscoverage['plugins/table.cmds.js'][371] = 0;
+ _$jscoverage['plugins/table.cmds.js'][373] = 0;
+ _$jscoverage['plugins/table.cmds.js'][374] = 0;
+ _$jscoverage['plugins/table.cmds.js'][377] = 0;
+ _$jscoverage['plugins/table.cmds.js'][380] = 0;
+ _$jscoverage['plugins/table.cmds.js'][382] = 0;
+ _$jscoverage['plugins/table.cmds.js'][384] = 0;
+ _$jscoverage['plugins/table.cmds.js'][387] = 0;
+ _$jscoverage['plugins/table.cmds.js'][389] = 0;
+ _$jscoverage['plugins/table.cmds.js'][390] = 0;
+ _$jscoverage['plugins/table.cmds.js'][395] = 0;
+ _$jscoverage['plugins/table.cmds.js'][396] = 0;
+ _$jscoverage['plugins/table.cmds.js'][398] = 0;
+ _$jscoverage['plugins/table.cmds.js'][399] = 0;
+ _$jscoverage['plugins/table.cmds.js'][400] = 0;
+ _$jscoverage['plugins/table.cmds.js'][403] = 0;
+ _$jscoverage['plugins/table.cmds.js'][406] = 0;
+ _$jscoverage['plugins/table.cmds.js'][408] = 0;
+ _$jscoverage['plugins/table.cmds.js'][410] = 0;
+ _$jscoverage['plugins/table.cmds.js'][413] = 0;
+ _$jscoverage['plugins/table.cmds.js'][415] = 0;
+ _$jscoverage['plugins/table.cmds.js'][419] = 0;
+ _$jscoverage['plugins/table.cmds.js'][420] = 0;
+ _$jscoverage['plugins/table.cmds.js'][422] = 0;
+ _$jscoverage['plugins/table.cmds.js'][423] = 0;
+ _$jscoverage['plugins/table.cmds.js'][424] = 0;
+ _$jscoverage['plugins/table.cmds.js'][427] = 0;
+ _$jscoverage['plugins/table.cmds.js'][431] = 0;
+ _$jscoverage['plugins/table.cmds.js'][433] = 0;
+ _$jscoverage['plugins/table.cmds.js'][434] = 0;
+ _$jscoverage['plugins/table.cmds.js'][437] = 0;
+ _$jscoverage['plugins/table.cmds.js'][443] = 0;
+ _$jscoverage['plugins/table.cmds.js'][444] = 0;
+ _$jscoverage['plugins/table.cmds.js'][446] = 0;
+ _$jscoverage['plugins/table.cmds.js'][447] = 0;
+ _$jscoverage['plugins/table.cmds.js'][450] = 0;
+ _$jscoverage['plugins/table.cmds.js'][453] = 0;
+ _$jscoverage['plugins/table.cmds.js'][454] = 0;
+ _$jscoverage['plugins/table.cmds.js'][455] = 0;
+ _$jscoverage['plugins/table.cmds.js'][456] = 0;
+ _$jscoverage['plugins/table.cmds.js'][457] = 0;
+ _$jscoverage['plugins/table.cmds.js'][460] = 0;
+ _$jscoverage['plugins/table.cmds.js'][461] = 0;
+ _$jscoverage['plugins/table.cmds.js'][463] = 0;
+ _$jscoverage['plugins/table.cmds.js'][464] = 0;
+ _$jscoverage['plugins/table.cmds.js'][466] = 0;
+ _$jscoverage['plugins/table.cmds.js'][467] = 0;
+ _$jscoverage['plugins/table.cmds.js'][474] = 0;
+ _$jscoverage['plugins/table.cmds.js'][476] = 0;
+ _$jscoverage['plugins/table.cmds.js'][478] = 0;
+ _$jscoverage['plugins/table.cmds.js'][479] = 0;
+ _$jscoverage['plugins/table.cmds.js'][480] = 0;
+ _$jscoverage['plugins/table.cmds.js'][481] = 0;
+ _$jscoverage['plugins/table.cmds.js'][484] = 0;
+ _$jscoverage['plugins/table.cmds.js'][486] = 0;
+ _$jscoverage['plugins/table.cmds.js'][488] = 0;
+ _$jscoverage['plugins/table.cmds.js'][489] = 0;
+ _$jscoverage['plugins/table.cmds.js'][492] = 0;
+ _$jscoverage['plugins/table.cmds.js'][494] = 0;
+ _$jscoverage['plugins/table.cmds.js'][496] = 0;
+ _$jscoverage['plugins/table.cmds.js'][497] = 0;
+ _$jscoverage['plugins/table.cmds.js'][498] = 0;
+ _$jscoverage['plugins/table.cmds.js'][499] = 0;
+ _$jscoverage['plugins/table.cmds.js'][502] = 0;
+ _$jscoverage['plugins/table.cmds.js'][504] = 0;
+ _$jscoverage['plugins/table.cmds.js'][506] = 0;
+ _$jscoverage['plugins/table.cmds.js'][507] = 0;
+ _$jscoverage['plugins/table.cmds.js'][510] = 0;
+ _$jscoverage['plugins/table.cmds.js'][512] = 0;
+ _$jscoverage['plugins/table.cmds.js'][514] = 0;
+ _$jscoverage['plugins/table.cmds.js'][515] = 0;
+ _$jscoverage['plugins/table.cmds.js'][516] = 0;
+ _$jscoverage['plugins/table.cmds.js'][517] = 0;
+ _$jscoverage['plugins/table.cmds.js'][520] = 0;
+ _$jscoverage['plugins/table.cmds.js'][522] = 0;
+ _$jscoverage['plugins/table.cmds.js'][524] = 0;
+ _$jscoverage['plugins/table.cmds.js'][525] = 0;
+ _$jscoverage['plugins/table.cmds.js'][530] = 0;
+ _$jscoverage['plugins/table.cmds.js'][533] = 0;
+ _$jscoverage['plugins/table.cmds.js'][536] = 0;
+ _$jscoverage['plugins/table.cmds.js'][538] = 0;
+ _$jscoverage['plugins/table.cmds.js'][539] = 0;
+ _$jscoverage['plugins/table.cmds.js'][540] = 0;
+ _$jscoverage['plugins/table.cmds.js'][542] = 0;
+ _$jscoverage['plugins/table.cmds.js'][543] = 0;
+ _$jscoverage['plugins/table.cmds.js'][544] = 0;
+ _$jscoverage['plugins/table.cmds.js'][546] = 0;
+ _$jscoverage['plugins/table.cmds.js'][553] = 0;
+ _$jscoverage['plugins/table.cmds.js'][555] = 0;
+ _$jscoverage['plugins/table.cmds.js'][556] = 0;
+ _$jscoverage['plugins/table.cmds.js'][557] = 0;
+ _$jscoverage['plugins/table.cmds.js'][560] = 0;
+ _$jscoverage['plugins/table.cmds.js'][563] = 0;
+ _$jscoverage['plugins/table.cmds.js'][564] = 0;
+ _$jscoverage['plugins/table.cmds.js'][568] = 0;
+ _$jscoverage['plugins/table.cmds.js'][569] = 0;
+ _$jscoverage['plugins/table.cmds.js'][570] = 0;
+ _$jscoverage['plugins/table.cmds.js'][572] = 0;
+ _$jscoverage['plugins/table.cmds.js'][575] = 0;
+ _$jscoverage['plugins/table.cmds.js'][576] = 0;
+ _$jscoverage['plugins/table.cmds.js'][577] = 0;
+ _$jscoverage['plugins/table.cmds.js'][578] = 0;
+ _$jscoverage['plugins/table.cmds.js'][579] = 0;
+ _$jscoverage['plugins/table.cmds.js'][582] = 0;
+ _$jscoverage['plugins/table.cmds.js'][583] = 0;
+ _$jscoverage['plugins/table.cmds.js'][586] = 0;
+ _$jscoverage['plugins/table.cmds.js'][587] = 0;
+ _$jscoverage['plugins/table.cmds.js'][588] = 0;
+ _$jscoverage['plugins/table.cmds.js'][590] = 0;
+ _$jscoverage['plugins/table.cmds.js'][592] = 0;
+ _$jscoverage['plugins/table.cmds.js'][593] = 0;
+ _$jscoverage['plugins/table.cmds.js'][594] = 0;
+ _$jscoverage['plugins/table.cmds.js'][599] = 0;
+ _$jscoverage['plugins/table.cmds.js'][600] = 0;
+ _$jscoverage['plugins/table.cmds.js'][605] = 0;
+ _$jscoverage['plugins/table.cmds.js'][607] = 0;
+ _$jscoverage['plugins/table.cmds.js'][608] = 0;
+ _$jscoverage['plugins/table.cmds.js'][609] = 0;
+ _$jscoverage['plugins/table.cmds.js'][610] = 0;
+ _$jscoverage['plugins/table.cmds.js'][613] = 0;
+ _$jscoverage['plugins/table.cmds.js'][616] = 0;
+ _$jscoverage['plugins/table.cmds.js'][617] = 0;
+ _$jscoverage['plugins/table.cmds.js'][622] = 0;
+ _$jscoverage['plugins/table.cmds.js'][623] = 0;
+ _$jscoverage['plugins/table.cmds.js'][627] = 0;
+ _$jscoverage['plugins/table.cmds.js'][628] = 0;
+ _$jscoverage['plugins/table.cmds.js'][630] = 0;
+ _$jscoverage['plugins/table.cmds.js'][631] = 0;
+ _$jscoverage['plugins/table.cmds.js'][634] = 0;
+ _$jscoverage['plugins/table.cmds.js'][635] = 0;
+ _$jscoverage['plugins/table.cmds.js'][637] = 0;
+ _$jscoverage['plugins/table.cmds.js'][641] = 0;
+ _$jscoverage['plugins/table.cmds.js'][642] = 0;
+ _$jscoverage['plugins/table.cmds.js'][643] = 0;
+ _$jscoverage['plugins/table.cmds.js'][645] = 0;
+ _$jscoverage['plugins/table.cmds.js'][648] = 0;
+ _$jscoverage['plugins/table.cmds.js'][649] = 0;
+ _$jscoverage['plugins/table.cmds.js'][651] = 0;
+ _$jscoverage['plugins/table.cmds.js'][653] = 0;
+ _$jscoverage['plugins/table.cmds.js'][656] = 0;
+ _$jscoverage['plugins/table.cmds.js'][657] = 0;
+ _$jscoverage['plugins/table.cmds.js'][658] = 0;
+ _$jscoverage['plugins/table.cmds.js'][659] = 0;
+ _$jscoverage['plugins/table.cmds.js'][660] = 0;
+ _$jscoverage['plugins/table.cmds.js'][665] = 0;
+ _$jscoverage['plugins/table.cmds.js'][666] = 0;
+ _$jscoverage['plugins/table.cmds.js'][672] = 0;
+ _$jscoverage['plugins/table.cmds.js'][674] = 0;
+ _$jscoverage['plugins/table.cmds.js'][677] = 0;
+ _$jscoverage['plugins/table.cmds.js'][680] = 0;
+ _$jscoverage['plugins/table.cmds.js'][681] = 0;
+ _$jscoverage['plugins/table.cmds.js'][683] = 0;
+ _$jscoverage['plugins/table.cmds.js'][684] = 0;
+ _$jscoverage['plugins/table.cmds.js'][686] = 0;
+ _$jscoverage['plugins/table.cmds.js'][687] = 0;
+ _$jscoverage['plugins/table.cmds.js'][689] = 0;
+ _$jscoverage['plugins/table.cmds.js'][691] = 0;
+ _$jscoverage['plugins/table.cmds.js'][692] = 0;
+ _$jscoverage['plugins/table.cmds.js'][702] = 0;
+ _$jscoverage['plugins/table.cmds.js'][704] = 0;
+ _$jscoverage['plugins/table.cmds.js'][705] = 0;
+ _$jscoverage['plugins/table.cmds.js'][708] = 0;
+ _$jscoverage['plugins/table.cmds.js'][710] = 0;
+ _$jscoverage['plugins/table.cmds.js'][715] = 0;
+ _$jscoverage['plugins/table.cmds.js'][717] = 0;
+ _$jscoverage['plugins/table.cmds.js'][719] = 0;
+ _$jscoverage['plugins/table.cmds.js'][726] = 0;
+ _$jscoverage['plugins/table.cmds.js'][728] = 0;
+ _$jscoverage['plugins/table.cmds.js'][729] = 0;
+ _$jscoverage['plugins/table.cmds.js'][731] = 0;
+ _$jscoverage['plugins/table.cmds.js'][734] = 0;
+ _$jscoverage['plugins/table.cmds.js'][738] = 0;
+ _$jscoverage['plugins/table.cmds.js'][739] = 0;
+ _$jscoverage['plugins/table.cmds.js'][745] = 0;
+ _$jscoverage['plugins/table.cmds.js'][747] = 0;
+ _$jscoverage['plugins/table.cmds.js'][750] = 0;
+ _$jscoverage['plugins/table.cmds.js'][752] = 0;
+ _$jscoverage['plugins/table.cmds.js'][753] = 0;
+ _$jscoverage['plugins/table.cmds.js'][757] = 0;
+ _$jscoverage['plugins/table.cmds.js'][758] = 0;
+ _$jscoverage['plugins/table.cmds.js'][764] = 0;
+ _$jscoverage['plugins/table.cmds.js'][766] = 0;
+ _$jscoverage['plugins/table.cmds.js'][769] = 0;
+ _$jscoverage['plugins/table.cmds.js'][772] = 0;
+ _$jscoverage['plugins/table.cmds.js'][773] = 0;
+ _$jscoverage['plugins/table.cmds.js'][775] = 0;
+ _$jscoverage['plugins/table.cmds.js'][776] = 0;
+ _$jscoverage['plugins/table.cmds.js'][779] = 0;
+ _$jscoverage['plugins/table.cmds.js'][780] = 0;
+ _$jscoverage['plugins/table.cmds.js'][785] = 0;
+ _$jscoverage['plugins/table.cmds.js'][787] = 0;
+ _$jscoverage['plugins/table.cmds.js'][789] = 0;
+ _$jscoverage['plugins/table.cmds.js'][790] = 0;
+ _$jscoverage['plugins/table.cmds.js'][792] = 0;
+ _$jscoverage['plugins/table.cmds.js'][793] = 0;
+ _$jscoverage['plugins/table.cmds.js'][795] = 0;
+ _$jscoverage['plugins/table.cmds.js'][798] = 0;
+ _$jscoverage['plugins/table.cmds.js'][805] = 0;
+ _$jscoverage['plugins/table.cmds.js'][806] = 0;
+ _$jscoverage['plugins/table.cmds.js'][810] = 0;
+ _$jscoverage['plugins/table.cmds.js'][812] = 0;
+ _$jscoverage['plugins/table.cmds.js'][815] = 0;
+ _$jscoverage['plugins/table.cmds.js'][816] = 0;
+ _$jscoverage['plugins/table.cmds.js'][819] = 0;
+ _$jscoverage['plugins/table.cmds.js'][821] = 0;
+ _$jscoverage['plugins/table.cmds.js'][824] = 0;
+ _$jscoverage['plugins/table.cmds.js'][825] = 0;
+ _$jscoverage['plugins/table.cmds.js'][826] = 0;
+ _$jscoverage['plugins/table.cmds.js'][827] = 0;
+ _$jscoverage['plugins/table.cmds.js'][831] = 0;
+ _$jscoverage['plugins/table.cmds.js'][833] = 0;
+ _$jscoverage['plugins/table.cmds.js'][834] = 0;
+ _$jscoverage['plugins/table.cmds.js'][835] = 0;
+ _$jscoverage['plugins/table.cmds.js'][836] = 0;
+ _$jscoverage['plugins/table.cmds.js'][838] = 0;
+ _$jscoverage['plugins/table.cmds.js'][841] = 0;
+ _$jscoverage['plugins/table.cmds.js'][843] = 0;
+ _$jscoverage['plugins/table.cmds.js'][847] = 0;
+ _$jscoverage['plugins/table.cmds.js'][849] = 0;
+ _$jscoverage['plugins/table.cmds.js'][850] = 0;
+ _$jscoverage['plugins/table.cmds.js'][851] = 0;
+ _$jscoverage['plugins/table.cmds.js'][852] = 0;
+ _$jscoverage['plugins/table.cmds.js'][855] = 0;
+ _$jscoverage['plugins/table.cmds.js'][857] = 0;
+ _$jscoverage['plugins/table.cmds.js'][861] = 0;
+ _$jscoverage['plugins/table.cmds.js'][862] = 0;
+ _$jscoverage['plugins/table.cmds.js'][863] = 0;
+ _$jscoverage['plugins/table.cmds.js'][864] = 0;
+ _$jscoverage['plugins/table.cmds.js'][866] = 0;
+ _$jscoverage['plugins/table.cmds.js'][867] = 0;
+ _$jscoverage['plugins/table.cmds.js'][872] = 0;
+ _$jscoverage['plugins/table.cmds.js'][873] = 0;
+ _$jscoverage['plugins/table.cmds.js'][874] = 0;
+ _$jscoverage['plugins/table.cmds.js'][875] = 0;
+ _$jscoverage['plugins/table.cmds.js'][877] = 0;
+ _$jscoverage['plugins/table.cmds.js'][878] = 0;
+ _$jscoverage['plugins/table.cmds.js'][879] = 0;
+ _$jscoverage['plugins/table.cmds.js'][880] = 0;
+ _$jscoverage['plugins/table.cmds.js'][885] = 0;
+ _$jscoverage['plugins/table.cmds.js'][886] = 0;
+ _$jscoverage['plugins/table.cmds.js'][887] = 0;
+ _$jscoverage['plugins/table.cmds.js'][890] = 0;
+ _$jscoverage['plugins/table.cmds.js'][891] = 0;
+ _$jscoverage['plugins/table.cmds.js'][892] = 0;
+ _$jscoverage['plugins/table.cmds.js'][893] = 0;
+ _$jscoverage['plugins/table.cmds.js'][894] = 0;
+ _$jscoverage['plugins/table.cmds.js'][896] = 0;
+}
+_$jscoverage['plugins/table.cmds.js'].source = ["/* "," * Created with JetBrains PhpStorm. "," * User: taoqili "," * Date: 13-2-20 "," * Time: 下午6:25 "," * To change this template use File | Settings | File Templates. "," */ ","; ","( function () { "," var UT = UE. UETable, "," getTableItemsByRange = function ( editor) { "," return UT. getTableItemsByRange( editor); "," } , "," getUETableBySelected = function ( editor) { "," return UT. getUETableBySelected( editor) "," } , "," getDefaultValue = function ( editor, table) { "," return UT. getDefaultValue( editor, table); "," } , "," getUETable = function ( tdOrTable) { "," return UT. getUETable( tdOrTable); "," } ; ","",""," UE. commands[ 'inserttable' ] = { "," queryCommandState: function () { "," return getTableItemsByRange( this ). table ? - 1 : 0 ; "," } , "," execCommand: function ( cmd, opt) { "," function createTable( opt, tdWidth) { "," var html = [], "," rowsNum = opt. numRows, "," colsNum = opt. numCols; "," for ( var r = 0 ; r < rowsNum; r++) { "," html. push( '<tr>' ); "," for ( var c = 0 ; c < colsNum; c++) { "," html. push( '<td width=\"' + tdWidth + '\" vAlign=\"' + opt. tdvalign + '\" >' + ( browser. ie ? domUtils. fillChar : '<br/>' ) + '</td>' ) "," } "," html. push( '</tr>' ) "," } "," //禁止指定table-width "," return '<table><tbody>' + html. join( '' ) + '</tbody></table>' "," } ",""," if (! opt) { "," opt = utils. extend( {} , { "," numCols: this . options. defaultCols, "," numRows: this . options. defaultRows, "," tdvalign: this . options. tdvalign"," } ) "," } "," var me = this ; "," var range = this . selection. getRange(), "," start = range. startContainer, "," firstParentBlock = domUtils. findParent( start, function ( node) { "," return domUtils. isBlockElm( node); "," } , true ) || me. body; ",""," var defaultValue = getDefaultValue( me), "," tableWidth = firstParentBlock. offsetWidth, "," tdWidth = Math. floor( tableWidth / opt. numCols - defaultValue. tdPadding * 2 - defaultValue. tdBorder); ",""," //todo其他属性 "," ! opt. tdvalign && ( opt. tdvalign = me. options. tdvalign); "," me. execCommand( \"inserthtml\" , createTable( opt, tdWidth)); "," } "," } ; ",""," UE. commands[ 'insertparagraphbeforetable' ] = { "," queryCommandState: function () { "," return getTableItemsByRange( this ). cell ? 0 : - 1 ; "," } , "," execCommand: function () { "," var table = getTableItemsByRange( this ). table; "," if ( table) { "," var p = this . document. createElement( \"p\" ); "," p. innerHTML = browser. ie ? ' ' : '<br />' ; "," table. parentNode. insertBefore( p, table); "," this . selection. getRange(). setStart( p, 0 ). setCursor(); "," } "," } "," } ; ",""," UE. commands[ 'deletetable' ] = { "," queryCommandState: function () { "," var rng = this . selection. getRange(); "," return domUtils. findParentByTagName( rng. startContainer, 'table' , true ) ? 0 : - 1 ; "," } , "," execCommand: function ( cmd, table) { "," var rng = this . selection. getRange(); "," table = table || domUtils. findParentByTagName( rng. startContainer, 'table' , true ); "," if ( table) { "," var next = table. nextSibling; "," if (! next) { "," next = domUtils. createElement( this . document, 'p' , { "," 'innerHTML' : browser. ie ? domUtils. fillChar : '<br/>' "," } ); "," table. parentNode. insertBefore( next, table); "," } "," domUtils. remove( table); "," rng = this . selection. getRange(); "," if ( next. nodeType == 3 ) { "," rng. setStartBefore( next) "," } else { "," rng. setStart( next, 0 ) "," } "," rng. setCursor( false , true ) "," this . fireEvent( \"tablehasdeleted\" ) ",""," } ",""," } "," } ; "," UE. commands[ 'cellalign' ] = { "," queryCommandState: function () { "," return getSelectedArr( this ). length ? 0 : - 1 "," } , "," execCommand: function ( cmd, align) { "," var selectedTds = getSelectedArr( this ); "," if ( selectedTds. length) { "," for ( var i = 0 , ci; ci = selectedTds[ i++];) { "," ci. setAttribute( 'align' , align); "," } "," } "," } "," } ; "," UE. commands[ 'cellvalign' ] = { "," queryCommandState: function () { "," return getSelectedArr( this ). length ? 0 : - 1 ; "," } , "," execCommand: function ( cmd, valign) { "," var selectedTds = getSelectedArr( this ); "," if ( selectedTds. length) { "," for ( var i = 0 , ci; ci = selectedTds[ i++];) { "," ci. setAttribute( 'vAlign' , valign); "," } "," } "," } "," } ; "," UE. commands[ 'insertcaption' ] = { "," queryCommandState: function () { "," var table = getTableItemsByRange( this ). table; "," if ( table) { "," return table. getElementsByTagName( 'caption' ). length == 0 ? 1 : - 1 ; "," } "," return - 1 ; "," } , "," execCommand: function () { "," var table = getTableItemsByRange( this ). table; "," if ( table) { "," var caption = this . document. createElement( 'caption' ); "," caption. innerHTML = browser. ie ? domUtils. fillChar : '<br/>' ; "," table. insertBefore( caption, table. firstChild); "," var range = this . selection. getRange(); "," range. setStart( caption, 0 ). setCursor(); "," } ",""," } "," } ; "," UE. commands[ 'deletecaption' ] = { "," queryCommandState: function () { "," var rng = this . selection. getRange(), "," table = domUtils. findParentByTagName( rng. startContainer, 'table' ); "," if ( table) { "," return table. getElementsByTagName( 'caption' ). length == 0 ? - 1 : 1 ; "," } "," return - 1 ; "," } , "," execCommand: function () { "," var rng = this . selection. getRange(), "," table = domUtils. findParentByTagName( rng. startContainer, 'table' ); "," if ( table) { "," domUtils. remove( table. getElementsByTagName( 'caption' )[ 0 ]); "," var range = this . selection. getRange(); "," range. setStart( table. rows[ 0 ]. cells[ 0 ], 0 ). setCursor(); "," } ",""," } "," } ; "," UE. commands[ 'inserttitle' ] = { "," queryCommandState: function () { "," var table = getTableItemsByRange( this ). table; "," if ( table) { "," var firstRow = table. rows[ 0 ]; "," return firstRow. getElementsByTagName( 'th' ). length == 0 ? 0 : - 1 "," } "," return - 1 ; "," } , "," execCommand: function () { "," var table = getTableItemsByRange( this ). table; "," if ( table) { "," getUETable( table). insertRow( 0 , 'th' ); "," } "," var th = table. getElementsByTagName( 'th' )[ 0 ]; "," this . selection. getRange(). setStart( th, 0 ). setCursor( false , true ); "," } "," } ; "," UE. commands[ 'deletetitle' ] = { "," queryCommandState: function () { "," var table = getTableItemsByRange( this ). table; "," if ( table) { "," var firstRow = table. rows[ 0 ]; "," return firstRow. getElementsByTagName( 'th' ). length ? 0 : - 1 "," } "," return - 1 ; "," } , "," execCommand: function () { "," var table = getTableItemsByRange( this ). table; "," if ( table) { "," domUtils. remove( table. rows[ 0 ]) "," } "," var td = table. getElementsByTagName( 'td' )[ 0 ]; "," this . selection. getRange(). setStart( td, 0 ). setCursor( false , true ); "," } "," } ; ",""," UE. commands[ \"mergeright\" ] = { "," queryCommandState: function ( cmd) { "," var tableItems = getTableItemsByRange( this ); "," if (! tableItems. cell) return - 1 ; "," var ut = getUETable( tableItems. table); "," if ( ut. selectedTds. length) return - 1 ; "," var cellInfo = ut. getCellInfo( tableItems. cell), "," rightColIndex = cellInfo. colIndex + cellInfo. colSpan; "," if ( rightColIndex >= ut. colsNum) return - 1 ; "," var rightCellInfo = ut. indexTable[ cellInfo. rowIndex][ rightColIndex]; "," return ( rightCellInfo. rowIndex == cellInfo. rowIndex"," && rightCellInfo. rowSpan == cellInfo. rowSpan) ? 0 : - 1 ; "," } , "," execCommand: function ( cmd) { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell); "," ut. mergeRight( cell); "," rng. moveToBookmark( bk). select(); "," } "," } ; "," UE. commands[ \"mergedown\" ] = { "," queryCommandState: function ( cmd) { "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell; "," if (! cell || cell. tagName == \"TH\" ) return - 1 ; "," var ut = getUETable( tableItems. table); "," if ( ut. selectedTds. length) return - 1 ; "," var cellInfo = ut. getCellInfo( tableItems. cell), "," downRowIndex = cellInfo. rowIndex + cellInfo. rowSpan; "," // 如果处于最下边则不能f向右合并 "," if ( downRowIndex >= ut. rowsNum) return - 1 ; "," var downCellInfo = ut. indexTable[ downRowIndex][ cellInfo. colIndex]; "," // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 "," return ( downCellInfo. colIndex == cellInfo. colIndex"," && downCellInfo. colSpan == cellInfo. colSpan) && tableItems. cell. tagName !== 'TH' ? 0 : - 1 ; "," } , "," execCommand: function () { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell); "," ut. mergeDown( cell); "," rng. moveToBookmark( bk). select(); "," } "," } ; "," UE. commands[ \"mergecells\" ] = { "," queryCommandState: function () { "," return getUETableBySelected( this ) ? 0 : - 1 ; "," } , "," execCommand: function () { "," var ut = getUETableBySelected( this ); "," if ( ut && ut. selectedTds. length) { "," var cell = ut. selectedTds[ 0 ]; "," ut. mergeRange(); "," var rng = this . selection. getRange(); "," if ( domUtils. isEmptyBlock( cell)) { "," rng. setStart( cell, 0 ). collapse( true ) "," } else { "," rng. selectNodeContents( cell) "," } "," rng. select(); "," } ","",""," } "," } ; "," UE. commands[ \"insertrow\" ] = { "," queryCommandState: function () { "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell; "," return cell && cell. tagName == \"TD\" && getUETable( tableItems. table). rowsNum < this . options. maxRowNum ? 0 : - 1 ; "," } , "," execCommand: function () { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell, "," table = tableItems. table, "," ut = getUETable( table), "," cellInfo = ut. getCellInfo( cell); "," //ut.insertRow(!ut.selectedTds.length ? cellInfo.rowIndex:ut.cellsRange.beginRowIndex,''); "," if (! ut. selectedTds. length) { "," ut. insertRow( cellInfo. rowIndex, cell); "," } else { "," var range = ut. cellsRange; "," for ( var i = 0 , len = range. endRowIndex - range. beginRowIndex + 1 ; i < len; i++) { "," ut. insertRow( range. beginRowIndex, cell); "," } "," } "," rng. moveToBookmark( bk). select(); "," if ( table. getAttribute( \"interlaced\" ) === \"enabled\" ) this . fireEvent( \"interlacetable\" , table); "," } "," } ; "," //后插入行 "," UE. commands[ \"insertrownext\" ] = { "," queryCommandState: function () { "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell; "," return cell && ( cell. tagName == \"TD\" ) && getUETable( tableItems. table). rowsNum < this . options. maxRowNum ? 0 : - 1 ; "," } , "," execCommand: function () { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell, "," table = tableItems. table, "," ut = getUETable( table), "," cellInfo = ut. getCellInfo( cell); "," //ut.insertRow(!ut.selectedTds.length? cellInfo.rowIndex + cellInfo.rowSpan : ut.cellsRange.endRowIndex + 1,''); "," if (! ut. selectedTds. length) { "," ut. insertRow( cellInfo. rowIndex + cellInfo. rowSpan, cell); "," } else { "," var range = ut. cellsRange; "," for ( var i = 0 , len = range. endRowIndex - range. beginRowIndex + 1 ; i < len; i++) { "," ut. insertRow( range. endRowIndex + 1 , cell); "," } "," } "," rng. moveToBookmark( bk). select(); "," if ( table. getAttribute( \"interlaced\" ) === \"enabled\" ) this . fireEvent( \"interlacetable\" , table); "," } "," } ; "," UE. commands[ \"deleterow\" ] = { "," queryCommandState: function () { "," var tableItems = getTableItemsByRange( this ); "," if (! tableItems. cell) { "," return - 1 ; "," } "," } , "," execCommand: function () { "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell), "," cellsRange = ut. cellsRange, "," cellInfo = ut. getCellInfo( cell), "," preCell = ut. getVSideCell( cell), "," nextCell = ut. getVSideCell( cell, true ), "," rng = this . selection. getRange(); "," if ( utils. isEmptyObject( cellsRange)) { "," ut. deleteRow( cellInfo. rowIndex); "," } else { "," for ( var i = cellsRange. beginRowIndex; i < cellsRange. endRowIndex + 1 ; i++) { "," ut. deleteRow( cellsRange. beginRowIndex); "," } "," } "," var table = ut. table; "," if (! table. getElementsByTagName( 'td' ). length) { "," var nextSibling = table. nextSibling; "," domUtils. remove( table); "," if ( nextSibling) { "," rng. setStart( nextSibling, 0 ). setCursor( false , true ); "," } "," } else { "," if ( cellInfo. rowSpan == 1 || cellInfo. rowSpan == cellsRange. endRowIndex - cellsRange. beginRowIndex + 1 ) { "," if ( nextCell || preCell) rng. selectNodeContents( nextCell || preCell). setCursor( false , true ); "," } else { "," var newCell = ut. getCell( cellInfo. rowIndex, ut. indexTable[ cellInfo. rowIndex][ cellInfo. colIndex]. cellIndex); "," if ( newCell) rng. selectNodeContents( newCell). setCursor( false , true ); "," } "," } "," if ( table. getAttribute( \"interlaced\" ) === \"enabled\" ) this . fireEvent( \"interlacetable\" , table); "," } "," } ; "," UE. commands[ \"insertcol\" ] = { "," queryCommandState: function ( cmd) { "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell; "," return cell && ( cell. tagName == \"TD\" || cell. tagName == 'TH' ) && getUETable( tableItems. table). colsNum < this . options. maxColNum ? 0 : - 1 ; "," } , "," execCommand: function ( cmd) { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," if ( this . queryCommandState( cmd) == - 1 ) return ; "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell), "," cellInfo = ut. getCellInfo( cell); ",""," //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex:ut.cellsRange.beginColIndex); "," if (! ut. selectedTds. length) { "," ut. insertCol( cellInfo. colIndex, cell); "," } else { "," var range = ut. cellsRange; "," for ( var i = 0 , len = range. endColIndex - range. beginColIndex + 1 ; i < len; i++) { "," ut. insertCol( range. beginColIndex, cell); "," } "," } "," rng. moveToBookmark( bk). select( true ); "," } "," } ; "," UE. commands[ \"insertcolnext\" ] = { "," queryCommandState: function () { "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell; "," return cell && getUETable( tableItems. table). colsNum < this . options. maxColNum ? 0 : - 1 ; "," } , "," execCommand: function () { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell), "," cellInfo = ut. getCellInfo( cell); "," //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex + cellInfo.colSpan:ut.cellsRange.endColIndex +1); "," if (! ut. selectedTds. length) { "," ut. insertCol( cellInfo. colIndex + cellInfo. colSpan, cell); "," } else { "," var range = ut. cellsRange; "," for ( var i = 0 , len = range. endColIndex - range. beginColIndex + 1 ; i < len; i++) { "," ut. insertCol( range. endColIndex + 1 , cell); "," } "," } "," rng. moveToBookmark( bk). select(); "," } "," } ; ",""," UE. commands[ \"deletecol\" ] = { "," queryCommandState: function () { "," var tableItems = getTableItemsByRange( this ); "," if (! tableItems. cell) return - 1 ; "," } , "," execCommand: function () { "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell), "," range = ut. cellsRange, "," cellInfo = ut. getCellInfo( cell), "," preCell = ut. getHSideCell( cell), "," nextCell = ut. getHSideCell( cell, true ); "," if ( utils. isEmptyObject( range)) { "," ut. deleteCol( cellInfo. colIndex); "," } else { "," for ( var i = range. beginColIndex; i < range. endColIndex + 1 ; i++) { "," ut. deleteCol( range. beginColIndex); "," } "," } "," var table = ut. table, "," rng = this . selection. getRange(); ",""," if (! table. getElementsByTagName( 'td' ). length) { "," var nextSibling = table. nextSibling; "," domUtils. remove( table); "," if ( nextSibling) { "," rng. setStart( nextSibling, 0 ). setCursor( false , true ); "," } "," } else { "," if ( domUtils. inDoc( cell, this . document)) { "," rng. setStart( cell, 0 ). setCursor( false , true ); "," } else { "," if ( nextCell && domUtils. inDoc( nextCell, this . document)) { "," rng. selectNodeContents( nextCell). setCursor( false , true ); "," } else { "," if ( preCell && domUtils. inDoc( preCell, this . document)) { "," rng. selectNodeContents( preCell). setCursor( true , true ); "," } "," } "," } "," } "," } "," } ; "," UE. commands[ \"splittocells\" ] = { "," queryCommandState: function () { "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell; "," if (! cell) return - 1 ; "," var ut = getUETable( tableItems. table); "," if ( ut. selectedTds. length > 0 ) return - 1 ; "," return cell && ( cell. colSpan > 1 || cell. rowSpan > 1 ) ? 0 : - 1 ; "," } , "," execCommand: function () { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell); "," ut. splitToCells( cell); "," rng. moveToBookmark( bk). select(); "," } "," } ; "," UE. commands[ \"splittorows\" ] = { "," queryCommandState: function () { "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell; "," if (! cell) return - 1 ; "," var ut = getUETable( tableItems. table); "," if ( ut. selectedTds. length > 0 ) return - 1 ; "," return cell && cell. rowSpan > 1 ? 0 : - 1 ; "," } , "," execCommand: function () { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell); "," ut. splitToRows( cell); "," rng. moveToBookmark( bk). select(); "," } "," } ; "," UE. commands[ \"splittocols\" ] = { "," queryCommandState: function () { "," var tableItems = getTableItemsByRange( this ), "," cell = tableItems. cell; "," if (! cell) return - 1 ; "," var ut = getUETable( tableItems. table); "," if ( ut. selectedTds. length > 0 ) return - 1 ; "," return cell && cell. colSpan > 1 ? 0 : - 1 ; "," } , "," execCommand: function () { "," var rng = this . selection. getRange(), "," bk = rng. createBookmark( true ); "," var cell = getTableItemsByRange( this ). cell, "," ut = getUETable( cell); "," ut. splitToCols( cell); "," rng. moveToBookmark( bk). select(); ",""," } "," } ; ",""," UE. commands[ \"adaptbytext\" ] = "," UE. commands[ \"adaptbywindow\" ] = { "," queryCommandState: function () { "," return getTableItemsByRange( this ). table ? 0 : - 1 "," } , "," execCommand: function ( cmd) { "," var tableItems = getTableItemsByRange( this ), "," table = tableItems. table; "," if ( table) { "," if ( cmd == 'adaptbywindow' ) { "," resetTdWidth( table, this ); "," } else { "," var cells = domUtils. getElementsByTagName( table, \"td th\" ); "," utils. each( cells, function ( cell) { "," cell. removeAttribute( \"width\" ); "," } ); "," table. removeAttribute( \"width\" ); "," } "," } "," } "," } ; ",""," //平均分配各列 "," UE. commands[ 'averagedistributecol' ] = { "," queryCommandState: function () { "," var ut = getUETableBySelected( this ); "," if (! ut) return - 1 ; "," return ut. isFullRow() || ut. isFullCol() ? 0 : - 1 ; "," } , "," execCommand: function ( cmd) { "," var me = this , "," ut = getUETableBySelected( me); ",""," function getAverageWidth() { "," var tb = ut. table, "," averageWidth, sumWidth = 0 , colsNum = 0 , "," tbAttr = getDefaultValue( me, tb); ",""," if ( ut. isFullRow()) { "," sumWidth = tb. offsetWidth; "," colsNum = ut. colsNum; "," } else { "," var begin = ut. cellsRange. beginColIndex, "," end = ut. cellsRange. endColIndex, "," node; "," for ( var i = begin; i <= end;) { "," node = ut. selectedTds[ i]; "," sumWidth += node. offsetWidth; "," i += node. colSpan; "," colsNum += 1 ; "," } "," } "," averageWidth = Math. ceil( sumWidth / colsNum) - tbAttr. tdBorder * 2 - tbAttr. tdPadding * 2 ; "," return averageWidth; "," } ",""," function setAverageWidth( averageWidth) { "," utils. each( domUtils. getElementsByTagName( ut. table, \"th\" ), function ( node) { "," node. setAttribute( \"width\" , \"\" ); "," } ); "," var cells = ut. isFullRow() ? domUtils. getElementsByTagName( ut. table, \"td\" ) : ut. selectedTds; ",""," utils. each( cells, function ( node) { "," if ( node. colSpan == 1 ) { "," node. setAttribute( \"width\" , averageWidth); "," } "," } ); "," } ",""," if ( ut && ut. selectedTds. length) { "," setAverageWidth( getAverageWidth()); "," } "," } "," } ; "," //平均分配各行 "," UE. commands[ 'averagedistributerow' ] = { "," queryCommandState: function () { "," var ut = getUETableBySelected( this ); "," if (! ut) return - 1 ; "," if ( ut. selectedTds && /th/ig . test( ut. selectedTds[ 0 ]. tagName)) return - 1 ; "," return ut. isFullRow() || ut. isFullCol() ? 0 : - 1 ; "," } , "," execCommand: function ( cmd) { "," var me = this , "," ut = getUETableBySelected( me); ",""," function getAverageHeight() { "," var averageHeight, rowNum, sumHeight = 0 , "," tb = ut. table, "," tbAttr = getDefaultValue( me, tb), "," tdpadding = parseInt( domUtils. getComputedStyle( tb. getElementsByTagName( 'td' )[ 0 ], \"padding-top\" )); ",""," if ( ut. isFullCol()) { "," var captionArr = domUtils. getElementsByTagName( tb, \"caption\" ), "," thArr = domUtils. getElementsByTagName( tb, \"th\" ), "," captionHeight, thHeight; ",""," if ( captionArr. length > 0 ) { "," captionHeight = captionArr[ 0 ]. offsetHeight; "," } "," if ( thArr. length > 0 ) { "," thHeight = thArr[ 0 ]. offsetHeight; "," } ",""," sumHeight = tb. offsetHeight - ( captionHeight || 0 ) - ( thHeight || 0 ); "," rowNum = thArr. length == 0 ? ut. rowsNum : ( ut. rowsNum - 1 ); "," } else { "," var begin = ut. cellsRange. beginRowIndex, "," end = ut. cellsRange. endRowIndex, "," count = 0 , "," trs = domUtils. getElementsByTagName( tb, \"tr\" ); "," for ( var i = begin; i <= end; i++) { "," sumHeight += trs[ i]. offsetHeight; "," count += 1 ; "," } "," rowNum = count; "," } "," //ie8下是混杂模式 "," if ( browser. ie && browser. version < 9 ) { "," averageHeight = Math. ceil( sumHeight / rowNum); "," } else { "," averageHeight = Math. ceil( sumHeight / rowNum) - tbAttr. tdBorder * 2 - tdpadding * 2 ; "," } "," return averageHeight; "," } ",""," function setAverageHeight( averageHeight) { "," var cells = ut. isFullCol() ? domUtils. getElementsByTagName( ut. table, \"td\" ) : ut. selectedTds; "," utils. each( cells, function ( node) { "," if ( node. rowSpan == 1 ) { "," node. setAttribute( \"height\" , averageHeight); "," } "," } ); "," } ",""," if ( ut && ut. selectedTds. length) { "," setAverageHeight( getAverageHeight()); "," } "," } "," } ; ",""," //单元格对齐方式 "," UE. commands[ 'cellalignment' ] = { "," queryCommandState: function () { "," return getTableItemsByRange( this ). table ? 0 : - 1 "," } , "," execCommand: function ( cmd, data) { "," var me = this , "," ut = getUETableBySelected( me); ",""," if (! ut) { "," var start = me. selection. getStart(), "," cell = start && domUtils. findParentByTagName( start, [ \"td\" , \"th\" , \"caption\" ], true ); "," if (! /caption/ig . test( cell. tagName)) { "," domUtils. setAttributes( cell, data); "," } else { "," cell. style. textAlign = data. align; "," cell. style. verticalAlign = data. vAlign; "," } "," me. selection. getRange(). setCursor( true ); "," } else { "," utils. each( ut. selectedTds, function ( cell) { "," domUtils. setAttributes( cell, data); "," } ); "," } "," } , "," /* "," * 查询当前点击的单元格的对齐状态, 如果当前已经选择了多个单元格, 则会返回所有单元格经过统一协调过后的状态 "," * @see UE.UETable.getTableCellAlignState "," */ "," queryCommandValue: function ( cmd) { ",""," var activeMenuCell = getTableItemsByRange( this ). cell; ",""," if ( ! activeMenuCell ) { "," activeMenuCell = getSelectedArr( this )[ 0 ]; "," } ",""," if (! activeMenuCell) { ",""," return null ; ",""," } else { ",""," //获取同时选中的其他单元格 "," var cells = UE. UETable. getUETable( activeMenuCell). selectedTds; ",""," ! cells. length && ( cells = activeMenuCell ); ",""," return UE. UETable. getTableCellAlignState( cells); ",""," } ",""," } "," } ; "," //表格对齐方式 "," UE. commands[ 'tablealignment' ] = { "," queryCommandState: function () { "," if ( browser. ie && browser. version < 8 ) { "," return - 1 ; "," } "," return getTableItemsByRange( this ). table ? 0 : - 1 "," } , "," execCommand: function ( cmd, value) { "," var me = this , "," start = me. selection. getStart(), "," table = start && domUtils. findParentByTagName( start, [ \"table\" ], true ); ",""," if ( table) { "," table. setAttribute( \"align\" , value); "," } "," } "," } ; ",""," //表格属性 "," UE. commands[ 'edittable' ] = { "," queryCommandState: function () { "," return getTableItemsByRange( this ). table ? 0 : - 1 "," } , "," execCommand: function ( cmd, color) { "," var rng = this . selection. getRange(), "," table = domUtils. findParentByTagName( rng. startContainer, 'table' ); "," if ( table) { "," var arr = domUtils. getElementsByTagName( table, \"td\" ). concat( "," domUtils. getElementsByTagName( table, \"th\" ), "," domUtils. getElementsByTagName( table, \"caption\" ) "," ); "," utils. each( arr, function ( node) { "," node. style. borderColor = color; "," } ); "," } "," } "," } ; "," //单元格属性 "," UE. commands[ 'edittd' ] = { "," queryCommandState: function () { "," return getTableItemsByRange( this ). table ? 0 : - 1 "," } , "," execCommand: function ( cmd, bkColor) { "," var me = this , "," ut = getUETableBySelected( me); ",""," if (! ut) { "," var start = me. selection. getStart(), "," cell = start && domUtils. findParentByTagName( start, [ \"td\" , \"th\" , \"caption\" ], true ); "," if ( cell) { "," cell. style. backgroundColor = bkColor; "," } "," } else { "," utils. each( ut. selectedTds, function ( cell) { "," cell. style. backgroundColor = bkColor; "," } ); "," } "," } "," } ; "," UE. commands[ 'sorttable' ] = { "," queryCommandState: function () { "," var me = this , "," tableItems = getTableItemsByRange( me); "," if (! tableItems. cell) return - 1 ; "," var table = tableItems. table, "," cells = table. getElementsByTagName( \"td\" ); "," for ( var i = 0 , cell; cell = cells[ i++];) { "," if ( cell. rowSpan != 1 || cell. colSpan != 1 ) return - 1 ; "," } "," return 0 ; "," } , "," execCommand: function ( cmd, fn) { "," var me = this , "," range = me. selection. getRange(), "," bk = range. createBookmark( true ), "," tableItems = getTableItemsByRange( me), "," cell = tableItems. cell, "," ut = getUETable( tableItems. table), "," cellInfo = ut. getCellInfo( cell); "," ut. sortTable( cellInfo. cellIndex, fn); "," range. moveToBookmark( bk). select(); "," } "," } ; ",""," UE. commands[ \"enablesort\" ] = UE. commands[ \"disablesort\" ] = { "," queryCommandState: function () { "," return getTableItemsByRange( this ). table ? 0 : - 1 ; "," } , "," execCommand: function ( cmd) { "," var table = getTableItemsByRange( this ). table; "," table. setAttribute( \"data-sort\" , cmd == \"enablesort\" ? \"sortEnabled\" : \"sortDisabled\" ); "," } "," } ; "," UE. commands[ \"settablebackground\" ] = { "," queryCommandState: function () { "," return getSelectedArr( this ). length > 1 ? 0 : - 1 ; "," } , "," execCommand: function ( cmd, value) { "," var table, cells, ut; "," cells = getSelectedArr( this ); "," ut = getUETable( cells[ 0 ]); "," ut. setBackground( cells, value); "," } "," } ; ",""," UE. commands[ \"cleartablebackground\" ] = { "," queryCommandState: function () { "," var cells = getSelectedArr( this ); "," if (! cells. length) return - 1 ; "," for ( var i = 0 , cell; cell = cells[ i++];) { "," if ( cell. style. backgroundColor !== \"\" ) return 0 ; "," } "," return - 1 ; "," } , "," execCommand: function () { "," var cells = getSelectedArr( this ), "," ut = getUETable( cells[ 0 ]); "," ut. removeBackground( cells); "," } "," } ; ",""," UE. commands[ \"interlacetable\" ] = UE. commands[ \"uninterlacetable\" ] = { "," queryCommandState: function ( cmd) { "," var table = getTableItemsByRange( this ). table; "," if (! table) return - 1 ; "," var interlaced = table. getAttribute( \"interlaced\" ); "," if ( cmd == \"interlacetable\" ) { "," //TODO 待定 "," //是否需要待定,如果设置,则命令只能单次执行成功,但反射具备toggle效果;否则可以覆盖前次命令,但反射将不存在toggle效果 "," return ( interlaced === \"enabled\" ) ? - 1 : 0 ; "," } else { "," return (! interlaced || interlaced === \"disabled\" ) ? - 1 : 0 ; "," } "," } , "," execCommand: function ( cmd, classList) { "," var table = getTableItemsByRange( this ). table; "," if ( cmd == \"interlacetable\" ) { "," table. setAttribute( \"interlaced\" , \"enabled\" ); "," this . fireEvent( \"interlacetable\" , table, classList); "," } else { "," table. setAttribute( \"interlaced\" , \"disabled\" ); "," this . fireEvent( \"uninterlacetable\" , table); "," } "," } "," } ; ",""," function resetTdWidth( table, editor) { "," var tds = table. getElementsByTagName( \"td\" ); "," utils. each( tds, function ( td) { "," td. removeAttribute( \"width\" ); "," } ); "," table. setAttribute( 'width' , getTableWidth( editor, true , getDefaultValue( editor, table))); "," setTimeout( function () { "," utils. each( tds, function ( td) { "," ( td. colSpan == 1 ) && td. setAttribute( \"width\" , td. offsetWidth + \"\" ); "," } ) "," } , 0 ); "," } ",""," function getTableWidth( editor, needIEHack, defaultValue) { "," var body = editor. body; "," return body. offsetWidth - ( needIEHack ? parseInt( domUtils. getComputedStyle( body, 'margin-left' ), 10 ) * 2 : 0 ) - defaultValue. tableBorder * 2 - ( editor. options. offsetWidth || 0 ); "," } ",""," function getSelectedArr( editor) { "," var cell = getTableItemsByRange( editor). cell; "," if ( cell) { "," var ut = getUETable( cell); "," return ut. selectedTds. length ? ut. selectedTds : [ cell]; "," } else { "," return []; "," } "," } ","} )(); "];
+_$jscoverage['plugins/table.cmds.js'][8]++;
+;
+_$jscoverage['plugins/table.cmds.js'][9]++;
+(function () {
+ _$jscoverage['plugins/table.cmds.js'][10]++;
+ var UT = UE.UETable, getTableItemsByRange = (function (editor) {
+ _$jscoverage['plugins/table.cmds.js'][12]++;
+ return UT.getTableItemsByRange(editor);
+}), getUETableBySelected = (function (editor) {
+ _$jscoverage['plugins/table.cmds.js'][15]++;
+ return UT.getUETableBySelected(editor);
+}), getDefaultValue = (function (editor, table) {
+ _$jscoverage['plugins/table.cmds.js'][18]++;
+ return UT.getDefaultValue(editor, table);
+}), getUETable = (function (tdOrTable) {
+ _$jscoverage['plugins/table.cmds.js'][21]++;
+ return UT.getUETable(tdOrTable);
+});
+ _$jscoverage['plugins/table.cmds.js'][25]++;
+ UE.commands.inserttable = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][27]++;
+ return (getTableItemsByRange(this).table? -1: 0);
+}), execCommand: (function (cmd, opt) {
+ _$jscoverage['plugins/table.cmds.js'][30]++;
+ function createTable(opt, tdWidth) {
+ _$jscoverage['plugins/table.cmds.js'][31]++;
+ var html = [], rowsNum = opt.numRows, colsNum = opt.numCols;
+ _$jscoverage['plugins/table.cmds.js'][34]++;
+ for (var r = 0; (r < rowsNum); (r++)) {
+ _$jscoverage['plugins/table.cmds.js'][35]++;
+ html.push("");
+ _$jscoverage['plugins/table.cmds.js'][36]++;
+ for (var c = 0; (c < colsNum); (c++)) {
+ _$jscoverage['plugins/table.cmds.js'][37]++;
+ html.push(("" + (browser.ie? domUtils.fillChar: " ") + " "));
+}
+ _$jscoverage['plugins/table.cmds.js'][39]++;
+ html.push(" ");
+}
+ _$jscoverage['plugins/table.cmds.js'][42]++;
+ return ("");
+}
+ _$jscoverage['plugins/table.cmds.js'][45]++;
+ if ((! opt)) {
+ _$jscoverage['plugins/table.cmds.js'][46]++;
+ opt = utils.extend({}, {numCols: this.options.defaultCols, numRows: this.options.defaultRows, tdvalign: this.options.tdvalign});
+ }
+ _$jscoverage['plugins/table.cmds.js'][52]++;
+ var me = this;
+ _$jscoverage['plugins/table.cmds.js'][53]++;
+ var range = this.selection.getRange(), start = range.startContainer, firstParentBlock = (domUtils.findParent(start, (function (node) {
+ _$jscoverage['plugins/table.cmds.js'][56]++;
+ return domUtils.isBlockElm(node);
+}), true) || me.body);
+ _$jscoverage['plugins/table.cmds.js'][59]++;
+ var defaultValue = getDefaultValue(me), tableWidth = firstParentBlock.offsetWidth, tdWidth = Math.floor(((tableWidth / opt.numCols) - (defaultValue.tdPadding * 2) - defaultValue.tdBorder));
+ _$jscoverage['plugins/table.cmds.js'][64]++;
+ ((! opt.tdvalign) && (opt.tdvalign = me.options.tdvalign));
+ _$jscoverage['plugins/table.cmds.js'][65]++;
+ me.execCommand("inserthtml", createTable(opt, tdWidth));
+})};
+ _$jscoverage['plugins/table.cmds.js'][69]++;
+ UE.commands.insertparagraphbeforetable = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][71]++;
+ return (getTableItemsByRange(this).cell? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][74]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][75]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][76]++;
+ var p = this.document.createElement("p");
+ _$jscoverage['plugins/table.cmds.js'][77]++;
+ p.innerHTML = (browser.ie? " ": " ");
+ _$jscoverage['plugins/table.cmds.js'][78]++;
+ table.parentNode.insertBefore(p, table);
+ _$jscoverage['plugins/table.cmds.js'][79]++;
+ this.selection.getRange().setStart(p, 0).setCursor();
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][84]++;
+ UE.commands.deletetable = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][86]++;
+ var rng = this.selection.getRange();
+ _$jscoverage['plugins/table.cmds.js'][87]++;
+ return (domUtils.findParentByTagName(rng.startContainer, "table", true)? 0: -1);
+}), execCommand: (function (cmd, table) {
+ _$jscoverage['plugins/table.cmds.js'][90]++;
+ var rng = this.selection.getRange();
+ _$jscoverage['plugins/table.cmds.js'][91]++;
+ table = (table || domUtils.findParentByTagName(rng.startContainer, "table", true));
+ _$jscoverage['plugins/table.cmds.js'][92]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][93]++;
+ var next = table.nextSibling;
+ _$jscoverage['plugins/table.cmds.js'][94]++;
+ if ((! next)) {
+ _$jscoverage['plugins/table.cmds.js'][95]++;
+ next = domUtils.createElement(this.document, "p", {"innerHTML": (browser.ie? domUtils.fillChar: " ")});
+ _$jscoverage['plugins/table.cmds.js'][98]++;
+ table.parentNode.insertBefore(next, table);
+ }
+ _$jscoverage['plugins/table.cmds.js'][100]++;
+ domUtils.remove(table);
+ _$jscoverage['plugins/table.cmds.js'][101]++;
+ rng = this.selection.getRange();
+ _$jscoverage['plugins/table.cmds.js'][102]++;
+ if ((next.nodeType == 3)) {
+ _$jscoverage['plugins/table.cmds.js'][103]++;
+ rng.setStartBefore(next);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][105]++;
+ rng.setStart(next, 0);
+ }
+ _$jscoverage['plugins/table.cmds.js'][107]++;
+ rng.setCursor(false, true);
+ _$jscoverage['plugins/table.cmds.js'][108]++;
+ this.fireEvent("tablehasdeleted");
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][114]++;
+ UE.commands.cellalign = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][116]++;
+ return (getSelectedArr(this).length? 0: -1);
+}), execCommand: (function (cmd, align) {
+ _$jscoverage['plugins/table.cmds.js'][119]++;
+ var selectedTds = getSelectedArr(this);
+ _$jscoverage['plugins/table.cmds.js'][120]++;
+ if (selectedTds.length) {
+ _$jscoverage['plugins/table.cmds.js'][121]++;
+ for (var i = 0, ci; (ci = selectedTds[(i++)]);) {
+ _$jscoverage['plugins/table.cmds.js'][122]++;
+ ci.setAttribute("align", align);
+}
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][127]++;
+ UE.commands.cellvalign = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][129]++;
+ return (getSelectedArr(this).length? 0: -1);
+}), execCommand: (function (cmd, valign) {
+ _$jscoverage['plugins/table.cmds.js'][132]++;
+ var selectedTds = getSelectedArr(this);
+ _$jscoverage['plugins/table.cmds.js'][133]++;
+ if (selectedTds.length) {
+ _$jscoverage['plugins/table.cmds.js'][134]++;
+ for (var i = 0, ci; (ci = selectedTds[(i++)]);) {
+ _$jscoverage['plugins/table.cmds.js'][135]++;
+ ci.setAttribute("vAlign", valign);
+}
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][140]++;
+ UE.commands.insertcaption = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][142]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][143]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][144]++;
+ return ((table.getElementsByTagName("caption").length == 0)? 1: -1);
+ }
+ _$jscoverage['plugins/table.cmds.js'][146]++;
+ return -1;
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][149]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][150]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][151]++;
+ var caption = this.document.createElement("caption");
+ _$jscoverage['plugins/table.cmds.js'][152]++;
+ caption.innerHTML = (browser.ie? domUtils.fillChar: " ");
+ _$jscoverage['plugins/table.cmds.js'][153]++;
+ table.insertBefore(caption, table.firstChild);
+ _$jscoverage['plugins/table.cmds.js'][154]++;
+ var range = this.selection.getRange();
+ _$jscoverage['plugins/table.cmds.js'][155]++;
+ range.setStart(caption, 0).setCursor();
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][160]++;
+ UE.commands.deletecaption = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][162]++;
+ var rng = this.selection.getRange(), table = domUtils.findParentByTagName(rng.startContainer, "table");
+ _$jscoverage['plugins/table.cmds.js'][164]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][165]++;
+ return ((table.getElementsByTagName("caption").length == 0)? -1: 1);
+ }
+ _$jscoverage['plugins/table.cmds.js'][167]++;
+ return -1;
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][170]++;
+ var rng = this.selection.getRange(), table = domUtils.findParentByTagName(rng.startContainer, "table");
+ _$jscoverage['plugins/table.cmds.js'][172]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][173]++;
+ domUtils.remove(table.getElementsByTagName("caption")[0]);
+ _$jscoverage['plugins/table.cmds.js'][174]++;
+ var range = this.selection.getRange();
+ _$jscoverage['plugins/table.cmds.js'][175]++;
+ range.setStart(table.rows[0].cells[0], 0).setCursor();
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][180]++;
+ UE.commands.inserttitle = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][182]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][183]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][184]++;
+ var firstRow = table.rows[0];
+ _$jscoverage['plugins/table.cmds.js'][185]++;
+ return ((firstRow.getElementsByTagName("th").length == 0)? 0: -1);
+ }
+ _$jscoverage['plugins/table.cmds.js'][187]++;
+ return -1;
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][190]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][191]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][192]++;
+ getUETable(table).insertRow(0, "th");
+ }
+ _$jscoverage['plugins/table.cmds.js'][194]++;
+ var th = table.getElementsByTagName("th")[0];
+ _$jscoverage['plugins/table.cmds.js'][195]++;
+ this.selection.getRange().setStart(th, 0).setCursor(false, true);
+})};
+ _$jscoverage['plugins/table.cmds.js'][198]++;
+ UE.commands.deletetitle = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][200]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][201]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][202]++;
+ var firstRow = table.rows[0];
+ _$jscoverage['plugins/table.cmds.js'][203]++;
+ return (firstRow.getElementsByTagName("th").length? 0: -1);
+ }
+ _$jscoverage['plugins/table.cmds.js'][205]++;
+ return -1;
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][208]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][209]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][210]++;
+ domUtils.remove(table.rows[0]);
+ }
+ _$jscoverage['plugins/table.cmds.js'][212]++;
+ var td = table.getElementsByTagName("td")[0];
+ _$jscoverage['plugins/table.cmds.js'][213]++;
+ this.selection.getRange().setStart(td, 0).setCursor(false, true);
+})};
+ _$jscoverage['plugins/table.cmds.js'][217]++;
+ UE.commands.mergeright = {queryCommandState: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][219]++;
+ var tableItems = getTableItemsByRange(this);
+ _$jscoverage['plugins/table.cmds.js'][220]++;
+ if ((! tableItems.cell)) {
+ _$jscoverage['plugins/table.cmds.js'][220]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][221]++;
+ var ut = getUETable(tableItems.table);
+ _$jscoverage['plugins/table.cmds.js'][222]++;
+ if (ut.selectedTds.length) {
+ _$jscoverage['plugins/table.cmds.js'][222]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][223]++;
+ var cellInfo = ut.getCellInfo(tableItems.cell), rightColIndex = (cellInfo.colIndex + cellInfo.colSpan);
+ _$jscoverage['plugins/table.cmds.js'][225]++;
+ if ((rightColIndex >= ut.colsNum)) {
+ _$jscoverage['plugins/table.cmds.js'][225]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][226]++;
+ var rightCellInfo = ut.indexTable[cellInfo.rowIndex][rightColIndex];
+ _$jscoverage['plugins/table.cmds.js'][227]++;
+ return (((rightCellInfo.rowIndex == cellInfo.rowIndex) && (rightCellInfo.rowSpan == cellInfo.rowSpan))? 0: -1);
+}), execCommand: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][231]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][233]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell);
+ _$jscoverage['plugins/table.cmds.js'][235]++;
+ ut.mergeRight(cell);
+ _$jscoverage['plugins/table.cmds.js'][236]++;
+ rng.moveToBookmark(bk).select();
+})};
+ _$jscoverage['plugins/table.cmds.js'][239]++;
+ UE.commands.mergedown = {queryCommandState: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][241]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell;
+ _$jscoverage['plugins/table.cmds.js'][243]++;
+ if (((! cell) || (cell.tagName == "TH"))) {
+ _$jscoverage['plugins/table.cmds.js'][243]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][244]++;
+ var ut = getUETable(tableItems.table);
+ _$jscoverage['plugins/table.cmds.js'][245]++;
+ if (ut.selectedTds.length) {
+ _$jscoverage['plugins/table.cmds.js'][245]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][246]++;
+ var cellInfo = ut.getCellInfo(tableItems.cell), downRowIndex = (cellInfo.rowIndex + cellInfo.rowSpan);
+ _$jscoverage['plugins/table.cmds.js'][249]++;
+ if ((downRowIndex >= ut.rowsNum)) {
+ _$jscoverage['plugins/table.cmds.js'][249]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][250]++;
+ var downCellInfo = ut.indexTable[downRowIndex][cellInfo.colIndex];
+ _$jscoverage['plugins/table.cmds.js'][252]++;
+ return (((downCellInfo.colIndex == cellInfo.colIndex) && (downCellInfo.colSpan == cellInfo.colSpan) && (tableItems.cell.tagName !== "TH"))? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][256]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][258]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell);
+ _$jscoverage['plugins/table.cmds.js'][260]++;
+ ut.mergeDown(cell);
+ _$jscoverage['plugins/table.cmds.js'][261]++;
+ rng.moveToBookmark(bk).select();
+})};
+ _$jscoverage['plugins/table.cmds.js'][264]++;
+ UE.commands.mergecells = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][266]++;
+ return (getUETableBySelected(this)? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][269]++;
+ var ut = getUETableBySelected(this);
+ _$jscoverage['plugins/table.cmds.js'][270]++;
+ if ((ut && ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.cmds.js'][271]++;
+ var cell = ut.selectedTds[0];
+ _$jscoverage['plugins/table.cmds.js'][272]++;
+ ut.mergeRange();
+ _$jscoverage['plugins/table.cmds.js'][273]++;
+ var rng = this.selection.getRange();
+ _$jscoverage['plugins/table.cmds.js'][274]++;
+ if (domUtils.isEmptyBlock(cell)) {
+ _$jscoverage['plugins/table.cmds.js'][275]++;
+ rng.setStart(cell, 0).collapse(true);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][277]++;
+ rng.selectNodeContents(cell);
+ }
+ _$jscoverage['plugins/table.cmds.js'][279]++;
+ rng.select();
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][285]++;
+ UE.commands.insertrow = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][287]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell;
+ _$jscoverage['plugins/table.cmds.js'][289]++;
+ return ((cell && (cell.tagName == "TD") && (getUETable(tableItems.table).rowsNum < this.options.maxRowNum))? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][292]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][294]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell, table = tableItems.table, ut = getUETable(table), cellInfo = ut.getCellInfo(cell);
+ _$jscoverage['plugins/table.cmds.js'][300]++;
+ if ((! ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.cmds.js'][301]++;
+ ut.insertRow(cellInfo.rowIndex, cell);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][303]++;
+ var range = ut.cellsRange;
+ _$jscoverage['plugins/table.cmds.js'][304]++;
+ for (var i = 0, len = ((range.endRowIndex - range.beginRowIndex) + 1); (i < len); (i++)) {
+ _$jscoverage['plugins/table.cmds.js'][305]++;
+ ut.insertRow(range.beginRowIndex, cell);
+}
+ }
+ _$jscoverage['plugins/table.cmds.js'][308]++;
+ rng.moveToBookmark(bk).select();
+ _$jscoverage['plugins/table.cmds.js'][309]++;
+ if ((table.getAttribute("interlaced") === "enabled")) {
+ _$jscoverage['plugins/table.cmds.js'][309]++;
+ this.fireEvent("interlacetable", table);
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][313]++;
+ UE.commands.insertrownext = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][315]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell;
+ _$jscoverage['plugins/table.cmds.js'][317]++;
+ return ((cell && (cell.tagName == "TD") && (getUETable(tableItems.table).rowsNum < this.options.maxRowNum))? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][320]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][322]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell, table = tableItems.table, ut = getUETable(table), cellInfo = ut.getCellInfo(cell);
+ _$jscoverage['plugins/table.cmds.js'][328]++;
+ if ((! ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.cmds.js'][329]++;
+ ut.insertRow((cellInfo.rowIndex + cellInfo.rowSpan), cell);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][331]++;
+ var range = ut.cellsRange;
+ _$jscoverage['plugins/table.cmds.js'][332]++;
+ for (var i = 0, len = ((range.endRowIndex - range.beginRowIndex) + 1); (i < len); (i++)) {
+ _$jscoverage['plugins/table.cmds.js'][333]++;
+ ut.insertRow((range.endRowIndex + 1), cell);
+}
+ }
+ _$jscoverage['plugins/table.cmds.js'][336]++;
+ rng.moveToBookmark(bk).select();
+ _$jscoverage['plugins/table.cmds.js'][337]++;
+ if ((table.getAttribute("interlaced") === "enabled")) {
+ _$jscoverage['plugins/table.cmds.js'][337]++;
+ this.fireEvent("interlacetable", table);
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][340]++;
+ UE.commands.deleterow = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][342]++;
+ var tableItems = getTableItemsByRange(this);
+ _$jscoverage['plugins/table.cmds.js'][343]++;
+ if ((! tableItems.cell)) {
+ _$jscoverage['plugins/table.cmds.js'][344]++;
+ return -1;
+ }
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][348]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell), cellsRange = ut.cellsRange, cellInfo = ut.getCellInfo(cell), preCell = ut.getVSideCell(cell), nextCell = ut.getVSideCell(cell, true), rng = this.selection.getRange();
+ _$jscoverage['plugins/table.cmds.js'][355]++;
+ if (utils.isEmptyObject(cellsRange)) {
+ _$jscoverage['plugins/table.cmds.js'][356]++;
+ ut.deleteRow(cellInfo.rowIndex);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][358]++;
+ for (var i = cellsRange.beginRowIndex; (i < (cellsRange.endRowIndex + 1)); (i++)) {
+ _$jscoverage['plugins/table.cmds.js'][359]++;
+ ut.deleteRow(cellsRange.beginRowIndex);
+}
+ }
+ _$jscoverage['plugins/table.cmds.js'][362]++;
+ var table = ut.table;
+ _$jscoverage['plugins/table.cmds.js'][363]++;
+ if ((! table.getElementsByTagName("td").length)) {
+ _$jscoverage['plugins/table.cmds.js'][364]++;
+ var nextSibling = table.nextSibling;
+ _$jscoverage['plugins/table.cmds.js'][365]++;
+ domUtils.remove(table);
+ _$jscoverage['plugins/table.cmds.js'][366]++;
+ if (nextSibling) {
+ _$jscoverage['plugins/table.cmds.js'][367]++;
+ rng.setStart(nextSibling, 0).setCursor(false, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][370]++;
+ if (((cellInfo.rowSpan == 1) || (cellInfo.rowSpan == ((cellsRange.endRowIndex - cellsRange.beginRowIndex) + 1)))) {
+ _$jscoverage['plugins/table.cmds.js'][371]++;
+ if ((nextCell || preCell)) {
+ _$jscoverage['plugins/table.cmds.js'][371]++;
+ rng.selectNodeContents((nextCell || preCell)).setCursor(false, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][373]++;
+ var newCell = ut.getCell(cellInfo.rowIndex, ut.indexTable[cellInfo.rowIndex][cellInfo.colIndex].cellIndex);
+ _$jscoverage['plugins/table.cmds.js'][374]++;
+ if (newCell) {
+ _$jscoverage['plugins/table.cmds.js'][374]++;
+ rng.selectNodeContents(newCell).setCursor(false, true);
+ }
+ }
+ }
+ _$jscoverage['plugins/table.cmds.js'][377]++;
+ if ((table.getAttribute("interlaced") === "enabled")) {
+ _$jscoverage['plugins/table.cmds.js'][377]++;
+ this.fireEvent("interlacetable", table);
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][380]++;
+ UE.commands.insertcol = {queryCommandState: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][382]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell;
+ _$jscoverage['plugins/table.cmds.js'][384]++;
+ return ((cell && ((cell.tagName == "TD") || (cell.tagName == "TH")) && (getUETable(tableItems.table).colsNum < this.options.maxColNum))? 0: -1);
+}), execCommand: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][387]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][389]++;
+ if ((this.queryCommandState(cmd) == -1)) {
+ _$jscoverage['plugins/table.cmds.js'][389]++;
+ return;
+ }
+ _$jscoverage['plugins/table.cmds.js'][390]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell), cellInfo = ut.getCellInfo(cell);
+ _$jscoverage['plugins/table.cmds.js'][395]++;
+ if ((! ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.cmds.js'][396]++;
+ ut.insertCol(cellInfo.colIndex, cell);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][398]++;
+ var range = ut.cellsRange;
+ _$jscoverage['plugins/table.cmds.js'][399]++;
+ for (var i = 0, len = ((range.endColIndex - range.beginColIndex) + 1); (i < len); (i++)) {
+ _$jscoverage['plugins/table.cmds.js'][400]++;
+ ut.insertCol(range.beginColIndex, cell);
+}
+ }
+ _$jscoverage['plugins/table.cmds.js'][403]++;
+ rng.moveToBookmark(bk).select(true);
+})};
+ _$jscoverage['plugins/table.cmds.js'][406]++;
+ UE.commands.insertcolnext = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][408]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell;
+ _$jscoverage['plugins/table.cmds.js'][410]++;
+ return ((cell && (getUETable(tableItems.table).colsNum < this.options.maxColNum))? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][413]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][415]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell), cellInfo = ut.getCellInfo(cell);
+ _$jscoverage['plugins/table.cmds.js'][419]++;
+ if ((! ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.cmds.js'][420]++;
+ ut.insertCol((cellInfo.colIndex + cellInfo.colSpan), cell);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][422]++;
+ var range = ut.cellsRange;
+ _$jscoverage['plugins/table.cmds.js'][423]++;
+ for (var i = 0, len = ((range.endColIndex - range.beginColIndex) + 1); (i < len); (i++)) {
+ _$jscoverage['plugins/table.cmds.js'][424]++;
+ ut.insertCol((range.endColIndex + 1), cell);
+}
+ }
+ _$jscoverage['plugins/table.cmds.js'][427]++;
+ rng.moveToBookmark(bk).select();
+})};
+ _$jscoverage['plugins/table.cmds.js'][431]++;
+ UE.commands.deletecol = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][433]++;
+ var tableItems = getTableItemsByRange(this);
+ _$jscoverage['plugins/table.cmds.js'][434]++;
+ if ((! tableItems.cell)) {
+ _$jscoverage['plugins/table.cmds.js'][434]++;
+ return -1;
+ }
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][437]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell), range = ut.cellsRange, cellInfo = ut.getCellInfo(cell), preCell = ut.getHSideCell(cell), nextCell = ut.getHSideCell(cell, true);
+ _$jscoverage['plugins/table.cmds.js'][443]++;
+ if (utils.isEmptyObject(range)) {
+ _$jscoverage['plugins/table.cmds.js'][444]++;
+ ut.deleteCol(cellInfo.colIndex);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][446]++;
+ for (var i = range.beginColIndex; (i < (range.endColIndex + 1)); (i++)) {
+ _$jscoverage['plugins/table.cmds.js'][447]++;
+ ut.deleteCol(range.beginColIndex);
+}
+ }
+ _$jscoverage['plugins/table.cmds.js'][450]++;
+ var table = ut.table, rng = this.selection.getRange();
+ _$jscoverage['plugins/table.cmds.js'][453]++;
+ if ((! table.getElementsByTagName("td").length)) {
+ _$jscoverage['plugins/table.cmds.js'][454]++;
+ var nextSibling = table.nextSibling;
+ _$jscoverage['plugins/table.cmds.js'][455]++;
+ domUtils.remove(table);
+ _$jscoverage['plugins/table.cmds.js'][456]++;
+ if (nextSibling) {
+ _$jscoverage['plugins/table.cmds.js'][457]++;
+ rng.setStart(nextSibling, 0).setCursor(false, true);
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][460]++;
+ if (domUtils.inDoc(cell, this.document)) {
+ _$jscoverage['plugins/table.cmds.js'][461]++;
+ rng.setStart(cell, 0).setCursor(false, true);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][463]++;
+ if ((nextCell && domUtils.inDoc(nextCell, this.document))) {
+ _$jscoverage['plugins/table.cmds.js'][464]++;
+ rng.selectNodeContents(nextCell).setCursor(false, true);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][466]++;
+ if ((preCell && domUtils.inDoc(preCell, this.document))) {
+ _$jscoverage['plugins/table.cmds.js'][467]++;
+ rng.selectNodeContents(preCell).setCursor(true, true);
+ }
+ }
+ }
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][474]++;
+ UE.commands.splittocells = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][476]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell;
+ _$jscoverage['plugins/table.cmds.js'][478]++;
+ if ((! cell)) {
+ _$jscoverage['plugins/table.cmds.js'][478]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][479]++;
+ var ut = getUETable(tableItems.table);
+ _$jscoverage['plugins/table.cmds.js'][480]++;
+ if ((ut.selectedTds.length > 0)) {
+ _$jscoverage['plugins/table.cmds.js'][480]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][481]++;
+ return ((cell && ((cell.colSpan > 1) || (cell.rowSpan > 1)))? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][484]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][486]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell);
+ _$jscoverage['plugins/table.cmds.js'][488]++;
+ ut.splitToCells(cell);
+ _$jscoverage['plugins/table.cmds.js'][489]++;
+ rng.moveToBookmark(bk).select();
+})};
+ _$jscoverage['plugins/table.cmds.js'][492]++;
+ UE.commands.splittorows = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][494]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell;
+ _$jscoverage['plugins/table.cmds.js'][496]++;
+ if ((! cell)) {
+ _$jscoverage['plugins/table.cmds.js'][496]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][497]++;
+ var ut = getUETable(tableItems.table);
+ _$jscoverage['plugins/table.cmds.js'][498]++;
+ if ((ut.selectedTds.length > 0)) {
+ _$jscoverage['plugins/table.cmds.js'][498]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][499]++;
+ return ((cell && (cell.rowSpan > 1))? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][502]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][504]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell);
+ _$jscoverage['plugins/table.cmds.js'][506]++;
+ ut.splitToRows(cell);
+ _$jscoverage['plugins/table.cmds.js'][507]++;
+ rng.moveToBookmark(bk).select();
+})};
+ _$jscoverage['plugins/table.cmds.js'][510]++;
+ UE.commands.splittocols = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][512]++;
+ var tableItems = getTableItemsByRange(this), cell = tableItems.cell;
+ _$jscoverage['plugins/table.cmds.js'][514]++;
+ if ((! cell)) {
+ _$jscoverage['plugins/table.cmds.js'][514]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][515]++;
+ var ut = getUETable(tableItems.table);
+ _$jscoverage['plugins/table.cmds.js'][516]++;
+ if ((ut.selectedTds.length > 0)) {
+ _$jscoverage['plugins/table.cmds.js'][516]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][517]++;
+ return ((cell && (cell.colSpan > 1))? 0: -1);
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][520]++;
+ var rng = this.selection.getRange(), bk = rng.createBookmark(true);
+ _$jscoverage['plugins/table.cmds.js'][522]++;
+ var cell = getTableItemsByRange(this).cell, ut = getUETable(cell);
+ _$jscoverage['plugins/table.cmds.js'][524]++;
+ ut.splitToCols(cell);
+ _$jscoverage['plugins/table.cmds.js'][525]++;
+ rng.moveToBookmark(bk).select();
+})};
+ _$jscoverage['plugins/table.cmds.js'][530]++;
+ UE.commands.adaptbytext = (UE.commands.adaptbywindow = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][533]++;
+ return (getTableItemsByRange(this).table? 0: -1);
+}), execCommand: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][536]++;
+ var tableItems = getTableItemsByRange(this), table = tableItems.table;
+ _$jscoverage['plugins/table.cmds.js'][538]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][539]++;
+ if ((cmd == "adaptbywindow")) {
+ _$jscoverage['plugins/table.cmds.js'][540]++;
+ resetTdWidth(table, this);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][542]++;
+ var cells = domUtils.getElementsByTagName(table, "td th");
+ _$jscoverage['plugins/table.cmds.js'][543]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.cmds.js'][544]++;
+ cell.removeAttribute("width");
+}));
+ _$jscoverage['plugins/table.cmds.js'][546]++;
+ table.removeAttribute("width");
+ }
+ }
+})});
+ _$jscoverage['plugins/table.cmds.js'][553]++;
+ UE.commands.averagedistributecol = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][555]++;
+ var ut = getUETableBySelected(this);
+ _$jscoverage['plugins/table.cmds.js'][556]++;
+ if ((! ut)) {
+ _$jscoverage['plugins/table.cmds.js'][556]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][557]++;
+ return ((ut.isFullRow() || ut.isFullCol())? 0: -1);
+}), execCommand: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][560]++;
+ var me = this, ut = getUETableBySelected(me);
+ _$jscoverage['plugins/table.cmds.js'][563]++;
+ function getAverageWidth() {
+ _$jscoverage['plugins/table.cmds.js'][564]++;
+ var tb = ut.table, averageWidth, sumWidth = 0, colsNum = 0, tbAttr = getDefaultValue(me, tb);
+ _$jscoverage['plugins/table.cmds.js'][568]++;
+ if (ut.isFullRow()) {
+ _$jscoverage['plugins/table.cmds.js'][569]++;
+ sumWidth = tb.offsetWidth;
+ _$jscoverage['plugins/table.cmds.js'][570]++;
+ colsNum = ut.colsNum;
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][572]++;
+ var begin = ut.cellsRange.beginColIndex, end = ut.cellsRange.endColIndex, node;
+ _$jscoverage['plugins/table.cmds.js'][575]++;
+ for (var i = begin; (i <= end);) {
+ _$jscoverage['plugins/table.cmds.js'][576]++;
+ node = ut.selectedTds[i];
+ _$jscoverage['plugins/table.cmds.js'][577]++;
+ sumWidth += node.offsetWidth;
+ _$jscoverage['plugins/table.cmds.js'][578]++;
+ i += node.colSpan;
+ _$jscoverage['plugins/table.cmds.js'][579]++;
+ colsNum += 1;
+}
+ }
+ _$jscoverage['plugins/table.cmds.js'][582]++;
+ averageWidth = (Math.ceil((sumWidth / colsNum)) - (tbAttr.tdBorder * 2) - (tbAttr.tdPadding * 2));
+ _$jscoverage['plugins/table.cmds.js'][583]++;
+ return averageWidth;
+}
+ _$jscoverage['plugins/table.cmds.js'][586]++;
+ function setAverageWidth(averageWidth) {
+ _$jscoverage['plugins/table.cmds.js'][587]++;
+ utils.each(domUtils.getElementsByTagName(ut.table, "th"), (function (node) {
+ _$jscoverage['plugins/table.cmds.js'][588]++;
+ node.setAttribute("width", "");
+}));
+ _$jscoverage['plugins/table.cmds.js'][590]++;
+ var cells = (ut.isFullRow()? domUtils.getElementsByTagName(ut.table, "td"): ut.selectedTds);
+ _$jscoverage['plugins/table.cmds.js'][592]++;
+ utils.each(cells, (function (node) {
+ _$jscoverage['plugins/table.cmds.js'][593]++;
+ if ((node.colSpan == 1)) {
+ _$jscoverage['plugins/table.cmds.js'][594]++;
+ node.setAttribute("width", averageWidth);
+ }
+}));
+}
+ _$jscoverage['plugins/table.cmds.js'][599]++;
+ if ((ut && ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.cmds.js'][600]++;
+ setAverageWidth(getAverageWidth());
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][605]++;
+ UE.commands.averagedistributerow = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][607]++;
+ var ut = getUETableBySelected(this);
+ _$jscoverage['plugins/table.cmds.js'][608]++;
+ if ((! ut)) {
+ _$jscoverage['plugins/table.cmds.js'][608]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][609]++;
+ if ((ut.selectedTds && /th/gi.test(ut.selectedTds[0].tagName))) {
+ _$jscoverage['plugins/table.cmds.js'][609]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][610]++;
+ return ((ut.isFullRow() || ut.isFullCol())? 0: -1);
+}), execCommand: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][613]++;
+ var me = this, ut = getUETableBySelected(me);
+ _$jscoverage['plugins/table.cmds.js'][616]++;
+ function getAverageHeight() {
+ _$jscoverage['plugins/table.cmds.js'][617]++;
+ var averageHeight, rowNum, sumHeight = 0, tb = ut.table, tbAttr = getDefaultValue(me, tb), tdpadding = parseInt(domUtils.getComputedStyle(tb.getElementsByTagName("td")[0], "padding-top"));
+ _$jscoverage['plugins/table.cmds.js'][622]++;
+ if (ut.isFullCol()) {
+ _$jscoverage['plugins/table.cmds.js'][623]++;
+ var captionArr = domUtils.getElementsByTagName(tb, "caption"), thArr = domUtils.getElementsByTagName(tb, "th"), captionHeight, thHeight;
+ _$jscoverage['plugins/table.cmds.js'][627]++;
+ if ((captionArr.length > 0)) {
+ _$jscoverage['plugins/table.cmds.js'][628]++;
+ captionHeight = captionArr[0].offsetHeight;
+ }
+ _$jscoverage['plugins/table.cmds.js'][630]++;
+ if ((thArr.length > 0)) {
+ _$jscoverage['plugins/table.cmds.js'][631]++;
+ thHeight = thArr[0].offsetHeight;
+ }
+ _$jscoverage['plugins/table.cmds.js'][634]++;
+ sumHeight = (tb.offsetHeight - (captionHeight || 0) - (thHeight || 0));
+ _$jscoverage['plugins/table.cmds.js'][635]++;
+ rowNum = ((thArr.length == 0)? ut.rowsNum: (ut.rowsNum - 1));
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][637]++;
+ var begin = ut.cellsRange.beginRowIndex, end = ut.cellsRange.endRowIndex, count = 0, trs = domUtils.getElementsByTagName(tb, "tr");
+ _$jscoverage['plugins/table.cmds.js'][641]++;
+ for (var i = begin; (i <= end); (i++)) {
+ _$jscoverage['plugins/table.cmds.js'][642]++;
+ sumHeight += trs[i].offsetHeight;
+ _$jscoverage['plugins/table.cmds.js'][643]++;
+ count += 1;
+}
+ _$jscoverage['plugins/table.cmds.js'][645]++;
+ rowNum = count;
+ }
+ _$jscoverage['plugins/table.cmds.js'][648]++;
+ if ((browser.ie && (browser.version < 9))) {
+ _$jscoverage['plugins/table.cmds.js'][649]++;
+ averageHeight = Math.ceil((sumHeight / rowNum));
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][651]++;
+ averageHeight = (Math.ceil((sumHeight / rowNum)) - (tbAttr.tdBorder * 2) - (tdpadding * 2));
+ }
+ _$jscoverage['plugins/table.cmds.js'][653]++;
+ return averageHeight;
+}
+ _$jscoverage['plugins/table.cmds.js'][656]++;
+ function setAverageHeight(averageHeight) {
+ _$jscoverage['plugins/table.cmds.js'][657]++;
+ var cells = (ut.isFullCol()? domUtils.getElementsByTagName(ut.table, "td"): ut.selectedTds);
+ _$jscoverage['plugins/table.cmds.js'][658]++;
+ utils.each(cells, (function (node) {
+ _$jscoverage['plugins/table.cmds.js'][659]++;
+ if ((node.rowSpan == 1)) {
+ _$jscoverage['plugins/table.cmds.js'][660]++;
+ node.setAttribute("height", averageHeight);
+ }
+}));
+}
+ _$jscoverage['plugins/table.cmds.js'][665]++;
+ if ((ut && ut.selectedTds.length)) {
+ _$jscoverage['plugins/table.cmds.js'][666]++;
+ setAverageHeight(getAverageHeight());
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][672]++;
+ UE.commands.cellalignment = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][674]++;
+ return (getTableItemsByRange(this).table? 0: -1);
+}), execCommand: (function (cmd, data) {
+ _$jscoverage['plugins/table.cmds.js'][677]++;
+ var me = this, ut = getUETableBySelected(me);
+ _$jscoverage['plugins/table.cmds.js'][680]++;
+ if ((! ut)) {
+ _$jscoverage['plugins/table.cmds.js'][681]++;
+ var start = me.selection.getStart(), cell = (start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true));
+ _$jscoverage['plugins/table.cmds.js'][683]++;
+ if ((! /caption/gi.test(cell.tagName))) {
+ _$jscoverage['plugins/table.cmds.js'][684]++;
+ domUtils.setAttributes(cell, data);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][686]++;
+ cell.style.textAlign = data.align;
+ _$jscoverage['plugins/table.cmds.js'][687]++;
+ cell.style.verticalAlign = data.vAlign;
+ }
+ _$jscoverage['plugins/table.cmds.js'][689]++;
+ me.selection.getRange().setCursor(true);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][691]++;
+ utils.each(ut.selectedTds, (function (cell) {
+ _$jscoverage['plugins/table.cmds.js'][692]++;
+ domUtils.setAttributes(cell, data);
+}));
+ }
+}), queryCommandValue: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][702]++;
+ var activeMenuCell = getTableItemsByRange(this).cell;
+ _$jscoverage['plugins/table.cmds.js'][704]++;
+ if ((! activeMenuCell)) {
+ _$jscoverage['plugins/table.cmds.js'][705]++;
+ activeMenuCell = getSelectedArr(this)[0];
+ }
+ _$jscoverage['plugins/table.cmds.js'][708]++;
+ if ((! activeMenuCell)) {
+ _$jscoverage['plugins/table.cmds.js'][710]++;
+ return null;
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][715]++;
+ var cells = UE.UETable.getUETable(activeMenuCell).selectedTds;
+ _$jscoverage['plugins/table.cmds.js'][717]++;
+ ((! cells.length) && (cells = activeMenuCell));
+ _$jscoverage['plugins/table.cmds.js'][719]++;
+ return UE.UETable.getTableCellAlignState(cells);
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][726]++;
+ UE.commands.tablealignment = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][728]++;
+ if ((browser.ie && (browser.version < 8))) {
+ _$jscoverage['plugins/table.cmds.js'][729]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][731]++;
+ return (getTableItemsByRange(this).table? 0: -1);
+}), execCommand: (function (cmd, value) {
+ _$jscoverage['plugins/table.cmds.js'][734]++;
+ var me = this, start = me.selection.getStart(), table = (start && domUtils.findParentByTagName(start, ["table"], true));
+ _$jscoverage['plugins/table.cmds.js'][738]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][739]++;
+ table.setAttribute("align", value);
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][745]++;
+ UE.commands.edittable = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][747]++;
+ return (getTableItemsByRange(this).table? 0: -1);
+}), execCommand: (function (cmd, color) {
+ _$jscoverage['plugins/table.cmds.js'][750]++;
+ var rng = this.selection.getRange(), table = domUtils.findParentByTagName(rng.startContainer, "table");
+ _$jscoverage['plugins/table.cmds.js'][752]++;
+ if (table) {
+ _$jscoverage['plugins/table.cmds.js'][753]++;
+ var arr = domUtils.getElementsByTagName(table, "td").concat(domUtils.getElementsByTagName(table, "th"), domUtils.getElementsByTagName(table, "caption"));
+ _$jscoverage['plugins/table.cmds.js'][757]++;
+ utils.each(arr, (function (node) {
+ _$jscoverage['plugins/table.cmds.js'][758]++;
+ node.style.borderColor = color;
+}));
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][764]++;
+ UE.commands.edittd = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][766]++;
+ return (getTableItemsByRange(this).table? 0: -1);
+}), execCommand: (function (cmd, bkColor) {
+ _$jscoverage['plugins/table.cmds.js'][769]++;
+ var me = this, ut = getUETableBySelected(me);
+ _$jscoverage['plugins/table.cmds.js'][772]++;
+ if ((! ut)) {
+ _$jscoverage['plugins/table.cmds.js'][773]++;
+ var start = me.selection.getStart(), cell = (start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true));
+ _$jscoverage['plugins/table.cmds.js'][775]++;
+ if (cell) {
+ _$jscoverage['plugins/table.cmds.js'][776]++;
+ cell.style.backgroundColor = bkColor;
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][779]++;
+ utils.each(ut.selectedTds, (function (cell) {
+ _$jscoverage['plugins/table.cmds.js'][780]++;
+ cell.style.backgroundColor = bkColor;
+}));
+ }
+})};
+ _$jscoverage['plugins/table.cmds.js'][785]++;
+ UE.commands.sorttable = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][787]++;
+ var me = this, tableItems = getTableItemsByRange(me);
+ _$jscoverage['plugins/table.cmds.js'][789]++;
+ if ((! tableItems.cell)) {
+ _$jscoverage['plugins/table.cmds.js'][789]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][790]++;
+ var table = tableItems.table, cells = table.getElementsByTagName("td");
+ _$jscoverage['plugins/table.cmds.js'][792]++;
+ for (var i = 0, cell; (cell = cells[(i++)]);) {
+ _$jscoverage['plugins/table.cmds.js'][793]++;
+ if (((cell.rowSpan != 1) || (cell.colSpan != 1))) {
+ _$jscoverage['plugins/table.cmds.js'][793]++;
+ return -1;
+ }
+}
+ _$jscoverage['plugins/table.cmds.js'][795]++;
+ return 0;
+}), execCommand: (function (cmd, fn) {
+ _$jscoverage['plugins/table.cmds.js'][798]++;
+ var me = this, range = me.selection.getRange(), bk = range.createBookmark(true), tableItems = getTableItemsByRange(me), cell = tableItems.cell, ut = getUETable(tableItems.table), cellInfo = ut.getCellInfo(cell);
+ _$jscoverage['plugins/table.cmds.js'][805]++;
+ ut.sortTable(cellInfo.cellIndex, fn);
+ _$jscoverage['plugins/table.cmds.js'][806]++;
+ range.moveToBookmark(bk).select();
+})};
+ _$jscoverage['plugins/table.cmds.js'][810]++;
+ UE.commands.enablesort = (UE.commands.disablesort = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][812]++;
+ return (getTableItemsByRange(this).table? 0: -1);
+}), execCommand: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][815]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][816]++;
+ table.setAttribute("data-sort", ((cmd == "enablesort")? "sortEnabled": "sortDisabled"));
+})});
+ _$jscoverage['plugins/table.cmds.js'][819]++;
+ UE.commands.settablebackground = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][821]++;
+ return ((getSelectedArr(this).length > 1)? 0: -1);
+}), execCommand: (function (cmd, value) {
+ _$jscoverage['plugins/table.cmds.js'][824]++;
+ var table, cells, ut;
+ _$jscoverage['plugins/table.cmds.js'][825]++;
+ cells = getSelectedArr(this);
+ _$jscoverage['plugins/table.cmds.js'][826]++;
+ ut = getUETable(cells[0]);
+ _$jscoverage['plugins/table.cmds.js'][827]++;
+ ut.setBackground(cells, value);
+})};
+ _$jscoverage['plugins/table.cmds.js'][831]++;
+ UE.commands.cleartablebackground = {queryCommandState: (function () {
+ _$jscoverage['plugins/table.cmds.js'][833]++;
+ var cells = getSelectedArr(this);
+ _$jscoverage['plugins/table.cmds.js'][834]++;
+ if ((! cells.length)) {
+ _$jscoverage['plugins/table.cmds.js'][834]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][835]++;
+ for (var i = 0, cell; (cell = cells[(i++)]);) {
+ _$jscoverage['plugins/table.cmds.js'][836]++;
+ if ((cell.style.backgroundColor !== "")) {
+ _$jscoverage['plugins/table.cmds.js'][836]++;
+ return 0;
+ }
+}
+ _$jscoverage['plugins/table.cmds.js'][838]++;
+ return -1;
+}), execCommand: (function () {
+ _$jscoverage['plugins/table.cmds.js'][841]++;
+ var cells = getSelectedArr(this), ut = getUETable(cells[0]);
+ _$jscoverage['plugins/table.cmds.js'][843]++;
+ ut.removeBackground(cells);
+})};
+ _$jscoverage['plugins/table.cmds.js'][847]++;
+ UE.commands.interlacetable = (UE.commands.uninterlacetable = {queryCommandState: (function (cmd) {
+ _$jscoverage['plugins/table.cmds.js'][849]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][850]++;
+ if ((! table)) {
+ _$jscoverage['plugins/table.cmds.js'][850]++;
+ return -1;
+ }
+ _$jscoverage['plugins/table.cmds.js'][851]++;
+ var interlaced = table.getAttribute("interlaced");
+ _$jscoverage['plugins/table.cmds.js'][852]++;
+ if ((cmd == "interlacetable")) {
+ _$jscoverage['plugins/table.cmds.js'][855]++;
+ return ((interlaced === "enabled")? -1: 0);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][857]++;
+ return (((! interlaced) || (interlaced === "disabled"))? -1: 0);
+ }
+}), execCommand: (function (cmd, classList) {
+ _$jscoverage['plugins/table.cmds.js'][861]++;
+ var table = getTableItemsByRange(this).table;
+ _$jscoverage['plugins/table.cmds.js'][862]++;
+ if ((cmd == "interlacetable")) {
+ _$jscoverage['plugins/table.cmds.js'][863]++;
+ table.setAttribute("interlaced", "enabled");
+ _$jscoverage['plugins/table.cmds.js'][864]++;
+ this.fireEvent("interlacetable", table, classList);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][866]++;
+ table.setAttribute("interlaced", "disabled");
+ _$jscoverage['plugins/table.cmds.js'][867]++;
+ this.fireEvent("uninterlacetable", table);
+ }
+})});
+ _$jscoverage['plugins/table.cmds.js'][872]++;
+ function resetTdWidth(table, editor) {
+ _$jscoverage['plugins/table.cmds.js'][873]++;
+ var tds = table.getElementsByTagName("td");
+ _$jscoverage['plugins/table.cmds.js'][874]++;
+ utils.each(tds, (function (td) {
+ _$jscoverage['plugins/table.cmds.js'][875]++;
+ td.removeAttribute("width");
+}));
+ _$jscoverage['plugins/table.cmds.js'][877]++;
+ table.setAttribute("width", getTableWidth(editor, true, getDefaultValue(editor, table)));
+ _$jscoverage['plugins/table.cmds.js'][878]++;
+ setTimeout((function () {
+ _$jscoverage['plugins/table.cmds.js'][879]++;
+ utils.each(tds, (function (td) {
+ _$jscoverage['plugins/table.cmds.js'][880]++;
+ ((td.colSpan == 1) && td.setAttribute("width", (td.offsetWidth + "")));
+}));
+}), 0);
+}
+ _$jscoverage['plugins/table.cmds.js'][885]++;
+ function getTableWidth(editor, needIEHack, defaultValue) {
+ _$jscoverage['plugins/table.cmds.js'][886]++;
+ var body = editor.body;
+ _$jscoverage['plugins/table.cmds.js'][887]++;
+ return (body.offsetWidth - (needIEHack? (parseInt(domUtils.getComputedStyle(body, "margin-left"), 10) * 2): 0) - (defaultValue.tableBorder * 2) - (editor.options.offsetWidth || 0));
+}
+ _$jscoverage['plugins/table.cmds.js'][890]++;
+ function getSelectedArr(editor) {
+ _$jscoverage['plugins/table.cmds.js'][891]++;
+ var cell = getTableItemsByRange(editor).cell;
+ _$jscoverage['plugins/table.cmds.js'][892]++;
+ if (cell) {
+ _$jscoverage['plugins/table.cmds.js'][893]++;
+ var ut = getUETable(cell);
+ _$jscoverage['plugins/table.cmds.js'][894]++;
+ return (ut.selectedTds.length? ut.selectedTds: [cell]);
+ }
+ else {
+ _$jscoverage['plugins/table.cmds.js'][896]++;
+ return [];
+ }
+}
+})();
diff --git a/_test/coverage/plugins/table.core.js b/_test/coverage/plugins/table.core.js
new file mode 100644
index 000000000..1b675a02d
--- /dev/null
+++ b/_test/coverage/plugins/table.core.js
@@ -0,0 +1,2011 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/table.core.js']) {
+ _$jscoverage['plugins/table.core.js'] = [];
+ _$jscoverage['plugins/table.core.js'][13] = 0;
+ _$jscoverage['plugins/table.core.js'][14] = 0;
+ _$jscoverage['plugins/table.core.js'][15] = 0;
+ _$jscoverage['plugins/table.core.js'][16] = 0;
+ _$jscoverage['plugins/table.core.js'][17] = 0;
+ _$jscoverage['plugins/table.core.js'][18] = 0;
+ _$jscoverage['plugins/table.core.js'][19] = 0;
+ _$jscoverage['plugins/table.core.js'][23] = 0;
+ _$jscoverage['plugins/table.core.js'][24] = 0;
+ _$jscoverage['plugins/table.core.js'][25] = 0;
+ _$jscoverage['plugins/table.core.js'][28] = 0;
+ _$jscoverage['plugins/table.core.js'][29] = 0;
+ _$jscoverage['plugins/table.core.js'][30] = 0;
+ _$jscoverage['plugins/table.core.js'][33] = 0;
+ _$jscoverage['plugins/table.core.js'][34] = 0;
+ _$jscoverage['plugins/table.core.js'][35] = 0;
+ _$jscoverage['plugins/table.core.js'][36] = 0;
+ _$jscoverage['plugins/table.core.js'][38] = 0;
+ _$jscoverage['plugins/table.core.js'][39] = 0;
+ _$jscoverage['plugins/table.core.js'][40] = 0;
+ _$jscoverage['plugins/table.core.js'][43] = 0;
+ _$jscoverage['plugins/table.core.js'][45] = 0;
+ _$jscoverage['plugins/table.core.js'][46] = 0;
+ _$jscoverage['plugins/table.core.js'][47] = 0;
+ _$jscoverage['plugins/table.core.js'][56] = 0;
+ _$jscoverage['plugins/table.core.js'][58] = 0;
+ _$jscoverage['plugins/table.core.js'][60] = 0;
+ _$jscoverage['plugins/table.core.js'][65] = 0;
+ _$jscoverage['plugins/table.core.js'][67] = 0;
+ _$jscoverage['plugins/table.core.js'][69] = 0;
+ _$jscoverage['plugins/table.core.js'][71] = 0;
+ _$jscoverage['plugins/table.core.js'][72] = 0;
+ _$jscoverage['plugins/table.core.js'][73] = 0;
+ _$jscoverage['plugins/table.core.js'][74] = 0;
+ _$jscoverage['plugins/table.core.js'][75] = 0;
+ _$jscoverage['plugins/table.core.js'][80] = 0;
+ _$jscoverage['plugins/table.core.js'][84] = 0;
+ _$jscoverage['plugins/table.core.js'][92] = 0;
+ _$jscoverage['plugins/table.core.js'][93] = 0;
+ _$jscoverage['plugins/table.core.js'][96] = 0;
+ _$jscoverage['plugins/table.core.js'][97] = 0;
+ _$jscoverage['plugins/table.core.js'][101] = 0;
+ _$jscoverage['plugins/table.core.js'][106] = 0;
+ _$jscoverage['plugins/table.core.js'][113] = 0;
+ _$jscoverage['plugins/table.core.js'][114] = 0;
+ _$jscoverage['plugins/table.core.js'][115] = 0;
+ _$jscoverage['plugins/table.core.js'][116] = 0;
+ _$jscoverage['plugins/table.core.js'][118] = 0;
+ _$jscoverage['plugins/table.core.js'][121] = 0;
+ _$jscoverage['plugins/table.core.js'][122] = 0;
+ _$jscoverage['plugins/table.core.js'][128] = 0;
+ _$jscoverage['plugins/table.core.js'][129] = 0;
+ _$jscoverage['plugins/table.core.js'][130] = 0;
+ _$jscoverage['plugins/table.core.js'][131] = 0;
+ _$jscoverage['plugins/table.core.js'][132] = 0;
+ _$jscoverage['plugins/table.core.js'][133] = 0;
+ _$jscoverage['plugins/table.core.js'][134] = 0;
+ _$jscoverage['plugins/table.core.js'][135] = 0;
+ _$jscoverage['plugins/table.core.js'][136] = 0;
+ _$jscoverage['plugins/table.core.js'][137] = 0;
+ _$jscoverage['plugins/table.core.js'][138] = 0;
+ _$jscoverage['plugins/table.core.js'][139] = 0;
+ _$jscoverage['plugins/table.core.js'][140] = 0;
+ _$jscoverage['plugins/table.core.js'][146] = 0;
+ _$jscoverage['plugins/table.core.js'][147] = 0;
+ _$jscoverage['plugins/table.core.js'][148] = 0;
+ _$jscoverage['plugins/table.core.js'][149] = 0;
+ _$jscoverage['plugins/table.core.js'][150] = 0;
+ _$jscoverage['plugins/table.core.js'][151] = 0;
+ _$jscoverage['plugins/table.core.js'][152] = 0;
+ _$jscoverage['plugins/table.core.js'][153] = 0;
+ _$jscoverage['plugins/table.core.js'][164] = 0;
+ _$jscoverage['plugins/table.core.js'][165] = 0;
+ _$jscoverage['plugins/table.core.js'][166] = 0;
+ _$jscoverage['plugins/table.core.js'][167] = 0;
+ _$jscoverage['plugins/table.core.js'][168] = 0;
+ _$jscoverage['plugins/table.core.js'][170] = 0;
+ _$jscoverage['plugins/table.core.js'][173] = 0;
+ _$jscoverage['plugins/table.core.js'][174] = 0;
+ _$jscoverage['plugins/table.core.js'][175] = 0;
+ _$jscoverage['plugins/table.core.js'][177] = 0;
+ _$jscoverage['plugins/table.core.js'][178] = 0;
+ _$jscoverage['plugins/table.core.js'][179] = 0;
+ _$jscoverage['plugins/table.core.js'][180] = 0;
+ _$jscoverage['plugins/table.core.js'][181] = 0;
+ _$jscoverage['plugins/table.core.js'][184] = 0;
+ _$jscoverage['plugins/table.core.js'][185] = 0;
+ _$jscoverage['plugins/table.core.js'][187] = 0;
+ _$jscoverage['plugins/table.core.js'][188] = 0;
+ _$jscoverage['plugins/table.core.js'][189] = 0;
+ _$jscoverage['plugins/table.core.js'][190] = 0;
+ _$jscoverage['plugins/table.core.js'][191] = 0;
+ _$jscoverage['plugins/table.core.js'][192] = 0;
+ _$jscoverage['plugins/table.core.js'][193] = 0;
+ _$jscoverage['plugins/table.core.js'][194] = 0;
+ _$jscoverage['plugins/table.core.js'][197] = 0;
+ _$jscoverage['plugins/table.core.js'][199] = 0;
+ _$jscoverage['plugins/table.core.js'][200] = 0;
+ _$jscoverage['plugins/table.core.js'][201] = 0;
+ _$jscoverage['plugins/table.core.js'][202] = 0;
+ _$jscoverage['plugins/table.core.js'][203] = 0;
+ _$jscoverage['plugins/table.core.js'][205] = 0;
+ _$jscoverage['plugins/table.core.js'][207] = 0;
+ _$jscoverage['plugins/table.core.js'][213] = 0;
+ _$jscoverage['plugins/table.core.js'][214] = 0;
+ _$jscoverage['plugins/table.core.js'][215] = 0;
+ _$jscoverage['plugins/table.core.js'][216] = 0;
+ _$jscoverage['plugins/table.core.js'][217] = 0;
+ _$jscoverage['plugins/table.core.js'][218] = 0;
+ _$jscoverage['plugins/table.core.js'][219] = 0;
+ _$jscoverage['plugins/table.core.js'][220] = 0;
+ _$jscoverage['plugins/table.core.js'][221] = 0;
+ _$jscoverage['plugins/table.core.js'][223] = 0;
+ _$jscoverage['plugins/table.core.js'][229] = 0;
+ _$jscoverage['plugins/table.core.js'][230] = 0;
+ _$jscoverage['plugins/table.core.js'][232] = 0;
+ _$jscoverage['plugins/table.core.js'][243] = 0;
+ _$jscoverage['plugins/table.core.js'][244] = 0;
+ _$jscoverage['plugins/table.core.js'][246] = 0;
+ _$jscoverage['plugins/table.core.js'][249] = 0;
+ _$jscoverage['plugins/table.core.js'][251] = 0;
+ _$jscoverage['plugins/table.core.js'][252] = 0;
+ _$jscoverage['plugins/table.core.js'][254] = 0;
+ _$jscoverage['plugins/table.core.js'][256] = 0;
+ _$jscoverage['plugins/table.core.js'][260] = 0;
+ _$jscoverage['plugins/table.core.js'][264] = 0;
+ _$jscoverage['plugins/table.core.js'][265] = 0;
+ _$jscoverage['plugins/table.core.js'][267] = 0;
+ _$jscoverage['plugins/table.core.js'][268] = 0;
+ _$jscoverage['plugins/table.core.js'][269] = 0;
+ _$jscoverage['plugins/table.core.js'][270] = 0;
+ _$jscoverage['plugins/table.core.js'][274] = 0;
+ _$jscoverage['plugins/table.core.js'][283] = 0;
+ _$jscoverage['plugins/table.core.js'][284] = 0;
+ _$jscoverage['plugins/table.core.js'][286] = 0;
+ _$jscoverage['plugins/table.core.js'][289] = 0;
+ _$jscoverage['plugins/table.core.js'][291] = 0;
+ _$jscoverage['plugins/table.core.js'][293] = 0;
+ _$jscoverage['plugins/table.core.js'][294] = 0;
+ _$jscoverage['plugins/table.core.js'][296] = 0;
+ _$jscoverage['plugins/table.core.js'][303] = 0;
+ _$jscoverage['plugins/table.core.js'][304] = 0;
+ _$jscoverage['plugins/table.core.js'][308] = 0;
+ _$jscoverage['plugins/table.core.js'][309] = 0;
+ _$jscoverage['plugins/table.core.js'][310] = 0;
+ _$jscoverage['plugins/table.core.js'][311] = 0;
+ _$jscoverage['plugins/table.core.js'][313] = 0;
+ _$jscoverage['plugins/table.core.js'][314] = 0;
+ _$jscoverage['plugins/table.core.js'][317] = 0;
+ _$jscoverage['plugins/table.core.js'][318] = 0;
+ _$jscoverage['plugins/table.core.js'][320] = 0;
+ _$jscoverage['plugins/table.core.js'][324] = 0;
+ _$jscoverage['plugins/table.core.js'][326] = 0;
+ _$jscoverage['plugins/table.core.js'][330] = 0;
+ _$jscoverage['plugins/table.core.js'][337] = 0;
+ _$jscoverage['plugins/table.core.js'][338] = 0;
+ _$jscoverage['plugins/table.core.js'][340] = 0;
+ _$jscoverage['plugins/table.core.js'][341] = 0;
+ _$jscoverage['plugins/table.core.js'][342] = 0;
+ _$jscoverage['plugins/table.core.js'][343] = 0;
+ _$jscoverage['plugins/table.core.js'][344] = 0;
+ _$jscoverage['plugins/table.core.js'][345] = 0;
+ _$jscoverage['plugins/table.core.js'][346] = 0;
+ _$jscoverage['plugins/table.core.js'][347] = 0;
+ _$jscoverage['plugins/table.core.js'][351] = 0;
+ _$jscoverage['plugins/table.core.js'][353] = 0;
+ _$jscoverage['plugins/table.core.js'][360] = 0;
+ _$jscoverage['plugins/table.core.js'][361] = 0;
+ _$jscoverage['plugins/table.core.js'][362] = 0;
+ _$jscoverage['plugins/table.core.js'][363] = 0;
+ _$jscoverage['plugins/table.core.js'][364] = 0;
+ _$jscoverage['plugins/table.core.js'][368] = 0;
+ _$jscoverage['plugins/table.core.js'][369] = 0;
+ _$jscoverage['plugins/table.core.js'][371] = 0;
+ _$jscoverage['plugins/table.core.js'][372] = 0;
+ _$jscoverage['plugins/table.core.js'][373] = 0;
+ _$jscoverage['plugins/table.core.js'][374] = 0;
+ _$jscoverage['plugins/table.core.js'][377] = 0;
+ _$jscoverage['plugins/table.core.js'][378] = 0;
+ _$jscoverage['plugins/table.core.js'][380] = 0;
+ _$jscoverage['plugins/table.core.js'][381] = 0;
+ _$jscoverage['plugins/table.core.js'][383] = 0;
+ _$jscoverage['plugins/table.core.js'][387] = 0;
+ _$jscoverage['plugins/table.core.js'][388] = 0;
+ _$jscoverage['plugins/table.core.js'][389] = 0;
+ _$jscoverage['plugins/table.core.js'][390] = 0;
+ _$jscoverage['plugins/table.core.js'][402] = 0;
+ _$jscoverage['plugins/table.core.js'][403] = 0;
+ _$jscoverage['plugins/table.core.js'][404] = 0;
+ _$jscoverage['plugins/table.core.js'][405] = 0;
+ _$jscoverage['plugins/table.core.js'][406] = 0;
+ _$jscoverage['plugins/table.core.js'][407] = 0;
+ _$jscoverage['plugins/table.core.js'][408] = 0;
+ _$jscoverage['plugins/table.core.js'][409] = 0;
+ _$jscoverage['plugins/table.core.js'][410] = 0;
+ _$jscoverage['plugins/table.core.js'][411] = 0;
+ _$jscoverage['plugins/table.core.js'][412] = 0;
+ _$jscoverage['plugins/table.core.js'][423] = 0;
+ _$jscoverage['plugins/table.core.js'][425] = 0;
+ _$jscoverage['plugins/table.core.js'][426] = 0;
+ _$jscoverage['plugins/table.core.js'][427] = 0;
+ _$jscoverage['plugins/table.core.js'][430] = 0;
+ _$jscoverage['plugins/table.core.js'][431] = 0;
+ _$jscoverage['plugins/table.core.js'][435] = 0;
+ _$jscoverage['plugins/table.core.js'][436] = 0;
+ _$jscoverage['plugins/table.core.js'][449] = 0;
+ _$jscoverage['plugins/table.core.js'][450] = 0;
+ _$jscoverage['plugins/table.core.js'][454] = 0;
+ _$jscoverage['plugins/table.core.js'][455] = 0;
+ _$jscoverage['plugins/table.core.js'][456] = 0;
+ _$jscoverage['plugins/table.core.js'][457] = 0;
+ _$jscoverage['plugins/table.core.js'][465] = 0;
+ _$jscoverage['plugins/table.core.js'][471] = 0;
+ _$jscoverage['plugins/table.core.js'][472] = 0;
+ _$jscoverage['plugins/table.core.js'][473] = 0;
+ _$jscoverage['plugins/table.core.js'][479] = 0;
+ _$jscoverage['plugins/table.core.js'][480] = 0;
+ _$jscoverage['plugins/table.core.js'][486] = 0;
+ _$jscoverage['plugins/table.core.js'][487] = 0;
+ _$jscoverage['plugins/table.core.js'][488] = 0;
+ _$jscoverage['plugins/table.core.js'][489] = 0;
+ _$jscoverage['plugins/table.core.js'][490] = 0;
+ _$jscoverage['plugins/table.core.js'][491] = 0;
+ _$jscoverage['plugins/table.core.js'][496] = 0;
+ _$jscoverage['plugins/table.core.js'][497] = 0;
+ _$jscoverage['plugins/table.core.js'][498] = 0;
+ _$jscoverage['plugins/table.core.js'][499] = 0;
+ _$jscoverage['plugins/table.core.js'][500] = 0;
+ _$jscoverage['plugins/table.core.js'][501] = 0;
+ _$jscoverage['plugins/table.core.js'][506] = 0;
+ _$jscoverage['plugins/table.core.js'][507] = 0;
+ _$jscoverage['plugins/table.core.js'][508] = 0;
+ _$jscoverage['plugins/table.core.js'][509] = 0;
+ _$jscoverage['plugins/table.core.js'][510] = 0;
+ _$jscoverage['plugins/table.core.js'][511] = 0;
+ _$jscoverage['plugins/table.core.js'][516] = 0;
+ _$jscoverage['plugins/table.core.js'][517] = 0;
+ _$jscoverage['plugins/table.core.js'][518] = 0;
+ _$jscoverage['plugins/table.core.js'][519] = 0;
+ _$jscoverage['plugins/table.core.js'][520] = 0;
+ _$jscoverage['plugins/table.core.js'][521] = 0;
+ _$jscoverage['plugins/table.core.js'][526] = 0;
+ _$jscoverage['plugins/table.core.js'][527] = 0;
+ _$jscoverage['plugins/table.core.js'][530] = 0;
+ _$jscoverage['plugins/table.core.js'][539] = 0;
+ _$jscoverage['plugins/table.core.js'][540] = 0;
+ _$jscoverage['plugins/table.core.js'][542] = 0;
+ _$jscoverage['plugins/table.core.js'][543] = 0;
+ _$jscoverage['plugins/table.core.js'][550] = 0;
+ _$jscoverage['plugins/table.core.js'][552] = 0;
+ _$jscoverage['plugins/table.core.js'][557] = 0;
+ _$jscoverage['plugins/table.core.js'][567] = 0;
+ _$jscoverage['plugins/table.core.js'][568] = 0;
+ _$jscoverage['plugins/table.core.js'][573] = 0;
+ _$jscoverage['plugins/table.core.js'][574] = 0;
+ _$jscoverage['plugins/table.core.js'][575] = 0;
+ _$jscoverage['plugins/table.core.js'][576] = 0;
+ _$jscoverage['plugins/table.core.js'][577] = 0;
+ _$jscoverage['plugins/table.core.js'][579] = 0;
+ _$jscoverage['plugins/table.core.js'][580] = 0;
+ _$jscoverage['plugins/table.core.js'][581] = 0;
+ _$jscoverage['plugins/table.core.js'][582] = 0;
+ _$jscoverage['plugins/table.core.js'][583] = 0;
+ _$jscoverage['plugins/table.core.js'][585] = 0;
+ _$jscoverage['plugins/table.core.js'][588] = 0;
+ _$jscoverage['plugins/table.core.js'][594] = 0;
+ _$jscoverage['plugins/table.core.js'][595] = 0;
+ _$jscoverage['plugins/table.core.js'][596] = 0;
+ _$jscoverage['plugins/table.core.js'][602] = 0;
+ _$jscoverage['plugins/table.core.js'][603] = 0;
+ _$jscoverage['plugins/table.core.js'][604] = 0;
+ _$jscoverage['plugins/table.core.js'][605] = 0;
+ _$jscoverage['plugins/table.core.js'][608] = 0;
+ _$jscoverage['plugins/table.core.js'][609] = 0;
+ _$jscoverage['plugins/table.core.js'][612] = 0;
+ _$jscoverage['plugins/table.core.js'][616] = 0;
+ _$jscoverage['plugins/table.core.js'][625] = 0;
+ _$jscoverage['plugins/table.core.js'][626] = 0;
+ _$jscoverage['plugins/table.core.js'][628] = 0;
+ _$jscoverage['plugins/table.core.js'][631] = 0;
+ _$jscoverage['plugins/table.core.js'][633] = 0;
+ _$jscoverage['plugins/table.core.js'][635] = 0;
+ _$jscoverage['plugins/table.core.js'][636] = 0;
+ _$jscoverage['plugins/table.core.js'][638] = 0;
+ _$jscoverage['plugins/table.core.js'][642] = 0;
+ _$jscoverage['plugins/table.core.js'][643] = 0;
+ _$jscoverage['plugins/table.core.js'][645] = 0;
+ _$jscoverage['plugins/table.core.js'][648] = 0;
+ _$jscoverage['plugins/table.core.js'][650] = 0;
+ _$jscoverage['plugins/table.core.js'][652] = 0;
+ _$jscoverage['plugins/table.core.js'][654] = 0;
+ _$jscoverage['plugins/table.core.js'][656] = 0;
+ _$jscoverage['plugins/table.core.js'][663] = 0;
+ _$jscoverage['plugins/table.core.js'][664] = 0;
+ _$jscoverage['plugins/table.core.js'][665] = 0;
+ _$jscoverage['plugins/table.core.js'][666] = 0;
+ _$jscoverage['plugins/table.core.js'][668] = 0;
+ _$jscoverage['plugins/table.core.js'][669] = 0;
+ _$jscoverage['plugins/table.core.js'][670] = 0;
+ _$jscoverage['plugins/table.core.js'][672] = 0;
+ _$jscoverage['plugins/table.core.js'][673] = 0;
+ _$jscoverage['plugins/table.core.js'][680] = 0;
+ _$jscoverage['plugins/table.core.js'][685] = 0;
+ _$jscoverage['plugins/table.core.js'][687] = 0;
+ _$jscoverage['plugins/table.core.js'][689] = 0;
+ _$jscoverage['plugins/table.core.js'][691] = 0;
+ _$jscoverage['plugins/table.core.js'][692] = 0;
+ _$jscoverage['plugins/table.core.js'][698] = 0;
+ _$jscoverage['plugins/table.core.js'][702] = 0;
+ _$jscoverage['plugins/table.core.js'][703] = 0;
+ _$jscoverage['plugins/table.core.js'][704] = 0;
+ _$jscoverage['plugins/table.core.js'][705] = 0;
+ _$jscoverage['plugins/table.core.js'][706] = 0;
+ _$jscoverage['plugins/table.core.js'][713] = 0;
+ _$jscoverage['plugins/table.core.js'][716] = 0;
+ _$jscoverage['plugins/table.core.js'][717] = 0;
+ _$jscoverage['plugins/table.core.js'][719] = 0;
+ _$jscoverage['plugins/table.core.js'][720] = 0;
+ _$jscoverage['plugins/table.core.js'][724] = 0;
+ _$jscoverage['plugins/table.core.js'][725] = 0;
+ _$jscoverage['plugins/table.core.js'][726] = 0;
+ _$jscoverage['plugins/table.core.js'][727] = 0;
+ _$jscoverage['plugins/table.core.js'][728] = 0;
+ _$jscoverage['plugins/table.core.js'][732] = 0;
+ _$jscoverage['plugins/table.core.js'][733] = 0;
+ _$jscoverage['plugins/table.core.js'][734] = 0;
+ _$jscoverage['plugins/table.core.js'][735] = 0;
+ _$jscoverage['plugins/table.core.js'][736] = 0;
+ _$jscoverage['plugins/table.core.js'][737] = 0;
+ _$jscoverage['plugins/table.core.js'][740] = 0;
+ _$jscoverage['plugins/table.core.js'][741] = 0;
+ _$jscoverage['plugins/table.core.js'][743] = 0;
+ _$jscoverage['plugins/table.core.js'][744] = 0;
+ _$jscoverage['plugins/table.core.js'][745] = 0;
+ _$jscoverage['plugins/table.core.js'][748] = 0;
+ _$jscoverage['plugins/table.core.js'][749] = 0;
+ _$jscoverage['plugins/table.core.js'][750] = 0;
+ _$jscoverage['plugins/table.core.js'][753] = 0;
+ _$jscoverage['plugins/table.core.js'][755] = 0;
+ _$jscoverage['plugins/table.core.js'][761] = 0;
+ _$jscoverage['plugins/table.core.js'][766] = 0;
+ _$jscoverage['plugins/table.core.js'][767] = 0;
+ _$jscoverage['plugins/table.core.js'][768] = 0;
+ _$jscoverage['plugins/table.core.js'][769] = 0;
+ _$jscoverage['plugins/table.core.js'][770] = 0;
+ _$jscoverage['plugins/table.core.js'][771] = 0;
+ _$jscoverage['plugins/table.core.js'][774] = 0;
+ _$jscoverage['plugins/table.core.js'][776] = 0;
+ _$jscoverage['plugins/table.core.js'][777] = 0;
+ _$jscoverage['plugins/table.core.js'][779] = 0;
+ _$jscoverage['plugins/table.core.js'][780] = 0;
+ _$jscoverage['plugins/table.core.js'][781] = 0;
+ _$jscoverage['plugins/table.core.js'][783] = 0;
+ _$jscoverage['plugins/table.core.js'][784] = 0;
+ _$jscoverage['plugins/table.core.js'][785] = 0;
+ _$jscoverage['plugins/table.core.js'][790] = 0;
+ _$jscoverage['plugins/table.core.js'][791] = 0;
+ _$jscoverage['plugins/table.core.js'][798] = 0;
+ _$jscoverage['plugins/table.core.js'][802] = 0;
+ _$jscoverage['plugins/table.core.js'][803] = 0;
+ _$jscoverage['plugins/table.core.js'][805] = 0;
+ _$jscoverage['plugins/table.core.js'][806] = 0;
+ _$jscoverage['plugins/table.core.js'][807] = 0;
+ _$jscoverage['plugins/table.core.js'][808] = 0;
+ _$jscoverage['plugins/table.core.js'][809] = 0;
+ _$jscoverage['plugins/table.core.js'][810] = 0;
+ _$jscoverage['plugins/table.core.js'][811] = 0;
+ _$jscoverage['plugins/table.core.js'][815] = 0;
+ _$jscoverage['plugins/table.core.js'][816] = 0;
+ _$jscoverage['plugins/table.core.js'][818] = 0;
+ _$jscoverage['plugins/table.core.js'][820] = 0;
+ _$jscoverage['plugins/table.core.js'][822] = 0;
+ _$jscoverage['plugins/table.core.js'][826] = 0;
+ _$jscoverage['plugins/table.core.js'][828] = 0;
+ _$jscoverage['plugins/table.core.js'][829] = 0;
+ _$jscoverage['plugins/table.core.js'][830] = 0;
+ _$jscoverage['plugins/table.core.js'][833] = 0;
+ _$jscoverage['plugins/table.core.js'][834] = 0;
+ _$jscoverage['plugins/table.core.js'][835] = 0;
+ _$jscoverage['plugins/table.core.js'][836] = 0;
+ _$jscoverage['plugins/table.core.js'][838] = 0;
+ _$jscoverage['plugins/table.core.js'][839] = 0;
+ _$jscoverage['plugins/table.core.js'][840] = 0;
+ _$jscoverage['plugins/table.core.js'][841] = 0;
+ _$jscoverage['plugins/table.core.js'][843] = 0;
+ _$jscoverage['plugins/table.core.js'][846] = 0;
+ _$jscoverage['plugins/table.core.js'][847] = 0;
+ _$jscoverage['plugins/table.core.js'][849] = 0;
+ _$jscoverage['plugins/table.core.js'][852] = 0;
+ _$jscoverage['plugins/table.core.js'][855] = 0;
+ _$jscoverage['plugins/table.core.js'][860] = 0;
+ _$jscoverage['plugins/table.core.js'][861] = 0;
+ _$jscoverage['plugins/table.core.js'][862] = 0;
+ _$jscoverage['plugins/table.core.js'][863] = 0;
+ _$jscoverage['plugins/table.core.js'][864] = 0;
+ _$jscoverage['plugins/table.core.js'][865] = 0;
+ _$jscoverage['plugins/table.core.js'][866] = 0;
+ _$jscoverage['plugins/table.core.js'][867] = 0;
+ _$jscoverage['plugins/table.core.js'][870] = 0;
+ _$jscoverage['plugins/table.core.js'][871] = 0;
+ _$jscoverage['plugins/table.core.js'][872] = 0;
+ _$jscoverage['plugins/table.core.js'][873] = 0;
+ _$jscoverage['plugins/table.core.js'][874] = 0;
+ _$jscoverage['plugins/table.core.js'][879] = 0;
+ _$jscoverage['plugins/table.core.js'][880] = 0;
+ _$jscoverage['plugins/table.core.js'][881] = 0;
+ _$jscoverage['plugins/table.core.js'][882] = 0;
+ _$jscoverage['plugins/table.core.js'][883] = 0;
+ _$jscoverage['plugins/table.core.js'][884] = 0;
+ _$jscoverage['plugins/table.core.js'][885] = 0;
+ _$jscoverage['plugins/table.core.js'][886] = 0;
+ _$jscoverage['plugins/table.core.js'][887] = 0;
+ _$jscoverage['plugins/table.core.js'][888] = 0;
+ _$jscoverage['plugins/table.core.js'][889] = 0;
+ _$jscoverage['plugins/table.core.js'][891] = 0;
+ _$jscoverage['plugins/table.core.js'][893] = 0;
+ _$jscoverage['plugins/table.core.js'][896] = 0;
+ _$jscoverage['plugins/table.core.js'][897] = 0;
+ _$jscoverage['plugins/table.core.js'][898] = 0;
+ _$jscoverage['plugins/table.core.js'][899] = 0;
+ _$jscoverage['plugins/table.core.js'][900] = 0;
+ _$jscoverage['plugins/table.core.js'][902] = 0;
+ _$jscoverage['plugins/table.core.js'][903] = 0;
+ _$jscoverage['plugins/table.core.js'][905] = 0;
+ _$jscoverage['plugins/table.core.js'][906] = 0;
+ _$jscoverage['plugins/table.core.js'][907] = 0;
+ _$jscoverage['plugins/table.core.js'][908] = 0;
+ _$jscoverage['plugins/table.core.js'][910] = 0;
+ _$jscoverage['plugins/table.core.js'][912] = 0;
+ _$jscoverage['plugins/table.core.js'][916] = 0;
+ _$jscoverage['plugins/table.core.js'][917] = 0;
+ _$jscoverage['plugins/table.core.js'][920] = 0;
+ _$jscoverage['plugins/table.core.js'][922] = 0;
+ _$jscoverage['plugins/table.core.js'][923] = 0;
+ _$jscoverage['plugins/table.core.js'][924] = 0;
+ _$jscoverage['plugins/table.core.js'][926] = 0;
+ _$jscoverage['plugins/table.core.js'][927] = 0;
+ _$jscoverage['plugins/table.core.js'][928] = 0;
+ _$jscoverage['plugins/table.core.js'][932] = 0;
+ _$jscoverage['plugins/table.core.js'][938] = 0;
+ _$jscoverage['plugins/table.core.js'][939] = 0;
+ _$jscoverage['plugins/table.core.js'][943] = 0;
+ _$jscoverage['plugins/table.core.js'][944] = 0;
+ _$jscoverage['plugins/table.core.js'][945] = 0;
+ _$jscoverage['plugins/table.core.js'][946] = 0;
+ _$jscoverage['plugins/table.core.js'][948] = 0;
+ _$jscoverage['plugins/table.core.js'][949] = 0;
+ _$jscoverage['plugins/table.core.js'][951] = 0;
+ _$jscoverage['plugins/table.core.js'][953] = 0;
+ _$jscoverage['plugins/table.core.js'][955] = 0;
+ _$jscoverage['plugins/table.core.js'][956] = 0;
+ _$jscoverage['plugins/table.core.js'][959] = 0;
+ _$jscoverage['plugins/table.core.js'][961] = 0;
+ _$jscoverage['plugins/table.core.js'][962] = 0;
+ _$jscoverage['plugins/table.core.js'][966] = 0;
+ _$jscoverage['plugins/table.core.js'][971] = 0;
+ _$jscoverage['plugins/table.core.js'][972] = 0;
+ _$jscoverage['plugins/table.core.js'][974] = 0;
+ _$jscoverage['plugins/table.core.js'][975] = 0;
+ _$jscoverage['plugins/table.core.js'][976] = 0;
+ _$jscoverage['plugins/table.core.js'][978] = 0;
+ _$jscoverage['plugins/table.core.js'][979] = 0;
+ _$jscoverage['plugins/table.core.js'][980] = 0;
+ _$jscoverage['plugins/table.core.js'][981] = 0;
+ _$jscoverage['plugins/table.core.js'][982] = 0;
+ _$jscoverage['plugins/table.core.js'][983] = 0;
+ _$jscoverage['plugins/table.core.js'][985] = 0;
+ _$jscoverage['plugins/table.core.js'][987] = 0;
+ _$jscoverage['plugins/table.core.js'][988] = 0;
+ _$jscoverage['plugins/table.core.js'][991] = 0;
+ _$jscoverage['plugins/table.core.js'][993] = 0;
+ _$jscoverage['plugins/table.core.js'][994] = 0;
+ _$jscoverage['plugins/table.core.js'][996] = 0;
+ _$jscoverage['plugins/table.core.js'][997] = 0;
+ _$jscoverage['plugins/table.core.js'][999] = 0;
+ _$jscoverage['plugins/table.core.js'][1002] = 0;
+ _$jscoverage['plugins/table.core.js'][1009] = 0;
+ _$jscoverage['plugins/table.core.js'][1010] = 0;
+ _$jscoverage['plugins/table.core.js'][1011] = 0;
+ _$jscoverage['plugins/table.core.js'][1013] = 0;
+ _$jscoverage['plugins/table.core.js'][1014] = 0;
+ _$jscoverage['plugins/table.core.js'][1015] = 0;
+ _$jscoverage['plugins/table.core.js'][1017] = 0;
+ _$jscoverage['plugins/table.core.js'][1018] = 0;
+ _$jscoverage['plugins/table.core.js'][1019] = 0;
+ _$jscoverage['plugins/table.core.js'][1020] = 0;
+ _$jscoverage['plugins/table.core.js'][1021] = 0;
+ _$jscoverage['plugins/table.core.js'][1022] = 0;
+ _$jscoverage['plugins/table.core.js'][1023] = 0;
+ _$jscoverage['plugins/table.core.js'][1026] = 0;
+ _$jscoverage['plugins/table.core.js'][1027] = 0;
+ _$jscoverage['plugins/table.core.js'][1028] = 0;
+ _$jscoverage['plugins/table.core.js'][1029] = 0;
+ _$jscoverage['plugins/table.core.js'][1030] = 0;
+ _$jscoverage['plugins/table.core.js'][1031] = 0;
+ _$jscoverage['plugins/table.core.js'][1032] = 0;
+ _$jscoverage['plugins/table.core.js'][1034] = 0;
+ _$jscoverage['plugins/table.core.js'][1036] = 0;
+ _$jscoverage['plugins/table.core.js'][1037] = 0;
+ _$jscoverage['plugins/table.core.js'][1040] = 0;
+ _$jscoverage['plugins/table.core.js'][1041] = 0;
+ _$jscoverage['plugins/table.core.js'][1042] = 0;
+ _$jscoverage['plugins/table.core.js'][1043] = 0;
+ _$jscoverage['plugins/table.core.js'][1047] = 0;
+ _$jscoverage['plugins/table.core.js'][1048] = 0;
+ _$jscoverage['plugins/table.core.js'][1049] = 0;
+ _$jscoverage['plugins/table.core.js'][1052] = 0;
+ _$jscoverage['plugins/table.core.js'][1053] = 0;
+ _$jscoverage['plugins/table.core.js'][1054] = 0;
+ _$jscoverage['plugins/table.core.js'][1056] = 0;
+ _$jscoverage['plugins/table.core.js'][1057] = 0;
+ _$jscoverage['plugins/table.core.js'][1058] = 0;
+ _$jscoverage['plugins/table.core.js'][1059] = 0;
+ _$jscoverage['plugins/table.core.js'][1060] = 0;
+ _$jscoverage['plugins/table.core.js'][1063] = 0;
+ _$jscoverage['plugins/table.core.js'][1067] = 0;
+ _$jscoverage['plugins/table.core.js'][1071] = 0;
+ _$jscoverage['plugins/table.core.js'][1074] = 0;
+ _$jscoverage['plugins/table.core.js'][1076] = 0;
+ _$jscoverage['plugins/table.core.js'][1079] = 0;
+ _$jscoverage['plugins/table.core.js'][1084] = 0;
+ _$jscoverage['plugins/table.core.js'][1085] = 0;
+ _$jscoverage['plugins/table.core.js'][1087] = 0;
+ _$jscoverage['plugins/table.core.js'][1088] = 0;
+ _$jscoverage['plugins/table.core.js'][1090] = 0;
+ _$jscoverage['plugins/table.core.js'][1091] = 0;
+ _$jscoverage['plugins/table.core.js'][1093] = 0;
+ _$jscoverage['plugins/table.core.js'][1094] = 0;
+ _$jscoverage['plugins/table.core.js'][1098] = 0;
+ _$jscoverage['plugins/table.core.js'][1099] = 0;
+ _$jscoverage['plugins/table.core.js'][1100] = 0;
+ _$jscoverage['plugins/table.core.js'][1101] = 0;
+ _$jscoverage['plugins/table.core.js'][1103] = 0;
+ _$jscoverage['plugins/table.core.js'][1104] = 0;
+ _$jscoverage['plugins/table.core.js'][1106] = 0;
+ _$jscoverage['plugins/table.core.js'][1109] = 0;
+ _$jscoverage['plugins/table.core.js'][1110] = 0;
+ _$jscoverage['plugins/table.core.js'][1111] = 0;
+ _$jscoverage['plugins/table.core.js'][1113] = 0;
+ _$jscoverage['plugins/table.core.js'][1114] = 0;
+ _$jscoverage['plugins/table.core.js'][1115] = 0;
+ _$jscoverage['plugins/table.core.js'][1117] = 0;
+ _$jscoverage['plugins/table.core.js'][1121] = 0;
+ _$jscoverage['plugins/table.core.js'][1122] = 0;
+ _$jscoverage['plugins/table.core.js'][1123] = 0;
+ _$jscoverage['plugins/table.core.js'][1125] = 0;
+ _$jscoverage['plugins/table.core.js'][1126] = 0;
+ _$jscoverage['plugins/table.core.js'][1130] = 0;
+ _$jscoverage['plugins/table.core.js'][1134] = 0;
+ _$jscoverage['plugins/table.core.js'][1136] = 0;
+ _$jscoverage['plugins/table.core.js'][1137] = 0;
+ _$jscoverage['plugins/table.core.js'][1138] = 0;
+ _$jscoverage['plugins/table.core.js'][1143] = 0;
+ _$jscoverage['plugins/table.core.js'][1144] = 0;
+ _$jscoverage['plugins/table.core.js'][1150] = 0;
+}
+_$jscoverage['plugins/table.core.js'].source = ["/* "," * Created with JetBrains WebStorm. "," * User: taoqili "," * Date: 13-1-18 "," * Time: 上午11:09 "," * To change this template use File | Settings | File Templates. "," */ ","/* "," * UE表格操作类 "," * @param table "," * @constructor "," */ ","( function () { "," var UETable = UE. UETable = function ( table) { "," this . table = table; "," this . indexTable = []; "," this . selectedTds = []; "," this . cellsRange = {} ; "," this . update( table); "," } ; ",""," //===以下为静态工具方法=== "," UETable. removeSelectedClass = function ( cells) { "," utils. each( cells, function ( cell) { "," domUtils. removeClasses( cell, \"selectTdClass\" ); "," } ) "," } ; "," UETable. addSelectedClass = function ( cells) { "," utils. each( cells, function ( cell) { "," domUtils. addClass( cell, \"selectTdClass\" ); "," } ) "," } ; "," UETable. isEmptyBlock = function ( node) { "," var reg = new RegExp( domUtils. fillChar, 'g' ); "," if ( node[ browser. ie ? 'innerText' : 'textContent' ]. replace( /^\\s*$/ , '' ). replace( reg, '' ). length > 0 ) { "," return 0 ; "," } "," for ( var i in dtd. $isNotEmpty) if ( dtd. $isNotEmpty. hasOwnProperty( i)) { "," if ( node. getElementsByTagName( i). length) { "," return 0 ; "," } "," } "," return 1 ; "," } ; "," UETable. getWidth = function ( cell) { "," if (! cell) return 0 ; "," return parseInt( domUtils. getComputedStyle( cell, \"width\" ), 10 ); "," } ; ",""," /* "," * 获取单元格或者单元格组的“对齐”状态。 如果当前的检测对象是一个单元格组, 只有在满足所有单元格的 水平和竖直 对齐属性都相同的 "," * 条件时才会返回其状态值,否则将返回null; 如果当前只检测了一个单元格, 则直接返回当前单元格的对齐状态; "," * @param table cell or table cells , 支持单个单元格dom对象 或者 单元格dom对象数组 "," * @return { align: 'left' || 'right' || 'center', valign: 'top' || 'middle' || 'bottom' } 或者 null "," */ "," UETable. getTableCellAlignState = function ( cells ) { ",""," ! utils. isArray( cells ) && ( cells = [ cells] ); ",""," var result = {} , "," status = [ 'align' , 'valign' ], "," tempStatus = null , "," isSame = true ; //状态是否相同 ",""," utils. each( cells, function ( cellNode ) { ",""," utils. each( status, function ( currentState ) { ",""," tempStatus = cellNode. getAttribute( currentState ); ",""," if ( ! result[ currentState ] && tempStatus ) { "," result[ currentState ] = tempStatus; "," } else if ( ! result[ currentState ] || ( tempStatus !== result[ currentState ] ) ) { "," isSame = false ; "," return false ; "," } ",""," } ); ",""," return isSame; ",""," } ); ",""," return isSame ? result : null ; ",""," } ; ",""," /* "," * 根据当前选区获取相关的table信息 "," * @return {Object} "," */ "," UETable. getTableItemsByRange = function ( editor) { "," var start = editor. selection. getStart(); ",""," //ff下会选中bookmark "," if ( start && start. id && start. id. indexOf( '_baidu_bookmark_start_' ) === 0 ) { "," start = start. nextSibling; "," } ",""," //在table或者td边缘有可能存在选中tr的情况 "," var cell = start && domUtils. findParentByTagName( start, [ \"td\" , \"th\" ], true ), "," tr = cell && cell. parentNode, "," caption = start && domUtils. findParentByTagName( start, 'caption' , true ), "," table = caption ? caption. parentNode : tr && tr. parentNode. parentNode; ",""," return { "," cell: cell, "," tr: tr, "," table: table, "," caption: caption"," } "," } ; "," UETable. getUETableBySelected = function ( editor) { "," var table = UETable. getTableItemsByRange( editor). table; "," if ( table && table. ueTable && table. ueTable. selectedTds. length) { "," return table. ueTable; "," } "," return null ; "," } ; ",""," UETable. getDefaultValue = function ( editor, table) { "," var borderMap = { "," thin: '0px' , "," medium: '1px' , "," thick: '2px' "," } , "," tableBorder, tdPadding, tdBorder, tmpValue; "," if (! table) { "," table = editor. document. createElement( 'table' ); "," table. insertRow( 0 ). insertCell( 0 ). innerHTML = 'xxx' ; "," editor. body. appendChild( table); "," var td = table. getElementsByTagName( 'td' )[ 0 ]; "," tmpValue = domUtils. getComputedStyle( table, 'border-left-width' ); "," tableBorder = parseInt( borderMap[ tmpValue] || tmpValue, 10 ); "," tmpValue = domUtils. getComputedStyle( td, 'padding-left' ); "," tdPadding = parseInt( borderMap[ tmpValue] || tmpValue, 10 ); "," tmpValue = domUtils. getComputedStyle( td, 'border-left-width' ); "," tdBorder = parseInt( borderMap[ tmpValue] || tmpValue, 10 ); "," domUtils. remove( table); "," return { "," tableBorder: tableBorder, "," tdPadding: tdPadding, "," tdBorder: tdBorder"," } ; "," } else { "," td = table. getElementsByTagName( 'td' )[ 0 ]; "," tmpValue = domUtils. getComputedStyle( table, 'border-left-width' ); "," tableBorder = parseInt( borderMap[ tmpValue] || tmpValue, 10 ); "," tmpValue = domUtils. getComputedStyle( td, 'padding-left' ); "," tdPadding = parseInt( borderMap[ tmpValue] || tmpValue, 10 ); "," tmpValue = domUtils. getComputedStyle( td, 'border-left-width' ); "," tdBorder = parseInt( borderMap[ tmpValue] || tmpValue, 10 ); "," return { "," tableBorder: tableBorder, "," tdPadding: tdPadding, "," tdBorder: tdBorder"," } ; "," } "," } ; "," /* "," * 根据当前点击的td或者table获取索引对象 "," * @param tdOrTable "," */ "," UETable. getUETable = function ( tdOrTable) { "," var tag = tdOrTable. tagName. toLowerCase(); "," tdOrTable = ( tag == \"td\" || tag == \"th\" || tag == 'caption' ) ? domUtils. findParentByTagName( tdOrTable, \"table\" , true ) : tdOrTable; "," if (! tdOrTable. ueTable) { "," tdOrTable. ueTable = new UETable( tdOrTable); "," } "," return tdOrTable. ueTable; "," } ; ",""," UETable. cloneCell = function ( cell, ignoreMerge, keepPro) { "," if (! cell || utils. isString( cell)) { "," return this . table. ownerDocument. createElement( cell || 'td' ); "," } "," var flag = domUtils. hasClass( cell, \"selectTdClass\" ); "," flag && domUtils. removeClasses( cell, \"selectTdClass\" ); "," var tmpCell = cell. cloneNode( true ); "," if ( ignoreMerge) { "," tmpCell. rowSpan = tmpCell. colSpan = 1 ; "," } "," //去掉宽高 "," ! keepPro && domUtils. removeAttributes( tmpCell, 'width height' ); "," ! keepPro && domUtils. removeAttributes( tmpCell, 'style' ); ",""," tmpCell. style. borderLeftStyle = \"\" ; "," tmpCell. style. borderTopStyle = \"\" ; "," tmpCell. style. borderLeftColor = cell. style. borderRightColor; "," tmpCell. style. borderLeftWidth = cell. style. borderRightWidth; "," tmpCell. style. borderTopColor = cell. style. borderBottomColor; "," tmpCell. style. borderTopWidth = cell. style. borderBottomWidth; "," flag && domUtils. addClass( cell, \"selectTdClass\" ); "," return tmpCell; "," } ",""," UETable. prototype = { "," getMaxRows: function () { "," var rows = this . table. rows, maxLen = 1 ; "," for ( var i = 0 , row; row = rows[ i]; i++) { "," var currentMax = 1 ; "," for ( var j = 0 , cj; cj = row. cells[ j++];) { "," currentMax = Math. max( cj. rowSpan || 1 , currentMax); "," } "," maxLen = Math. max( currentMax + i, maxLen); "," } "," return maxLen; "," } , "," /* "," * 获取当前表格的最大列数 "," */ "," getMaxCols: function () { "," var rows = this . table. rows, maxLen = 0 , cellRows = {} ; "," for ( var i = 0 , row; row = rows[ i]; i++) { "," var cellsNum = 0 ; "," for ( var j = 0 , cj; cj = row. cells[ j++];) { "," cellsNum += ( cj. colSpan || 1 ); "," if ( cj. rowSpan && cj. rowSpan > 1 ) { "," for ( var k = 1 ; k < cj. rowSpan; k++) { "," if (! cellRows[ 'row_' + ( i + k)]) { "," cellRows[ 'row_' + ( i + k)] = ( cj. colSpan || 1 ); "," } else { "," cellRows[ 'row_' + ( i + k)]++ "," } "," } ",""," } "," } "," cellsNum += cellRows[ 'row_' + i] || 0 ; "," maxLen = Math. max( cellsNum, maxLen); "," } "," return maxLen; "," } , "," getCellColIndex: function ( cell) { ",""," } , "," /* "," * 获取当前cell旁边的单元格, "," * @param cell "," * @param right "," */ "," getHSideCell: function ( cell, right) { "," try { "," var cellInfo = this . getCellInfo( cell), "," previewRowIndex, previewColIndex; "," var len = this . selectedTds. length, "," range = this . cellsRange; "," //首行或者首列没有前置单元格 "," if ((! right && (! len ? ! cellInfo. colIndex : ! range. beginColIndex)) || ( right && (! len ? ( cellInfo. colIndex == ( this . colsNum - 1 )) : ( range. endColIndex == this . colsNum - 1 )))) return null ; ",""," previewRowIndex = ! len ? cellInfo. rowIndex : range. beginRowIndex; "," previewColIndex = ! right ? ( ! len ? ( cellInfo. colIndex < 1 ? 0 : ( cellInfo. colIndex - 1 )) : range. beginColIndex - 1 ) "," : ( ! len ? cellInfo. colIndex + 1 : range. endColIndex + 1 ); "," return this . getCell( this . indexTable[ previewRowIndex][ previewColIndex]. rowIndex, this . indexTable[ previewRowIndex][ previewColIndex]. cellIndex); "," } catch ( e) { "," showError( e); "," } "," } , "," getTabNextCell: function ( cell, preRowIndex) { "," var cellInfo = this . getCellInfo( cell), "," rowIndex = preRowIndex || cellInfo. rowIndex, "," colIndex = cellInfo. colIndex + 1 + ( cellInfo. colSpan - 1 ), "," nextCell; "," try { "," nextCell = this . getCell( this . indexTable[ rowIndex][ colIndex]. rowIndex, this . indexTable[ rowIndex][ colIndex]. cellIndex); "," } catch ( e) { "," try { "," rowIndex = rowIndex * 1 + 1 ; "," colIndex = 0 ; "," nextCell = this . getCell( this . indexTable[ rowIndex][ colIndex]. rowIndex, this . indexTable[ rowIndex][ colIndex]. cellIndex); "," } catch ( e) { "," } "," } "," return nextCell; ",""," } , "," /* "," * 获取视觉上的后置单元格 "," * @param cell "," * @param bottom "," */ "," getVSideCell: function ( cell, bottom, ignoreRange) { "," try { "," var cellInfo = this . getCellInfo( cell), "," nextRowIndex, nextColIndex; "," var len = this . selectedTds. length && ! ignoreRange, "," range = this . cellsRange; "," //末行或者末列没有后置单元格 "," if ((! bottom && ( cellInfo. rowIndex == 0 )) || ( bottom && (! len ? ( cellInfo. rowIndex + cellInfo. rowSpan > this . rowsNum - 1 ) : ( range. endRowIndex == this . rowsNum - 1 )))) return null ; ",""," nextRowIndex = ! bottom ? ( ! len ? cellInfo. rowIndex - 1 : range. beginRowIndex - 1 ) "," : ( ! len ? ( cellInfo. rowIndex + cellInfo. rowSpan) : range. endRowIndex + 1 ); "," nextColIndex = ! len ? cellInfo. colIndex : range. beginColIndex; "," return this . getCell( this . indexTable[ nextRowIndex][ nextColIndex]. rowIndex, this . indexTable[ nextRowIndex][ nextColIndex]. cellIndex); "," } catch ( e) { "," showError( e); "," } "," } , "," /* "," * 获取相同结束位置的单元格,xOrY指代了是获取x轴相同还是y轴相同 "," */ "," getSameEndPosCells: function ( cell, xOrY) { "," try { "," var flag = ( xOrY. toLowerCase() === \"x\" ), "," end = domUtils. getXY( cell)[ flag ? 'x' : 'y' ] + cell[ \"offset\" + ( flag ? 'Width' : 'Height' )], "," rows = this . table. rows, "," cells = null , returns = []; "," for ( var i = 0 ; i < this . rowsNum; i++) { "," cells = rows[ i]. cells; "," for ( var j = 0 , tmpCell; tmpCell = cells[ j++];) { "," var tmpEnd = domUtils. getXY( tmpCell)[ flag ? 'x' : 'y' ] + tmpCell[ \"offset\" + ( flag ? 'Width' : 'Height' )]; "," //对应行的td已经被上面行rowSpan了 "," if ( tmpEnd > end && flag) break ; "," if ( cell == tmpCell || end == tmpEnd) { "," //只获取单一的单元格 "," //todo 仅获取单一单元格在特定情况下会造成returns为空,从而影响后续的拖拽实现,修正这个。需考虑性能 "," if ( tmpCell[ flag ? \"colSpan\" : \"rowSpan\" ] == 1 ) { "," returns. push( tmpCell); "," } "," if ( flag) break ; "," } "," } "," } "," return returns; "," } catch ( e) { "," showError( e); "," } "," } , "," setCellContent: function ( cell, content) { "," cell. innerHTML = content || ( browser. ie ? domUtils. fillChar : \"<br />\" ); "," } , "," cloneCell: UETable. cloneCell, "," /* "," * 获取跟当前单元格的右边竖线为左边的所有未合并单元格 "," */ "," getSameStartPosXCells: function ( cell) { "," try { "," var start = domUtils. getXY( cell). x + cell. offsetWidth, "," rows = this . table. rows, cells , returns = []; "," for ( var i = 0 ; i < this . rowsNum; i++) { "," cells = rows[ i]. cells; "," for ( var j = 0 , tmpCell; tmpCell = cells[ j++];) { "," var tmpStart = domUtils. getXY( tmpCell). x; "," if ( tmpStart > start) break ; "," if ( tmpStart == start && tmpCell. colSpan == 1 ) { "," returns. push( tmpCell); "," break ; "," } "," } "," } "," return returns; "," } catch ( e) { "," showError( e); "," } "," } , "," /* "," * 更新table对应的索引表 "," */ "," update: function ( table) { "," this . table = table || this . table; "," this . selectedTds = []; "," this . cellsRange = {} ; "," this . indexTable = []; "," var rows = this . table. rows, "," rowsNum = this . getMaxRows(), "," dNum = rowsNum - rows. length, "," colsNum = this . getMaxCols(); "," while ( dNum--) { "," this . table. insertRow( rows. length); "," } "," this . rowsNum = rowsNum; "," this . colsNum = colsNum; "," for ( var i = 0 , len = rows. length; i < len; i++) { "," this . indexTable[ i] = new Array( colsNum); "," } "," //填充索引表 "," for ( var rowIndex = 0 , row; row = rows[ rowIndex]; rowIndex++) { "," for ( var cellIndex = 0 , cell, cells = row. cells; cell = cells[ cellIndex]; cellIndex++) { "," //修正整行被rowSpan时导致的行数计算错误 "," if ( cell. rowSpan > rowsNum) { "," cell. rowSpan = rowsNum; "," } "," var colIndex = cellIndex, "," rowSpan = cell. rowSpan || 1 , "," colSpan = cell. colSpan || 1 ; "," //当已经被上一行rowSpan或者被前一列colSpan了,则跳到下一个单元格进行 "," while ( this . indexTable[ rowIndex][ colIndex]) colIndex++; "," for ( var j = 0 ; j < rowSpan; j++) { "," for ( var k = 0 ; k < colSpan; k++) { "," this . indexTable[ rowIndex + j][ colIndex + k] = { "," rowIndex: rowIndex, "," cellIndex: cellIndex, "," colIndex: colIndex, "," rowSpan: rowSpan, "," colSpan: colSpan"," } "," } "," } "," } "," } "," //修复残缺td "," for ( j = 0 ; j < rowsNum; j++) { "," for ( k = 0 ; k < colsNum; k++) { "," if ( this . indexTable[ j][ k] === undefined) { "," row = rows[ j]; "," cell = row. cells[ row. cells. length - 1 ]; "," cell = cell ? cell. cloneNode( true ) : this . table. ownerDocument. createElement( \"td\" ); "," this . setCellContent( cell); "," if ( cell. colSpan !== 1 ) cell. colSpan = 1 ; "," if ( cell. rowSpan !== 1 ) cell. rowSpan = 1 ; "," row. appendChild( cell); "," this . indexTable[ j][ k] = { "," rowIndex: j, "," cellIndex: cell. cellIndex, "," colIndex: k, "," rowSpan: 1 , "," colSpan: 1 "," } "," } "," } "," } "," //当框选后删除行或者列后撤销,需要重建选区。 "," var tds = domUtils. getElementsByTagName( this . table, \"td\" ), "," selectTds = []; "," utils. each( tds, function ( td) { "," if ( domUtils. hasClass( td, \"selectTdClass\" )) { "," selectTds. push( td); "," } "," } ); "," if ( selectTds. length) { "," var start = selectTds[ 0 ], "," end = selectTds[ selectTds. length - 1 ], "," startInfo = this . getCellInfo( start), "," endInfo = this . getCellInfo( end); "," this . selectedTds = selectTds; "," this . cellsRange = { "," beginRowIndex: startInfo. rowIndex, "," beginColIndex: startInfo. colIndex, "," endRowIndex: endInfo. rowIndex + endInfo. rowSpan - 1 , "," endColIndex: endInfo. colIndex + endInfo. colSpan - 1 "," } ; "," } ",""," } , "," /* "," * 获取单元格的索引信息 "," */ "," getCellInfo: function ( cell) { "," if (! cell) return ; "," var cellIndex = cell. cellIndex, "," rowIndex = cell. parentNode. rowIndex, "," rowInfo = this . indexTable[ rowIndex], "," numCols = this . colsNum; "," for ( var colIndex = cellIndex; colIndex < numCols; colIndex++) { "," var cellInfo = rowInfo[ colIndex]; "," if ( cellInfo. rowIndex === rowIndex && cellInfo. cellIndex === cellIndex) { "," return cellInfo; "," } "," } "," } , "," /* "," * 根据行列号获取单元格 "," */ "," getCell: function ( rowIndex, cellIndex) { "," return rowIndex < this . rowsNum && this . table. rows[ rowIndex]. cells[ cellIndex] || null ; "," } , "," /* "," * 删除单元格 "," */ "," deleteCell: function ( cell, rowIndex) { "," rowIndex = typeof rowIndex == 'number' ? rowIndex : cell. parentNode. rowIndex; "," var row = this . table. rows[ rowIndex]; "," row. deleteCell( cell. cellIndex); "," } , "," /* "," * 根据始末两个单元格获取被框选的所有单元格范围 "," */ "," getCellsRange: function ( cellA, cellB) { "," function checkRange( beginRowIndex, beginColIndex, endRowIndex, endColIndex) { "," var tmpBeginRowIndex = beginRowIndex, "," tmpBeginColIndex = beginColIndex, "," tmpEndRowIndex = endRowIndex, "," tmpEndColIndex = endColIndex, "," cellInfo, colIndex, rowIndex; "," // 通过indexTable检查是否存在超出TableRange上边界的情况 "," if ( beginRowIndex > 0 ) { "," for ( colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { "," cellInfo = me. indexTable[ beginRowIndex][ colIndex]; "," rowIndex = cellInfo. rowIndex; "," if ( rowIndex < beginRowIndex) { "," tmpBeginRowIndex = Math. min( rowIndex, tmpBeginRowIndex); "," } "," } "," } "," // 通过indexTable检查是否存在超出TableRange右边界的情况 "," if ( endColIndex < me. colsNum) { "," for ( rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { "," cellInfo = me. indexTable[ rowIndex][ endColIndex]; "," colIndex = cellInfo. colIndex + cellInfo. colSpan - 1 ; "," if ( colIndex > endColIndex) { "," tmpEndColIndex = Math. max( colIndex, tmpEndColIndex); "," } "," } "," } "," // 检查是否有超出TableRange下边界的情况 "," if ( endRowIndex < me. rowsNum) { "," for ( colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { "," cellInfo = me. indexTable[ endRowIndex][ colIndex]; "," rowIndex = cellInfo. rowIndex + cellInfo. rowSpan - 1 ; "," if ( rowIndex > endRowIndex) { "," tmpEndRowIndex = Math. max( rowIndex, tmpEndRowIndex); "," } "," } "," } "," // 检查是否有超出TableRange左边界的情况 "," if ( beginColIndex > 0 ) { "," for ( rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { "," cellInfo = me. indexTable[ rowIndex][ beginColIndex]; "," colIndex = cellInfo. colIndex; "," if ( colIndex < beginColIndex) { "," tmpBeginColIndex = Math. min( cellInfo. colIndex, tmpBeginColIndex); "," } "," } "," } "," //递归调用直至所有完成所有框选单元格的扩展 "," if ( tmpBeginRowIndex != beginRowIndex || tmpBeginColIndex != beginColIndex || tmpEndRowIndex != endRowIndex || tmpEndColIndex != endColIndex) { "," return checkRange( tmpBeginRowIndex, tmpBeginColIndex, tmpEndRowIndex, tmpEndColIndex); "," } else { "," // 不需要扩展TableRange的情况 "," return { "," beginRowIndex: beginRowIndex, "," beginColIndex: beginColIndex, "," endRowIndex: endRowIndex, "," endColIndex: endColIndex"," } ; "," } "," } ",""," try { "," var me = this , "," cellAInfo = me. getCellInfo( cellA); "," if ( cellA === cellB) { "," return { "," beginRowIndex: cellAInfo. rowIndex, "," beginColIndex: cellAInfo. colIndex, "," endRowIndex: cellAInfo. rowIndex + cellAInfo. rowSpan - 1 , "," endColIndex: cellAInfo. colIndex + cellAInfo. colSpan - 1 "," } ; "," } "," var cellBInfo = me. getCellInfo( cellB); "," // 计算TableRange的四个边 "," var beginRowIndex = Math. min( cellAInfo. rowIndex, cellBInfo. rowIndex), "," beginColIndex = Math. min( cellAInfo. colIndex, cellBInfo. colIndex), "," endRowIndex = Math. max( cellAInfo. rowIndex + cellAInfo. rowSpan - 1 , cellBInfo. rowIndex + cellBInfo. rowSpan - 1 ), "," endColIndex = Math. max( cellAInfo. colIndex + cellAInfo. colSpan - 1 , cellBInfo. colIndex + cellBInfo. colSpan - 1 ); ",""," return checkRange( beginRowIndex, beginColIndex, endRowIndex, endColIndex); "," } catch ( e) { "," //throw e; "," } "," } , "," /* "," * 依据cellsRange获取对应的单元格集合 "," */ "," getCells: function ( range) { "," //每次获取cells之前必须先清除上次的选择,否则会对后续获取操作造成影响 "," this . clearSelected(); "," var beginRowIndex = range. beginRowIndex, "," beginColIndex = range. beginColIndex, "," endRowIndex = range. endRowIndex, "," endColIndex = range. endColIndex, "," cellInfo, rowIndex, colIndex, tdHash = {} , returnTds = []; "," for ( var i = beginRowIndex; i <= endRowIndex; i++) { "," for ( var j = beginColIndex; j <= endColIndex; j++) { "," cellInfo = this . indexTable[ i][ j]; "," rowIndex = cellInfo. rowIndex; "," colIndex = cellInfo. colIndex; "," // 如果Cells里已经包含了此Cell则跳过 "," var key = rowIndex + '|' + colIndex; "," if ( tdHash[ key]) continue ; "," tdHash[ key] = 1 ; "," if ( rowIndex < i || colIndex < j || rowIndex + cellInfo. rowSpan - 1 > endRowIndex || colIndex + cellInfo. colSpan - 1 > endColIndex) { "," return null ; "," } "," returnTds. push( this . getCell( rowIndex, cellInfo. cellIndex)); "," } "," } "," return returnTds; "," } , "," /* "," * 清理已经选中的单元格 "," */ "," clearSelected: function () { "," UETable. removeSelectedClass( this . selectedTds); "," this . selectedTds = []; "," this . cellsRange = {} ; "," } , "," /* "," * 根据range设置已经选中的单元格 "," */ "," setSelected: function ( range) { "," var cells = this . getCells( range); "," UETable. addSelectedClass( cells); "," this . selectedTds = cells; "," this . cellsRange = range; "," } , "," isFullRow: function () { "," var range = this . cellsRange; "," return ( range. endColIndex - range. beginColIndex + 1 ) == this . colsNum; "," } , "," isFullCol: function () { "," var range = this . cellsRange, "," table = this . table, "," ths = table. getElementsByTagName( \"th\" ), "," rows = range. endRowIndex - range. beginRowIndex + 1 ; "," return ! ths. length ? rows == this . rowsNum : rows == this . rowsNum || ( rows == this . rowsNum - 1 ); ",""," } , "," /* "," * 获取视觉上的前置单元格,默认是左边,top传入时 "," * @param cell "," * @param top "," */ "," getNextCell: function ( cell, bottom, ignoreRange) { "," try { "," var cellInfo = this . getCellInfo( cell), "," nextRowIndex, nextColIndex; "," var len = this . selectedTds. length && ! ignoreRange, "," range = this . cellsRange; "," //末行或者末列没有后置单元格 "," if ((! bottom && ( cellInfo. rowIndex == 0 )) || ( bottom && (! len ? ( cellInfo. rowIndex + cellInfo. rowSpan > this . rowsNum - 1 ) : ( range. endRowIndex == this . rowsNum - 1 )))) return null ; ",""," nextRowIndex = ! bottom ? ( ! len ? cellInfo. rowIndex - 1 : range. beginRowIndex - 1 ) "," : ( ! len ? ( cellInfo. rowIndex + cellInfo. rowSpan) : range. endRowIndex + 1 ); "," nextColIndex = ! len ? cellInfo. colIndex : range. beginColIndex; "," return this . getCell( this . indexTable[ nextRowIndex][ nextColIndex]. rowIndex, this . indexTable[ nextRowIndex][ nextColIndex]. cellIndex); "," } catch ( e) { "," showError( e); "," } "," } , "," getPreviewCell: function ( cell, top) { "," try { "," var cellInfo = this . getCellInfo( cell), "," previewRowIndex, previewColIndex; "," var len = this . selectedTds. length, "," range = this . cellsRange; "," //首行或者首列没有前置单元格 "," if ((! top && (! len ? ! cellInfo. colIndex : ! range. beginColIndex)) || ( top && (! len ? ( cellInfo. rowIndex > ( this . colsNum - 1 )) : ( range. endColIndex == this . colsNum - 1 )))) return null ; ",""," previewRowIndex = ! top ? ( ! len ? cellInfo. rowIndex : range. beginRowIndex ) "," : ( ! len ? ( cellInfo. rowIndex < 1 ? 0 : ( cellInfo. rowIndex - 1 )) : range. beginRowIndex); "," previewColIndex = ! top ? ( ! len ? ( cellInfo. colIndex < 1 ? 0 : ( cellInfo. colIndex - 1 )) : range. beginColIndex - 1 ) "," : ( ! len ? cellInfo. colIndex : range. endColIndex + 1 ); "," return this . getCell( this . indexTable[ previewRowIndex][ previewColIndex]. rowIndex, this . indexTable[ previewRowIndex][ previewColIndex]. cellIndex); "," } catch ( e) { "," showError( e); "," } "," } , "," /* "," * 移动单元格中的内容 "," */ "," moveContent: function ( cellTo, cellFrom) { "," if ( UETable. isEmptyBlock( cellFrom)) return ; "," if ( UETable. isEmptyBlock( cellTo)) { "," cellTo. innerHTML = cellFrom. innerHTML; "," return ; "," } "," var child = cellTo. lastChild; "," if ( child. nodeType == 3 || ! dtd. $block[ child. tagName]) { "," cellTo. appendChild( cellTo. ownerDocument. createElement( 'br' )) "," } "," while ( child = cellFrom. firstChild) { "," cellTo. appendChild( child); "," } "," } , "," /* "," * 向右合并单元格 "," */ "," mergeRight: function ( cell) { "," var cellInfo = this . getCellInfo( cell), "," rightColIndex = cellInfo. colIndex + cellInfo. colSpan, "," rightCellInfo = this . indexTable[ cellInfo. rowIndex][ rightColIndex], "," rightCell = this . getCell( rightCellInfo. rowIndex, rightCellInfo. cellIndex); "," //合并 "," cell. colSpan = cellInfo. colSpan + rightCellInfo. colSpan; "," //被合并的单元格不应存在宽度属性 "," cell. removeAttribute( \"width\" ); "," //移动内容 "," this . moveContent( cell, rightCell); "," //删掉被合并的Cell "," this . deleteCell( rightCell, rightCellInfo. rowIndex); "," this . update(); "," } , "," /* "," * 向下合并单元格 "," */ "," mergeDown: function ( cell) { "," var cellInfo = this . getCellInfo( cell), "," downRowIndex = cellInfo. rowIndex + cellInfo. rowSpan, "," downCellInfo = this . indexTable[ downRowIndex][ cellInfo. colIndex], "," downCell = this . getCell( downCellInfo. rowIndex, downCellInfo. cellIndex); "," cell. rowSpan = cellInfo. rowSpan + downCellInfo. rowSpan; "," cell. removeAttribute( \"height\" ); "," this . moveContent( cell, downCell); "," this . deleteCell( downCell, downCellInfo. rowIndex); "," this . update(); "," } , "," /* "," * 合并整个range中的内容 "," */ "," mergeRange: function () { "," //由于合并操作可以在任意时刻进行,所以无法通过鼠标位置等信息实时生成range,只能通过缓存实例中的cellsRange对象来访问 "," var range = this . cellsRange, "," leftTopCell = this . getCell( range. beginRowIndex, this . indexTable[ range. beginRowIndex][ range. beginColIndex]. cellIndex); ",""," if ( leftTopCell. tagName == \"TH\" && range. endRowIndex !== range. beginRowIndex) { "," var index = this . indexTable, "," info = this . getCellInfo( leftTopCell); "," leftTopCell = this . getCell( 1 , index[ 1 ][ info. colIndex]. cellIndex); "," range = this . getCellsRange( leftTopCell, this . getCell( index[ this . rowsNum - 1 ][ info. colIndex]. rowIndex, index[ this . rowsNum - 1 ][ info. colIndex]. cellIndex)); "," } ",""," // 删除剩余的Cells "," var cells = this . getCells( range); "," for ( var i= 0 , ci; ci= cells[ i++];) { "," if ( ci !== leftTopCell) { "," this . moveContent( leftTopCell, ci); "," this . deleteCell( ci); "," } "," } "," // 修改左上角Cell的rowSpan和colSpan,并调整宽度属性设置 "," leftTopCell. rowSpan = range. endRowIndex - range. beginRowIndex + 1 ; "," leftTopCell. rowSpan > 1 && leftTopCell. removeAttribute( \"height\" ); "," leftTopCell. colSpan = range. endColIndex - range. beginColIndex + 1 ; "," leftTopCell. colSpan > 1 && leftTopCell. removeAttribute( \"width\" ); "," if ( leftTopCell. rowSpan == this . rowsNum && leftTopCell. colSpan != 1 ) { "," leftTopCell. colSpan = 1 ; "," } ",""," if ( leftTopCell. colSpan == this . colsNum && leftTopCell. rowSpan != 1 ) { "," var rowIndex = leftTopCell. parentNode. rowIndex; "," //解决IE下的表格操作问题 "," if ( this . table. deleteRow ) { "," for ( var i = rowIndex+ 1 , curIndex= rowIndex+ 1 , len= leftTopCell. rowSpan; i < len; i++) { "," this . table. deleteRow( curIndex); "," } "," } else { "," for ( var i = 0 , len= leftTopCell. rowSpan - 1 ; i < len; i++) { "," var row = this . table. rows[ rowIndex + 1 ]; "," row. parentNode. removeChild( row); "," } "," } "," leftTopCell. rowSpan = 1 ; "," } "," this . update(); "," } , "," /* "," * 插入一行单元格 "," */ "," insertRow: function ( rowIndex, sourceCell) { "," var numCols = this . colsNum, "," table = this . table, "," row = table. insertRow( rowIndex), cell, "," width = parseInt(( table. offsetWidth - numCols * 20 - numCols - 1 ) / numCols, 10 ); "," //首行直接插入,无需考虑部分单元格被rowspan的情况 "," if ( rowIndex == 0 || rowIndex == this . rowsNum) { "," for ( var colIndex = 0 ; colIndex < numCols; colIndex++) { "," cell = this . cloneCell( sourceCell, true ); "," this . setCellContent( cell); "," cell. getAttribute( 'vAlign' ) && cell. setAttribute( 'vAlign' , cell. getAttribute( 'vAlign' )); "," row. appendChild( cell); "," } "," } else { "," var infoRow = this . indexTable[ rowIndex], "," cellIndex = 0 ; "," for ( colIndex = 0 ; colIndex < numCols; colIndex++) { "," var cellInfo = infoRow[ colIndex]; "," //如果存在某个单元格的rowspan穿过待插入行的位置,则修改该单元格的rowspan即可,无需插入单元格 "," if ( cellInfo. rowIndex < rowIndex) { "," cell = this . getCell( cellInfo. rowIndex, cellInfo. cellIndex); "," cell. rowSpan = cellInfo. rowSpan + 1 ; "," } else { "," cell = this . cloneCell( sourceCell, true ); "," this . setCellContent( cell); "," row. appendChild( cell); "," } "," } "," } "," //框选时插入不触发contentchange,需要手动更新索引。 "," this . update(); "," return row; "," } , "," /* "," * 删除一行单元格 "," * @param rowIndex "," */ "," deleteRow: function ( rowIndex) { "," var row = this . table. rows[ rowIndex], "," infoRow = this . indexTable[ rowIndex], "," colsNum = this . colsNum, "," count = 0 ; //处理计数 "," for ( var colIndex = 0 ; colIndex < colsNum;) { "," var cellInfo = infoRow[ colIndex], "," cell = this . getCell( cellInfo. rowIndex, cellInfo. cellIndex); "," if ( cell. rowSpan > 1 ) { "," if ( cellInfo. rowIndex == rowIndex) { "," var clone = cell. cloneNode( true ); "," clone. rowSpan = cell. rowSpan - 1 ; "," clone. innerHTML = \"\" ; "," cell. rowSpan = 1 ; "," var nextRowIndex = rowIndex + 1 , "," nextRow = this . table. rows[ nextRowIndex], "," insertCellIndex, "," preMerged = this . getPreviewMergedCellsNum( nextRowIndex, colIndex) - count; "," if ( preMerged < colIndex) { "," insertCellIndex = colIndex - preMerged - 1 ; "," //nextRow.insertCell(insertCellIndex); "," domUtils. insertAfter( nextRow. cells[ insertCellIndex], clone); "," } else { "," if ( nextRow. cells. length) nextRow. insertBefore( clone, nextRow. cells[ 0 ]) "," } "," count += 1 ; "," //cell.parentNode.removeChild(cell); "," } "," } "," colIndex += cell. colSpan || 1 ; "," } "," var deleteTds = [], cacheMap = {} ; "," for ( colIndex = 0 ; colIndex < colsNum; colIndex++) { "," var tmpRowIndex = infoRow[ colIndex]. rowIndex, "," tmpCellIndex = infoRow[ colIndex]. cellIndex, "," key = tmpRowIndex + \"_\" + tmpCellIndex; "," if ( cacheMap[ key]) continue ; "," cacheMap[ key] = 1 ; "," cell = this . getCell( tmpRowIndex, tmpCellIndex); "," deleteTds. push( cell); "," } "," var mergeTds = []; "," utils. each( deleteTds, function ( td) { "," if ( td. rowSpan == 1 ) { "," td. parentNode. removeChild( td); "," } else { "," mergeTds. push( td); "," } "," } ); "," utils. each( mergeTds, function ( td) { "," td. rowSpan--; "," } ); "," row. parentNode. removeChild( row); "," //浏览器方法本身存在bug,采用自定义方法删除 "," //this.table.deleteRow(rowIndex); "," this . update(); "," } , "," insertCol: function ( colIndex, sourceCell, defaultValue) { "," var rowsNum = this . rowsNum, "," rowIndex = 0 , "," tableRow, cell, "," backWidth = parseInt(( this . table. offsetWidth - ( this . colsNum + 1 ) * 20 - ( this . colsNum + 1 )) / ( this . colsNum + 1 ), 10 ); ",""," function replaceTdToTh( rowIndex, cell, tableRow) { "," if ( rowIndex == 0 ) { "," var th = cell. nextSibling || cell. previousSibling; "," if ( th. tagName == 'TH' ) { "," th = cell. ownerDocument. createElement( \"th\" ); "," th. appendChild( cell. firstChild); "," tableRow. insertBefore( th, cell); "," domUtils. remove( cell) "," } "," } else { "," if ( cell. tagName == 'TH' ) { "," var td = cell. ownerDocument. createElement( \"td\" ); "," td. appendChild( cell. firstChild); "," tableRow. insertBefore( td, cell); "," domUtils. remove( cell) "," } "," } "," } ",""," var preCell; "," if ( colIndex == 0 || colIndex == this . colsNum) { "," for (; rowIndex < rowsNum; rowIndex++) { "," tableRow = this . table. rows[ rowIndex]; "," preCell = tableRow. cells[ colIndex == 0 ? colIndex : tableRow. cells. length]; "," cell = this . cloneCell( sourceCell, true ); //tableRow.insertCell(colIndex == 0 ? colIndex : tableRow.cells.length); "," this . setCellContent( cell); "," cell. setAttribute( 'vAlign' , cell. getAttribute( 'vAlign' )); "," preCell && cell. setAttribute( 'width' , preCell. getAttribute( 'width' )); "," if (! colIndex) { "," tableRow. insertBefore( cell, tableRow. cells[ 0 ]); "," } else { "," domUtils. insertAfter( tableRow. cells[ tableRow. cells. length - 1 ], cell); "," } "," replaceTdToTh( rowIndex, cell, tableRow) "," } "," } else { "," for (; rowIndex < rowsNum; rowIndex++) { "," var cellInfo = this . indexTable[ rowIndex][ colIndex]; "," if ( cellInfo. colIndex < colIndex) { "," cell = this . getCell( cellInfo. rowIndex, cellInfo. cellIndex); "," cell. colSpan = cellInfo. colSpan + 1 ; "," } else { "," tableRow = this . table. rows[ rowIndex]; "," preCell = tableRow. cells[ cellInfo. cellIndex]; ",""," cell = this . cloneCell( sourceCell, true ); //tableRow.insertCell(cellInfo.cellIndex); "," this . setCellContent( cell); "," cell. setAttribute( 'vAlign' , cell. getAttribute( 'vAlign' )); "," preCell && cell. setAttribute( 'width' , preCell. getAttribute( 'width' )); "," //防止IE下报错 "," preCell ? tableRow. insertBefore( cell, preCell) : tableRow. appendChild( cell); "," } "," replaceTdToTh( rowIndex, cell, tableRow); "," } "," } "," //框选时插入不触发contentchange,需要手动更新索引 "," this . update(); "," this . updateWidth( backWidth, defaultValue || { tdPadding: 10 , tdBorder: 1 } ); "," } , "," updateWidth: function ( width, defaultValue) { "," var table = this . table, "," tmpWidth = UETable. getWidth( table) - defaultValue. tdPadding * 2 - defaultValue. tdBorder + width; "," if ( tmpWidth < table. ownerDocument. body. offsetWidth) { "," table. setAttribute( \"width\" , tmpWidth); "," return ; "," } "," var tds = domUtils. getElementsByTagName( this . table, \"td\" ); "," utils. each( tds, function ( td) { "," td. setAttribute( \"width\" , width); "," } ) "," } , "," deleteCol: function ( colIndex) { "," var indexTable = this . indexTable, "," tableRows = this . table. rows, "," backTableWidth = this . table. getAttribute( \"width\" ), "," backTdWidth = 0 , "," rowsNum = this . rowsNum, "," cacheMap = {} ; "," for ( var rowIndex = 0 ; rowIndex < rowsNum;) { "," var infoRow = indexTable[ rowIndex], "," cellInfo = infoRow[ colIndex], "," key = cellInfo. rowIndex + '_' + cellInfo. colIndex; "," // 跳过已经处理过的Cell "," if ( cacheMap[ key]) continue ; "," cacheMap[ key] = 1 ; "," var cell = this . getCell( cellInfo. rowIndex, cellInfo. cellIndex); "," if (! backTdWidth) backTdWidth = cell && parseInt( cell. offsetWidth / cell. colSpan, 10 ). toFixed( 0 ); "," // 如果Cell的colSpan大于1, 就修改colSpan, 否则就删掉这个Cell "," if ( cell. colSpan > 1 ) { "," cell. colSpan--; "," } else { "," tableRows[ rowIndex]. deleteCell( cellInfo. cellIndex); "," } "," rowIndex += cellInfo. rowSpan || 1 ; "," } "," this . table. setAttribute( \"width\" , backTableWidth - backTdWidth); "," this . update(); "," } , "," splitToCells: function ( cell) { "," var me = this , "," cells = this . splitToRows( cell); "," utils. each( cells, function ( cell) { "," me. splitToCols( cell); "," } ) "," } , "," splitToRows: function ( cell) { "," var cellInfo = this . getCellInfo( cell), "," rowIndex = cellInfo. rowIndex, "," colIndex = cellInfo. colIndex, "," results = []; "," // 修改Cell的rowSpan "," cell. rowSpan = 1 ; "," results. push( cell); "," // 补齐单元格 "," for ( var i = rowIndex, endRow = rowIndex + cellInfo. rowSpan; i < endRow; i++) { "," if ( i == rowIndex) continue ; "," var tableRow = this . table. rows[ i], "," tmpCell = tableRow. insertCell( colIndex - this . getPreviewMergedCellsNum( i, colIndex)); "," tmpCell. colSpan = cellInfo. colSpan; "," this . setCellContent( tmpCell); "," tmpCell. setAttribute( 'vAlign' , cell. getAttribute( 'vAlign' )); "," tmpCell. setAttribute( 'align' , cell. getAttribute( 'align' )); "," if ( cell. style. cssText) { "," tmpCell. style. cssText = cell. style. cssText; "," } "," results. push( tmpCell); "," } "," this . update(); "," return results; "," } , "," getPreviewMergedCellsNum: function ( rowIndex, colIndex) { "," var indexRow = this . indexTable[ rowIndex], "," num = 0 ; "," for ( var i = 0 ; i < colIndex;) { "," var colSpan = indexRow[ i]. colSpan, "," tmpRowIndex = indexRow[ i]. rowIndex; "," num += ( colSpan - ( tmpRowIndex == rowIndex ? 1 : 0 )); "," i += colSpan; "," } "," return num; "," } , "," splitToCols: function ( cell) { "," var backWidth = ( cell. offsetWidth / cell. colSpan - 22 ). toFixed( 0 ), ",""," cellInfo = this . getCellInfo( cell), "," rowIndex = cellInfo. rowIndex, "," colIndex = cellInfo. colIndex, "," results = []; "," // 修改Cell的rowSpan "," cell. colSpan = 1 ; "," cell. setAttribute( \"width\" , backWidth); "," results. push( cell); "," // 补齐单元格 "," for ( var j = colIndex, endCol = colIndex + cellInfo. colSpan; j < endCol; j++) { "," if ( j == colIndex) continue ; "," var tableRow = this . table. rows[ rowIndex], "," tmpCell = tableRow. insertCell( this . indexTable[ rowIndex][ j]. cellIndex + 1 ); "," tmpCell. rowSpan = cellInfo. rowSpan; "," this . setCellContent( tmpCell); "," tmpCell. setAttribute( 'vAlign' , cell. getAttribute( 'vAlign' )); "," tmpCell. setAttribute( 'align' , cell. getAttribute( 'align' )); "," tmpCell. setAttribute( 'width' , backWidth); "," if ( cell. style. cssText) { "," tmpCell. style. cssText = cell. style. cssText; "," } "," //处理th的情况 "," if ( cell. tagName == 'TH' ) { "," var th = cell. ownerDocument. createElement( 'th' ); "," th. appendChild( tmpCell. firstChild); "," th. setAttribute( 'vAlign' , cell. getAttribute( 'vAlign' )); "," th. rowSpan = tmpCell. rowSpan; "," tableRow. insertBefore( th, tmpCell); "," domUtils. remove( tmpCell); "," } "," results. push( tmpCell); "," } "," this . update(); "," return results; "," } , "," isLastCell: function ( cell, rowsNum, colsNum) { "," rowsNum = rowsNum || this . rowsNum; "," colsNum = colsNum || this . colsNum; "," var cellInfo = this . getCellInfo( cell); "," return (( cellInfo. rowIndex + cellInfo. rowSpan) == rowsNum) && "," (( cellInfo. colIndex + cellInfo. colSpan) == colsNum); "," } , "," getLastCell: function ( cells) { "," cells = cells || this . table. getElementsByTagName( \"td\" ); "," var firstInfo = this . getCellInfo( cells[ 0 ]); "," var me = this , last = cells[ 0 ], "," tr = last. parentNode, "," cellsNum = 0 , cols = 0 , rows; "," utils. each( cells, function ( cell) { "," if ( cell. parentNode == tr) cols += cell. colSpan || 1 ; "," cellsNum += cell. rowSpan * cell. colSpan || 1 ; "," } ); "," rows = cellsNum / cols; "," utils. each( cells, function ( cell) { "," if ( me. isLastCell( cell, rows, cols)) { "," last = cell; "," return false ; "," } "," } ); "," return last; ",""," } , "," selectRow: function ( rowIndex) { "," var indexRow = this . indexTable[ rowIndex], "," start = this . getCell( indexRow[ 0 ]. rowIndex, indexRow[ 0 ]. cellIndex), "," end = this . getCell( indexRow[ this . colsNum - 1 ]. rowIndex, indexRow[ this . colsNum - 1 ]. cellIndex), "," range = this . getCellsRange( start, end); "," this . setSelected( range); "," } , "," selectTable: function () { "," var tds = this . table. getElementsByTagName( \"td\" ), "," range = this . getCellsRange( tds[ 0 ], tds[ tds. length - 1 ]); "," this . setSelected( range); "," } , "," sortTable: function ( sortByCellIndex, compareFn) { "," var table = this . table, "," rows = table. rows, "," trArray = [], "," flag = rows[ 0 ]. cells[ 0 ]. tagName === \"TH\" , "," lastRowIndex = 0 ; "," if ( this . selectedTds. length) { "," var range = this . cellsRange, "," len = range. endRowIndex + 1 ; "," for ( var i = range. beginRowIndex; i < len; i++) { "," trArray[ i] = rows[ i]; "," } "," trArray. splice( 0 , range. beginRowIndex); "," lastRowIndex = ( range. endRowIndex + 1 ) === this . rowsNum ? 0 : range. endRowIndex + 1 ; "," } else { "," for ( var i = 0 , len = rows. length; i < len; i++) { "," trArray[ i] = rows[ i]; "," } "," } "," //th不参与排序 "," flag && trArray. splice( 0 , 1 ); "," trArray = utils. sort( trArray, function ( tr1, tr2) { "," var txt = function ( node) { "," return node. innerText|| node. textContent; "," } ; "," return compareFn ? ( typeof compareFn === \"number\" ? compareFn : compareFn. call( this , tr1. cells[ sortByCellIndex], tr2. cells[ sortByCellIndex])) : function () { "," var value1 = txt( tr1. cells[ sortByCellIndex]), "," value2 = txt( tr2. cells[ sortByCellIndex]); "," return value1. localeCompare( value2); "," } (); "," } ); "," var fragment = table. ownerDocument. createDocumentFragment(); "," for ( var j = 0 , len = trArray. length; j < len; j++) { "," fragment. appendChild( trArray[ j]); "," } "," var tbody = table. getElementsByTagName( \"tbody\" )[ 0 ]; "," if (! lastRowIndex) { "," tbody. appendChild( fragment); "," } else { "," tbody. insertBefore( fragment, rows[ lastRowIndex- range. endRowIndex + range. beginRowIndex - 1 ]) "," } "," } , "," setBackground: function ( cells, value) { "," if ( typeof value === \"string\" ) { "," utils. each( cells, function ( cell) { "," cell. style. backgroundColor = value; "," } ) "," } else if ( typeof value === \"object\" ) { "," value = utils. extend( { "," repeat: true , "," colorList:[ \"#ddd\" , \"#fff\" ] "," } , value); "," var rowIndex = this . getCellInfo( cells[ 0 ]). rowIndex, "," count = 0 , "," colors = value. colorList, "," getColor = function ( list, index, repeat) { "," return list[ index] ? list[ index] : repeat ? list[ index % list. length] : \"\" ; "," } ; "," for ( var i = 0 , cell; cell = cells[ i++];) { "," var cellInfo = this . getCellInfo( cell); "," cell. style. backgroundColor = getColor( colors, (( rowIndex + count) == cellInfo. rowIndex) ? count : ++ count, value. repeat); "," } "," } "," } , "," removeBackground: function ( cells) { "," utils. each( cells, function ( cell) { "," cell. style. backgroundColor = \"\" ; "," } ) "," } ","",""," } ; "," function showError( e) { "," } ","} )(); "];
+_$jscoverage['plugins/table.core.js'][13]++;
+(function () {
+ _$jscoverage['plugins/table.core.js'][14]++;
+ var UETable = (UE.UETable = (function (table) {
+ _$jscoverage['plugins/table.core.js'][15]++;
+ this.table = table;
+ _$jscoverage['plugins/table.core.js'][16]++;
+ this.indexTable = [];
+ _$jscoverage['plugins/table.core.js'][17]++;
+ this.selectedTds = [];
+ _$jscoverage['plugins/table.core.js'][18]++;
+ this.cellsRange = {};
+ _$jscoverage['plugins/table.core.js'][19]++;
+ this.update(table);
+}));
+ _$jscoverage['plugins/table.core.js'][23]++;
+ UETable.removeSelectedClass = (function (cells) {
+ _$jscoverage['plugins/table.core.js'][24]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.core.js'][25]++;
+ domUtils.removeClasses(cell, "selectTdClass");
+}));
+});
+ _$jscoverage['plugins/table.core.js'][28]++;
+ UETable.addSelectedClass = (function (cells) {
+ _$jscoverage['plugins/table.core.js'][29]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.core.js'][30]++;
+ domUtils.addClass(cell, "selectTdClass");
+}));
+});
+ _$jscoverage['plugins/table.core.js'][33]++;
+ UETable.isEmptyBlock = (function (node) {
+ _$jscoverage['plugins/table.core.js'][34]++;
+ var reg = new RegExp(domUtils.fillChar, "g");
+ _$jscoverage['plugins/table.core.js'][35]++;
+ if ((node[(browser.ie? "innerText": "textContent")].replace(/^\s*$/, "").replace(reg, "").length > 0)) {
+ _$jscoverage['plugins/table.core.js'][36]++;
+ return 0;
+ }
+ _$jscoverage['plugins/table.core.js'][38]++;
+ for (var i in dtd.$isNotEmpty) {
+ _$jscoverage['plugins/table.core.js'][38]++;
+ if (dtd.$isNotEmpty.hasOwnProperty(i)) {
+ _$jscoverage['plugins/table.core.js'][39]++;
+ if (node.getElementsByTagName(i).length) {
+ _$jscoverage['plugins/table.core.js'][40]++;
+ return 0;
+ }
+ }
+}
+ _$jscoverage['plugins/table.core.js'][43]++;
+ return 1;
+});
+ _$jscoverage['plugins/table.core.js'][45]++;
+ UETable.getWidth = (function (cell) {
+ _$jscoverage['plugins/table.core.js'][46]++;
+ if ((! cell)) {
+ _$jscoverage['plugins/table.core.js'][46]++;
+ return 0;
+ }
+ _$jscoverage['plugins/table.core.js'][47]++;
+ return parseInt(domUtils.getComputedStyle(cell, "width"), 10);
+});
+ _$jscoverage['plugins/table.core.js'][56]++;
+ UETable.getTableCellAlignState = (function (cells) {
+ _$jscoverage['plugins/table.core.js'][58]++;
+ ((! utils.isArray(cells)) && (cells = [cells]));
+ _$jscoverage['plugins/table.core.js'][60]++;
+ var result = {}, status = ["align", "valign"], tempStatus = null, isSame = true;
+ _$jscoverage['plugins/table.core.js'][65]++;
+ utils.each(cells, (function (cellNode) {
+ _$jscoverage['plugins/table.core.js'][67]++;
+ utils.each(status, (function (currentState) {
+ _$jscoverage['plugins/table.core.js'][69]++;
+ tempStatus = cellNode.getAttribute(currentState);
+ _$jscoverage['plugins/table.core.js'][71]++;
+ if (((! result[currentState]) && tempStatus)) {
+ _$jscoverage['plugins/table.core.js'][72]++;
+ result[currentState] = tempStatus;
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][73]++;
+ if (((! result[currentState]) || (tempStatus !== result[currentState]))) {
+ _$jscoverage['plugins/table.core.js'][74]++;
+ isSame = false;
+ _$jscoverage['plugins/table.core.js'][75]++;
+ return false;
+ }
+ }
+}));
+ _$jscoverage['plugins/table.core.js'][80]++;
+ return isSame;
+}));
+ _$jscoverage['plugins/table.core.js'][84]++;
+ return (isSame? result: null);
+});
+ _$jscoverage['plugins/table.core.js'][92]++;
+ UETable.getTableItemsByRange = (function (editor) {
+ _$jscoverage['plugins/table.core.js'][93]++;
+ var start = editor.selection.getStart();
+ _$jscoverage['plugins/table.core.js'][96]++;
+ if ((start && start.id && (start.id.indexOf("_baidu_bookmark_start_") === 0))) {
+ _$jscoverage['plugins/table.core.js'][97]++;
+ start = start.nextSibling;
+ }
+ _$jscoverage['plugins/table.core.js'][101]++;
+ var cell = (start && domUtils.findParentByTagName(start, ["td", "th"], true)), tr = (cell && cell.parentNode), caption = (start && domUtils.findParentByTagName(start, "caption", true)), table = (caption? caption.parentNode: (tr && tr.parentNode.parentNode));
+ _$jscoverage['plugins/table.core.js'][106]++;
+ return ({cell: cell, tr: tr, table: table, caption: caption});
+});
+ _$jscoverage['plugins/table.core.js'][113]++;
+ UETable.getUETableBySelected = (function (editor) {
+ _$jscoverage['plugins/table.core.js'][114]++;
+ var table = UETable.getTableItemsByRange(editor).table;
+ _$jscoverage['plugins/table.core.js'][115]++;
+ if ((table && table.ueTable && table.ueTable.selectedTds.length)) {
+ _$jscoverage['plugins/table.core.js'][116]++;
+ return table.ueTable;
+ }
+ _$jscoverage['plugins/table.core.js'][118]++;
+ return null;
+});
+ _$jscoverage['plugins/table.core.js'][121]++;
+ UETable.getDefaultValue = (function (editor, table) {
+ _$jscoverage['plugins/table.core.js'][122]++;
+ var borderMap = {thin: "0px", medium: "1px", thick: "2px"}, tableBorder, tdPadding, tdBorder, tmpValue;
+ _$jscoverage['plugins/table.core.js'][128]++;
+ if ((! table)) {
+ _$jscoverage['plugins/table.core.js'][129]++;
+ table = editor.document.createElement("table");
+ _$jscoverage['plugins/table.core.js'][130]++;
+ table.insertRow(0).insertCell(0).innerHTML = "xxx";
+ _$jscoverage['plugins/table.core.js'][131]++;
+ editor.body.appendChild(table);
+ _$jscoverage['plugins/table.core.js'][132]++;
+ var td = table.getElementsByTagName("td")[0];
+ _$jscoverage['plugins/table.core.js'][133]++;
+ tmpValue = domUtils.getComputedStyle(table, "border-left-width");
+ _$jscoverage['plugins/table.core.js'][134]++;
+ tableBorder = parseInt((borderMap[tmpValue] || tmpValue), 10);
+ _$jscoverage['plugins/table.core.js'][135]++;
+ tmpValue = domUtils.getComputedStyle(td, "padding-left");
+ _$jscoverage['plugins/table.core.js'][136]++;
+ tdPadding = parseInt((borderMap[tmpValue] || tmpValue), 10);
+ _$jscoverage['plugins/table.core.js'][137]++;
+ tmpValue = domUtils.getComputedStyle(td, "border-left-width");
+ _$jscoverage['plugins/table.core.js'][138]++;
+ tdBorder = parseInt((borderMap[tmpValue] || tmpValue), 10);
+ _$jscoverage['plugins/table.core.js'][139]++;
+ domUtils.remove(table);
+ _$jscoverage['plugins/table.core.js'][140]++;
+ return ({tableBorder: tableBorder, tdPadding: tdPadding, tdBorder: tdBorder});
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][146]++;
+ td = table.getElementsByTagName("td")[0];
+ _$jscoverage['plugins/table.core.js'][147]++;
+ tmpValue = domUtils.getComputedStyle(table, "border-left-width");
+ _$jscoverage['plugins/table.core.js'][148]++;
+ tableBorder = parseInt((borderMap[tmpValue] || tmpValue), 10);
+ _$jscoverage['plugins/table.core.js'][149]++;
+ tmpValue = domUtils.getComputedStyle(td, "padding-left");
+ _$jscoverage['plugins/table.core.js'][150]++;
+ tdPadding = parseInt((borderMap[tmpValue] || tmpValue), 10);
+ _$jscoverage['plugins/table.core.js'][151]++;
+ tmpValue = domUtils.getComputedStyle(td, "border-left-width");
+ _$jscoverage['plugins/table.core.js'][152]++;
+ tdBorder = parseInt((borderMap[tmpValue] || tmpValue), 10);
+ _$jscoverage['plugins/table.core.js'][153]++;
+ return ({tableBorder: tableBorder, tdPadding: tdPadding, tdBorder: tdBorder});
+ }
+});
+ _$jscoverage['plugins/table.core.js'][164]++;
+ UETable.getUETable = (function (tdOrTable) {
+ _$jscoverage['plugins/table.core.js'][165]++;
+ var tag = tdOrTable.tagName.toLowerCase();
+ _$jscoverage['plugins/table.core.js'][166]++;
+ tdOrTable = (((tag == "td") || (tag == "th") || (tag == "caption"))? domUtils.findParentByTagName(tdOrTable, "table", true): tdOrTable);
+ _$jscoverage['plugins/table.core.js'][167]++;
+ if ((! tdOrTable.ueTable)) {
+ _$jscoverage['plugins/table.core.js'][168]++;
+ tdOrTable.ueTable = new UETable(tdOrTable);
+ }
+ _$jscoverage['plugins/table.core.js'][170]++;
+ return tdOrTable.ueTable;
+});
+ _$jscoverage['plugins/table.core.js'][173]++;
+ UETable.cloneCell = (function (cell, ignoreMerge, keepPro) {
+ _$jscoverage['plugins/table.core.js'][174]++;
+ if (((! cell) || utils.isString(cell))) {
+ _$jscoverage['plugins/table.core.js'][175]++;
+ return this.table.ownerDocument.createElement((cell || "td"));
+ }
+ _$jscoverage['plugins/table.core.js'][177]++;
+ var flag = domUtils.hasClass(cell, "selectTdClass");
+ _$jscoverage['plugins/table.core.js'][178]++;
+ (flag && domUtils.removeClasses(cell, "selectTdClass"));
+ _$jscoverage['plugins/table.core.js'][179]++;
+ var tmpCell = cell.cloneNode(true);
+ _$jscoverage['plugins/table.core.js'][180]++;
+ if (ignoreMerge) {
+ _$jscoverage['plugins/table.core.js'][181]++;
+ tmpCell.rowSpan = (tmpCell.colSpan = 1);
+ }
+ _$jscoverage['plugins/table.core.js'][184]++;
+ ((! keepPro) && domUtils.removeAttributes(tmpCell, "width height"));
+ _$jscoverage['plugins/table.core.js'][185]++;
+ ((! keepPro) && domUtils.removeAttributes(tmpCell, "style"));
+ _$jscoverage['plugins/table.core.js'][187]++;
+ tmpCell.style.borderLeftStyle = "";
+ _$jscoverage['plugins/table.core.js'][188]++;
+ tmpCell.style.borderTopStyle = "";
+ _$jscoverage['plugins/table.core.js'][189]++;
+ tmpCell.style.borderLeftColor = cell.style.borderRightColor;
+ _$jscoverage['plugins/table.core.js'][190]++;
+ tmpCell.style.borderLeftWidth = cell.style.borderRightWidth;
+ _$jscoverage['plugins/table.core.js'][191]++;
+ tmpCell.style.borderTopColor = cell.style.borderBottomColor;
+ _$jscoverage['plugins/table.core.js'][192]++;
+ tmpCell.style.borderTopWidth = cell.style.borderBottomWidth;
+ _$jscoverage['plugins/table.core.js'][193]++;
+ (flag && domUtils.addClass(cell, "selectTdClass"));
+ _$jscoverage['plugins/table.core.js'][194]++;
+ return tmpCell;
+});
+ _$jscoverage['plugins/table.core.js'][197]++;
+ UETable.prototype = {getMaxRows: (function () {
+ _$jscoverage['plugins/table.core.js'][199]++;
+ var rows = this.table.rows, maxLen = 1;
+ _$jscoverage['plugins/table.core.js'][200]++;
+ for (var i = 0, row; (row = rows[i]); (i++)) {
+ _$jscoverage['plugins/table.core.js'][201]++;
+ var currentMax = 1;
+ _$jscoverage['plugins/table.core.js'][202]++;
+ for (var j = 0, cj; (cj = row.cells[(j++)]);) {
+ _$jscoverage['plugins/table.core.js'][203]++;
+ currentMax = Math.max((cj.rowSpan || 1), currentMax);
+}
+ _$jscoverage['plugins/table.core.js'][205]++;
+ maxLen = Math.max((currentMax + i), maxLen);
+}
+ _$jscoverage['plugins/table.core.js'][207]++;
+ return maxLen;
+}), getMaxCols: (function () {
+ _$jscoverage['plugins/table.core.js'][213]++;
+ var rows = this.table.rows, maxLen = 0, cellRows = {};
+ _$jscoverage['plugins/table.core.js'][214]++;
+ for (var i = 0, row; (row = rows[i]); (i++)) {
+ _$jscoverage['plugins/table.core.js'][215]++;
+ var cellsNum = 0;
+ _$jscoverage['plugins/table.core.js'][216]++;
+ for (var j = 0, cj; (cj = row.cells[(j++)]);) {
+ _$jscoverage['plugins/table.core.js'][217]++;
+ cellsNum += (cj.colSpan || 1);
+ _$jscoverage['plugins/table.core.js'][218]++;
+ if ((cj.rowSpan && (cj.rowSpan > 1))) {
+ _$jscoverage['plugins/table.core.js'][219]++;
+ for (var k = 1; (k < cj.rowSpan); (k++)) {
+ _$jscoverage['plugins/table.core.js'][220]++;
+ if ((! cellRows[("row_" + (i + k))])) {
+ _$jscoverage['plugins/table.core.js'][221]++;
+ cellRows[("row_" + (i + k))] = (cj.colSpan || 1);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][223]++;
+ (cellRows[("row_" + (i + k))]++);
+ }
+}
+ }
+}
+ _$jscoverage['plugins/table.core.js'][229]++;
+ cellsNum += (cellRows[("row_" + i)] || 0);
+ _$jscoverage['plugins/table.core.js'][230]++;
+ maxLen = Math.max(cellsNum, maxLen);
+}
+ _$jscoverage['plugins/table.core.js'][232]++;
+ return maxLen;
+}), getCellColIndex: (function (cell) {
+}), getHSideCell: (function (cell, right) {
+ _$jscoverage['plugins/table.core.js'][243]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][244]++;
+ var cellInfo = this.getCellInfo(cell), previewRowIndex, previewColIndex;
+ _$jscoverage['plugins/table.core.js'][246]++;
+ var len = this.selectedTds.length, range = this.cellsRange;
+ _$jscoverage['plugins/table.core.js'][249]++;
+ if ((((! right) && ((! len)? (! cellInfo.colIndex): (! range.beginColIndex))) || (right && ((! len)? (cellInfo.colIndex == (this.colsNum - 1)): (range.endColIndex == (this.colsNum - 1)))))) {
+ _$jscoverage['plugins/table.core.js'][249]++;
+ return null;
+ }
+ _$jscoverage['plugins/table.core.js'][251]++;
+ previewRowIndex = ((! len)? cellInfo.rowIndex: range.beginRowIndex);
+ _$jscoverage['plugins/table.core.js'][252]++;
+ previewColIndex = ((! right)? ((! len)? ((cellInfo.colIndex < 1)? 0: (cellInfo.colIndex - 1)): (range.beginColIndex - 1)): ((! len)? (cellInfo.colIndex + 1): (range.endColIndex + 1)));
+ _$jscoverage['plugins/table.core.js'][254]++;
+ return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex);
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.core.js'][256]++;
+ showError(e);
+ }
+}), getTabNextCell: (function (cell, preRowIndex) {
+ _$jscoverage['plugins/table.core.js'][260]++;
+ var cellInfo = this.getCellInfo(cell), rowIndex = (preRowIndex || cellInfo.rowIndex), colIndex = (cellInfo.colIndex + 1 + (cellInfo.colSpan - 1)), nextCell;
+ _$jscoverage['plugins/table.core.js'][264]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][265]++;
+ nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex);
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.core.js'][267]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][268]++;
+ rowIndex = ((rowIndex * 1) + 1);
+ _$jscoverage['plugins/table.core.js'][269]++;
+ colIndex = 0;
+ _$jscoverage['plugins/table.core.js'][270]++;
+ nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex);
+ }
+ catch (e) {
+ }
+ }
+ _$jscoverage['plugins/table.core.js'][274]++;
+ return nextCell;
+}), getVSideCell: (function (cell, bottom, ignoreRange) {
+ _$jscoverage['plugins/table.core.js'][283]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][284]++;
+ var cellInfo = this.getCellInfo(cell), nextRowIndex, nextColIndex;
+ _$jscoverage['plugins/table.core.js'][286]++;
+ var len = (this.selectedTds.length && (! ignoreRange)), range = this.cellsRange;
+ _$jscoverage['plugins/table.core.js'][289]++;
+ if ((((! bottom) && (cellInfo.rowIndex == 0)) || (bottom && ((! len)? ((cellInfo.rowIndex + cellInfo.rowSpan) > (this.rowsNum - 1)): (range.endRowIndex == (this.rowsNum - 1)))))) {
+ _$jscoverage['plugins/table.core.js'][289]++;
+ return null;
+ }
+ _$jscoverage['plugins/table.core.js'][291]++;
+ nextRowIndex = ((! bottom)? ((! len)? (cellInfo.rowIndex - 1): (range.beginRowIndex - 1)): ((! len)? (cellInfo.rowIndex + cellInfo.rowSpan): (range.endRowIndex + 1)));
+ _$jscoverage['plugins/table.core.js'][293]++;
+ nextColIndex = ((! len)? cellInfo.colIndex: range.beginColIndex);
+ _$jscoverage['plugins/table.core.js'][294]++;
+ return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex);
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.core.js'][296]++;
+ showError(e);
+ }
+}), getSameEndPosCells: (function (cell, xOrY) {
+ _$jscoverage['plugins/table.core.js'][303]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][304]++;
+ var flag = (xOrY.toLowerCase() === "x"), end = (domUtils.getXY(cell)[(flag? "x": "y")] + cell[("offset" + (flag? "Width": "Height"))]), rows = this.table.rows, cells = null, returns = [];
+ _$jscoverage['plugins/table.core.js'][308]++;
+ for (var i = 0; (i < this.rowsNum); (i++)) {
+ _$jscoverage['plugins/table.core.js'][309]++;
+ cells = rows[i].cells;
+ _$jscoverage['plugins/table.core.js'][310]++;
+ for (var j = 0, tmpCell; (tmpCell = cells[(j++)]);) {
+ _$jscoverage['plugins/table.core.js'][311]++;
+ var tmpEnd = (domUtils.getXY(tmpCell)[(flag? "x": "y")] + tmpCell[("offset" + (flag? "Width": "Height"))]);
+ _$jscoverage['plugins/table.core.js'][313]++;
+ if (((tmpEnd > end) && flag)) {
+ _$jscoverage['plugins/table.core.js'][313]++;
+ break;
+ }
+ _$jscoverage['plugins/table.core.js'][314]++;
+ if (((cell == tmpCell) || (end == tmpEnd))) {
+ _$jscoverage['plugins/table.core.js'][317]++;
+ if ((tmpCell[(flag? "colSpan": "rowSpan")] == 1)) {
+ _$jscoverage['plugins/table.core.js'][318]++;
+ returns.push(tmpCell);
+ }
+ _$jscoverage['plugins/table.core.js'][320]++;
+ if (flag) {
+ _$jscoverage['plugins/table.core.js'][320]++;
+ break;
+ }
+ }
+}
+}
+ _$jscoverage['plugins/table.core.js'][324]++;
+ return returns;
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.core.js'][326]++;
+ showError(e);
+ }
+}), setCellContent: (function (cell, content) {
+ _$jscoverage['plugins/table.core.js'][330]++;
+ cell.innerHTML = (content || (browser.ie? domUtils.fillChar: " "));
+}), cloneCell: UETable.cloneCell, getSameStartPosXCells: (function (cell) {
+ _$jscoverage['plugins/table.core.js'][337]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][338]++;
+ var start = (domUtils.getXY(cell).x + cell.offsetWidth), rows = this.table.rows, cells, returns = [];
+ _$jscoverage['plugins/table.core.js'][340]++;
+ for (var i = 0; (i < this.rowsNum); (i++)) {
+ _$jscoverage['plugins/table.core.js'][341]++;
+ cells = rows[i].cells;
+ _$jscoverage['plugins/table.core.js'][342]++;
+ for (var j = 0, tmpCell; (tmpCell = cells[(j++)]);) {
+ _$jscoverage['plugins/table.core.js'][343]++;
+ var tmpStart = domUtils.getXY(tmpCell).x;
+ _$jscoverage['plugins/table.core.js'][344]++;
+ if ((tmpStart > start)) {
+ _$jscoverage['plugins/table.core.js'][344]++;
+ break;
+ }
+ _$jscoverage['plugins/table.core.js'][345]++;
+ if (((tmpStart == start) && (tmpCell.colSpan == 1))) {
+ _$jscoverage['plugins/table.core.js'][346]++;
+ returns.push(tmpCell);
+ _$jscoverage['plugins/table.core.js'][347]++;
+ break;
+ }
+}
+}
+ _$jscoverage['plugins/table.core.js'][351]++;
+ return returns;
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.core.js'][353]++;
+ showError(e);
+ }
+}), update: (function (table) {
+ _$jscoverage['plugins/table.core.js'][360]++;
+ this.table = (table || this.table);
+ _$jscoverage['plugins/table.core.js'][361]++;
+ this.selectedTds = [];
+ _$jscoverage['plugins/table.core.js'][362]++;
+ this.cellsRange = {};
+ _$jscoverage['plugins/table.core.js'][363]++;
+ this.indexTable = [];
+ _$jscoverage['plugins/table.core.js'][364]++;
+ var rows = this.table.rows, rowsNum = this.getMaxRows(), dNum = (rowsNum - rows.length), colsNum = this.getMaxCols();
+ _$jscoverage['plugins/table.core.js'][368]++;
+ while ((dNum--)) {
+ _$jscoverage['plugins/table.core.js'][369]++;
+ this.table.insertRow(rows.length);
+}
+ _$jscoverage['plugins/table.core.js'][371]++;
+ this.rowsNum = rowsNum;
+ _$jscoverage['plugins/table.core.js'][372]++;
+ this.colsNum = colsNum;
+ _$jscoverage['plugins/table.core.js'][373]++;
+ for (var i = 0, len = rows.length; (i < len); (i++)) {
+ _$jscoverage['plugins/table.core.js'][374]++;
+ this.indexTable[i] = new Array(colsNum);
+}
+ _$jscoverage['plugins/table.core.js'][377]++;
+ for (var rowIndex = 0, row; (row = rows[rowIndex]); (rowIndex++)) {
+ _$jscoverage['plugins/table.core.js'][378]++;
+ for (var cellIndex = 0, cell, cells = row.cells; (cell = cells[cellIndex]); (cellIndex++)) {
+ _$jscoverage['plugins/table.core.js'][380]++;
+ if ((cell.rowSpan > rowsNum)) {
+ _$jscoverage['plugins/table.core.js'][381]++;
+ cell.rowSpan = rowsNum;
+ }
+ _$jscoverage['plugins/table.core.js'][383]++;
+ var colIndex = cellIndex, rowSpan = (cell.rowSpan || 1), colSpan = (cell.colSpan || 1);
+ _$jscoverage['plugins/table.core.js'][387]++;
+ while (this.indexTable[rowIndex][colIndex]) {
+ _$jscoverage['plugins/table.core.js'][387]++;
+ (colIndex++);
+}
+ _$jscoverage['plugins/table.core.js'][388]++;
+ for (var j = 0; (j < rowSpan); (j++)) {
+ _$jscoverage['plugins/table.core.js'][389]++;
+ for (var k = 0; (k < colSpan); (k++)) {
+ _$jscoverage['plugins/table.core.js'][390]++;
+ this.indexTable[(rowIndex + j)][(colIndex + k)] = {rowIndex: rowIndex, cellIndex: cellIndex, colIndex: colIndex, rowSpan: rowSpan, colSpan: colSpan};
+}
+}
+}
+}
+ _$jscoverage['plugins/table.core.js'][402]++;
+ for (j = 0; (j < rowsNum); (j++)) {
+ _$jscoverage['plugins/table.core.js'][403]++;
+ for (k = 0; (k < colsNum); (k++)) {
+ _$jscoverage['plugins/table.core.js'][404]++;
+ if ((this.indexTable[j][k] === undefined)) {
+ _$jscoverage['plugins/table.core.js'][405]++;
+ row = rows[j];
+ _$jscoverage['plugins/table.core.js'][406]++;
+ cell = row.cells[(row.cells.length - 1)];
+ _$jscoverage['plugins/table.core.js'][407]++;
+ cell = (cell? cell.cloneNode(true): this.table.ownerDocument.createElement("td"));
+ _$jscoverage['plugins/table.core.js'][408]++;
+ this.setCellContent(cell);
+ _$jscoverage['plugins/table.core.js'][409]++;
+ if ((cell.colSpan !== 1)) {
+ _$jscoverage['plugins/table.core.js'][409]++;
+ cell.colSpan = 1;
+ }
+ _$jscoverage['plugins/table.core.js'][410]++;
+ if ((cell.rowSpan !== 1)) {
+ _$jscoverage['plugins/table.core.js'][410]++;
+ cell.rowSpan = 1;
+ }
+ _$jscoverage['plugins/table.core.js'][411]++;
+ row.appendChild(cell);
+ _$jscoverage['plugins/table.core.js'][412]++;
+ this.indexTable[j][k] = {rowIndex: j, cellIndex: cell.cellIndex, colIndex: k, rowSpan: 1, colSpan: 1};
+ }
+}
+}
+ _$jscoverage['plugins/table.core.js'][423]++;
+ var tds = domUtils.getElementsByTagName(this.table, "td"), selectTds = [];
+ _$jscoverage['plugins/table.core.js'][425]++;
+ utils.each(tds, (function (td) {
+ _$jscoverage['plugins/table.core.js'][426]++;
+ if (domUtils.hasClass(td, "selectTdClass")) {
+ _$jscoverage['plugins/table.core.js'][427]++;
+ selectTds.push(td);
+ }
+}));
+ _$jscoverage['plugins/table.core.js'][430]++;
+ if (selectTds.length) {
+ _$jscoverage['plugins/table.core.js'][431]++;
+ var start = selectTds[0], end = selectTds[(selectTds.length - 1)], startInfo = this.getCellInfo(start), endInfo = this.getCellInfo(end);
+ _$jscoverage['plugins/table.core.js'][435]++;
+ this.selectedTds = selectTds;
+ _$jscoverage['plugins/table.core.js'][436]++;
+ this.cellsRange = {beginRowIndex: startInfo.rowIndex, beginColIndex: startInfo.colIndex, endRowIndex: ((endInfo.rowIndex + endInfo.rowSpan) - 1), endColIndex: ((endInfo.colIndex + endInfo.colSpan) - 1)};
+ }
+}), getCellInfo: (function (cell) {
+ _$jscoverage['plugins/table.core.js'][449]++;
+ if ((! cell)) {
+ _$jscoverage['plugins/table.core.js'][449]++;
+ return;
+ }
+ _$jscoverage['plugins/table.core.js'][450]++;
+ var cellIndex = cell.cellIndex, rowIndex = cell.parentNode.rowIndex, rowInfo = this.indexTable[rowIndex], numCols = this.colsNum;
+ _$jscoverage['plugins/table.core.js'][454]++;
+ for (var colIndex = cellIndex; (colIndex < numCols); (colIndex++)) {
+ _$jscoverage['plugins/table.core.js'][455]++;
+ var cellInfo = rowInfo[colIndex];
+ _$jscoverage['plugins/table.core.js'][456]++;
+ if (((cellInfo.rowIndex === rowIndex) && (cellInfo.cellIndex === cellIndex))) {
+ _$jscoverage['plugins/table.core.js'][457]++;
+ return cellInfo;
+ }
+}
+}), getCell: (function (rowIndex, cellIndex) {
+ _$jscoverage['plugins/table.core.js'][465]++;
+ return (((rowIndex < this.rowsNum) && this.table.rows[rowIndex].cells[cellIndex]) || null);
+}), deleteCell: (function (cell, rowIndex) {
+ _$jscoverage['plugins/table.core.js'][471]++;
+ rowIndex = (((typeof rowIndex) == "number")? rowIndex: cell.parentNode.rowIndex);
+ _$jscoverage['plugins/table.core.js'][472]++;
+ var row = this.table.rows[rowIndex];
+ _$jscoverage['plugins/table.core.js'][473]++;
+ row.deleteCell(cell.cellIndex);
+}), getCellsRange: (function (cellA, cellB) {
+ _$jscoverage['plugins/table.core.js'][479]++;
+ function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex) {
+ _$jscoverage['plugins/table.core.js'][480]++;
+ var tmpBeginRowIndex = beginRowIndex, tmpBeginColIndex = beginColIndex, tmpEndRowIndex = endRowIndex, tmpEndColIndex = endColIndex, cellInfo, colIndex, rowIndex;
+ _$jscoverage['plugins/table.core.js'][486]++;
+ if ((beginRowIndex > 0)) {
+ _$jscoverage['plugins/table.core.js'][487]++;
+ for (colIndex = beginColIndex; (colIndex < endColIndex); (colIndex++)) {
+ _$jscoverage['plugins/table.core.js'][488]++;
+ cellInfo = me.indexTable[beginRowIndex][colIndex];
+ _$jscoverage['plugins/table.core.js'][489]++;
+ rowIndex = cellInfo.rowIndex;
+ _$jscoverage['plugins/table.core.js'][490]++;
+ if ((rowIndex < beginRowIndex)) {
+ _$jscoverage['plugins/table.core.js'][491]++;
+ tmpBeginRowIndex = Math.min(rowIndex, tmpBeginRowIndex);
+ }
+}
+ }
+ _$jscoverage['plugins/table.core.js'][496]++;
+ if ((endColIndex < me.colsNum)) {
+ _$jscoverage['plugins/table.core.js'][497]++;
+ for (rowIndex = beginRowIndex; (rowIndex < endRowIndex); (rowIndex++)) {
+ _$jscoverage['plugins/table.core.js'][498]++;
+ cellInfo = me.indexTable[rowIndex][endColIndex];
+ _$jscoverage['plugins/table.core.js'][499]++;
+ colIndex = ((cellInfo.colIndex + cellInfo.colSpan) - 1);
+ _$jscoverage['plugins/table.core.js'][500]++;
+ if ((colIndex > endColIndex)) {
+ _$jscoverage['plugins/table.core.js'][501]++;
+ tmpEndColIndex = Math.max(colIndex, tmpEndColIndex);
+ }
+}
+ }
+ _$jscoverage['plugins/table.core.js'][506]++;
+ if ((endRowIndex < me.rowsNum)) {
+ _$jscoverage['plugins/table.core.js'][507]++;
+ for (colIndex = beginColIndex; (colIndex < endColIndex); (colIndex++)) {
+ _$jscoverage['plugins/table.core.js'][508]++;
+ cellInfo = me.indexTable[endRowIndex][colIndex];
+ _$jscoverage['plugins/table.core.js'][509]++;
+ rowIndex = ((cellInfo.rowIndex + cellInfo.rowSpan) - 1);
+ _$jscoverage['plugins/table.core.js'][510]++;
+ if ((rowIndex > endRowIndex)) {
+ _$jscoverage['plugins/table.core.js'][511]++;
+ tmpEndRowIndex = Math.max(rowIndex, tmpEndRowIndex);
+ }
+}
+ }
+ _$jscoverage['plugins/table.core.js'][516]++;
+ if ((beginColIndex > 0)) {
+ _$jscoverage['plugins/table.core.js'][517]++;
+ for (rowIndex = beginRowIndex; (rowIndex < endRowIndex); (rowIndex++)) {
+ _$jscoverage['plugins/table.core.js'][518]++;
+ cellInfo = me.indexTable[rowIndex][beginColIndex];
+ _$jscoverage['plugins/table.core.js'][519]++;
+ colIndex = cellInfo.colIndex;
+ _$jscoverage['plugins/table.core.js'][520]++;
+ if ((colIndex < beginColIndex)) {
+ _$jscoverage['plugins/table.core.js'][521]++;
+ tmpBeginColIndex = Math.min(cellInfo.colIndex, tmpBeginColIndex);
+ }
+}
+ }
+ _$jscoverage['plugins/table.core.js'][526]++;
+ if (((tmpBeginRowIndex != beginRowIndex) || (tmpBeginColIndex != beginColIndex) || (tmpEndRowIndex != endRowIndex) || (tmpEndColIndex != endColIndex))) {
+ _$jscoverage['plugins/table.core.js'][527]++;
+ return checkRange(tmpBeginRowIndex, tmpBeginColIndex, tmpEndRowIndex, tmpEndColIndex);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][530]++;
+ return ({beginRowIndex: beginRowIndex, beginColIndex: beginColIndex, endRowIndex: endRowIndex, endColIndex: endColIndex});
+ }
+}
+ _$jscoverage['plugins/table.core.js'][539]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][540]++;
+ var me = this, cellAInfo = me.getCellInfo(cellA);
+ _$jscoverage['plugins/table.core.js'][542]++;
+ if ((cellA === cellB)) {
+ _$jscoverage['plugins/table.core.js'][543]++;
+ return ({beginRowIndex: cellAInfo.rowIndex, beginColIndex: cellAInfo.colIndex, endRowIndex: ((cellAInfo.rowIndex + cellAInfo.rowSpan) - 1), endColIndex: ((cellAInfo.colIndex + cellAInfo.colSpan) - 1)});
+ }
+ _$jscoverage['plugins/table.core.js'][550]++;
+ var cellBInfo = me.getCellInfo(cellB);
+ _$jscoverage['plugins/table.core.js'][552]++;
+ var beginRowIndex = Math.min(cellAInfo.rowIndex, cellBInfo.rowIndex), beginColIndex = Math.min(cellAInfo.colIndex, cellBInfo.colIndex), endRowIndex = Math.max(((cellAInfo.rowIndex + cellAInfo.rowSpan) - 1), ((cellBInfo.rowIndex + cellBInfo.rowSpan) - 1)), endColIndex = Math.max(((cellAInfo.colIndex + cellAInfo.colSpan) - 1), ((cellBInfo.colIndex + cellBInfo.colSpan) - 1));
+ _$jscoverage['plugins/table.core.js'][557]++;
+ return checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex);
+ }
+ catch (e) {
+ }
+}), getCells: (function (range) {
+ _$jscoverage['plugins/table.core.js'][567]++;
+ this.clearSelected();
+ _$jscoverage['plugins/table.core.js'][568]++;
+ var beginRowIndex = range.beginRowIndex, beginColIndex = range.beginColIndex, endRowIndex = range.endRowIndex, endColIndex = range.endColIndex, cellInfo, rowIndex, colIndex, tdHash = {}, returnTds = [];
+ _$jscoverage['plugins/table.core.js'][573]++;
+ for (var i = beginRowIndex; (i <= endRowIndex); (i++)) {
+ _$jscoverage['plugins/table.core.js'][574]++;
+ for (var j = beginColIndex; (j <= endColIndex); (j++)) {
+ _$jscoverage['plugins/table.core.js'][575]++;
+ cellInfo = this.indexTable[i][j];
+ _$jscoverage['plugins/table.core.js'][576]++;
+ rowIndex = cellInfo.rowIndex;
+ _$jscoverage['plugins/table.core.js'][577]++;
+ colIndex = cellInfo.colIndex;
+ _$jscoverage['plugins/table.core.js'][579]++;
+ var key = (rowIndex + "|" + colIndex);
+ _$jscoverage['plugins/table.core.js'][580]++;
+ if (tdHash[key]) {
+ _$jscoverage['plugins/table.core.js'][580]++;
+ continue;
+ }
+ _$jscoverage['plugins/table.core.js'][581]++;
+ tdHash[key] = 1;
+ _$jscoverage['plugins/table.core.js'][582]++;
+ if (((rowIndex < i) || (colIndex < j) || (((rowIndex + cellInfo.rowSpan) - 1) > endRowIndex) || (((colIndex + cellInfo.colSpan) - 1) > endColIndex))) {
+ _$jscoverage['plugins/table.core.js'][583]++;
+ return null;
+ }
+ _$jscoverage['plugins/table.core.js'][585]++;
+ returnTds.push(this.getCell(rowIndex, cellInfo.cellIndex));
+}
+}
+ _$jscoverage['plugins/table.core.js'][588]++;
+ return returnTds;
+}), clearSelected: (function () {
+ _$jscoverage['plugins/table.core.js'][594]++;
+ UETable.removeSelectedClass(this.selectedTds);
+ _$jscoverage['plugins/table.core.js'][595]++;
+ this.selectedTds = [];
+ _$jscoverage['plugins/table.core.js'][596]++;
+ this.cellsRange = {};
+}), setSelected: (function (range) {
+ _$jscoverage['plugins/table.core.js'][602]++;
+ var cells = this.getCells(range);
+ _$jscoverage['plugins/table.core.js'][603]++;
+ UETable.addSelectedClass(cells);
+ _$jscoverage['plugins/table.core.js'][604]++;
+ this.selectedTds = cells;
+ _$jscoverage['plugins/table.core.js'][605]++;
+ this.cellsRange = range;
+}), isFullRow: (function () {
+ _$jscoverage['plugins/table.core.js'][608]++;
+ var range = this.cellsRange;
+ _$jscoverage['plugins/table.core.js'][609]++;
+ return (((range.endColIndex - range.beginColIndex) + 1) == this.colsNum);
+}), isFullCol: (function () {
+ _$jscoverage['plugins/table.core.js'][612]++;
+ var range = this.cellsRange, table = this.table, ths = table.getElementsByTagName("th"), rows = ((range.endRowIndex - range.beginRowIndex) + 1);
+ _$jscoverage['plugins/table.core.js'][616]++;
+ return ((! ths.length)? (rows == this.rowsNum): ((rows == this.rowsNum) || (rows == (this.rowsNum - 1))));
+}), getNextCell: (function (cell, bottom, ignoreRange) {
+ _$jscoverage['plugins/table.core.js'][625]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][626]++;
+ var cellInfo = this.getCellInfo(cell), nextRowIndex, nextColIndex;
+ _$jscoverage['plugins/table.core.js'][628]++;
+ var len = (this.selectedTds.length && (! ignoreRange)), range = this.cellsRange;
+ _$jscoverage['plugins/table.core.js'][631]++;
+ if ((((! bottom) && (cellInfo.rowIndex == 0)) || (bottom && ((! len)? ((cellInfo.rowIndex + cellInfo.rowSpan) > (this.rowsNum - 1)): (range.endRowIndex == (this.rowsNum - 1)))))) {
+ _$jscoverage['plugins/table.core.js'][631]++;
+ return null;
+ }
+ _$jscoverage['plugins/table.core.js'][633]++;
+ nextRowIndex = ((! bottom)? ((! len)? (cellInfo.rowIndex - 1): (range.beginRowIndex - 1)): ((! len)? (cellInfo.rowIndex + cellInfo.rowSpan): (range.endRowIndex + 1)));
+ _$jscoverage['plugins/table.core.js'][635]++;
+ nextColIndex = ((! len)? cellInfo.colIndex: range.beginColIndex);
+ _$jscoverage['plugins/table.core.js'][636]++;
+ return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex);
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.core.js'][638]++;
+ showError(e);
+ }
+}), getPreviewCell: (function (cell, top) {
+ _$jscoverage['plugins/table.core.js'][642]++;
+ try {
+ _$jscoverage['plugins/table.core.js'][643]++;
+ var cellInfo = this.getCellInfo(cell), previewRowIndex, previewColIndex;
+ _$jscoverage['plugins/table.core.js'][645]++;
+ var len = this.selectedTds.length, range = this.cellsRange;
+ _$jscoverage['plugins/table.core.js'][648]++;
+ if ((((! top) && ((! len)? (! cellInfo.colIndex): (! range.beginColIndex))) || (top && ((! len)? (cellInfo.rowIndex > (this.colsNum - 1)): (range.endColIndex == (this.colsNum - 1)))))) {
+ _$jscoverage['plugins/table.core.js'][648]++;
+ return null;
+ }
+ _$jscoverage['plugins/table.core.js'][650]++;
+ previewRowIndex = ((! top)? ((! len)? cellInfo.rowIndex: range.beginRowIndex): ((! len)? ((cellInfo.rowIndex < 1)? 0: (cellInfo.rowIndex - 1)): range.beginRowIndex));
+ _$jscoverage['plugins/table.core.js'][652]++;
+ previewColIndex = ((! top)? ((! len)? ((cellInfo.colIndex < 1)? 0: (cellInfo.colIndex - 1)): (range.beginColIndex - 1)): ((! len)? cellInfo.colIndex: (range.endColIndex + 1)));
+ _$jscoverage['plugins/table.core.js'][654]++;
+ return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex);
+ }
+ catch (e) {
+ _$jscoverage['plugins/table.core.js'][656]++;
+ showError(e);
+ }
+}), moveContent: (function (cellTo, cellFrom) {
+ _$jscoverage['plugins/table.core.js'][663]++;
+ if (UETable.isEmptyBlock(cellFrom)) {
+ _$jscoverage['plugins/table.core.js'][663]++;
+ return;
+ }
+ _$jscoverage['plugins/table.core.js'][664]++;
+ if (UETable.isEmptyBlock(cellTo)) {
+ _$jscoverage['plugins/table.core.js'][665]++;
+ cellTo.innerHTML = cellFrom.innerHTML;
+ _$jscoverage['plugins/table.core.js'][666]++;
+ return;
+ }
+ _$jscoverage['plugins/table.core.js'][668]++;
+ var child = cellTo.lastChild;
+ _$jscoverage['plugins/table.core.js'][669]++;
+ if (((child.nodeType == 3) || (! dtd.$block[child.tagName]))) {
+ _$jscoverage['plugins/table.core.js'][670]++;
+ cellTo.appendChild(cellTo.ownerDocument.createElement("br"));
+ }
+ _$jscoverage['plugins/table.core.js'][672]++;
+ while ((child = cellFrom.firstChild)) {
+ _$jscoverage['plugins/table.core.js'][673]++;
+ cellTo.appendChild(child);
+}
+}), mergeRight: (function (cell) {
+ _$jscoverage['plugins/table.core.js'][680]++;
+ var cellInfo = this.getCellInfo(cell), rightColIndex = (cellInfo.colIndex + cellInfo.colSpan), rightCellInfo = this.indexTable[cellInfo.rowIndex][rightColIndex], rightCell = this.getCell(rightCellInfo.rowIndex, rightCellInfo.cellIndex);
+ _$jscoverage['plugins/table.core.js'][685]++;
+ cell.colSpan = (cellInfo.colSpan + rightCellInfo.colSpan);
+ _$jscoverage['plugins/table.core.js'][687]++;
+ cell.removeAttribute("width");
+ _$jscoverage['plugins/table.core.js'][689]++;
+ this.moveContent(cell, rightCell);
+ _$jscoverage['plugins/table.core.js'][691]++;
+ this.deleteCell(rightCell, rightCellInfo.rowIndex);
+ _$jscoverage['plugins/table.core.js'][692]++;
+ this.update();
+}), mergeDown: (function (cell) {
+ _$jscoverage['plugins/table.core.js'][698]++;
+ var cellInfo = this.getCellInfo(cell), downRowIndex = (cellInfo.rowIndex + cellInfo.rowSpan), downCellInfo = this.indexTable[downRowIndex][cellInfo.colIndex], downCell = this.getCell(downCellInfo.rowIndex, downCellInfo.cellIndex);
+ _$jscoverage['plugins/table.core.js'][702]++;
+ cell.rowSpan = (cellInfo.rowSpan + downCellInfo.rowSpan);
+ _$jscoverage['plugins/table.core.js'][703]++;
+ cell.removeAttribute("height");
+ _$jscoverage['plugins/table.core.js'][704]++;
+ this.moveContent(cell, downCell);
+ _$jscoverage['plugins/table.core.js'][705]++;
+ this.deleteCell(downCell, downCellInfo.rowIndex);
+ _$jscoverage['plugins/table.core.js'][706]++;
+ this.update();
+}), mergeRange: (function () {
+ _$jscoverage['plugins/table.core.js'][713]++;
+ var range = this.cellsRange, leftTopCell = this.getCell(range.beginRowIndex, this.indexTable[range.beginRowIndex][range.beginColIndex].cellIndex);
+ _$jscoverage['plugins/table.core.js'][716]++;
+ if (((leftTopCell.tagName == "TH") && (range.endRowIndex !== range.beginRowIndex))) {
+ _$jscoverage['plugins/table.core.js'][717]++;
+ var index = this.indexTable, info = this.getCellInfo(leftTopCell);
+ _$jscoverage['plugins/table.core.js'][719]++;
+ leftTopCell = this.getCell(1, index[1][info.colIndex].cellIndex);
+ _$jscoverage['plugins/table.core.js'][720]++;
+ range = this.getCellsRange(leftTopCell, this.getCell(index[(this.rowsNum - 1)][info.colIndex].rowIndex, index[(this.rowsNum - 1)][info.colIndex].cellIndex));
+ }
+ _$jscoverage['plugins/table.core.js'][724]++;
+ var cells = this.getCells(range);
+ _$jscoverage['plugins/table.core.js'][725]++;
+ for (var i = 0, ci; (ci = cells[(i++)]);) {
+ _$jscoverage['plugins/table.core.js'][726]++;
+ if ((ci !== leftTopCell)) {
+ _$jscoverage['plugins/table.core.js'][727]++;
+ this.moveContent(leftTopCell, ci);
+ _$jscoverage['plugins/table.core.js'][728]++;
+ this.deleteCell(ci);
+ }
+}
+ _$jscoverage['plugins/table.core.js'][732]++;
+ leftTopCell.rowSpan = ((range.endRowIndex - range.beginRowIndex) + 1);
+ _$jscoverage['plugins/table.core.js'][733]++;
+ ((leftTopCell.rowSpan > 1) && leftTopCell.removeAttribute("height"));
+ _$jscoverage['plugins/table.core.js'][734]++;
+ leftTopCell.colSpan = ((range.endColIndex - range.beginColIndex) + 1);
+ _$jscoverage['plugins/table.core.js'][735]++;
+ ((leftTopCell.colSpan > 1) && leftTopCell.removeAttribute("width"));
+ _$jscoverage['plugins/table.core.js'][736]++;
+ if (((leftTopCell.rowSpan == this.rowsNum) && (leftTopCell.colSpan != 1))) {
+ _$jscoverage['plugins/table.core.js'][737]++;
+ leftTopCell.colSpan = 1;
+ }
+ _$jscoverage['plugins/table.core.js'][740]++;
+ if (((leftTopCell.colSpan == this.colsNum) && (leftTopCell.rowSpan != 1))) {
+ _$jscoverage['plugins/table.core.js'][741]++;
+ var rowIndex = leftTopCell.parentNode.rowIndex;
+ _$jscoverage['plugins/table.core.js'][743]++;
+ if (this.table.deleteRow) {
+ _$jscoverage['plugins/table.core.js'][744]++;
+ for (var i = (rowIndex + 1), curIndex = (rowIndex + 1), len = leftTopCell.rowSpan; (i < len); (i++)) {
+ _$jscoverage['plugins/table.core.js'][745]++;
+ this.table.deleteRow(curIndex);
+}
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][748]++;
+ for (var i = 0, len = (leftTopCell.rowSpan - 1); (i < len); (i++)) {
+ _$jscoverage['plugins/table.core.js'][749]++;
+ var row = this.table.rows[(rowIndex + 1)];
+ _$jscoverage['plugins/table.core.js'][750]++;
+ row.parentNode.removeChild(row);
+}
+ }
+ _$jscoverage['plugins/table.core.js'][753]++;
+ leftTopCell.rowSpan = 1;
+ }
+ _$jscoverage['plugins/table.core.js'][755]++;
+ this.update();
+}), insertRow: (function (rowIndex, sourceCell) {
+ _$jscoverage['plugins/table.core.js'][761]++;
+ var numCols = this.colsNum, table = this.table, row = table.insertRow(rowIndex), cell, width = parseInt(((table.offsetWidth - (numCols * 20) - numCols - 1) / numCols), 10);
+ _$jscoverage['plugins/table.core.js'][766]++;
+ if (((rowIndex == 0) || (rowIndex == this.rowsNum))) {
+ _$jscoverage['plugins/table.core.js'][767]++;
+ for (var colIndex = 0; (colIndex < numCols); (colIndex++)) {
+ _$jscoverage['plugins/table.core.js'][768]++;
+ cell = this.cloneCell(sourceCell, true);
+ _$jscoverage['plugins/table.core.js'][769]++;
+ this.setCellContent(cell);
+ _$jscoverage['plugins/table.core.js'][770]++;
+ (cell.getAttribute("vAlign") && cell.setAttribute("vAlign", cell.getAttribute("vAlign")));
+ _$jscoverage['plugins/table.core.js'][771]++;
+ row.appendChild(cell);
+}
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][774]++;
+ var infoRow = this.indexTable[rowIndex], cellIndex = 0;
+ _$jscoverage['plugins/table.core.js'][776]++;
+ for (colIndex = 0; (colIndex < numCols); (colIndex++)) {
+ _$jscoverage['plugins/table.core.js'][777]++;
+ var cellInfo = infoRow[colIndex];
+ _$jscoverage['plugins/table.core.js'][779]++;
+ if ((cellInfo.rowIndex < rowIndex)) {
+ _$jscoverage['plugins/table.core.js'][780]++;
+ cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);
+ _$jscoverage['plugins/table.core.js'][781]++;
+ cell.rowSpan = (cellInfo.rowSpan + 1);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][783]++;
+ cell = this.cloneCell(sourceCell, true);
+ _$jscoverage['plugins/table.core.js'][784]++;
+ this.setCellContent(cell);
+ _$jscoverage['plugins/table.core.js'][785]++;
+ row.appendChild(cell);
+ }
+}
+ }
+ _$jscoverage['plugins/table.core.js'][790]++;
+ this.update();
+ _$jscoverage['plugins/table.core.js'][791]++;
+ return row;
+}), deleteRow: (function (rowIndex) {
+ _$jscoverage['plugins/table.core.js'][798]++;
+ var row = this.table.rows[rowIndex], infoRow = this.indexTable[rowIndex], colsNum = this.colsNum, count = 0;
+ _$jscoverage['plugins/table.core.js'][802]++;
+ for (var colIndex = 0; (colIndex < colsNum);) {
+ _$jscoverage['plugins/table.core.js'][803]++;
+ var cellInfo = infoRow[colIndex], cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);
+ _$jscoverage['plugins/table.core.js'][805]++;
+ if ((cell.rowSpan > 1)) {
+ _$jscoverage['plugins/table.core.js'][806]++;
+ if ((cellInfo.rowIndex == rowIndex)) {
+ _$jscoverage['plugins/table.core.js'][807]++;
+ var clone = cell.cloneNode(true);
+ _$jscoverage['plugins/table.core.js'][808]++;
+ clone.rowSpan = (cell.rowSpan - 1);
+ _$jscoverage['plugins/table.core.js'][809]++;
+ clone.innerHTML = "";
+ _$jscoverage['plugins/table.core.js'][810]++;
+ cell.rowSpan = 1;
+ _$jscoverage['plugins/table.core.js'][811]++;
+ var nextRowIndex = (rowIndex + 1), nextRow = this.table.rows[nextRowIndex], insertCellIndex, preMerged = (this.getPreviewMergedCellsNum(nextRowIndex, colIndex) - count);
+ _$jscoverage['plugins/table.core.js'][815]++;
+ if ((preMerged < colIndex)) {
+ _$jscoverage['plugins/table.core.js'][816]++;
+ insertCellIndex = (colIndex - preMerged - 1);
+ _$jscoverage['plugins/table.core.js'][818]++;
+ domUtils.insertAfter(nextRow.cells[insertCellIndex], clone);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][820]++;
+ if (nextRow.cells.length) {
+ _$jscoverage['plugins/table.core.js'][820]++;
+ nextRow.insertBefore(clone, nextRow.cells[0]);
+ }
+ }
+ _$jscoverage['plugins/table.core.js'][822]++;
+ count += 1;
+ }
+ }
+ _$jscoverage['plugins/table.core.js'][826]++;
+ colIndex += (cell.colSpan || 1);
+}
+ _$jscoverage['plugins/table.core.js'][828]++;
+ var deleteTds = [], cacheMap = {};
+ _$jscoverage['plugins/table.core.js'][829]++;
+ for (colIndex = 0; (colIndex < colsNum); (colIndex++)) {
+ _$jscoverage['plugins/table.core.js'][830]++;
+ var tmpRowIndex = infoRow[colIndex].rowIndex, tmpCellIndex = infoRow[colIndex].cellIndex, key = (tmpRowIndex + "_" + tmpCellIndex);
+ _$jscoverage['plugins/table.core.js'][833]++;
+ if (cacheMap[key]) {
+ _$jscoverage['plugins/table.core.js'][833]++;
+ continue;
+ }
+ _$jscoverage['plugins/table.core.js'][834]++;
+ cacheMap[key] = 1;
+ _$jscoverage['plugins/table.core.js'][835]++;
+ cell = this.getCell(tmpRowIndex, tmpCellIndex);
+ _$jscoverage['plugins/table.core.js'][836]++;
+ deleteTds.push(cell);
+}
+ _$jscoverage['plugins/table.core.js'][838]++;
+ var mergeTds = [];
+ _$jscoverage['plugins/table.core.js'][839]++;
+ utils.each(deleteTds, (function (td) {
+ _$jscoverage['plugins/table.core.js'][840]++;
+ if ((td.rowSpan == 1)) {
+ _$jscoverage['plugins/table.core.js'][841]++;
+ td.parentNode.removeChild(td);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][843]++;
+ mergeTds.push(td);
+ }
+}));
+ _$jscoverage['plugins/table.core.js'][846]++;
+ utils.each(mergeTds, (function (td) {
+ _$jscoverage['plugins/table.core.js'][847]++;
+ (td.rowSpan--);
+}));
+ _$jscoverage['plugins/table.core.js'][849]++;
+ row.parentNode.removeChild(row);
+ _$jscoverage['plugins/table.core.js'][852]++;
+ this.update();
+}), insertCol: (function (colIndex, sourceCell, defaultValue) {
+ _$jscoverage['plugins/table.core.js'][855]++;
+ var rowsNum = this.rowsNum, rowIndex = 0, tableRow, cell, backWidth = parseInt(((this.table.offsetWidth - ((this.colsNum + 1) * 20) - (this.colsNum + 1)) / (this.colsNum + 1)), 10);
+ _$jscoverage['plugins/table.core.js'][860]++;
+ function replaceTdToTh(rowIndex, cell, tableRow) {
+ _$jscoverage['plugins/table.core.js'][861]++;
+ if ((rowIndex == 0)) {
+ _$jscoverage['plugins/table.core.js'][862]++;
+ var th = (cell.nextSibling || cell.previousSibling);
+ _$jscoverage['plugins/table.core.js'][863]++;
+ if ((th.tagName == "TH")) {
+ _$jscoverage['plugins/table.core.js'][864]++;
+ th = cell.ownerDocument.createElement("th");
+ _$jscoverage['plugins/table.core.js'][865]++;
+ th.appendChild(cell.firstChild);
+ _$jscoverage['plugins/table.core.js'][866]++;
+ tableRow.insertBefore(th, cell);
+ _$jscoverage['plugins/table.core.js'][867]++;
+ domUtils.remove(cell);
+ }
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][870]++;
+ if ((cell.tagName == "TH")) {
+ _$jscoverage['plugins/table.core.js'][871]++;
+ var td = cell.ownerDocument.createElement("td");
+ _$jscoverage['plugins/table.core.js'][872]++;
+ td.appendChild(cell.firstChild);
+ _$jscoverage['plugins/table.core.js'][873]++;
+ tableRow.insertBefore(td, cell);
+ _$jscoverage['plugins/table.core.js'][874]++;
+ domUtils.remove(cell);
+ }
+ }
+}
+ _$jscoverage['plugins/table.core.js'][879]++;
+ var preCell;
+ _$jscoverage['plugins/table.core.js'][880]++;
+ if (((colIndex == 0) || (colIndex == this.colsNum))) {
+ _$jscoverage['plugins/table.core.js'][881]++;
+ for (; (rowIndex < rowsNum); (rowIndex++)) {
+ _$jscoverage['plugins/table.core.js'][882]++;
+ tableRow = this.table.rows[rowIndex];
+ _$jscoverage['plugins/table.core.js'][883]++;
+ preCell = tableRow.cells[((colIndex == 0)? colIndex: tableRow.cells.length)];
+ _$jscoverage['plugins/table.core.js'][884]++;
+ cell = this.cloneCell(sourceCell, true);
+ _$jscoverage['plugins/table.core.js'][885]++;
+ this.setCellContent(cell);
+ _$jscoverage['plugins/table.core.js'][886]++;
+ cell.setAttribute("vAlign", cell.getAttribute("vAlign"));
+ _$jscoverage['plugins/table.core.js'][887]++;
+ (preCell && cell.setAttribute("width", preCell.getAttribute("width")));
+ _$jscoverage['plugins/table.core.js'][888]++;
+ if ((! colIndex)) {
+ _$jscoverage['plugins/table.core.js'][889]++;
+ tableRow.insertBefore(cell, tableRow.cells[0]);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][891]++;
+ domUtils.insertAfter(tableRow.cells[(tableRow.cells.length - 1)], cell);
+ }
+ _$jscoverage['plugins/table.core.js'][893]++;
+ replaceTdToTh(rowIndex, cell, tableRow);
+}
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][896]++;
+ for (; (rowIndex < rowsNum); (rowIndex++)) {
+ _$jscoverage['plugins/table.core.js'][897]++;
+ var cellInfo = this.indexTable[rowIndex][colIndex];
+ _$jscoverage['plugins/table.core.js'][898]++;
+ if ((cellInfo.colIndex < colIndex)) {
+ _$jscoverage['plugins/table.core.js'][899]++;
+ cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);
+ _$jscoverage['plugins/table.core.js'][900]++;
+ cell.colSpan = (cellInfo.colSpan + 1);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][902]++;
+ tableRow = this.table.rows[rowIndex];
+ _$jscoverage['plugins/table.core.js'][903]++;
+ preCell = tableRow.cells[cellInfo.cellIndex];
+ _$jscoverage['plugins/table.core.js'][905]++;
+ cell = this.cloneCell(sourceCell, true);
+ _$jscoverage['plugins/table.core.js'][906]++;
+ this.setCellContent(cell);
+ _$jscoverage['plugins/table.core.js'][907]++;
+ cell.setAttribute("vAlign", cell.getAttribute("vAlign"));
+ _$jscoverage['plugins/table.core.js'][908]++;
+ (preCell && cell.setAttribute("width", preCell.getAttribute("width")));
+ _$jscoverage['plugins/table.core.js'][910]++;
+ (preCell? tableRow.insertBefore(cell, preCell): tableRow.appendChild(cell));
+ }
+ _$jscoverage['plugins/table.core.js'][912]++;
+ replaceTdToTh(rowIndex, cell, tableRow);
+}
+ }
+ _$jscoverage['plugins/table.core.js'][916]++;
+ this.update();
+ _$jscoverage['plugins/table.core.js'][917]++;
+ this.updateWidth(backWidth, (defaultValue || {tdPadding: 10, tdBorder: 1}));
+}), updateWidth: (function (width, defaultValue) {
+ _$jscoverage['plugins/table.core.js'][920]++;
+ var table = this.table, tmpWidth = ((UETable.getWidth(table) - (defaultValue.tdPadding * 2) - defaultValue.tdBorder) + width);
+ _$jscoverage['plugins/table.core.js'][922]++;
+ if ((tmpWidth < table.ownerDocument.body.offsetWidth)) {
+ _$jscoverage['plugins/table.core.js'][923]++;
+ table.setAttribute("width", tmpWidth);
+ _$jscoverage['plugins/table.core.js'][924]++;
+ return;
+ }
+ _$jscoverage['plugins/table.core.js'][926]++;
+ var tds = domUtils.getElementsByTagName(this.table, "td");
+ _$jscoverage['plugins/table.core.js'][927]++;
+ utils.each(tds, (function (td) {
+ _$jscoverage['plugins/table.core.js'][928]++;
+ td.setAttribute("width", width);
+}));
+}), deleteCol: (function (colIndex) {
+ _$jscoverage['plugins/table.core.js'][932]++;
+ var indexTable = this.indexTable, tableRows = this.table.rows, backTableWidth = this.table.getAttribute("width"), backTdWidth = 0, rowsNum = this.rowsNum, cacheMap = {};
+ _$jscoverage['plugins/table.core.js'][938]++;
+ for (var rowIndex = 0; (rowIndex < rowsNum);) {
+ _$jscoverage['plugins/table.core.js'][939]++;
+ var infoRow = indexTable[rowIndex], cellInfo = infoRow[colIndex], key = (cellInfo.rowIndex + "_" + cellInfo.colIndex);
+ _$jscoverage['plugins/table.core.js'][943]++;
+ if (cacheMap[key]) {
+ _$jscoverage['plugins/table.core.js'][943]++;
+ continue;
+ }
+ _$jscoverage['plugins/table.core.js'][944]++;
+ cacheMap[key] = 1;
+ _$jscoverage['plugins/table.core.js'][945]++;
+ var cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);
+ _$jscoverage['plugins/table.core.js'][946]++;
+ if ((! backTdWidth)) {
+ _$jscoverage['plugins/table.core.js'][946]++;
+ backTdWidth = (cell && parseInt((cell.offsetWidth / cell.colSpan), 10).toFixed(0));
+ }
+ _$jscoverage['plugins/table.core.js'][948]++;
+ if ((cell.colSpan > 1)) {
+ _$jscoverage['plugins/table.core.js'][949]++;
+ (cell.colSpan--);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][951]++;
+ tableRows[rowIndex].deleteCell(cellInfo.cellIndex);
+ }
+ _$jscoverage['plugins/table.core.js'][953]++;
+ rowIndex += (cellInfo.rowSpan || 1);
+}
+ _$jscoverage['plugins/table.core.js'][955]++;
+ this.table.setAttribute("width", (backTableWidth - backTdWidth));
+ _$jscoverage['plugins/table.core.js'][956]++;
+ this.update();
+}), splitToCells: (function (cell) {
+ _$jscoverage['plugins/table.core.js'][959]++;
+ var me = this, cells = this.splitToRows(cell);
+ _$jscoverage['plugins/table.core.js'][961]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.core.js'][962]++;
+ me.splitToCols(cell);
+}));
+}), splitToRows: (function (cell) {
+ _$jscoverage['plugins/table.core.js'][966]++;
+ var cellInfo = this.getCellInfo(cell), rowIndex = cellInfo.rowIndex, colIndex = cellInfo.colIndex, results = [];
+ _$jscoverage['plugins/table.core.js'][971]++;
+ cell.rowSpan = 1;
+ _$jscoverage['plugins/table.core.js'][972]++;
+ results.push(cell);
+ _$jscoverage['plugins/table.core.js'][974]++;
+ for (var i = rowIndex, endRow = (rowIndex + cellInfo.rowSpan); (i < endRow); (i++)) {
+ _$jscoverage['plugins/table.core.js'][975]++;
+ if ((i == rowIndex)) {
+ _$jscoverage['plugins/table.core.js'][975]++;
+ continue;
+ }
+ _$jscoverage['plugins/table.core.js'][976]++;
+ var tableRow = this.table.rows[i], tmpCell = tableRow.insertCell((colIndex - this.getPreviewMergedCellsNum(i, colIndex)));
+ _$jscoverage['plugins/table.core.js'][978]++;
+ tmpCell.colSpan = cellInfo.colSpan;
+ _$jscoverage['plugins/table.core.js'][979]++;
+ this.setCellContent(tmpCell);
+ _$jscoverage['plugins/table.core.js'][980]++;
+ tmpCell.setAttribute("vAlign", cell.getAttribute("vAlign"));
+ _$jscoverage['plugins/table.core.js'][981]++;
+ tmpCell.setAttribute("align", cell.getAttribute("align"));
+ _$jscoverage['plugins/table.core.js'][982]++;
+ if (cell.style.cssText) {
+ _$jscoverage['plugins/table.core.js'][983]++;
+ tmpCell.style.cssText = cell.style.cssText;
+ }
+ _$jscoverage['plugins/table.core.js'][985]++;
+ results.push(tmpCell);
+}
+ _$jscoverage['plugins/table.core.js'][987]++;
+ this.update();
+ _$jscoverage['plugins/table.core.js'][988]++;
+ return results;
+}), getPreviewMergedCellsNum: (function (rowIndex, colIndex) {
+ _$jscoverage['plugins/table.core.js'][991]++;
+ var indexRow = this.indexTable[rowIndex], num = 0;
+ _$jscoverage['plugins/table.core.js'][993]++;
+ for (var i = 0; (i < colIndex);) {
+ _$jscoverage['plugins/table.core.js'][994]++;
+ var colSpan = indexRow[i].colSpan, tmpRowIndex = indexRow[i].rowIndex;
+ _$jscoverage['plugins/table.core.js'][996]++;
+ num += (colSpan - ((tmpRowIndex == rowIndex)? 1: 0));
+ _$jscoverage['plugins/table.core.js'][997]++;
+ i += colSpan;
+}
+ _$jscoverage['plugins/table.core.js'][999]++;
+ return num;
+}), splitToCols: (function (cell) {
+ _$jscoverage['plugins/table.core.js'][1002]++;
+ var backWidth = ((cell.offsetWidth / cell.colSpan) - 22).toFixed(0), cellInfo = this.getCellInfo(cell), rowIndex = cellInfo.rowIndex, colIndex = cellInfo.colIndex, results = [];
+ _$jscoverage['plugins/table.core.js'][1009]++;
+ cell.colSpan = 1;
+ _$jscoverage['plugins/table.core.js'][1010]++;
+ cell.setAttribute("width", backWidth);
+ _$jscoverage['plugins/table.core.js'][1011]++;
+ results.push(cell);
+ _$jscoverage['plugins/table.core.js'][1013]++;
+ for (var j = colIndex, endCol = (colIndex + cellInfo.colSpan); (j < endCol); (j++)) {
+ _$jscoverage['plugins/table.core.js'][1014]++;
+ if ((j == colIndex)) {
+ _$jscoverage['plugins/table.core.js'][1014]++;
+ continue;
+ }
+ _$jscoverage['plugins/table.core.js'][1015]++;
+ var tableRow = this.table.rows[rowIndex], tmpCell = tableRow.insertCell((this.indexTable[rowIndex][j].cellIndex + 1));
+ _$jscoverage['plugins/table.core.js'][1017]++;
+ tmpCell.rowSpan = cellInfo.rowSpan;
+ _$jscoverage['plugins/table.core.js'][1018]++;
+ this.setCellContent(tmpCell);
+ _$jscoverage['plugins/table.core.js'][1019]++;
+ tmpCell.setAttribute("vAlign", cell.getAttribute("vAlign"));
+ _$jscoverage['plugins/table.core.js'][1020]++;
+ tmpCell.setAttribute("align", cell.getAttribute("align"));
+ _$jscoverage['plugins/table.core.js'][1021]++;
+ tmpCell.setAttribute("width", backWidth);
+ _$jscoverage['plugins/table.core.js'][1022]++;
+ if (cell.style.cssText) {
+ _$jscoverage['plugins/table.core.js'][1023]++;
+ tmpCell.style.cssText = cell.style.cssText;
+ }
+ _$jscoverage['plugins/table.core.js'][1026]++;
+ if ((cell.tagName == "TH")) {
+ _$jscoverage['plugins/table.core.js'][1027]++;
+ var th = cell.ownerDocument.createElement("th");
+ _$jscoverage['plugins/table.core.js'][1028]++;
+ th.appendChild(tmpCell.firstChild);
+ _$jscoverage['plugins/table.core.js'][1029]++;
+ th.setAttribute("vAlign", cell.getAttribute("vAlign"));
+ _$jscoverage['plugins/table.core.js'][1030]++;
+ th.rowSpan = tmpCell.rowSpan;
+ _$jscoverage['plugins/table.core.js'][1031]++;
+ tableRow.insertBefore(th, tmpCell);
+ _$jscoverage['plugins/table.core.js'][1032]++;
+ domUtils.remove(tmpCell);
+ }
+ _$jscoverage['plugins/table.core.js'][1034]++;
+ results.push(tmpCell);
+}
+ _$jscoverage['plugins/table.core.js'][1036]++;
+ this.update();
+ _$jscoverage['plugins/table.core.js'][1037]++;
+ return results;
+}), isLastCell: (function (cell, rowsNum, colsNum) {
+ _$jscoverage['plugins/table.core.js'][1040]++;
+ rowsNum = (rowsNum || this.rowsNum);
+ _$jscoverage['plugins/table.core.js'][1041]++;
+ colsNum = (colsNum || this.colsNum);
+ _$jscoverage['plugins/table.core.js'][1042]++;
+ var cellInfo = this.getCellInfo(cell);
+ _$jscoverage['plugins/table.core.js'][1043]++;
+ return (((cellInfo.rowIndex + cellInfo.rowSpan) == rowsNum) && ((cellInfo.colIndex + cellInfo.colSpan) == colsNum));
+}), getLastCell: (function (cells) {
+ _$jscoverage['plugins/table.core.js'][1047]++;
+ cells = (cells || this.table.getElementsByTagName("td"));
+ _$jscoverage['plugins/table.core.js'][1048]++;
+ var firstInfo = this.getCellInfo(cells[0]);
+ _$jscoverage['plugins/table.core.js'][1049]++;
+ var me = this, last = cells[0], tr = last.parentNode, cellsNum = 0, cols = 0, rows;
+ _$jscoverage['plugins/table.core.js'][1052]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.core.js'][1053]++;
+ if ((cell.parentNode == tr)) {
+ _$jscoverage['plugins/table.core.js'][1053]++;
+ cols += (cell.colSpan || 1);
+ }
+ _$jscoverage['plugins/table.core.js'][1054]++;
+ cellsNum += ((cell.rowSpan * cell.colSpan) || 1);
+}));
+ _$jscoverage['plugins/table.core.js'][1056]++;
+ rows = (cellsNum / cols);
+ _$jscoverage['plugins/table.core.js'][1057]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.core.js'][1058]++;
+ if (me.isLastCell(cell, rows, cols)) {
+ _$jscoverage['plugins/table.core.js'][1059]++;
+ last = cell;
+ _$jscoverage['plugins/table.core.js'][1060]++;
+ return false;
+ }
+}));
+ _$jscoverage['plugins/table.core.js'][1063]++;
+ return last;
+}), selectRow: (function (rowIndex) {
+ _$jscoverage['plugins/table.core.js'][1067]++;
+ var indexRow = this.indexTable[rowIndex], start = this.getCell(indexRow[0].rowIndex, indexRow[0].cellIndex), end = this.getCell(indexRow[(this.colsNum - 1)].rowIndex, indexRow[(this.colsNum - 1)].cellIndex), range = this.getCellsRange(start, end);
+ _$jscoverage['plugins/table.core.js'][1071]++;
+ this.setSelected(range);
+}), selectTable: (function () {
+ _$jscoverage['plugins/table.core.js'][1074]++;
+ var tds = this.table.getElementsByTagName("td"), range = this.getCellsRange(tds[0], tds[(tds.length - 1)]);
+ _$jscoverage['plugins/table.core.js'][1076]++;
+ this.setSelected(range);
+}), sortTable: (function (sortByCellIndex, compareFn) {
+ _$jscoverage['plugins/table.core.js'][1079]++;
+ var table = this.table, rows = table.rows, trArray = [], flag = (rows[0].cells[0].tagName === "TH"), lastRowIndex = 0;
+ _$jscoverage['plugins/table.core.js'][1084]++;
+ if (this.selectedTds.length) {
+ _$jscoverage['plugins/table.core.js'][1085]++;
+ var range = this.cellsRange, len = (range.endRowIndex + 1);
+ _$jscoverage['plugins/table.core.js'][1087]++;
+ for (var i = range.beginRowIndex; (i < len); (i++)) {
+ _$jscoverage['plugins/table.core.js'][1088]++;
+ trArray[i] = rows[i];
+}
+ _$jscoverage['plugins/table.core.js'][1090]++;
+ trArray.splice(0, range.beginRowIndex);
+ _$jscoverage['plugins/table.core.js'][1091]++;
+ lastRowIndex = (((range.endRowIndex + 1) === this.rowsNum)? 0: (range.endRowIndex + 1));
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][1093]++;
+ for (var i = 0, len = rows.length; (i < len); (i++)) {
+ _$jscoverage['plugins/table.core.js'][1094]++;
+ trArray[i] = rows[i];
+}
+ }
+ _$jscoverage['plugins/table.core.js'][1098]++;
+ (flag && trArray.splice(0, 1));
+ _$jscoverage['plugins/table.core.js'][1099]++;
+ trArray = utils.sort(trArray, (function (tr1, tr2) {
+ _$jscoverage['plugins/table.core.js'][1100]++;
+ var txt = (function (node) {
+ _$jscoverage['plugins/table.core.js'][1101]++;
+ return (node.innerText || node.textContent);
+});
+ _$jscoverage['plugins/table.core.js'][1103]++;
+ return (compareFn? (((typeof compareFn) === "number")? compareFn: compareFn.call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex])): (function () {
+ _$jscoverage['plugins/table.core.js'][1104]++;
+ var value1 = txt(tr1.cells[sortByCellIndex]), value2 = txt(tr2.cells[sortByCellIndex]);
+ _$jscoverage['plugins/table.core.js'][1106]++;
+ return value1.localeCompare(value2);
+})());
+}));
+ _$jscoverage['plugins/table.core.js'][1109]++;
+ var fragment = table.ownerDocument.createDocumentFragment();
+ _$jscoverage['plugins/table.core.js'][1110]++;
+ for (var j = 0, len = trArray.length; (j < len); (j++)) {
+ _$jscoverage['plugins/table.core.js'][1111]++;
+ fragment.appendChild(trArray[j]);
+}
+ _$jscoverage['plugins/table.core.js'][1113]++;
+ var tbody = table.getElementsByTagName("tbody")[0];
+ _$jscoverage['plugins/table.core.js'][1114]++;
+ if ((! lastRowIndex)) {
+ _$jscoverage['plugins/table.core.js'][1115]++;
+ tbody.appendChild(fragment);
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][1117]++;
+ tbody.insertBefore(fragment, rows[(((lastRowIndex - range.endRowIndex) + range.beginRowIndex) - 1)]);
+ }
+}), setBackground: (function (cells, value) {
+ _$jscoverage['plugins/table.core.js'][1121]++;
+ if (((typeof value) === "string")) {
+ _$jscoverage['plugins/table.core.js'][1122]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.core.js'][1123]++;
+ cell.style.backgroundColor = value;
+}));
+ }
+ else {
+ _$jscoverage['plugins/table.core.js'][1125]++;
+ if (((typeof value) === "object")) {
+ _$jscoverage['plugins/table.core.js'][1126]++;
+ value = utils.extend({repeat: true, colorList: ["#ddd", "#fff"]}, value);
+ _$jscoverage['plugins/table.core.js'][1130]++;
+ var rowIndex = this.getCellInfo(cells[0]).rowIndex, count = 0, colors = value.colorList, getColor = (function (list, index, repeat) {
+ _$jscoverage['plugins/table.core.js'][1134]++;
+ return (list[index]? list[index]: (repeat? list[(index % list.length)]: ""));
+});
+ _$jscoverage['plugins/table.core.js'][1136]++;
+ for (var i = 0, cell; (cell = cells[(i++)]);) {
+ _$jscoverage['plugins/table.core.js'][1137]++;
+ var cellInfo = this.getCellInfo(cell);
+ _$jscoverage['plugins/table.core.js'][1138]++;
+ cell.style.backgroundColor = getColor(colors, (((rowIndex + count) == cellInfo.rowIndex)? count: (++count)), value.repeat);
+}
+ }
+ }
+}), removeBackground: (function (cells) {
+ _$jscoverage['plugins/table.core.js'][1143]++;
+ utils.each(cells, (function (cell) {
+ _$jscoverage['plugins/table.core.js'][1144]++;
+ cell.style.backgroundColor = "";
+}));
+})};
+ _$jscoverage['plugins/table.core.js'][1150]++;
+ function showError(e) {
+}
+})();
diff --git a/_test/coverage/plugins/template.js b/_test/coverage/plugins/template.js
new file mode 100644
index 000000000..f46cd1d8b
--- /dev/null
+++ b/_test/coverage/plugins/template.js
@@ -0,0 +1,108 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/template.js']) {
+ _$jscoverage['plugins/template.js'] = [];
+ _$jscoverage['plugins/template.js'][2] = 0;
+ _$jscoverage['plugins/template.js'][3] = 0;
+ _$jscoverage['plugins/template.js'][5] = 0;
+ _$jscoverage['plugins/template.js'][8] = 0;
+ _$jscoverage['plugins/template.js'][9] = 0;
+ _$jscoverage['plugins/template.js'][11] = 0;
+ _$jscoverage['plugins/template.js'][12] = 0;
+ _$jscoverage['plugins/template.js'][13] = 0;
+ _$jscoverage['plugins/template.js'][16] = 0;
+ _$jscoverage['plugins/template.js'][18] = 0;
+ _$jscoverage['plugins/template.js'][19] = 0;
+ _$jscoverage['plugins/template.js'][20] = 0;
+ _$jscoverage['plugins/template.js'][21] = 0;
+ _$jscoverage['plugins/template.js'][22] = 0;
+ _$jscoverage['plugins/template.js'][23] = 0;
+ _$jscoverage['plugins/template.js'][24] = 0;
+ _$jscoverage['plugins/template.js'][27] = 0;
+ _$jscoverage['plugins/template.js'][28] = 0;
+}
+_$jscoverage['plugins/template.js'].source = ["","UE. plugins[ 'template' ] = function () { "," UE. commands[ 'template' ] = { "," execCommand: function ( cmd, obj) { "," obj. html && this . execCommand( \"inserthtml\" , obj. html); "," } "," } ; "," this . addListener( \"click\" , function ( type, evt) { "," var el = evt. target || evt. srcElement, "," range = this . selection. getRange(); "," var tnode = domUtils. findParent( el, function ( node) { "," if ( node. className && domUtils. hasClass( node, \"ue_t\" )) { "," return node; "," } "," } , true ); "," tnode && range. selectNode( tnode). shrinkBoundary(). select(); "," } ); "," this . addListener( \"keydown\" , function ( type, evt) { "," var range = this . selection. getRange(); "," if (! range. collapsed) { "," if (! evt. ctrlKey && ! evt. metaKey && ! evt. shiftKey && ! evt. altKey) { "," var tnode = domUtils. findParent( range. startContainer, function ( node) { "," if ( node. className && domUtils. hasClass( node, \"ue_t\" )) { "," return node; "," } "," } , true ); "," if ( tnode) { "," domUtils. removeClasses( tnode, [ \"ue_t\" ]); "," } "," } "," } "," } ); ","} ; "];
+_$jscoverage['plugins/template.js'][2]++;
+UE.plugins.template = (function () {
+ _$jscoverage['plugins/template.js'][3]++;
+ UE.commands.template = {execCommand: (function (cmd, obj) {
+ _$jscoverage['plugins/template.js'][5]++;
+ (obj.html && this.execCommand("inserthtml", obj.html));
+})};
+ _$jscoverage['plugins/template.js'][8]++;
+ this.addListener("click", (function (type, evt) {
+ _$jscoverage['plugins/template.js'][9]++;
+ var el = (evt.target || evt.srcElement), range = this.selection.getRange();
+ _$jscoverage['plugins/template.js'][11]++;
+ var tnode = domUtils.findParent(el, (function (node) {
+ _$jscoverage['plugins/template.js'][12]++;
+ if ((node.className && domUtils.hasClass(node, "ue_t"))) {
+ _$jscoverage['plugins/template.js'][13]++;
+ return node;
+ }
+}), true);
+ _$jscoverage['plugins/template.js'][16]++;
+ (tnode && range.selectNode(tnode).shrinkBoundary().select());
+}));
+ _$jscoverage['plugins/template.js'][18]++;
+ this.addListener("keydown", (function (type, evt) {
+ _$jscoverage['plugins/template.js'][19]++;
+ var range = this.selection.getRange();
+ _$jscoverage['plugins/template.js'][20]++;
+ if ((! range.collapsed)) {
+ _$jscoverage['plugins/template.js'][21]++;
+ if (((! evt.ctrlKey) && (! evt.metaKey) && (! evt.shiftKey) && (! evt.altKey))) {
+ _$jscoverage['plugins/template.js'][22]++;
+ var tnode = domUtils.findParent(range.startContainer, (function (node) {
+ _$jscoverage['plugins/template.js'][23]++;
+ if ((node.className && domUtils.hasClass(node, "ue_t"))) {
+ _$jscoverage['plugins/template.js'][24]++;
+ return node;
+ }
+}), true);
+ _$jscoverage['plugins/template.js'][27]++;
+ if (tnode) {
+ _$jscoverage['plugins/template.js'][28]++;
+ domUtils.removeClasses(tnode, ["ue_t"]);
+ }
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/time.js b/_test/coverage/plugins/time.js
new file mode 100644
index 000000000..d9a0725a5
--- /dev/null
+++ b/_test/coverage/plugins/time.js
@@ -0,0 +1,53 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/time.js']) {
+ _$jscoverage['plugins/time.js'] = [];
+ _$jscoverage['plugins/time.js'][28] = 0;
+ _$jscoverage['plugins/time.js'][30] = 0;
+ _$jscoverage['plugins/time.js'][31] = 0;
+}
+_$jscoverage['plugins/time.js'].source = ["/** "," * 插入时间和日期 "," * @file "," * @since 1.2.6.1 "," */ ","","/** "," * 插入当前时间,插入的格式:12:59:59 "," * @command time "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'time'); "," * ``` "," */ ","","/** "," * 插入当前日期,插入格式:2013-08-30 "," * @command date "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'date'); "," * ``` "," */ ","UE. commands[ 'time' ] = UE. commands[ \"date\" ] = { "," execCommand : function ( cmd) { "," var date = new Date; "," this . execCommand( 'insertHtml' , cmd == \"time\" ? "," ( date. getHours()+ \":\" + ( date. getMinutes()< 10 ? \"0\" + date. getMinutes() : date. getMinutes())+ \":\" +( date. getSeconds()< 10 ? \"0\" + date. getSeconds() : date. getSeconds())) : "," ( date. getFullYear()+ \"-\" +(( date. getMonth()+ 1 )< 10 ? \"0\" +( date. getMonth()+ 1 ) : date. getMonth()+ 1 )+ \"-\" +( date. getDate()< 10 ? \"0\" + date. getDate(): date. getDate()))); "," } ","} ; ","","",""];
+_$jscoverage['plugins/time.js'][28]++;
+UE.commands.time = (UE.commands.date = {execCommand: (function (cmd) {
+ _$jscoverage['plugins/time.js'][30]++;
+ var date = new Date();
+ _$jscoverage['plugins/time.js'][31]++;
+ this.execCommand("insertHtml", ((cmd == "time")? (date.getHours() + ":" + ((date.getMinutes() < 10)? ("0" + date.getMinutes()): date.getMinutes()) + ":" + ((date.getSeconds() < 10)? ("0" + date.getSeconds()): date.getSeconds())): (date.getFullYear() + "-" + (((date.getMonth() + 1) < 10)? ("0" + (date.getMonth() + 1)): (date.getMonth() + 1)) + "-" + ((date.getDate() < 10)? ("0" + date.getDate()): date.getDate()))));
+})});
diff --git a/_test/coverage/plugins/undo.js b/_test/coverage/plugins/undo.js
new file mode 100644
index 000000000..a4e260b61
--- /dev/null
+++ b/_test/coverage/plugins/undo.js
@@ -0,0 +1,568 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/undo.js']) {
+ _$jscoverage['plugins/undo.js'] = [];
+ _$jscoverage['plugins/undo.js'][10] = 0;
+ _$jscoverage['plugins/undo.js'][11] = 0;
+ _$jscoverage['plugins/undo.js'][12] = 0;
+ _$jscoverage['plugins/undo.js'][16] = 0;
+ _$jscoverage['plugins/undo.js'][19] = 0;
+ _$jscoverage['plugins/undo.js'][20] = 0;
+ _$jscoverage['plugins/undo.js'][21] = 0;
+ _$jscoverage['plugins/undo.js'][22] = 0;
+ _$jscoverage['plugins/undo.js'][23] = 0;
+ _$jscoverage['plugins/undo.js'][24] = 0;
+ _$jscoverage['plugins/undo.js'][25] = 0;
+ _$jscoverage['plugins/undo.js'][27] = 0;
+ _$jscoverage['plugins/undo.js'][30] = 0;
+ _$jscoverage['plugins/undo.js'][31] = 0;
+ _$jscoverage['plugins/undo.js'][32] = 0;
+ _$jscoverage['plugins/undo.js'][34] = 0;
+ _$jscoverage['plugins/undo.js'][35] = 0;
+ _$jscoverage['plugins/undo.js'][37] = 0;
+ _$jscoverage['plugins/undo.js'][40] = 0;
+ _$jscoverage['plugins/undo.js'][41] = 0;
+ _$jscoverage['plugins/undo.js'][42] = 0;
+ _$jscoverage['plugins/undo.js'][43] = 0;
+ _$jscoverage['plugins/undo.js'][44] = 0;
+ _$jscoverage['plugins/undo.js'][45] = 0;
+ _$jscoverage['plugins/undo.js'][46] = 0;
+ _$jscoverage['plugins/undo.js'][47] = 0;
+ _$jscoverage['plugins/undo.js'][48] = 0;
+ _$jscoverage['plugins/undo.js'][49] = 0;
+ _$jscoverage['plugins/undo.js'][51] = 0;
+ _$jscoverage['plugins/undo.js'][52] = 0;
+ _$jscoverage['plugins/undo.js'][53] = 0;
+ _$jscoverage['plugins/undo.js'][54] = 0;
+ _$jscoverage['plugins/undo.js'][57] = 0;
+ _$jscoverage['plugins/undo.js'][60] = 0;
+ _$jscoverage['plugins/undo.js'][61] = 0;
+ _$jscoverage['plugins/undo.js'][62] = 0;
+ _$jscoverage['plugins/undo.js'][63] = 0;
+ _$jscoverage['plugins/undo.js'][64] = 0;
+ _$jscoverage['plugins/undo.js'][65] = 0;
+ _$jscoverage['plugins/undo.js'][68] = 0;
+ _$jscoverage['plugins/undo.js'][72] = 0;
+ _$jscoverage['plugins/undo.js'][73] = 0;
+ _$jscoverage['plugins/undo.js'][74] = 0;
+ _$jscoverage['plugins/undo.js'][75] = 0;
+ _$jscoverage['plugins/undo.js'][76] = 0;
+ _$jscoverage['plugins/undo.js'][77] = 0;
+ _$jscoverage['plugins/undo.js'][78] = 0;
+ _$jscoverage['plugins/undo.js'][81] = 0;
+ _$jscoverage['plugins/undo.js'][82] = 0;
+ _$jscoverage['plugins/undo.js'][84] = 0;
+ _$jscoverage['plugins/undo.js'][85] = 0;
+ _$jscoverage['plugins/undo.js'][86] = 0;
+ _$jscoverage['plugins/undo.js'][87] = 0;
+ _$jscoverage['plugins/undo.js'][92] = 0;
+ _$jscoverage['plugins/undo.js'][93] = 0;
+ _$jscoverage['plugins/undo.js'][94] = 0;
+ _$jscoverage['plugins/undo.js'][97] = 0;
+ _$jscoverage['plugins/undo.js'][98] = 0;
+ _$jscoverage['plugins/undo.js'][100] = 0;
+ _$jscoverage['plugins/undo.js'][103] = 0;
+ _$jscoverage['plugins/undo.js'][104] = 0;
+ _$jscoverage['plugins/undo.js'][105] = 0;
+ _$jscoverage['plugins/undo.js'][107] = 0;
+ _$jscoverage['plugins/undo.js'][108] = 0;
+ _$jscoverage['plugins/undo.js'][109] = 0;
+ _$jscoverage['plugins/undo.js'][110] = 0;
+ _$jscoverage['plugins/undo.js'][111] = 0;
+ _$jscoverage['plugins/undo.js'][112] = 0;
+ _$jscoverage['plugins/undo.js'][116] = 0;
+ _$jscoverage['plugins/undo.js'][118] = 0;
+ _$jscoverage['plugins/undo.js'][123] = 0;
+ _$jscoverage['plugins/undo.js'][124] = 0;
+ _$jscoverage['plugins/undo.js'][125] = 0;
+ _$jscoverage['plugins/undo.js'][128] = 0;
+ _$jscoverage['plugins/undo.js'][131] = 0;
+ _$jscoverage['plugins/undo.js'][133] = 0;
+ _$jscoverage['plugins/undo.js'][134] = 0;
+ _$jscoverage['plugins/undo.js'][136] = 0;
+ _$jscoverage['plugins/undo.js'][137] = 0;
+ _$jscoverage['plugins/undo.js'][139] = 0;
+ _$jscoverage['plugins/undo.js'][140] = 0;
+ _$jscoverage['plugins/undo.js'][142] = 0;
+ _$jscoverage['plugins/undo.js'][145] = 0;
+ _$jscoverage['plugins/undo.js'][146] = 0;
+ _$jscoverage['plugins/undo.js'][147] = 0;
+ _$jscoverage['plugins/undo.js'][149] = 0;
+ _$jscoverage['plugins/undo.js'][150] = 0;
+ _$jscoverage['plugins/undo.js'][151] = 0;
+ _$jscoverage['plugins/undo.js'][152] = 0;
+ _$jscoverage['plugins/undo.js'][153] = 0;
+ _$jscoverage['plugins/undo.js'][154] = 0;
+ _$jscoverage['plugins/undo.js'][156] = 0;
+ _$jscoverage['plugins/undo.js'][157] = 0;
+ _$jscoverage['plugins/undo.js'][158] = 0;
+ _$jscoverage['plugins/undo.js'][162] = 0;
+ _$jscoverage['plugins/undo.js'][163] = 0;
+ _$jscoverage['plugins/undo.js'][164] = 0;
+ _$jscoverage['plugins/undo.js'][165] = 0;
+ _$jscoverage['plugins/undo.js'][168] = 0;
+ _$jscoverage['plugins/undo.js'][169] = 0;
+ _$jscoverage['plugins/undo.js'][170] = 0;
+ _$jscoverage['plugins/undo.js'][173] = 0;
+ _$jscoverage['plugins/undo.js'][174] = 0;
+ _$jscoverage['plugins/undo.js'][176] = 0;
+ _$jscoverage['plugins/undo.js'][177] = 0;
+ _$jscoverage['plugins/undo.js'][178] = 0;
+ _$jscoverage['plugins/undo.js'][181] = 0;
+ _$jscoverage['plugins/undo.js'][183] = 0;
+ _$jscoverage['plugins/undo.js'][186] = 0;
+ _$jscoverage['plugins/undo.js'][191] = 0;
+ _$jscoverage['plugins/undo.js'][200] = 0;
+ _$jscoverage['plugins/undo.js'][201] = 0;
+ _$jscoverage['plugins/undo.js'][202] = 0;
+ _$jscoverage['plugins/undo.js'][203] = 0;
+ _$jscoverage['plugins/undo.js'][205] = 0;
+ _$jscoverage['plugins/undo.js'][206] = 0;
+ _$jscoverage['plugins/undo.js'][210] = 0;
+ _$jscoverage['plugins/undo.js'][215] = 0;
+ _$jscoverage['plugins/undo.js'][216] = 0;
+ _$jscoverage['plugins/undo.js'][218] = 0;
+ _$jscoverage['plugins/undo.js'][219] = 0;
+ _$jscoverage['plugins/undo.js'][220] = 0;
+ _$jscoverage['plugins/undo.js'][221] = 0;
+ _$jscoverage['plugins/undo.js'][222] = 0;
+ _$jscoverage['plugins/undo.js'][224] = 0;
+ _$jscoverage['plugins/undo.js'][225] = 0;
+ _$jscoverage['plugins/undo.js'][226] = 0;
+ _$jscoverage['plugins/undo.js'][227] = 0;
+ _$jscoverage['plugins/undo.js'][229] = 0;
+ _$jscoverage['plugins/undo.js'][230] = 0;
+ _$jscoverage['plugins/undo.js'][232] = 0;
+ _$jscoverage['plugins/undo.js'][233] = 0;
+ _$jscoverage['plugins/undo.js'][235] = 0;
+ _$jscoverage['plugins/undo.js'][236] = 0;
+ _$jscoverage['plugins/undo.js'][237] = 0;
+ _$jscoverage['plugins/undo.js'][238] = 0;
+ _$jscoverage['plugins/undo.js'][240] = 0;
+ _$jscoverage['plugins/undo.js'][241] = 0;
+ _$jscoverage['plugins/undo.js'][242] = 0;
+ _$jscoverage['plugins/undo.js'][243] = 0;
+ _$jscoverage['plugins/undo.js'][244] = 0;
+ _$jscoverage['plugins/undo.js'][245] = 0;
+ _$jscoverage['plugins/undo.js'][248] = 0;
+ _$jscoverage['plugins/undo.js'][250] = 0;
+ _$jscoverage['plugins/undo.js'][253] = 0;
+ _$jscoverage['plugins/undo.js'][254] = 0;
+ _$jscoverage['plugins/undo.js'][255] = 0;
+ _$jscoverage['plugins/undo.js'][256] = 0;
+ _$jscoverage['plugins/undo.js'][260] = 0;
+ _$jscoverage['plugins/undo.js'][261] = 0;
+ _$jscoverage['plugins/undo.js'][262] = 0;
+ _$jscoverage['plugins/undo.js'][263] = 0;
+ _$jscoverage['plugins/undo.js'][264] = 0;
+ _$jscoverage['plugins/undo.js'][265] = 0;
+ _$jscoverage['plugins/undo.js'][266] = 0;
+ _$jscoverage['plugins/undo.js'][267] = 0;
+}
+_$jscoverage['plugins/undo.js'].source = ["///import core ","///commands 撤销和重做 ","///commandsName Undo,Redo ","///commandsTitle 撤销,重做 ","/* "," * @description 回退 "," * @author zhanyi "," */ ","","UE. plugins[ 'undo' ] = function () { "," var saveSceneTimer; "," var me = this , "," maxUndoCount = me. options. maxUndoCount || 20 , "," maxInputCount = me. options. maxInputCount || 20 , "," fillchar = new RegExp( domUtils. fillChar + '|< \\/ hr>' , 'gi' ); // ie会产生多余的</hr> "," var noNeedFillCharTags = { "," ol: 1 , ul: 1 , table: 1 , tbody: 1 , tr: 1 , body: 1 "," } ; "," var orgState = me. options. autoClearEmptyNode; "," function compareAddr( indexA, indexB) { "," if ( indexA. length != indexB. length) "," return 0 ; "," for ( var i = 0 , l = indexA. length; i < l; i++) { "," if ( indexA[ i] != indexB[ i]) "," return 0 "," } "," return 1 ; "," } ",""," function compareRangeAddress( rngAddrA, rngAddrB) { "," if ( rngAddrA. collapsed != rngAddrB. collapsed) { "," return 0 ; "," } "," if (! compareAddr( rngAddrA. startAddress, rngAddrB. startAddress) || ! compareAddr( rngAddrA. endAddress, rngAddrB. endAddress)) { "," return 0 ; "," } "," return 1 ; "," } ",""," function UndoManager() { "," this . list = []; "," this . index = 0 ; "," this . hasUndo = false ; "," this . hasRedo = false ; "," this . undo = function () { "," if ( this . hasUndo) { "," if (! this . list[ this . index - 1 ] && this . list. length == 1 ) { "," this . reset(); "," return ; "," } "," while ( this . list[ this . index]. content == this . list[ this . index - 1 ]. content) { "," this . index--; "," if ( this . index == 0 ) { "," return this . restore( 0 ); "," } "," } "," this . restore(-- this . index); "," } "," } ; "," this . redo = function () { "," if ( this . hasRedo) { "," while ( this . list[ this . index]. content == this . list[ this . index + 1 ]. content) { "," this . index++; "," if ( this . index == this . list. length - 1 ) { "," return this . restore( this . index); "," } "," } "," this . restore(++ this . index); "," } "," } ; ",""," this . restore = function () { "," var me = this . editor; "," var scene = this . list[ this . index]; "," var root = UE. htmlparser( scene. content. replace( fillchar, '' )); "," me. options. autoClearEmptyNode = false ; "," me. filterInputRule( root); "," me. options. autoClearEmptyNode = orgState; "," //trace:873 "," //去掉展位符 "," me. document. body. innerHTML = root. toHtml(); "," me. fireEvent( 'afterscencerestore' ); "," //处理undo后空格不展位的问题 "," if ( browser. ie) { "," utils. each( domUtils. getElementsByTagName( me. document, 'td th caption p' ), function ( node) { "," if ( domUtils. isEmptyNode( node)) { "," domUtils. fillNode( me. document, node); "," } "," } ) "," } ",""," try { "," var rng = new dom. Range( me. document). moveToAddress( scene. address); "," rng. select( noNeedFillCharTags[ rng. startContainer. nodeName. toLowerCase()]); "," } catch ( e) {} ",""," this . update(); "," this . clearKey(); "," //不能把自己reset了 "," me. fireEvent( 'reset' , true ); "," } ; ",""," this . getScene = function () { "," var me = this . editor; "," var rng = me. selection. getRange(), "," rngAddress = rng. createAddress( false , true ); "," me. fireEvent( 'beforegetscene' ); "," var root = UE. htmlparser( me. body. innerHTML); "," me. options. autoClearEmptyNode = false ; "," me. filterOutputRule( root); "," me. options. autoClearEmptyNode = orgState; "," var cont = root. toHtml(); "," //trace:3461 "," //这个会引起回退时导致空格丢失的情况 ","// browser.ie && (cont = cont.replace(/> </g, '><').replace(/\\s*</g, '<').replace(/>\\s*/g, '>')); "," me. fireEvent( 'aftergetscene' ); ",""," return { "," address: rngAddress, "," content: cont"," } "," } ; "," this . save = function ( notCompareRange, notSetCursor) { "," clearTimeout( saveSceneTimer); "," var currentScene = this . getScene( notSetCursor), "," lastScene = this . list[ this . index]; "," //内容相同位置相同不存 "," if ( lastScene && lastScene. content == currentScene. content && "," ( notCompareRange ? 1 : compareRangeAddress( lastScene. address, currentScene. address) ) "," ) { "," return ; "," } "," this . list = this . list. slice( 0 , this . index + 1 ); "," this . list. push( currentScene); "," //如果大于最大数量了,就把最前的剔除 "," if ( this . list. length > maxUndoCount) { "," this . list. shift(); "," } "," this . index = this . list. length - 1 ; "," this . clearKey(); "," //跟新undo/redo状态 "," this . update(); ",""," } ; "," this . update = function () { "," this . hasRedo = !! this . list[ this . index + 1 ]; "," this . hasUndo = !! this . list[ this . index - 1 ]; "," } ; "," this . reset = function () { "," this . list = []; "," this . index = 0 ; "," this . hasUndo = false ; "," this . hasRedo = false ; "," this . clearKey(); "," } ; "," this . clearKey = function () { "," keycont = 0 ; "," lastKeyCode = null ; "," } ; "," } ",""," me. undoManger = new UndoManager(); "," me. undoManger. editor = me; "," function saveScene() { "," this . undoManger. save(); "," } ",""," me. addListener( 'saveScene' , function () { "," var args = Array. prototype. splice. call( arguments, 1 ); "," this . undoManger. save. apply( this . undoManger, args); "," } ); ",""," me. addListener( 'beforeexeccommand' , saveScene); "," me. addListener( 'afterexeccommand' , saveScene); ",""," me. addListener( 'reset' , function ( type, exclude) { "," if (! exclude) { "," this . undoManger. reset(); "," } "," } ); "," me. commands[ 'redo' ] = me. commands[ 'undo' ] = { "," execCommand: function ( cmdName) { "," this . undoManger[ cmdName](); "," } , "," queryCommandState: function ( cmdName) { "," return this . undoManger[ 'has' + ( cmdName. toLowerCase() == 'undo' ? 'Undo' : 'Redo' )] ? 0 : - 1 ; "," } , "," notNeedUndo: 1 "," } ; ",""," var keys = { "," // /*Backspace*/ 8:1, /*Delete*/ 46:1, "," /*Shift*/ 16 : 1 , /*Ctrl*/ 17 : 1 , /*Alt*/ 18 : 1 , "," 37 : 1 , 38 : 1 , 39 : 1 , 40 : 1 ",""," } , "," keycont = 0 , "," lastKeyCode; "," //输入法状态下不计算字符数 "," var inputType = false ; "," me. addListener( 'ready' , function () { "," domUtils. on( this . body, 'compositionstart' , function () { "," inputType = true ; "," } ); "," domUtils. on( this . body, 'compositionend' , function () { "," inputType = false ; "," } ) "," } ); "," //快捷键 "," me. addshortcutkey( { "," \"Undo\" : \"ctrl+90\" , //undo "," \"Redo\" : \"ctrl+89\" //redo ",""," } ); "," var isCollapsed = true ; "," me. addListener( 'keydown' , function ( type, evt) { ",""," var me = this ; "," var keyCode = evt. keyCode || evt. which; "," if (! keys[ keyCode] && ! evt. ctrlKey && ! evt. metaKey && ! evt. shiftKey && ! evt. altKey) { "," if ( inputType) "," return ; ",""," if (! me. selection. getRange(). collapsed) { "," me. undoManger. save( false , true ); "," isCollapsed = false ; "," return ; "," } "," if ( me. undoManger. list. length == 0 ) { "," me. undoManger. save( true ); "," } "," clearTimeout( saveSceneTimer); "," function save( cont) { ",""," if ( cont. selection. getRange(). collapsed) "," cont. fireEvent( 'contentchange' ); "," cont. undoManger. save( false , true ); "," cont. fireEvent( 'selectionchange' ); "," } "," saveSceneTimer = setTimeout( function () { "," if ( inputType) { "," var interalTimer = setInterval( function () { "," if (! inputType) { "," save( me); "," clearInterval( interalTimer) "," } "," } , 300 ) "," return ; "," } "," save( me); "," } , 200 ); ",""," lastKeyCode = keyCode; "," keycont++; "," if ( keycont >= maxInputCount ) { "," save( me) "," } "," } "," } ); "," me. addListener( 'keyup' , function ( type, evt) { "," var keyCode = evt. keyCode || evt. which; "," if (! keys[ keyCode] && ! evt. ctrlKey && ! evt. metaKey && ! evt. shiftKey && ! evt. altKey) { "," if ( inputType) "," return ; "," if (! isCollapsed) { "," this . undoManger. save( false , true ); "," isCollapsed = true ; "," } "," } "," } ); ","","} ; "];
+_$jscoverage['plugins/undo.js'][10]++;
+UE.plugins.undo = (function () {
+ _$jscoverage['plugins/undo.js'][11]++;
+ var saveSceneTimer;
+ _$jscoverage['plugins/undo.js'][12]++;
+ var me = this, maxUndoCount = (me.options.maxUndoCount || 20), maxInputCount = (me.options.maxInputCount || 20), fillchar = new RegExp((domUtils.fillChar + "|"), "gi");
+ _$jscoverage['plugins/undo.js'][16]++;
+ var noNeedFillCharTags = {ol: 1, ul: 1, table: 1, tbody: 1, tr: 1, body: 1};
+ _$jscoverage['plugins/undo.js'][19]++;
+ var orgState = me.options.autoClearEmptyNode;
+ _$jscoverage['plugins/undo.js'][20]++;
+ function compareAddr(indexA, indexB) {
+ _$jscoverage['plugins/undo.js'][21]++;
+ if ((indexA.length != indexB.length)) {
+ _$jscoverage['plugins/undo.js'][22]++;
+ return 0;
+ }
+ _$jscoverage['plugins/undo.js'][23]++;
+ for (var i = 0, l = indexA.length; (i < l); (i++)) {
+ _$jscoverage['plugins/undo.js'][24]++;
+ if ((indexA[i] != indexB[i])) {
+ _$jscoverage['plugins/undo.js'][25]++;
+ return 0;
+ }
+}
+ _$jscoverage['plugins/undo.js'][27]++;
+ return 1;
+}
+ _$jscoverage['plugins/undo.js'][30]++;
+ function compareRangeAddress(rngAddrA, rngAddrB) {
+ _$jscoverage['plugins/undo.js'][31]++;
+ if ((rngAddrA.collapsed != rngAddrB.collapsed)) {
+ _$jscoverage['plugins/undo.js'][32]++;
+ return 0;
+ }
+ _$jscoverage['plugins/undo.js'][34]++;
+ if (((! compareAddr(rngAddrA.startAddress, rngAddrB.startAddress)) || (! compareAddr(rngAddrA.endAddress, rngAddrB.endAddress)))) {
+ _$jscoverage['plugins/undo.js'][35]++;
+ return 0;
+ }
+ _$jscoverage['plugins/undo.js'][37]++;
+ return 1;
+}
+ _$jscoverage['plugins/undo.js'][40]++;
+ function UndoManager() {
+ _$jscoverage['plugins/undo.js'][41]++;
+ this.list = [];
+ _$jscoverage['plugins/undo.js'][42]++;
+ this.index = 0;
+ _$jscoverage['plugins/undo.js'][43]++;
+ this.hasUndo = false;
+ _$jscoverage['plugins/undo.js'][44]++;
+ this.hasRedo = false;
+ _$jscoverage['plugins/undo.js'][45]++;
+ this.undo = (function () {
+ _$jscoverage['plugins/undo.js'][46]++;
+ if (this.hasUndo) {
+ _$jscoverage['plugins/undo.js'][47]++;
+ if (((! this.list[(this.index - 1)]) && (this.list.length == 1))) {
+ _$jscoverage['plugins/undo.js'][48]++;
+ this.reset();
+ _$jscoverage['plugins/undo.js'][49]++;
+ return;
+ }
+ _$jscoverage['plugins/undo.js'][51]++;
+ while ((this.list[this.index].content == this.list[(this.index - 1)].content)) {
+ _$jscoverage['plugins/undo.js'][52]++;
+ (this.index--);
+ _$jscoverage['plugins/undo.js'][53]++;
+ if ((this.index == 0)) {
+ _$jscoverage['plugins/undo.js'][54]++;
+ return this.restore(0);
+ }
+}
+ _$jscoverage['plugins/undo.js'][57]++;
+ this.restore((--this.index));
+ }
+});
+ _$jscoverage['plugins/undo.js'][60]++;
+ this.redo = (function () {
+ _$jscoverage['plugins/undo.js'][61]++;
+ if (this.hasRedo) {
+ _$jscoverage['plugins/undo.js'][62]++;
+ while ((this.list[this.index].content == this.list[(this.index + 1)].content)) {
+ _$jscoverage['plugins/undo.js'][63]++;
+ (this.index++);
+ _$jscoverage['plugins/undo.js'][64]++;
+ if ((this.index == (this.list.length - 1))) {
+ _$jscoverage['plugins/undo.js'][65]++;
+ return this.restore(this.index);
+ }
+}
+ _$jscoverage['plugins/undo.js'][68]++;
+ this.restore((++this.index));
+ }
+});
+ _$jscoverage['plugins/undo.js'][72]++;
+ this.restore = (function () {
+ _$jscoverage['plugins/undo.js'][73]++;
+ var me = this.editor;
+ _$jscoverage['plugins/undo.js'][74]++;
+ var scene = this.list[this.index];
+ _$jscoverage['plugins/undo.js'][75]++;
+ var root = UE.htmlparser(scene.content.replace(fillchar, ""));
+ _$jscoverage['plugins/undo.js'][76]++;
+ me.options.autoClearEmptyNode = false;
+ _$jscoverage['plugins/undo.js'][77]++;
+ me.filterInputRule(root);
+ _$jscoverage['plugins/undo.js'][78]++;
+ me.options.autoClearEmptyNode = orgState;
+ _$jscoverage['plugins/undo.js'][81]++;
+ me.document.body.innerHTML = root.toHtml();
+ _$jscoverage['plugins/undo.js'][82]++;
+ me.fireEvent("afterscencerestore");
+ _$jscoverage['plugins/undo.js'][84]++;
+ if (browser.ie) {
+ _$jscoverage['plugins/undo.js'][85]++;
+ utils.each(domUtils.getElementsByTagName(me.document, "td th caption p"), (function (node) {
+ _$jscoverage['plugins/undo.js'][86]++;
+ if (domUtils.isEmptyNode(node)) {
+ _$jscoverage['plugins/undo.js'][87]++;
+ domUtils.fillNode(me.document, node);
+ }
+}));
+ }
+ _$jscoverage['plugins/undo.js'][92]++;
+ try {
+ _$jscoverage['plugins/undo.js'][93]++;
+ var rng = new (dom.Range)(me.document).moveToAddress(scene.address);
+ _$jscoverage['plugins/undo.js'][94]++;
+ rng.select(noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()]);
+ }
+ catch (e) {
+ }
+ _$jscoverage['plugins/undo.js'][97]++;
+ this.update();
+ _$jscoverage['plugins/undo.js'][98]++;
+ this.clearKey();
+ _$jscoverage['plugins/undo.js'][100]++;
+ me.fireEvent("reset", true);
+});
+ _$jscoverage['plugins/undo.js'][103]++;
+ this.getScene = (function () {
+ _$jscoverage['plugins/undo.js'][104]++;
+ var me = this.editor;
+ _$jscoverage['plugins/undo.js'][105]++;
+ var rng = me.selection.getRange(), rngAddress = rng.createAddress(false, true);
+ _$jscoverage['plugins/undo.js'][107]++;
+ me.fireEvent("beforegetscene");
+ _$jscoverage['plugins/undo.js'][108]++;
+ var root = UE.htmlparser(me.body.innerHTML);
+ _$jscoverage['plugins/undo.js'][109]++;
+ me.options.autoClearEmptyNode = false;
+ _$jscoverage['plugins/undo.js'][110]++;
+ me.filterOutputRule(root);
+ _$jscoverage['plugins/undo.js'][111]++;
+ me.options.autoClearEmptyNode = orgState;
+ _$jscoverage['plugins/undo.js'][112]++;
+ var cont = root.toHtml();
+ _$jscoverage['plugins/undo.js'][116]++;
+ me.fireEvent("aftergetscene");
+ _$jscoverage['plugins/undo.js'][118]++;
+ return ({address: rngAddress, content: cont});
+});
+ _$jscoverage['plugins/undo.js'][123]++;
+ this.save = (function (notCompareRange, notSetCursor) {
+ _$jscoverage['plugins/undo.js'][124]++;
+ clearTimeout(saveSceneTimer);
+ _$jscoverage['plugins/undo.js'][125]++;
+ var currentScene = this.getScene(notSetCursor), lastScene = this.list[this.index];
+ _$jscoverage['plugins/undo.js'][128]++;
+ if ((lastScene && (lastScene.content == currentScene.content) && (notCompareRange? 1: compareRangeAddress(lastScene.address, currentScene.address)))) {
+ _$jscoverage['plugins/undo.js'][131]++;
+ return;
+ }
+ _$jscoverage['plugins/undo.js'][133]++;
+ this.list = this.list.slice(0, (this.index + 1));
+ _$jscoverage['plugins/undo.js'][134]++;
+ this.list.push(currentScene);
+ _$jscoverage['plugins/undo.js'][136]++;
+ if ((this.list.length > maxUndoCount)) {
+ _$jscoverage['plugins/undo.js'][137]++;
+ this.list.shift();
+ }
+ _$jscoverage['plugins/undo.js'][139]++;
+ this.index = (this.list.length - 1);
+ _$jscoverage['plugins/undo.js'][140]++;
+ this.clearKey();
+ _$jscoverage['plugins/undo.js'][142]++;
+ this.update();
+});
+ _$jscoverage['plugins/undo.js'][145]++;
+ this.update = (function () {
+ _$jscoverage['plugins/undo.js'][146]++;
+ this.hasRedo = (! (! this.list[(this.index + 1)]));
+ _$jscoverage['plugins/undo.js'][147]++;
+ this.hasUndo = (! (! this.list[(this.index - 1)]));
+});
+ _$jscoverage['plugins/undo.js'][149]++;
+ this.reset = (function () {
+ _$jscoverage['plugins/undo.js'][150]++;
+ this.list = [];
+ _$jscoverage['plugins/undo.js'][151]++;
+ this.index = 0;
+ _$jscoverage['plugins/undo.js'][152]++;
+ this.hasUndo = false;
+ _$jscoverage['plugins/undo.js'][153]++;
+ this.hasRedo = false;
+ _$jscoverage['plugins/undo.js'][154]++;
+ this.clearKey();
+});
+ _$jscoverage['plugins/undo.js'][156]++;
+ this.clearKey = (function () {
+ _$jscoverage['plugins/undo.js'][157]++;
+ keycont = 0;
+ _$jscoverage['plugins/undo.js'][158]++;
+ lastKeyCode = null;
+});
+}
+ _$jscoverage['plugins/undo.js'][162]++;
+ me.undoManger = new UndoManager();
+ _$jscoverage['plugins/undo.js'][163]++;
+ me.undoManger.editor = me;
+ _$jscoverage['plugins/undo.js'][164]++;
+ function saveScene() {
+ _$jscoverage['plugins/undo.js'][165]++;
+ this.undoManger.save();
+}
+ _$jscoverage['plugins/undo.js'][168]++;
+ me.addListener("saveScene", (function () {
+ _$jscoverage['plugins/undo.js'][169]++;
+ var args = Array.prototype.splice.call(arguments, 1);
+ _$jscoverage['plugins/undo.js'][170]++;
+ this.undoManger.save.apply(this.undoManger, args);
+}));
+ _$jscoverage['plugins/undo.js'][173]++;
+ me.addListener("beforeexeccommand", saveScene);
+ _$jscoverage['plugins/undo.js'][174]++;
+ me.addListener("afterexeccommand", saveScene);
+ _$jscoverage['plugins/undo.js'][176]++;
+ me.addListener("reset", (function (type, exclude) {
+ _$jscoverage['plugins/undo.js'][177]++;
+ if ((! exclude)) {
+ _$jscoverage['plugins/undo.js'][178]++;
+ this.undoManger.reset();
+ }
+}));
+ _$jscoverage['plugins/undo.js'][181]++;
+ me.commands.redo = (me.commands.undo = {execCommand: (function (cmdName) {
+ _$jscoverage['plugins/undo.js'][183]++;
+ (this.undoManger[cmdName])();
+}), queryCommandState: (function (cmdName) {
+ _$jscoverage['plugins/undo.js'][186]++;
+ return (this.undoManger[("has" + ((cmdName.toLowerCase() == "undo")? "Undo": "Redo"))]? 0: -1);
+}), notNeedUndo: 1});
+ _$jscoverage['plugins/undo.js'][191]++;
+ var keys = {16: 1, 17: 1, 18: 1, 37: 1, 38: 1, 39: 1, 40: 1}, keycont = 0, lastKeyCode;
+ _$jscoverage['plugins/undo.js'][200]++;
+ var inputType = false;
+ _$jscoverage['plugins/undo.js'][201]++;
+ me.addListener("ready", (function () {
+ _$jscoverage['plugins/undo.js'][202]++;
+ domUtils.on(this.body, "compositionstart", (function () {
+ _$jscoverage['plugins/undo.js'][203]++;
+ inputType = true;
+}));
+ _$jscoverage['plugins/undo.js'][205]++;
+ domUtils.on(this.body, "compositionend", (function () {
+ _$jscoverage['plugins/undo.js'][206]++;
+ inputType = false;
+}));
+}));
+ _$jscoverage['plugins/undo.js'][210]++;
+ me.addshortcutkey({"Undo": "ctrl+90", "Redo": "ctrl+89"});
+ _$jscoverage['plugins/undo.js'][215]++;
+ var isCollapsed = true;
+ _$jscoverage['plugins/undo.js'][216]++;
+ me.addListener("keydown", (function (type, evt) {
+ _$jscoverage['plugins/undo.js'][218]++;
+ var me = this;
+ _$jscoverage['plugins/undo.js'][219]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/undo.js'][220]++;
+ if (((! keys[keyCode]) && (! evt.ctrlKey) && (! evt.metaKey) && (! evt.shiftKey) && (! evt.altKey))) {
+ _$jscoverage['plugins/undo.js'][221]++;
+ if (inputType) {
+ _$jscoverage['plugins/undo.js'][222]++;
+ return;
+ }
+ _$jscoverage['plugins/undo.js'][224]++;
+ if ((! me.selection.getRange().collapsed)) {
+ _$jscoverage['plugins/undo.js'][225]++;
+ me.undoManger.save(false, true);
+ _$jscoverage['plugins/undo.js'][226]++;
+ isCollapsed = false;
+ _$jscoverage['plugins/undo.js'][227]++;
+ return;
+ }
+ _$jscoverage['plugins/undo.js'][229]++;
+ if ((me.undoManger.list.length == 0)) {
+ _$jscoverage['plugins/undo.js'][230]++;
+ me.undoManger.save(true);
+ }
+ _$jscoverage['plugins/undo.js'][232]++;
+ clearTimeout(saveSceneTimer);
+ _$jscoverage['plugins/undo.js'][233]++;
+ function save(cont) {
+ _$jscoverage['plugins/undo.js'][235]++;
+ if (cont.selection.getRange().collapsed) {
+ _$jscoverage['plugins/undo.js'][236]++;
+ cont.fireEvent("contentchange");
+ }
+ _$jscoverage['plugins/undo.js'][237]++;
+ cont.undoManger.save(false, true);
+ _$jscoverage['plugins/undo.js'][238]++;
+ cont.fireEvent("selectionchange");
+}
+ _$jscoverage['plugins/undo.js'][240]++;
+ saveSceneTimer = setTimeout((function () {
+ _$jscoverage['plugins/undo.js'][241]++;
+ if (inputType) {
+ _$jscoverage['plugins/undo.js'][242]++;
+ var interalTimer = setInterval((function () {
+ _$jscoverage['plugins/undo.js'][243]++;
+ if ((! inputType)) {
+ _$jscoverage['plugins/undo.js'][244]++;
+ save(me);
+ _$jscoverage['plugins/undo.js'][245]++;
+ clearInterval(interalTimer);
+ }
+}), 300);
+ _$jscoverage['plugins/undo.js'][248]++;
+ return;
+ }
+ _$jscoverage['plugins/undo.js'][250]++;
+ save(me);
+}), 200);
+ _$jscoverage['plugins/undo.js'][253]++;
+ lastKeyCode = keyCode;
+ _$jscoverage['plugins/undo.js'][254]++;
+ (keycont++);
+ _$jscoverage['plugins/undo.js'][255]++;
+ if ((keycont >= maxInputCount)) {
+ _$jscoverage['plugins/undo.js'][256]++;
+ save(me);
+ }
+ }
+}));
+ _$jscoverage['plugins/undo.js'][260]++;
+ me.addListener("keyup", (function (type, evt) {
+ _$jscoverage['plugins/undo.js'][261]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['plugins/undo.js'][262]++;
+ if (((! keys[keyCode]) && (! evt.ctrlKey) && (! evt.metaKey) && (! evt.shiftKey) && (! evt.altKey))) {
+ _$jscoverage['plugins/undo.js'][263]++;
+ if (inputType) {
+ _$jscoverage['plugins/undo.js'][264]++;
+ return;
+ }
+ _$jscoverage['plugins/undo.js'][265]++;
+ if ((! isCollapsed)) {
+ _$jscoverage['plugins/undo.js'][266]++;
+ this.undoManger.save(false, true);
+ _$jscoverage['plugins/undo.js'][267]++;
+ isCollapsed = true;
+ }
+ }
+}));
+});
diff --git a/_test/coverage/plugins/video.js b/_test/coverage/plugins/video.js
new file mode 100644
index 000000000..95e37bd9d
--- /dev/null
+++ b/_test/coverage/plugins/video.js
@@ -0,0 +1,138 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/video.js']) {
+ _$jscoverage['plugins/video.js'] = [];
+ _$jscoverage['plugins/video.js'][7] = 0;
+ _$jscoverage['plugins/video.js'][9] = 0;
+ _$jscoverage['plugins/video.js'][21] = 0;
+ _$jscoverage['plugins/video.js'][22] = 0;
+ _$jscoverage['plugins/video.js'][33] = 0;
+ _$jscoverage['plugins/video.js'][34] = 0;
+ _$jscoverage['plugins/video.js'][35] = 0;
+ _$jscoverage['plugins/video.js'][37] = 0;
+ _$jscoverage['plugins/video.js'][38] = 0;
+ _$jscoverage['plugins/video.js'][43] = 0;
+ _$jscoverage['plugins/video.js'][44] = 0;
+ _$jscoverage['plugins/video.js'][46] = 0;
+ _$jscoverage['plugins/video.js'][47] = 0;
+ _$jscoverage['plugins/video.js'][93] = 0;
+ _$jscoverage['plugins/video.js'][95] = 0;
+ _$jscoverage['plugins/video.js'][96] = 0;
+ _$jscoverage['plugins/video.js'][97] = 0;
+ _$jscoverage['plugins/video.js'][98] = 0;
+ _$jscoverage['plugins/video.js'][99] = 0;
+ _$jscoverage['plugins/video.js'][101] = 0;
+ _$jscoverage['plugins/video.js'][102] = 0;
+ _$jscoverage['plugins/video.js'][103] = 0;
+ _$jscoverage['plugins/video.js'][104] = 0;
+ _$jscoverage['plugins/video.js'][105] = 0;
+ _$jscoverage['plugins/video.js'][106] = 0;
+ _$jscoverage['plugins/video.js'][107] = 0;
+ _$jscoverage['plugins/video.js'][111] = 0;
+ _$jscoverage['plugins/video.js'][113] = 0;
+}
+_$jscoverage['plugins/video.js'].source = ["/** "," * video插件, 为UEditor提供视频插入支持 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ 'video' ] = function () { ",""," var me = this , "," div; ",""," /* "," * 创建插入视频字符窜 "," * @param url 视频地址 "," * @param width 视频宽度 "," * @param height 视频高度 "," * @param align 视频对齐 "," * @param toEmbed 是否以flash代替显示 "," * @param addParagraph 是否需要添加P 标签 "," */ "," function creatInsertStr( url, width, height, id, align, toEmbed) { "," return ! toEmbed ? ",""," '<img ' + ( id ? 'id=\"' + id+ '\"' : '' ) + ' width=\"' + width + '\" height=\"' + height + '\" _url=\"' + url+ '\" class=\"edui-faked-video\"' + "," ' src=\"' + me. options. UEDITOR_HOME_URL+ 'themes/default/images/spacer.gif\" style=\"background:url(' + me. options. UEDITOR_HOME_URL+ 'themes/default/images/videologo.gif) no-repeat center center; border:1px solid gray;' +( align ? 'float:' + align + ';' : '' )+ '\" />' ",""," : "," '<embed type=\"application/x-shockwave-flash\" class=\"edui-faked-video\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"' + "," ' src=\"' + url + '\" width=\"' + width + '\" height=\"' + height + '\"' + ( align ? ' style=\"float:' + align + '\"' : '' ) + "," ' wmode=\"transparent\" play=\"true\" loop=\"false\" menu=\"false\" allowscriptaccess=\"never\" allowfullscreen=\"true\" >' ; "," } ",""," function switchImgAndEmbed( root, img2embed) { "," utils. each( root. getNodesByTagName( img2embed ? 'img' : 'embed' ), function ( node) { "," if ( node. getAttr( 'class' ) == 'edui-faked-video' ) { ",""," var html = creatInsertStr( img2embed ? node. getAttr( '_url' ) : node. getAttr( 'src' ), node. getAttr( 'width' ), node. getAttr( 'height' ), null , node. getStyle( 'float' ) || '' , img2embed); "," node. parentNode. replaceChild( UE. uNode. createElement( html), node) "," } "," } ) "," } ",""," me. addOutputRule( function ( root) { "," switchImgAndEmbed( root, true ) "," } ); "," me. addInputRule( function ( root) { "," switchImgAndEmbed( root) "," } ); ",""," /** "," * 插入视频 "," * @command insertvideo "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { KeyValueMap } videoObj 键值对对象, 描述一个视频的所有属性 "," * @example "," * ```javascript "," * "," * //editor 是编辑器实例 "," * editor.execCommand( 'insertvideo', { "," * "," * } ); "," * ``` "," */ ",""," /** "," * 插入视频 "," * @command insertvideo "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @param { Array } videoArr 需要插入的视频的数组, 其中的每一个元素都是一个键值对对象, 描述了一个视频的所有属性 "," * @example "," * ```javascript "," * "," * //editor 是编辑器实例 "," * editor.execCommand( 'insertvideo', [ ] ); "," * ``` "," */ ",""," /** "," * 查询当前光标所在处是否是一个视频 "," * @command insertvideo "," * @method queryCommandState "," * @param { String } cmd 需要查询的命令字符串 "," * @return { int } 如果当前光标所在处的元素是一个视频对象, 则返回1,否则返回0 "," * @example "," * ```javascript "," * "," * //editor 是编辑器实例 "," * editor.queryCommandState( 'insertvideo' ); "," * ``` "," */ "," me. commands[ \"insertvideo\" ] = { "," execCommand: function ( cmd, videoObjs) { "," videoObjs = utils. isArray( videoObjs)? videoObjs:[ videoObjs]; "," var html = [], id = 'tmpVedio' ; "," for ( var i= 0 , vi, len = videoObjs. length; i< len; i++) { "," vi = videoObjs[ i]; "," html. push( creatInsertStr( vi. url, vi. width || 420 , vi. height || 280 , id + i, null , false )); "," } "," me. execCommand( \"inserthtml\" , html. join( \"\" ), true ); "," var rng = this . selection. getRange(); "," for ( var i= 0 , len= videoObjs. length; i< len; i++) { "," var img = this . document. getElementById( 'tmpVedio' + i); "," domUtils. removeAttributes( img, 'id' ); "," rng. selectNode( img). select(); "," me. execCommand( 'imagefloat' , videoObjs[ i]. align) "," } "," } , "," queryCommandState : function () { "," var img = me. selection. getRange(). getClosedNode(), "," flag = img && ( img. className == \"edui-faked-video\" ); "," return flag ? 1 : 0 ; "," } "," } ; ","} ; "];
+_$jscoverage['plugins/video.js'][7]++;
+UE.plugins.video = (function () {
+ _$jscoverage['plugins/video.js'][9]++;
+ var me = this, div;
+ _$jscoverage['plugins/video.js'][21]++;
+ function creatInsertStr(url, width, height, id, align, toEmbed) {
+ _$jscoverage['plugins/video.js'][22]++;
+ return ((! toEmbed)? (" "): (""));
+}
+ _$jscoverage['plugins/video.js'][33]++;
+ function switchImgAndEmbed(root, img2embed) {
+ _$jscoverage['plugins/video.js'][34]++;
+ utils.each(root.getNodesByTagName((img2embed? "img": "embed")), (function (node) {
+ _$jscoverage['plugins/video.js'][35]++;
+ if ((node.getAttr("class") == "edui-faked-video")) {
+ _$jscoverage['plugins/video.js'][37]++;
+ var html = creatInsertStr((img2embed? node.getAttr("_url"): node.getAttr("src")), node.getAttr("width"), node.getAttr("height"), null, (node.getStyle("float") || ""), img2embed);
+ _$jscoverage['plugins/video.js'][38]++;
+ node.parentNode.replaceChild(UE.uNode.createElement(html), node);
+ }
+}));
+}
+ _$jscoverage['plugins/video.js'][43]++;
+ me.addOutputRule((function (root) {
+ _$jscoverage['plugins/video.js'][44]++;
+ switchImgAndEmbed(root, true);
+}));
+ _$jscoverage['plugins/video.js'][46]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/video.js'][47]++;
+ switchImgAndEmbed(root);
+}));
+ _$jscoverage['plugins/video.js'][93]++;
+ me.commands.insertvideo = {execCommand: (function (cmd, videoObjs) {
+ _$jscoverage['plugins/video.js'][95]++;
+ videoObjs = (utils.isArray(videoObjs)? videoObjs: [videoObjs]);
+ _$jscoverage['plugins/video.js'][96]++;
+ var html = [], id = "tmpVedio";
+ _$jscoverage['plugins/video.js'][97]++;
+ for (var i = 0, vi, len = videoObjs.length; (i < len); (i++)) {
+ _$jscoverage['plugins/video.js'][98]++;
+ vi = videoObjs[i];
+ _$jscoverage['plugins/video.js'][99]++;
+ html.push(creatInsertStr(vi.url, (vi.width || 420), (vi.height || 280), (id + i), null, false));
+}
+ _$jscoverage['plugins/video.js'][101]++;
+ me.execCommand("inserthtml", html.join(""), true);
+ _$jscoverage['plugins/video.js'][102]++;
+ var rng = this.selection.getRange();
+ _$jscoverage['plugins/video.js'][103]++;
+ for (var i = 0, len = videoObjs.length; (i < len); (i++)) {
+ _$jscoverage['plugins/video.js'][104]++;
+ var img = this.document.getElementById(("tmpVedio" + i));
+ _$jscoverage['plugins/video.js'][105]++;
+ domUtils.removeAttributes(img, "id");
+ _$jscoverage['plugins/video.js'][106]++;
+ rng.selectNode(img).select();
+ _$jscoverage['plugins/video.js'][107]++;
+ me.execCommand("imagefloat", videoObjs[i].align);
+}
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/video.js'][111]++;
+ var img = me.selection.getRange().getClosedNode(), flag = (img && (img.className == "edui-faked-video"));
+ _$jscoverage['plugins/video.js'][113]++;
+ return (flag? 1: 0);
+})};
+});
diff --git a/_test/coverage/plugins/webapp.js b/_test/coverage/plugins/webapp.js
new file mode 100644
index 000000000..75660c5ce
--- /dev/null
+++ b/_test/coverage/plugins/webapp.js
@@ -0,0 +1,119 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/webapp.js']) {
+ _$jscoverage['plugins/webapp.js'] = [];
+ _$jscoverage['plugins/webapp.js'][28] = 0;
+ _$jscoverage['plugins/webapp.js'][29] = 0;
+ _$jscoverage['plugins/webapp.js'][30] = 0;
+ _$jscoverage['plugins/webapp.js'][31] = 0;
+ _$jscoverage['plugins/webapp.js'][39] = 0;
+ _$jscoverage['plugins/webapp.js'][40] = 0;
+ _$jscoverage['plugins/webapp.js'][42] = 0;
+ _$jscoverage['plugins/webapp.js'][43] = 0;
+ _$jscoverage['plugins/webapp.js'][44] = 0;
+ _$jscoverage['plugins/webapp.js'][46] = 0;
+ _$jscoverage['plugins/webapp.js'][47] = 0;
+ _$jscoverage['plugins/webapp.js'][48] = 0;
+ _$jscoverage['plugins/webapp.js'][52] = 0;
+ _$jscoverage['plugins/webapp.js'][53] = 0;
+ _$jscoverage['plugins/webapp.js'][55] = 0;
+ _$jscoverage['plugins/webapp.js'][56] = 0;
+ _$jscoverage['plugins/webapp.js'][58] = 0;
+ _$jscoverage['plugins/webapp.js'][59] = 0;
+ _$jscoverage['plugins/webapp.js'][60] = 0;
+ _$jscoverage['plugins/webapp.js'][62] = 0;
+ _$jscoverage['plugins/webapp.js'][65] = 0;
+ _$jscoverage['plugins/webapp.js'][67] = 0;
+}
+_$jscoverage['plugins/webapp.js'].source = ["/** "," * 百度应用 "," * @file "," * @since 1.2.6.1 "," */ ","","","/** "," * 在当前光标处插入一个百度应用, 需要百度APPKey "," * @command webapp "," * @method execCommand "," * @param { KeyValueMap } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, "," * height=>应用容器高度,logo=>应用logo,url=>应用地址 "," * @example "," * ```javascript "," * //editor是编辑器实例 "," * //在编辑器里插入一个“植物大战僵尸”的APP "," * editor.execCommand( 'webapp' , { "," * title: '植物大战僵尸', "," * width: 560, "," * height: 465, "," * logo: '应用展示的图片', "," * url: '百度应用的地址' "," * } ); "," * ``` "," */ ","","UE. plugins[ 'webapp' ] = function () { "," var me = this ; "," function createInsertStr( obj, toIframe, addParagraph ) { "," return ! toIframe ? "," ( addParagraph ? '<p>' : '' ) + '<img title=\"' + obj. title+ '\" width=\"' + obj. width + '\" height=\"' + obj. height + '\"' + "," ' src=\"' + me. options. UEDITOR_HOME_URL + 'themes/default/images/spacer.gif\" style=\"background:url(' + obj. logo+ ') no-repeat center center; border:1px solid gray;\" class=\"edui-faked-webapp\" _url=\"' + obj. url + '\" />' + "," ( addParagraph ? '</p>' : '' ) "," : "," '<iframe class=\"edui-faked-webapp\" title=\"' + obj. title+ '\" width=\"' + obj. width + '\" height=\"' + obj. height + '\" scrolling=\"no\" frameborder=\"0\" src=\"' + obj. url + '\" logo_url = ' + obj. logo+ '></iframe>' ; "," } ",""," function switchImgAndIframe( img2frame ) { "," var tmpdiv, "," nodes = domUtils. getElementsByTagName( me. document, ! img2frame ? \"iframe\" : \"img\" ); "," for ( var i = 0 , node; node = nodes[ i++]; ) { "," if ( node. className != \"edui-faked-webapp\" ) { "," continue ; "," } "," tmpdiv = me. document. createElement( \"div\" ); "," tmpdiv. innerHTML = createInsertStr( img2frame ? { url: node. getAttribute( \"_url\" ), width: node. width, height: node. height, title: node. title, logo: node. style. backgroundImage. replace( \"url(\" , \"\" ). replace( \")\" , \"\" ) } : { url: node. getAttribute( \"src\" , 2 ), title: node. title, width: node. width, height: node. height, logo: node. getAttribute( \"logo_url\" ) } , img2frame ? true : false , false ); "," node. parentNode. replaceChild( tmpdiv. firstChild, node ); "," } "," } ",""," me. addListener( \"beforegetcontent\" , function () { "," switchImgAndIframe( true ); "," } ); "," me. addListener( 'aftersetcontent' , function () { "," switchImgAndIframe( false ); "," } ); "," me. addListener( 'aftergetcontent' , function ( cmdName ) { "," if ( cmdName == 'aftergetcontent' && me. queryCommandState( 'source' ) ) { "," return ; "," } "," switchImgAndIframe( false ); "," } ); ",""," me. commands[ 'webapp' ] = { "," execCommand: function ( cmd, obj ) { "," me. execCommand( \"inserthtml\" , createInsertStr( obj, false , true ) ); "," } "," } ; ","} ; "];
+_$jscoverage['plugins/webapp.js'][28]++;
+UE.plugins.webapp = (function () {
+ _$jscoverage['plugins/webapp.js'][29]++;
+ var me = this;
+ _$jscoverage['plugins/webapp.js'][30]++;
+ function createInsertStr(obj, toIframe, addParagraph) {
+ _$jscoverage['plugins/webapp.js'][31]++;
+ return ((! toIframe)? ((addParagraph? "": "") + " " + (addParagraph? "
": "")): (""));
+}
+ _$jscoverage['plugins/webapp.js'][39]++;
+ function switchImgAndIframe(img2frame) {
+ _$jscoverage['plugins/webapp.js'][40]++;
+ var tmpdiv, nodes = domUtils.getElementsByTagName(me.document, ((! img2frame)? "iframe": "img"));
+ _$jscoverage['plugins/webapp.js'][42]++;
+ for (var i = 0, node; (node = nodes[(i++)]);) {
+ _$jscoverage['plugins/webapp.js'][43]++;
+ if ((node.className != "edui-faked-webapp")) {
+ _$jscoverage['plugins/webapp.js'][44]++;
+ continue;
+ }
+ _$jscoverage['plugins/webapp.js'][46]++;
+ tmpdiv = me.document.createElement("div");
+ _$jscoverage['plugins/webapp.js'][47]++;
+ tmpdiv.innerHTML = createInsertStr((img2frame? {url: node.getAttribute("_url"), width: node.width, height: node.height, title: node.title, logo: node.style.backgroundImage.replace("url(", "").replace(")", "")}: {url: node.getAttribute("src", 2), title: node.title, width: node.width, height: node.height, logo: node.getAttribute("logo_url")}), (img2frame? true: false), false);
+ _$jscoverage['plugins/webapp.js'][48]++;
+ node.parentNode.replaceChild(tmpdiv.firstChild, node);
+}
+}
+ _$jscoverage['plugins/webapp.js'][52]++;
+ me.addListener("beforegetcontent", (function () {
+ _$jscoverage['plugins/webapp.js'][53]++;
+ switchImgAndIframe(true);
+}));
+ _$jscoverage['plugins/webapp.js'][55]++;
+ me.addListener("aftersetcontent", (function () {
+ _$jscoverage['plugins/webapp.js'][56]++;
+ switchImgAndIframe(false);
+}));
+ _$jscoverage['plugins/webapp.js'][58]++;
+ me.addListener("aftergetcontent", (function (cmdName) {
+ _$jscoverage['plugins/webapp.js'][59]++;
+ if (((cmdName == "aftergetcontent") && me.queryCommandState("source"))) {
+ _$jscoverage['plugins/webapp.js'][60]++;
+ return;
+ }
+ _$jscoverage['plugins/webapp.js'][62]++;
+ switchImgAndIframe(false);
+}));
+ _$jscoverage['plugins/webapp.js'][65]++;
+ me.commands.webapp = {execCommand: (function (cmd, obj) {
+ _$jscoverage['plugins/webapp.js'][67]++;
+ me.execCommand("inserthtml", createInsertStr(obj, false, true));
+})};
+});
diff --git a/_test/coverage/plugins/wordcount.js b/_test/coverage/plugins/wordcount.js
new file mode 100644
index 000000000..08a67d399
--- /dev/null
+++ b/_test/coverage/plugins/wordcount.js
@@ -0,0 +1,90 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/wordcount.js']) {
+ _$jscoverage['plugins/wordcount.js'] = [];
+ _$jscoverage['plugins/wordcount.js'][13] = 0;
+ _$jscoverage['plugins/wordcount.js'][14] = 0;
+ _$jscoverage['plugins/wordcount.js'][15] = 0;
+ _$jscoverage['plugins/wordcount.js'][16] = 0;
+ _$jscoverage['plugins/wordcount.js'][18] = 0;
+ _$jscoverage['plugins/wordcount.js'][19] = 0;
+ _$jscoverage['plugins/wordcount.js'][20] = 0;
+ _$jscoverage['plugins/wordcount.js'][21] = 0;
+ _$jscoverage['plugins/wordcount.js'][22] = 0;
+ _$jscoverage['plugins/wordcount.js'][25] = 0;
+ _$jscoverage['plugins/wordcount.js'][26] = 0;
+ _$jscoverage['plugins/wordcount.js'][27] = 0;
+ _$jscoverage['plugins/wordcount.js'][28] = 0;
+}
+_$jscoverage['plugins/wordcount.js'].source = ["///import core ","///commands 字数统计 ","///commandsName WordCount,wordCount ","///commandsTitle 字数统计 ","/* "," * Created by JetBrains WebStorm. "," * User: taoqili "," * Date: 11-9-7 "," * Time: 下午8:18 "," * To change this template use File | Settings | File Templates. "," */ ","","UE. plugins[ 'wordcount' ] = function () { "," var me = this ; "," me. addListener( 'contentchange' , function () { "," me. fireEvent( 'wordcount' ); "," } ); "," var timer; "," me. addListener( 'ready' , function () { "," var me = this ; "," domUtils. on( me. body, \"keyup\" , function ( evt) { "," var code = evt. keyCode|| evt. which, "," //忽略的按键,ctr,alt,shift,方向键 "," ignores = { \"16\" : 1 , \"18\" : 1 , \"20\" : 1 , \"37\" : 1 , \"38\" : 1 , \"39\" : 1 , \"40\" : 1 } ; "," if ( code in ignores) return ; "," clearTimeout( timer); "," timer = setTimeout( function () { "," me. fireEvent( 'wordcount' ); "," } , 200 ) "," } ) "," } ); ","} ; "];
+_$jscoverage['plugins/wordcount.js'][13]++;
+UE.plugins.wordcount = (function () {
+ _$jscoverage['plugins/wordcount.js'][14]++;
+ var me = this;
+ _$jscoverage['plugins/wordcount.js'][15]++;
+ me.addListener("contentchange", (function () {
+ _$jscoverage['plugins/wordcount.js'][16]++;
+ me.fireEvent("wordcount");
+}));
+ _$jscoverage['plugins/wordcount.js'][18]++;
+ var timer;
+ _$jscoverage['plugins/wordcount.js'][19]++;
+ me.addListener("ready", (function () {
+ _$jscoverage['plugins/wordcount.js'][20]++;
+ var me = this;
+ _$jscoverage['plugins/wordcount.js'][21]++;
+ domUtils.on(me.body, "keyup", (function (evt) {
+ _$jscoverage['plugins/wordcount.js'][22]++;
+ var code = (evt.keyCode || evt.which), ignores = {"16": 1, "18": 1, "20": 1, "37": 1, "38": 1, "39": 1, "40": 1};
+ _$jscoverage['plugins/wordcount.js'][25]++;
+ if ((code in ignores)) {
+ _$jscoverage['plugins/wordcount.js'][25]++;
+ return;
+ }
+ _$jscoverage['plugins/wordcount.js'][26]++;
+ clearTimeout(timer);
+ _$jscoverage['plugins/wordcount.js'][27]++;
+ timer = setTimeout((function () {
+ _$jscoverage['plugins/wordcount.js'][28]++;
+ me.fireEvent("wordcount");
+}), 200);
+}));
+}));
+});
diff --git a/_test/coverage/plugins/wordimage.js b/_test/coverage/plugins/wordimage.js
new file mode 100644
index 000000000..04237c9b1
--- /dev/null
+++ b/_test/coverage/plugins/wordimage.js
@@ -0,0 +1,113 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['plugins/wordimage.js']) {
+ _$jscoverage['plugins/wordimage.js'] = [];
+ _$jscoverage['plugins/wordimage.js'][7] = 0;
+ _$jscoverage['plugins/wordimage.js'][8] = 0;
+ _$jscoverage['plugins/wordimage.js'][10] = 0;
+ _$jscoverage['plugins/wordimage.js'][11] = 0;
+ _$jscoverage['plugins/wordimage.js'][12] = 0;
+ _$jscoverage['plugins/wordimage.js'][16] = 0;
+ _$jscoverage['plugins/wordimage.js'][17] = 0;
+ _$jscoverage['plugins/wordimage.js'][53] = 0;
+ _$jscoverage['plugins/wordimage.js'][55] = 0;
+ _$jscoverage['plugins/wordimage.js'][56] = 0;
+ _$jscoverage['plugins/wordimage.js'][57] = 0;
+ _$jscoverage['plugins/wordimage.js'][58] = 0;
+ _$jscoverage['plugins/wordimage.js'][59] = 0;
+ _$jscoverage['plugins/wordimage.js'][61] = 0;
+ _$jscoverage['plugins/wordimage.js'][62] = 0;
+ _$jscoverage['plugins/wordimage.js'][66] = 0;
+ _$jscoverage['plugins/wordimage.js'][67] = 0;
+ _$jscoverage['plugins/wordimage.js'][68] = 0;
+ _$jscoverage['plugins/wordimage.js'][69] = 0;
+ _$jscoverage['plugins/wordimage.js'][72] = 0;
+}
+_$jscoverage['plugins/wordimage.js'].source = ["/** "," * 本地图片引导上传插件 "," * @file "," * @since 1.2.6.1 "," */ ","","UE. plugins[ \"wordimage\" ] = function () { "," var me = this , "," images; "," me. addInputRule( function ( root) { "," utils. each( root. getNodesByTagName( 'img' ), function ( img) { "," var attrs = img. attrs, "," flag = parseInt( attrs. width) < 128 || parseInt( attrs. height) < 43 , "," opt = me. options, "," src = opt. UEDITOR_HOME_URL + 'themes/default/images/spacer.gif' ; "," if ( attrs[ '_src' ] && attrs[ '_src' ]. indexOf( \"file:///\" )!==- 1 ) { "," img. setAttr( { "," width: attrs. width, "," height: attrs. height, "," alt: attrs. alt, "," word_img: attrs. _src, "," src: src, "," _src: src, "," 'style' : 'background:url(' + ( flag ? opt. themePath + opt. theme + '/images/word.gif' : opt. langPath + opt. lang + '/images/localimage.png' ) + ') no-repeat center center;border:1px solid #ddd' "," } ) "," } "," } ) "," } ); ",""," /** "," * 粘贴word文档的内容时,运行该命令,会把编辑区域里的word图片地址,赋值到editor.word_img的数组里面 "," * @command wordimage "," * @method execCommand "," * @param { String } cmd 命令字符串 "," * @example "," * ```javascript "," * editor.execCommand( 'wordimage'); "," * ``` "," */ ",""," /** "," * 查询当前是否有word文档粘贴进来的图片 "," * @command wordimage "," * @method queryCommandState "," * @param { String } cmd 命令字符串 "," * @return { int } 如果当前编辑区域有word文档的粘贴进来的图片,则返回1,否则返回-1 "," * @example "," * ```javascript "," * editor.queryCommandState( 'wordimage' ); "," * ``` "," */ ",""," me. commands[ 'wordimage' ] = { "," execCommand: function () { "," images = domUtils. getElementsByTagName( me. document. body, \"img\" ); "," var urlList = []; "," for ( var i = 0 , ci; ci = images[ i++];) { "," var url = ci. getAttribute( \"word_img\" ); "," url && urlList. push( url); "," } "," if ( images. length) { "," this [ \"word_img\" ] = urlList; "," } "," } , "," queryCommandState: function () { "," images = domUtils. getElementsByTagName( me. document. body, \"img\" ); "," for ( var i = 0 , ci; ci = images[ i++];) { "," if ( ci. getAttribute( \"word_img\" )) { "," return 1 ; "," } "," } "," return - 1 ; "," } "," } ; ","","} ; "];
+_$jscoverage['plugins/wordimage.js'][7]++;
+UE.plugins.wordimage = (function () {
+ _$jscoverage['plugins/wordimage.js'][8]++;
+ var me = this, images;
+ _$jscoverage['plugins/wordimage.js'][10]++;
+ me.addInputRule((function (root) {
+ _$jscoverage['plugins/wordimage.js'][11]++;
+ utils.each(root.getNodesByTagName("img"), (function (img) {
+ _$jscoverage['plugins/wordimage.js'][12]++;
+ var attrs = img.attrs, flag = ((parseInt(attrs.width) < 128) || (parseInt(attrs.height) < 43)), opt = me.options, src = (opt.UEDITOR_HOME_URL + "themes/default/images/spacer.gif");
+ _$jscoverage['plugins/wordimage.js'][16]++;
+ if ((attrs._src && (attrs._src.indexOf("file:///") !== -1))) {
+ _$jscoverage['plugins/wordimage.js'][17]++;
+ img.setAttr({width: attrs.width, height: attrs.height, alt: attrs.alt, word_img: attrs._src, src: src, _src: src, "style": ("background:url(" + (flag? (opt.themePath + opt.theme + "/images/word.gif"): (opt.langPath + opt.lang + "/images/localimage.png")) + ") no-repeat center center;border:1px solid #ddd")});
+ }
+}));
+}));
+ _$jscoverage['plugins/wordimage.js'][53]++;
+ me.commands.wordimage = {execCommand: (function () {
+ _$jscoverage['plugins/wordimage.js'][55]++;
+ images = domUtils.getElementsByTagName(me.document.body, "img");
+ _$jscoverage['plugins/wordimage.js'][56]++;
+ var urlList = [];
+ _$jscoverage['plugins/wordimage.js'][57]++;
+ for (var i = 0, ci; (ci = images[(i++)]);) {
+ _$jscoverage['plugins/wordimage.js'][58]++;
+ var url = ci.getAttribute("word_img");
+ _$jscoverage['plugins/wordimage.js'][59]++;
+ (url && urlList.push(url));
+}
+ _$jscoverage['plugins/wordimage.js'][61]++;
+ if (images.length) {
+ _$jscoverage['plugins/wordimage.js'][62]++;
+ this.word_img = urlList;
+ }
+}), queryCommandState: (function () {
+ _$jscoverage['plugins/wordimage.js'][66]++;
+ images = domUtils.getElementsByTagName(me.document.body, "img");
+ _$jscoverage['plugins/wordimage.js'][67]++;
+ for (var i = 0, ci; (ci = images[(i++)]);) {
+ _$jscoverage['plugins/wordimage.js'][68]++;
+ if (ci.getAttribute("word_img")) {
+ _$jscoverage['plugins/wordimage.js'][69]++;
+ return 1;
+ }
+}
+ _$jscoverage['plugins/wordimage.js'][72]++;
+ return -1;
+})};
+});
diff --git a/_test/coverage/ui/autotypesetbutton.js b/_test/coverage/ui/autotypesetbutton.js
new file mode 100644
index 000000000..3cf697733
--- /dev/null
+++ b/_test/coverage/ui/autotypesetbutton.js
@@ -0,0 +1,207 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/autotypesetbutton.js']) {
+ _$jscoverage['ui/autotypesetbutton.js'] = [];
+ _$jscoverage['ui/autotypesetbutton.js'][6] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][7] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][12] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][13] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][15] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][16] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][22] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][24] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][26] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][27] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][28] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][29] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][30] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][31] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][32] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][33] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][35] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][36] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][37] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][38] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][39] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][44] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][49] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][50] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][51] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][52] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][55] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][57] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][59] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][60] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][66] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][67] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][68] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][69] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][70] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][74] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][75] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][76] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][77] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][78] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][81] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][82] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][83] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][84] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][86] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][88] = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][91] = 0;
+}
+_$jscoverage['ui/autotypesetbutton.js'].source = ["///import core ","///import uicore ","///import ui/popup.js ","///import ui/autotypesetpicker.js ","///import ui/splitbutton.js ","( function () { "," var utils = baidu. editor. utils, "," Popup = baidu. editor. ui. Popup, "," AutoTypeSetPicker = baidu. editor. ui. AutoTypeSetPicker, "," SplitButton = baidu. editor. ui. SplitButton, "," AutoTypeSetButton = baidu. editor. ui. AutoTypeSetButton = function ( options) { "," this . initOptions( options); "," this . initAutoTypeSetButton(); "," } ; "," function getPara( me) { "," var opt = me. editor. options. autotypeset, "," cont = me. getDom(), "," editorId = me. editor. uid, "," inputType = null , "," attrName = null , "," ipts = domUtils. getElementsByTagName( cont, \"input\" ); "," for ( var i= ipts. length- 1 , ipt; ipt= ipts[ i--];) { ",""," inputType = ipt. getAttribute( \"type\" ); ",""," if ( inputType== \"checkbox\" ) { "," attrName = ipt. getAttribute( \"name\" ); "," opt[ attrName] && delete opt[ attrName]; "," if ( ipt. checked) { "," var attrValue = document. getElementById( attrName+ \"Value\" + editorId ); "," if ( attrValue) { "," if ( /input/ig . test( attrValue. tagName)) { "," opt[ attrName] = attrValue. value; "," } else { "," var iptChilds = attrValue. getElementsByTagName( \"input\" ); "," for ( var j= iptChilds. length- 1 , iptchild; iptchild= iptChilds[ j--];) { "," if ( iptchild. checked) { "," opt[ attrName] = iptchild. value; "," break ; "," } "," } "," } "," } else { "," opt[ attrName] = true ; "," } "," } "," } "," } "," var selects = domUtils. getElementsByTagName( cont, \"select\" ); "," for ( var i= 0 , si; si= selects[ i++];) { "," var attr = si. getAttribute( 'name' ); "," opt[ attr] = opt[ attr] ? si. value : '' ; "," } ",""," me. editor. options. autotypeset = opt; "," } "," AutoTypeSetButton. prototype = { "," initAutoTypeSetButton: function () { "," var me = this ; "," this . popup = new Popup( { "," //传入配置参数 "," content: new AutoTypeSetPicker( { editor: me. editor} ), "," 'editor' : me. editor, "," hide : function () { ",""," if (! this . _hidden && this . getDom()) { "," getPara( this ); "," this . getDom(). style. display = 'none' ; "," this . _hidden = true ; "," this . fireEvent( 'hide' ); "," } "," } "," } ); "," var flag = 0 ; "," this . popup. addListener( 'postRenderAfter' , function () { "," var popupUI = this ; "," if ( flag) return ; "," var cont = this . getDom(), "," btn = cont. getElementsByTagName( 'button' )[ 0 ]; ",""," btn. onclick = function () { "," getPara( popupUI); "," me. editor. execCommand( 'autotypeset' ); "," popupUI. hide() "," } ; "," flag = 1 ; "," } ); "," this . initSplitButton(); "," } "," } ; "," utils. inherits( AutoTypeSetButton, SplitButton); ","","} )(); "];
+_$jscoverage['ui/autotypesetbutton.js'][6]++;
+(function () {
+ _$jscoverage['ui/autotypesetbutton.js'][7]++;
+ var utils = baidu.editor.utils, Popup = baidu.editor.ui.Popup, AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker, SplitButton = baidu.editor.ui.SplitButton, AutoTypeSetButton = (baidu.editor.ui.AutoTypeSetButton = (function (options) {
+ _$jscoverage['ui/autotypesetbutton.js'][12]++;
+ this.initOptions(options);
+ _$jscoverage['ui/autotypesetbutton.js'][13]++;
+ this.initAutoTypeSetButton();
+}));
+ _$jscoverage['ui/autotypesetbutton.js'][15]++;
+ function getPara(me) {
+ _$jscoverage['ui/autotypesetbutton.js'][16]++;
+ var opt = me.editor.options.autotypeset, cont = me.getDom(), editorId = me.editor.uid, inputType = null, attrName = null, ipts = domUtils.getElementsByTagName(cont, "input");
+ _$jscoverage['ui/autotypesetbutton.js'][22]++;
+ for (var i = (ipts.length - 1), ipt; (ipt = ipts[(i--)]);) {
+ _$jscoverage['ui/autotypesetbutton.js'][24]++;
+ inputType = ipt.getAttribute("type");
+ _$jscoverage['ui/autotypesetbutton.js'][26]++;
+ if ((inputType == "checkbox")) {
+ _$jscoverage['ui/autotypesetbutton.js'][27]++;
+ attrName = ipt.getAttribute("name");
+ _$jscoverage['ui/autotypesetbutton.js'][28]++;
+ (opt[attrName] && (delete opt[attrName]));
+ _$jscoverage['ui/autotypesetbutton.js'][29]++;
+ if (ipt.checked) {
+ _$jscoverage['ui/autotypesetbutton.js'][30]++;
+ var attrValue = document.getElementById((attrName + "Value" + editorId));
+ _$jscoverage['ui/autotypesetbutton.js'][31]++;
+ if (attrValue) {
+ _$jscoverage['ui/autotypesetbutton.js'][32]++;
+ if (/input/gi.test(attrValue.tagName)) {
+ _$jscoverage['ui/autotypesetbutton.js'][33]++;
+ opt[attrName] = attrValue.value;
+ }
+ else {
+ _$jscoverage['ui/autotypesetbutton.js'][35]++;
+ var iptChilds = attrValue.getElementsByTagName("input");
+ _$jscoverage['ui/autotypesetbutton.js'][36]++;
+ for (var j = (iptChilds.length - 1), iptchild; (iptchild = iptChilds[(j--)]);) {
+ _$jscoverage['ui/autotypesetbutton.js'][37]++;
+ if (iptchild.checked) {
+ _$jscoverage['ui/autotypesetbutton.js'][38]++;
+ opt[attrName] = iptchild.value;
+ _$jscoverage['ui/autotypesetbutton.js'][39]++;
+ break;
+ }
+}
+ }
+ }
+ else {
+ _$jscoverage['ui/autotypesetbutton.js'][44]++;
+ opt[attrName] = true;
+ }
+ }
+ }
+}
+ _$jscoverage['ui/autotypesetbutton.js'][49]++;
+ var selects = domUtils.getElementsByTagName(cont, "select");
+ _$jscoverage['ui/autotypesetbutton.js'][50]++;
+ for (var i = 0, si; (si = selects[(i++)]);) {
+ _$jscoverage['ui/autotypesetbutton.js'][51]++;
+ var attr = si.getAttribute("name");
+ _$jscoverage['ui/autotypesetbutton.js'][52]++;
+ opt[attr] = (opt[attr]? si.value: "");
+}
+ _$jscoverage['ui/autotypesetbutton.js'][55]++;
+ me.editor.options.autotypeset = opt;
+}
+ _$jscoverage['ui/autotypesetbutton.js'][57]++;
+ AutoTypeSetButton.prototype = {initAutoTypeSetButton: (function () {
+ _$jscoverage['ui/autotypesetbutton.js'][59]++;
+ var me = this;
+ _$jscoverage['ui/autotypesetbutton.js'][60]++;
+ this.popup = new Popup({content: new AutoTypeSetPicker({editor: me.editor}), "editor": me.editor, hide: (function () {
+ _$jscoverage['ui/autotypesetbutton.js'][66]++;
+ if (((! this._hidden) && this.getDom())) {
+ _$jscoverage['ui/autotypesetbutton.js'][67]++;
+ getPara(this);
+ _$jscoverage['ui/autotypesetbutton.js'][68]++;
+ this.getDom().style.display = "none";
+ _$jscoverage['ui/autotypesetbutton.js'][69]++;
+ this._hidden = true;
+ _$jscoverage['ui/autotypesetbutton.js'][70]++;
+ this.fireEvent("hide");
+ }
+})});
+ _$jscoverage['ui/autotypesetbutton.js'][74]++;
+ var flag = 0;
+ _$jscoverage['ui/autotypesetbutton.js'][75]++;
+ this.popup.addListener("postRenderAfter", (function () {
+ _$jscoverage['ui/autotypesetbutton.js'][76]++;
+ var popupUI = this;
+ _$jscoverage['ui/autotypesetbutton.js'][77]++;
+ if (flag) {
+ _$jscoverage['ui/autotypesetbutton.js'][77]++;
+ return;
+ }
+ _$jscoverage['ui/autotypesetbutton.js'][78]++;
+ var cont = this.getDom(), btn = cont.getElementsByTagName("button")[0];
+ _$jscoverage['ui/autotypesetbutton.js'][81]++;
+ btn.onclick = (function () {
+ _$jscoverage['ui/autotypesetbutton.js'][82]++;
+ getPara(popupUI);
+ _$jscoverage['ui/autotypesetbutton.js'][83]++;
+ me.editor.execCommand("autotypeset");
+ _$jscoverage['ui/autotypesetbutton.js'][84]++;
+ popupUI.hide();
+});
+ _$jscoverage['ui/autotypesetbutton.js'][86]++;
+ flag = 1;
+}));
+ _$jscoverage['ui/autotypesetbutton.js'][88]++;
+ this.initSplitButton();
+})};
+ _$jscoverage['ui/autotypesetbutton.js'][91]++;
+ utils.inherits(AutoTypeSetButton, SplitButton);
+})();
diff --git a/_test/coverage/ui/autotypesetpicker.js b/_test/coverage/ui/autotypesetpicker.js
new file mode 100644
index 000000000..e499278aa
--- /dev/null
+++ b/_test/coverage/ui/autotypesetpicker.js
@@ -0,0 +1,80 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/autotypesetpicker.js']) {
+ _$jscoverage['ui/autotypesetpicker.js'] = [];
+ _$jscoverage['ui/autotypesetpicker.js'][3] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][4] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][7] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][8] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][9] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][11] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][13] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][16] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][20] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][23] = 0;
+ _$jscoverage['ui/autotypesetpicker.js'][48] = 0;
+}
+_$jscoverage['ui/autotypesetpicker.js'].source = ["///import core ","///import uicore ","( function () { "," var utils = baidu. editor. utils, "," UIBase = baidu. editor. ui. UIBase; ",""," var AutoTypeSetPicker = baidu. editor. ui. AutoTypeSetPicker = function ( options) { "," this . initOptions( options); "," this . initAutoTypeSetPicker(); "," } ; "," AutoTypeSetPicker. prototype = { "," initAutoTypeSetPicker: function () { "," this . initUIBase(); "," } , "," getHtmlTpl: function () { "," var me = this . editor, "," opt = me. options. autotypeset, "," lang = me. getLang( \"autoTypeSet\" ); ",""," var textAlignInputName = 'textAlignValue' + me. uid, "," imageBlockInputName = 'imageBlockLineValue' + me. uid; ",""," return '<div id=\"##\" class=\"edui-autotypesetpicker %%\">' + "," '<div class=\"edui-autotypesetpicker-body\">' + "," '<table >' + "," '<tr><td nowrap colspan=\"2\"><input type=\"checkbox\" name=\"mergeEmptyline\" ' + ( opt[ \"mergeEmptyline\" ] ? \"checked\" : \"\" ) + '>' + lang. mergeLine + '</td><td colspan=\"2\"><input type=\"checkbox\" name=\"removeEmptyline\" ' + ( opt[ \"removeEmptyline\" ] ? \"checked\" : \"\" ) + '>' + lang. delLine + '</td></tr>' + "," '<tr><td nowrap colspan=\"2\"><input type=\"checkbox\" name=\"removeClass\" ' + ( opt[ \"removeClass\" ] ? \"checked\" : \"\" ) + '>' + lang. removeFormat + '</td><td colspan=\"2\"><input type=\"checkbox\" name=\"indent\" ' + ( opt[ \"indent\" ] ? \"checked\" : \"\" ) + '>' + lang. indent + '</td></tr>' + "," '<tr><td nowrap colspan=\"2\"><input type=\"checkbox\" name=\"textAlign\" ' + ( opt[ \"textAlign\" ] ? \"checked\" : \"\" ) + '>' + lang. alignment + '</td><td colspan=\"2\" id=\"' + textAlignInputName + '\"><input type=\"radio\" name=\"' + textAlignInputName + '\" value=\"left\" ' + (( opt[ \"textAlign\" ] && opt[ \"textAlign\" ] == \"left\" ) ? \"checked\" : \"\" ) + '>' + me. getLang( \"justifyleft\" ) + '<input type=\"radio\" name=\"' + textAlignInputName + '\" value=\"center\" ' + (( opt[ \"textAlign\" ] && opt[ \"textAlign\" ] == \"center\" ) ? \"checked\" : \"\" ) + '>' + me. getLang( \"justifycenter\" ) + '<input type=\"radio\" name=\"' + textAlignInputName + '\" value=\"right\" ' + (( opt[ \"textAlign\" ] && opt[ \"textAlign\" ] == \"right\" ) ? \"checked\" : \"\" ) + '>' + me. getLang( \"justifyright\" ) + ' </tr>' + "," '<tr><td nowrap colspan=\"2\"><input type=\"checkbox\" name=\"imageBlockLine\" ' + ( opt[ \"imageBlockLine\" ] ? \"checked\" : \"\" ) + '>' + lang. imageFloat + '</td>' + "," '<td nowrap colspan=\"2\" id=\"' + imageBlockInputName + '\">' + "," '<input type=\"radio\" name=\"' + imageBlockInputName + '\" value=\"none\" ' + (( opt[ \"imageBlockLine\" ] && opt[ \"imageBlockLine\" ] == \"none\" ) ? \"checked\" : \"\" ) + '>' + me. getLang( \"default\" ) + "," '<input type=\"radio\" name=\"' + imageBlockInputName + '\" value=\"left\" ' + (( opt[ \"imageBlockLine\" ] && opt[ \"imageBlockLine\" ] == \"left\" ) ? \"checked\" : \"\" ) + '>' + me. getLang( \"justifyleft\" ) + "," '<input type=\"radio\" name=\"' + imageBlockInputName + '\" value=\"center\" ' + (( opt[ \"imageBlockLine\" ] && opt[ \"imageBlockLine\" ] == \"center\" ) ? \"checked\" : \"\" ) + '>' + me. getLang( \"justifycenter\" ) + "," '<input type=\"radio\" name=\"' + imageBlockInputName + '\" value=\"right\" ' + (( opt[ \"imageBlockLine\" ] && opt[ \"imageBlockLine\" ] == \"right\" ) ? \"checked\" : \"\" ) + '>' + me. getLang( \"justifyright\" ) + '</tr>' + ",""," '<tr><td nowrap colspan=\"2\"><input type=\"checkbox\" name=\"clearFontSize\" ' + ( opt[ \"clearFontSize\" ] ? \"checked\" : \"\" ) + '>' + lang. removeFontsize + '</td><td colspan=\"2\"><input type=\"checkbox\" name=\"clearFontFamily\" ' + ( opt[ \"clearFontFamily\" ] ? \"checked\" : \"\" ) + '>' + lang. removeFontFamily + '</td></tr>' + "," '<tr><td nowrap colspan=\"4\"><input type=\"checkbox\" name=\"removeEmptyNode\" ' + ( opt[ \"removeEmptyNode\" ] ? \"checked\" : \"\" ) + '>' + lang. removeHtml + '</td></tr>' + "," '<tr><td nowrap colspan=\"4\"><input type=\"checkbox\" name=\"pasteFilter\" ' + ( opt[ \"pasteFilter\" ] ? \"checked\" : \"\" ) + '>' + lang. pasteFilter + '</td></tr>' + "," '<tr><td nowrap colspan=\"4\" align=\"right\"><button >' + lang. run + '</button></td></tr>' + "," '</table>' + "," '</div>' + "," '</div>' ; ","",""," } , "," _UIBase_render: UIBase. prototype. render"," } ; "," utils. inherits( AutoTypeSetPicker, UIBase); ","} )(); "];
+_$jscoverage['ui/autotypesetpicker.js'][3]++;
+(function () {
+ _$jscoverage['ui/autotypesetpicker.js'][4]++;
+ var utils = baidu.editor.utils, UIBase = baidu.editor.ui.UIBase;
+ _$jscoverage['ui/autotypesetpicker.js'][7]++;
+ var AutoTypeSetPicker = (baidu.editor.ui.AutoTypeSetPicker = (function (options) {
+ _$jscoverage['ui/autotypesetpicker.js'][8]++;
+ this.initOptions(options);
+ _$jscoverage['ui/autotypesetpicker.js'][9]++;
+ this.initAutoTypeSetPicker();
+}));
+ _$jscoverage['ui/autotypesetpicker.js'][11]++;
+ AutoTypeSetPicker.prototype = {initAutoTypeSetPicker: (function () {
+ _$jscoverage['ui/autotypesetpicker.js'][13]++;
+ this.initUIBase();
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/autotypesetpicker.js'][16]++;
+ var me = this.editor, opt = me.options.autotypeset, lang = me.getLang("autoTypeSet");
+ _$jscoverage['ui/autotypesetpicker.js'][20]++;
+ var textAlignInputName = ("textAlignValue" + me.uid), imageBlockInputName = ("imageBlockLineValue" + me.uid);
+ _$jscoverage['ui/autotypesetpicker.js'][23]++;
+ return ("");
+}), _UIBase_render: UIBase.prototype.render};
+ _$jscoverage['ui/autotypesetpicker.js'][48]++;
+ utils.inherits(AutoTypeSetPicker, UIBase);
+})();
diff --git a/_test/coverage/ui/breakline.js b/_test/coverage/ui/breakline.js
new file mode 100644
index 000000000..35d6745eb
--- /dev/null
+++ b/_test/coverage/ui/breakline.js
@@ -0,0 +1,71 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/breakline.js']) {
+ _$jscoverage['ui/breakline.js'] = [];
+ _$jscoverage['ui/breakline.js'][1] = 0;
+ _$jscoverage['ui/breakline.js'][2] = 0;
+ _$jscoverage['ui/breakline.js'][5] = 0;
+ _$jscoverage['ui/breakline.js'][6] = 0;
+ _$jscoverage['ui/breakline.js'][8] = 0;
+ _$jscoverage['ui/breakline.js'][11] = 0;
+ _$jscoverage['ui/breakline.js'][14] = 0;
+ _$jscoverage['ui/breakline.js'][17] = 0;
+}
+_$jscoverage['ui/breakline.js'].source = ["( function () { "," var utils = baidu. editor. utils, "," UIBase = baidu. editor. ui. UIBase, "," Breakline = baidu. editor. ui. Breakline = function ( options) { "," this . initOptions( options); "," this . initSeparator(); "," } ; "," Breakline. prototype = { "," uiName: 'Breakline' , "," initSeparator: function () { "," this . initUIBase(); "," } , "," getHtmlTpl: function () { "," return '<br/>' ; "," } "," } ; "," utils. inherits( Breakline, UIBase); ","","} )(); "];
+_$jscoverage['ui/breakline.js'][1]++;
+(function () {
+ _$jscoverage['ui/breakline.js'][2]++;
+ var utils = baidu.editor.utils, UIBase = baidu.editor.ui.UIBase, Breakline = (baidu.editor.ui.Breakline = (function (options) {
+ _$jscoverage['ui/breakline.js'][5]++;
+ this.initOptions(options);
+ _$jscoverage['ui/breakline.js'][6]++;
+ this.initSeparator();
+}));
+ _$jscoverage['ui/breakline.js'][8]++;
+ Breakline.prototype = {uiName: "Breakline", initSeparator: (function () {
+ _$jscoverage['ui/breakline.js'][11]++;
+ this.initUIBase();
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/breakline.js'][14]++;
+ return " ";
+})};
+ _$jscoverage['ui/breakline.js'][17]++;
+ utils.inherits(Breakline, UIBase);
+})();
diff --git a/_test/coverage/ui/button.js b/_test/coverage/ui/button.js
new file mode 100644
index 000000000..5346f333f
--- /dev/null
+++ b/_test/coverage/ui/button.js
@@ -0,0 +1,92 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/button.js']) {
+ _$jscoverage['ui/button.js'] = [];
+ _$jscoverage['ui/button.js'][4] = 0;
+ _$jscoverage['ui/button.js'][5] = 0;
+ _$jscoverage['ui/button.js'][9] = 0;
+ _$jscoverage['ui/button.js'][10] = 0;
+ _$jscoverage['ui/button.js'][12] = 0;
+ _$jscoverage['ui/button.js'][19] = 0;
+ _$jscoverage['ui/button.js'][20] = 0;
+ _$jscoverage['ui/button.js'][23] = 0;
+ _$jscoverage['ui/button.js'][34] = 0;
+ _$jscoverage['ui/button.js'][35] = 0;
+ _$jscoverage['ui/button.js'][38] = 0;
+ _$jscoverage['ui/button.js'][39] = 0;
+ _$jscoverage['ui/button.js'][43] = 0;
+ _$jscoverage['ui/button.js'][44] = 0;
+}
+_$jscoverage['ui/button.js'].source = ["///import core ","///import uicore ","///import ui/stateful.js ","( function () { "," var utils = baidu. editor. utils, "," UIBase = baidu. editor. ui. UIBase, "," Stateful = baidu. editor. ui. Stateful, "," Button = baidu. editor. ui. Button = function ( options) { "," this . initOptions( options); "," this . initButton(); "," } ; "," Button. prototype = { "," uiName: 'button' , "," label: '' , "," title: '' , "," showIcon: true , "," showText: true , "," initButton: function () { "," this . initUIBase(); "," this . Stateful_init(); "," } , "," getHtmlTpl: function () { "," return '<div id=\"##\" class=\"edui-box %%\">' + "," '<div id=\"##_state\" stateful>' + "," '<div class=\"%%-wrap\"><div id=\"##_body\" unselectable=\"on\" ' + ( this . title ? 'title=\"' + this . title + '\"' : '' ) + "," ' class=\"%%-body\" onmousedown=\"return false;\" onclick=\"return $$._onClick();\">' + "," ( this . showIcon ? '<div class=\"edui-box edui-icon\"></div>' : '' ) + "," ( this . showText ? '<div class=\"edui-box edui-label\">' + this . label + '</div>' : '' ) + "," '</div>' + "," '</div>' + "," '</div></div>' ; "," } , "," postRender: function () { "," this . Stateful_postRender(); "," this . setDisabled( this . disabled) "," } , "," _onClick: function () { "," if (! this . isDisabled()) { "," this . fireEvent( 'click' ); "," } "," } "," } ; "," utils. inherits( Button, UIBase); "," utils. extend( Button. prototype, Stateful); ","","} )(); "];
+_$jscoverage['ui/button.js'][4]++;
+(function () {
+ _$jscoverage['ui/button.js'][5]++;
+ var utils = baidu.editor.utils, UIBase = baidu.editor.ui.UIBase, Stateful = baidu.editor.ui.Stateful, Button = (baidu.editor.ui.Button = (function (options) {
+ _$jscoverage['ui/button.js'][9]++;
+ this.initOptions(options);
+ _$jscoverage['ui/button.js'][10]++;
+ this.initButton();
+}));
+ _$jscoverage['ui/button.js'][12]++;
+ Button.prototype = {uiName: "button", label: "", title: "", showIcon: true, showText: true, initButton: (function () {
+ _$jscoverage['ui/button.js'][19]++;
+ this.initUIBase();
+ _$jscoverage['ui/button.js'][20]++;
+ this.Stateful_init();
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/button.js'][23]++;
+ return ("" + "
" + "
" + (this.showIcon? "
": "") + (this.showText? ("
" + this.label + "
"): "") + "
" + "
" + "
");
+}), postRender: (function () {
+ _$jscoverage['ui/button.js'][34]++;
+ this.Stateful_postRender();
+ _$jscoverage['ui/button.js'][35]++;
+ this.setDisabled(this.disabled);
+}), _onClick: (function () {
+ _$jscoverage['ui/button.js'][38]++;
+ if ((! this.isDisabled())) {
+ _$jscoverage['ui/button.js'][39]++;
+ this.fireEvent("click");
+ }
+})};
+ _$jscoverage['ui/button.js'][43]++;
+ utils.inherits(Button, UIBase);
+ _$jscoverage['ui/button.js'][44]++;
+ utils.extend(Button.prototype, Stateful);
+})();
diff --git a/_test/coverage/ui/cellalignpicker.js b/_test/coverage/ui/cellalignpicker.js
new file mode 100644
index 000000000..5634b1c3c
--- /dev/null
+++ b/_test/coverage/ui/cellalignpicker.js
@@ -0,0 +1,134 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/cellalignpicker.js']) {
+ _$jscoverage['ui/cellalignpicker.js'] = [];
+ _$jscoverage['ui/cellalignpicker.js'][3] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][4] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][14] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][15] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][16] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][17] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][19] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][23] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][40] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][41] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][46] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][47] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][51] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][58] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][60] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][61] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][63] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][65] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][67] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][71] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][80] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][83] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][84] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][85] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][86] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][91] = 0;
+ _$jscoverage['ui/cellalignpicker.js'][92] = 0;
+}
+_$jscoverage['ui/cellalignpicker.js'].source = ["///import core ","///import uicore ","( function () { "," var utils = baidu. editor. utils, "," Popup = baidu. editor. ui. Popup, "," Stateful = baidu. editor. ui. Stateful, "," UIBase = baidu. editor. ui. UIBase; ",""," /** "," * 该参数将新增一个参数: selected, 参数类型为一个Object, 形如{ 'align': 'center', 'valign': 'top' }, 表示单元格的初始 "," * 对齐状态为: 竖直居上,水平居中; 其中 align的取值为:'center', 'left', 'right'; valign的取值为: 'top', 'middle', 'bottom' "," * @update 2013/4/2 hancong03@baidu.com "," */ "," var CellAlignPicker = baidu. editor. ui. CellAlignPicker = function ( options) { "," this . initOptions( options); "," this . initSelected(); "," this . initCellAlignPicker(); "," } ; "," CellAlignPicker. prototype = { "," //初始化选中状态, 该方法将根据传递进来的参数获取到应该选中的对齐方式图标的索引 "," initSelected: function () { ",""," var status = { ",""," valign: { "," top: 0 , "," middle: 1 , "," bottom: 2 "," } , "," align: { "," left: 0 , "," center: 1 , "," right: 2 "," } , "," count: 3 ",""," } , "," result = - 1 ; ",""," if ( this . selected ) { "," this . selectedIndex = status. valign[ this . selected. valign ] * status. count + status. align[ this . selected. align ]; "," } ",""," } , "," initCellAlignPicker: function () { "," this . initUIBase(); "," this . Stateful_init(); "," } , "," getHtmlTpl: function () { ",""," var alignType = [ 'left' , 'center' , 'right' ], "," COUNT = 9 , "," tempClassName = null , "," tempIndex = - 1 , "," tmpl = []; ","",""," for ( var i= 0 ; i< COUNT; i++ ) { ",""," tempClassName = this . selectedIndex === i ? ' class=\"edui-cellalign-selected\" ' : '' ; "," tempIndex = i % 3 ; ",""," tempIndex === 0 && tmpl. push( '<tr>' ); ",""," tmpl. push( '<td index=\"' + i + '\" ' + tempClassName + ' stateful><div class=\"edui-icon edui-' + alignType[ tempIndex ] + '\"></div></td>' ); ",""," tempIndex === 2 && tmpl. push( '</tr>' ); ",""," } ",""," return '<div id=\"##\" class=\"edui-cellalignpicker %%\">' + "," '<div class=\"edui-cellalignpicker-body\">' + "," '<table onclick=\"$$._onClick(event);\">' + "," tmpl. join( '' ) + "," '</table>' + "," '</div>' + "," '</div>' ; "," } , "," getStateDom: function () { "," return this . target; "," } , "," _onClick: function ( evt) { "," var target= evt. target || evt. srcElement; "," if ( /icon/ . test( target. className)) { "," this . items[ target. parentNode. getAttribute( \"index\" )]. onclick(); "," Popup. postHide( evt); "," } "," } , "," _UIBase_render: UIBase. prototype. render"," } ; "," utils. inherits( CellAlignPicker, UIBase); "," utils. extend( CellAlignPicker. prototype, Stateful, true ); ","} )(); ","","",""];
+_$jscoverage['ui/cellalignpicker.js'][3]++;
+(function () {
+ _$jscoverage['ui/cellalignpicker.js'][4]++;
+ var utils = baidu.editor.utils, Popup = baidu.editor.ui.Popup, Stateful = baidu.editor.ui.Stateful, UIBase = baidu.editor.ui.UIBase;
+ _$jscoverage['ui/cellalignpicker.js'][14]++;
+ var CellAlignPicker = (baidu.editor.ui.CellAlignPicker = (function (options) {
+ _$jscoverage['ui/cellalignpicker.js'][15]++;
+ this.initOptions(options);
+ _$jscoverage['ui/cellalignpicker.js'][16]++;
+ this.initSelected();
+ _$jscoverage['ui/cellalignpicker.js'][17]++;
+ this.initCellAlignPicker();
+}));
+ _$jscoverage['ui/cellalignpicker.js'][19]++;
+ CellAlignPicker.prototype = {initSelected: (function () {
+ _$jscoverage['ui/cellalignpicker.js'][23]++;
+ var status = {valign: {top: 0, middle: 1, bottom: 2}, align: {left: 0, center: 1, right: 2}, count: 3}, result = -1;
+ _$jscoverage['ui/cellalignpicker.js'][40]++;
+ if (this.selected) {
+ _$jscoverage['ui/cellalignpicker.js'][41]++;
+ this.selectedIndex = ((status.valign[this.selected.valign] * status.count) + status.align[this.selected.align]);
+ }
+}), initCellAlignPicker: (function () {
+ _$jscoverage['ui/cellalignpicker.js'][46]++;
+ this.initUIBase();
+ _$jscoverage['ui/cellalignpicker.js'][47]++;
+ this.Stateful_init();
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/cellalignpicker.js'][51]++;
+ var alignType = ["left", "center", "right"], COUNT = 9, tempClassName = null, tempIndex = -1, tmpl = [];
+ _$jscoverage['ui/cellalignpicker.js'][58]++;
+ for (var i = 0; (i < COUNT); (i++)) {
+ _$jscoverage['ui/cellalignpicker.js'][60]++;
+ tempClassName = ((this.selectedIndex === i)? " class=\"edui-cellalign-selected\" ": "");
+ _$jscoverage['ui/cellalignpicker.js'][61]++;
+ tempIndex = (i % 3);
+ _$jscoverage['ui/cellalignpicker.js'][63]++;
+ ((tempIndex === 0) && tmpl.push(""));
+ _$jscoverage['ui/cellalignpicker.js'][65]++;
+ tmpl.push(("
"));
+ _$jscoverage['ui/cellalignpicker.js'][67]++;
+ ((tempIndex === 2) && tmpl.push(" "));
+}
+ _$jscoverage['ui/cellalignpicker.js'][71]++;
+ return ("");
+}), getStateDom: (function () {
+ _$jscoverage['ui/cellalignpicker.js'][80]++;
+ return this.target;
+}), _onClick: (function (evt) {
+ _$jscoverage['ui/cellalignpicker.js'][83]++;
+ var target = (evt.target || evt.srcElement);
+ _$jscoverage['ui/cellalignpicker.js'][84]++;
+ if (/icon/.test(target.className)) {
+ _$jscoverage['ui/cellalignpicker.js'][85]++;
+ this.items[target.parentNode.getAttribute("index")].onclick();
+ _$jscoverage['ui/cellalignpicker.js'][86]++;
+ Popup.postHide(evt);
+ }
+}), _UIBase_render: UIBase.prototype.render};
+ _$jscoverage['ui/cellalignpicker.js'][91]++;
+ utils.inherits(CellAlignPicker, UIBase);
+ _$jscoverage['ui/cellalignpicker.js'][92]++;
+ utils.extend(CellAlignPicker.prototype, Stateful, true);
+})();
diff --git a/_test/coverage/ui/colorbutton.js b/_test/coverage/ui/colorbutton.js
new file mode 100644
index 000000000..00b61978b
--- /dev/null
+++ b/_test/coverage/ui/colorbutton.js
@@ -0,0 +1,117 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/colorbutton.js']) {
+ _$jscoverage['ui/colorbutton.js'] = [];
+ _$jscoverage['ui/colorbutton.js'][6] = 0;
+ _$jscoverage['ui/colorbutton.js'][7] = 0;
+ _$jscoverage['ui/colorbutton.js'][13] = 0;
+ _$jscoverage['ui/colorbutton.js'][14] = 0;
+ _$jscoverage['ui/colorbutton.js'][16] = 0;
+ _$jscoverage['ui/colorbutton.js'][18] = 0;
+ _$jscoverage['ui/colorbutton.js'][19] = 0;
+ _$jscoverage['ui/colorbutton.js'][24] = 0;
+ _$jscoverage['ui/colorbutton.js'][27] = 0;
+ _$jscoverage['ui/colorbutton.js'][32] = 0;
+ _$jscoverage['ui/colorbutton.js'][36] = 0;
+ _$jscoverage['ui/colorbutton.js'][37] = 0;
+ _$jscoverage['ui/colorbutton.js'][40] = 0;
+ _$jscoverage['ui/colorbutton.js'][43] = 0;
+ _$jscoverage['ui/colorbutton.js'][44] = 0;
+ _$jscoverage['ui/colorbutton.js'][47] = 0;
+ _$jscoverage['ui/colorbutton.js'][48] = 0;
+ _$jscoverage['ui/colorbutton.js'][49] = 0;
+ _$jscoverage['ui/colorbutton.js'][53] = 0;
+ _$jscoverage['ui/colorbutton.js'][54] = 0;
+ _$jscoverage['ui/colorbutton.js'][58] = 0;
+}
+_$jscoverage['ui/colorbutton.js'].source = ["///import core ","///import uicore ","///import ui/colorpicker.js ","///import ui/popup.js ","///import ui/splitbutton.js ","( function () { "," var utils = baidu. editor. utils, "," uiUtils = baidu. editor. ui. uiUtils, "," ColorPicker = baidu. editor. ui. ColorPicker, "," Popup = baidu. editor. ui. Popup, "," SplitButton = baidu. editor. ui. SplitButton, "," ColorButton = baidu. editor. ui. ColorButton = function ( options) { "," this . initOptions( options); "," this . initColorButton(); "," } ; "," ColorButton. prototype = { "," initColorButton: function () { "," var me = this ; "," this . popup = new Popup( { "," content: new ColorPicker( { "," noColorText: me. editor. getLang( \"clearColor\" ), "," editor: me. editor, "," onpickcolor: function ( t, color) { "," me. _onPickColor( color); "," } , "," onpicknocolor: function ( t, color) { "," me. _onPickNoColor( color); "," } "," } ), "," editor: me. editor"," } ); "," this . initSplitButton(); "," } , "," _SplitButton_postRender: SplitButton. prototype. postRender, "," postRender: function () { "," this . _SplitButton_postRender(); "," this . getDom( 'button_body' ). appendChild( "," uiUtils. createElementByHtml( '<div id=\"' + this . id + '_colorlump\" class=\"edui-colorlump\"></div>' ) "," ); "," this . getDom(). className += ' edui-colorbutton' ; "," } , "," setColor: function ( color) { "," this . getDom( 'colorlump' ). style. backgroundColor = color; "," this . color = color; "," } , "," _onPickColor: function ( color) { "," if ( this . fireEvent( 'pickcolor' , color) !== false ) { "," this . setColor( color); "," this . popup. hide(); "," } "," } , "," _onPickNoColor: function ( color) { "," if ( this . fireEvent( 'picknocolor' ) !== false ) { "," this . popup. hide(); "," } "," } "," } ; "," utils. inherits( ColorButton, SplitButton); ","","} )(); "];
+_$jscoverage['ui/colorbutton.js'][6]++;
+(function () {
+ _$jscoverage['ui/colorbutton.js'][7]++;
+ var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, ColorPicker = baidu.editor.ui.ColorPicker, Popup = baidu.editor.ui.Popup, SplitButton = baidu.editor.ui.SplitButton, ColorButton = (baidu.editor.ui.ColorButton = (function (options) {
+ _$jscoverage['ui/colorbutton.js'][13]++;
+ this.initOptions(options);
+ _$jscoverage['ui/colorbutton.js'][14]++;
+ this.initColorButton();
+}));
+ _$jscoverage['ui/colorbutton.js'][16]++;
+ ColorButton.prototype = {initColorButton: (function () {
+ _$jscoverage['ui/colorbutton.js'][18]++;
+ var me = this;
+ _$jscoverage['ui/colorbutton.js'][19]++;
+ this.popup = new Popup({content: new ColorPicker({noColorText: me.editor.getLang("clearColor"), editor: me.editor, onpickcolor: (function (t, color) {
+ _$jscoverage['ui/colorbutton.js'][24]++;
+ me._onPickColor(color);
+}), onpicknocolor: (function (t, color) {
+ _$jscoverage['ui/colorbutton.js'][27]++;
+ me._onPickNoColor(color);
+})}), editor: me.editor});
+ _$jscoverage['ui/colorbutton.js'][32]++;
+ this.initSplitButton();
+}), _SplitButton_postRender: SplitButton.prototype.postRender, postRender: (function () {
+ _$jscoverage['ui/colorbutton.js'][36]++;
+ this._SplitButton_postRender();
+ _$jscoverage['ui/colorbutton.js'][37]++;
+ this.getDom("button_body").appendChild(uiUtils.createElementByHtml(("
")));
+ _$jscoverage['ui/colorbutton.js'][40]++;
+ this.getDom().className += " edui-colorbutton";
+}), setColor: (function (color) {
+ _$jscoverage['ui/colorbutton.js'][43]++;
+ this.getDom("colorlump").style.backgroundColor = color;
+ _$jscoverage['ui/colorbutton.js'][44]++;
+ this.color = color;
+}), _onPickColor: (function (color) {
+ _$jscoverage['ui/colorbutton.js'][47]++;
+ if ((this.fireEvent("pickcolor", color) !== false)) {
+ _$jscoverage['ui/colorbutton.js'][48]++;
+ this.setColor(color);
+ _$jscoverage['ui/colorbutton.js'][49]++;
+ this.popup.hide();
+ }
+}), _onPickNoColor: (function (color) {
+ _$jscoverage['ui/colorbutton.js'][53]++;
+ if ((this.fireEvent("picknocolor") !== false)) {
+ _$jscoverage['ui/colorbutton.js'][54]++;
+ this.popup.hide();
+ }
+})};
+ _$jscoverage['ui/colorbutton.js'][58]++;
+ utils.inherits(ColorButton, SplitButton);
+})();
diff --git a/_test/coverage/ui/colorpicker.js b/_test/coverage/ui/colorpicker.js
new file mode 100644
index 000000000..959014f93
--- /dev/null
+++ b/_test/coverage/ui/colorpicker.js
@@ -0,0 +1,136 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/colorpicker.js']) {
+ _$jscoverage['ui/colorpicker.js'] = [];
+ _$jscoverage['ui/colorpicker.js'][3] = 0;
+ _$jscoverage['ui/colorpicker.js'][4] = 0;
+ _$jscoverage['ui/colorpicker.js'][7] = 0;
+ _$jscoverage['ui/colorpicker.js'][8] = 0;
+ _$jscoverage['ui/colorpicker.js'][9] = 0;
+ _$jscoverage['ui/colorpicker.js'][12] = 0;
+ _$jscoverage['ui/colorpicker.js'][14] = 0;
+ _$jscoverage['ui/colorpicker.js'][17] = 0;
+ _$jscoverage['ui/colorpicker.js'][18] = 0;
+ _$jscoverage['ui/colorpicker.js'][19] = 0;
+ _$jscoverage['ui/colorpicker.js'][20] = 0;
+ _$jscoverage['ui/colorpicker.js'][24] = 0;
+ _$jscoverage['ui/colorpicker.js'][25] = 0;
+ _$jscoverage['ui/colorpicker.js'][26] = 0;
+ _$jscoverage['ui/colorpicker.js'][27] = 0;
+ _$jscoverage['ui/colorpicker.js'][31] = 0;
+ _$jscoverage['ui/colorpicker.js'][34] = 0;
+ _$jscoverage['ui/colorpicker.js'][37] = 0;
+ _$jscoverage['ui/colorpicker.js'][39] = 0;
+ _$jscoverage['ui/colorpicker.js'][48] = 0;
+ _$jscoverage['ui/colorpicker.js'][49] = 0;
+ _$jscoverage['ui/colorpicker.js'][57] = 0;
+ _$jscoverage['ui/colorpicker.js'][58] = 0;
+ _$jscoverage['ui/colorpicker.js'][59] = 0;
+ _$jscoverage['ui/colorpicker.js'][61] = 0;
+ _$jscoverage['ui/colorpicker.js'][71] = 0;
+ _$jscoverage['ui/colorpicker.js'][72] = 0;
+}
+_$jscoverage['ui/colorpicker.js'].source = ["///import core ","///import uicore ","( function () { "," var utils = baidu. editor. utils, "," UIBase = baidu. editor. ui. UIBase, "," ColorPicker = baidu. editor. ui. ColorPicker = function ( options) { "," this . initOptions( options); "," this . noColorText = this . noColorText || this . editor. getLang( \"clearColor\" ); "," this . initUIBase(); "," } ; ",""," ColorPicker. prototype = { "," getHtmlTpl: function () { "," return genColorPicker( this . noColorText, this . editor); "," } , "," _onTableClick: function ( evt) { "," var tgt = evt. target || evt. srcElement; "," var color = tgt. getAttribute( 'data-color' ); "," if ( color) { "," this . fireEvent( 'pickcolor' , color); "," } "," } , "," _onTableOver: function ( evt) { "," var tgt = evt. target || evt. srcElement; "," var color = tgt. getAttribute( 'data-color' ); "," if ( color) { "," this . getDom( 'preview' ). style. backgroundColor = color; "," } "," } , "," _onTableOut: function () { "," this . getDom( 'preview' ). style. backgroundColor = '' ; "," } , "," _onPickNoColor: function () { "," this . fireEvent( 'picknocolor' ); "," } "," } ; "," utils. inherits( ColorPicker, UIBase); ",""," var COLORS = ( "," 'ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,' + "," 'f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,' + "," 'd8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,' + "," 'bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,' + "," 'a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,' + "," '7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,' + "," 'c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,' ). split( ',' ); ",""," function genColorPicker( noColorText, editor) { "," var html = '<div id=\"##\" class=\"edui-colorpicker %%\">' + "," '<div class=\"edui-colorpicker-topbar edui-clearfix\">' + "," '<div unselectable=\"on\" id=\"##_preview\" class=\"edui-colorpicker-preview\"></div>' + "," '<div unselectable=\"on\" class=\"edui-colorpicker-nocolor\" onclick=\"$$._onPickNoColor(event, this);\">' + noColorText + '</div>' + "," '</div>' + "," '<table class=\"edui-box\" style=\"border-collapse: collapse;\" onmouseover=\"$$._onTableOver(event, this);\" onmouseout=\"$$._onTableOut(event, this);\" onclick=\"return $$._onTableClick(event, this);\" cellspacing=\"0\" cellpadding=\"0\">' + "," '<tr style=\"border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;padding-top: 2px\"><td colspan=\"10\">' + editor. getLang( \"themeColor\" )+ '</td> </tr>' + "," '<tr class=\"edui-colorpicker-tablefirstrow\" >' ; "," for ( var i= 0 ; i< COLORS. length; i++) { "," if ( i && i% 10 === 0 ) { "," html += '</tr>' +( i== 60 ? '<tr style=\"border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;\"><td colspan=\"10\">' + editor. getLang( \"standardColor\" )+ '</td></tr>' : '' )+ '<tr' +( i== 60 ? ' class=\"edui-colorpicker-tablefirstrow\"' : '' )+ '>' ; "," } "," html += i< 70 ? '<td style=\"padding: 0 2px;\"><a hidefocus title=\"' + COLORS[ i]+ '\" onclick=\"return false;\" href=\"javascript:\" unselectable=\"on\" class=\"edui-box edui-colorpicker-colorcell\"' + "," ' data-color=\"#' + COLORS[ i] + '\"' + "," ' style=\"background-color:#' + COLORS[ i] + ';border:solid #ccc;' + "," ( i< 10 || i>= 60 ? 'border-width:1px;' : "," i>= 10 && i< 20 ? 'border-width:1px 1px 0 1px;' : ",""," 'border-width:0 1px 0 1px;' )+ "," '\"' + "," '></a></td>' : '' ; "," } "," html += '</tr></table></div>' ; "," return html; "," } ","} )(); "];
+_$jscoverage['ui/colorpicker.js'][3]++;
+(function () {
+ _$jscoverage['ui/colorpicker.js'][4]++;
+ var utils = baidu.editor.utils, UIBase = baidu.editor.ui.UIBase, ColorPicker = (baidu.editor.ui.ColorPicker = (function (options) {
+ _$jscoverage['ui/colorpicker.js'][7]++;
+ this.initOptions(options);
+ _$jscoverage['ui/colorpicker.js'][8]++;
+ this.noColorText = (this.noColorText || this.editor.getLang("clearColor"));
+ _$jscoverage['ui/colorpicker.js'][9]++;
+ this.initUIBase();
+}));
+ _$jscoverage['ui/colorpicker.js'][12]++;
+ ColorPicker.prototype = {getHtmlTpl: (function () {
+ _$jscoverage['ui/colorpicker.js'][14]++;
+ return genColorPicker(this.noColorText, this.editor);
+}), _onTableClick: (function (evt) {
+ _$jscoverage['ui/colorpicker.js'][17]++;
+ var tgt = (evt.target || evt.srcElement);
+ _$jscoverage['ui/colorpicker.js'][18]++;
+ var color = tgt.getAttribute("data-color");
+ _$jscoverage['ui/colorpicker.js'][19]++;
+ if (color) {
+ _$jscoverage['ui/colorpicker.js'][20]++;
+ this.fireEvent("pickcolor", color);
+ }
+}), _onTableOver: (function (evt) {
+ _$jscoverage['ui/colorpicker.js'][24]++;
+ var tgt = (evt.target || evt.srcElement);
+ _$jscoverage['ui/colorpicker.js'][25]++;
+ var color = tgt.getAttribute("data-color");
+ _$jscoverage['ui/colorpicker.js'][26]++;
+ if (color) {
+ _$jscoverage['ui/colorpicker.js'][27]++;
+ this.getDom("preview").style.backgroundColor = color;
+ }
+}), _onTableOut: (function () {
+ _$jscoverage['ui/colorpicker.js'][31]++;
+ this.getDom("preview").style.backgroundColor = "";
+}), _onPickNoColor: (function () {
+ _$jscoverage['ui/colorpicker.js'][34]++;
+ this.fireEvent("picknocolor");
+})};
+ _$jscoverage['ui/colorpicker.js'][37]++;
+ utils.inherits(ColorPicker, UIBase);
+ _$jscoverage['ui/colorpicker.js'][39]++;
+ var COLORS = "ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,".split(",");
+ _$jscoverage['ui/colorpicker.js'][48]++;
+ function genColorPicker(noColorText, editor) {
+ _$jscoverage['ui/colorpicker.js'][49]++;
+ var html = ("" + "
" + "
" + "
" + noColorText + "
" + "
" + "
";
+ _$jscoverage['ui/colorpicker.js'][72]++;
+ return html;
+}
+})();
diff --git a/_test/coverage/ui/combox.js b/_test/coverage/ui/combox.js
new file mode 100644
index 000000000..dfb61613d
--- /dev/null
+++ b/_test/coverage/ui/combox.js
@@ -0,0 +1,198 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/combox.js']) {
+ _$jscoverage['ui/combox.js'] = [];
+ _$jscoverage['ui/combox.js'][5] = 0;
+ _$jscoverage['ui/combox.js'][7] = 0;
+ _$jscoverage['ui/combox.js'][12] = 0;
+ _$jscoverage['ui/combox.js'][13] = 0;
+ _$jscoverage['ui/combox.js'][15] = 0;
+ _$jscoverage['ui/combox.js'][18] = 0;
+ _$jscoverage['ui/combox.js'][19] = 0;
+ _$jscoverage['ui/combox.js'][20] = 0;
+ _$jscoverage['ui/combox.js'][21] = 0;
+ _$jscoverage['ui/combox.js'][22] = 0;
+ _$jscoverage['ui/combox.js'][23] = 0;
+ _$jscoverage['ui/combox.js'][24] = 0;
+ _$jscoverage['ui/combox.js'][25] = 0;
+ _$jscoverage['ui/combox.js'][28] = 0;
+ _$jscoverage['ui/combox.js'][36] = 0;
+ _$jscoverage['ui/combox.js'][40] = 0;
+ _$jscoverage['ui/combox.js'][41] = 0;
+ _$jscoverage['ui/combox.js'][42] = 0;
+ _$jscoverage['ui/combox.js'][45] = 0;
+ _$jscoverage['ui/combox.js'][46] = 0;
+ _$jscoverage['ui/combox.js'][47] = 0;
+ _$jscoverage['ui/combox.js'][48] = 0;
+ _$jscoverage['ui/combox.js'][49] = 0;
+ _$jscoverage['ui/combox.js'][52] = 0;
+ _$jscoverage['ui/combox.js'][55] = 0;
+ _$jscoverage['ui/combox.js'][56] = 0;
+ _$jscoverage['ui/combox.js'][57] = 0;
+ _$jscoverage['ui/combox.js'][58] = 0;
+ _$jscoverage['ui/combox.js'][59] = 0;
+ _$jscoverage['ui/combox.js'][61] = 0;
+ _$jscoverage['ui/combox.js'][62] = 0;
+ _$jscoverage['ui/combox.js'][63] = 0;
+ _$jscoverage['ui/combox.js'][67] = 0;
+ _$jscoverage['ui/combox.js'][68] = 0;
+ _$jscoverage['ui/combox.js'][71] = 0;
+ _$jscoverage['ui/combox.js'][74] = 0;
+ _$jscoverage['ui/combox.js'][75] = 0;
+ _$jscoverage['ui/combox.js'][76] = 0;
+ _$jscoverage['ui/combox.js'][79] = 0;
+ _$jscoverage['ui/combox.js'][82] = 0;
+ _$jscoverage['ui/combox.js'][85] = 0;
+ _$jscoverage['ui/combox.js'][86] = 0;
+ _$jscoverage['ui/combox.js'][87] = 0;
+ _$jscoverage['ui/combox.js'][88] = 0;
+ _$jscoverage['ui/combox.js'][92] = 0;
+}
+_$jscoverage['ui/combox.js'].source = ["///import core ","///import uicore ","///import ui/menu.js ","///import ui/splitbutton.js ","( function () { "," // todo: menu和item提成通用list "," var utils = baidu. editor. utils, "," uiUtils = baidu. editor. ui. uiUtils, "," Menu = baidu. editor. ui. Menu, "," SplitButton = baidu. editor. ui. SplitButton, "," Combox = baidu. editor. ui. Combox = function ( options) { "," this . initOptions( options); "," this . initCombox(); "," } ; "," Combox. prototype = { "," uiName: 'combox' , "," initCombox: function () { "," var me = this ; "," this . items = this . items || []; "," for ( var i= 0 ; i< this . items. length; i++) { "," var item = this . items[ i]; "," item. uiName = 'listitem' ; "," item. index = i; "," item. onclick = function () { "," me. selectByIndex( this . index); "," } ; "," } "," this . popup = new Menu( { "," items: this . items, "," uiName: 'list' , "," editor: this . editor, "," captureWheel: true , "," combox: this "," } ); ",""," this . initSplitButton(); "," } , "," _SplitButton_postRender: SplitButton. prototype. postRender, "," postRender: function () { "," this . _SplitButton_postRender(); "," this . setLabel( this . label || '' ); "," this . setValue( this . initValue || '' ); "," } , "," showPopup: function () { "," var rect = uiUtils. getClientRect( this . getDom()); "," rect. top += 1 ; "," rect. bottom -= 1 ; "," rect. height -= 2 ; "," this . popup. showAnchorRect( rect); "," } , "," getValue: function () { "," return this . value; "," } , "," setValue: function ( value) { "," var index = this . indexByValue( value); "," if ( index != - 1 ) { "," this . selectedIndex = index; "," this . setLabel( this . items[ index]. label); "," this . value = this . items[ index]. value; "," } else { "," this . selectedIndex = - 1 ; "," this . setLabel( this . getLabelForUnknowValue( value)); "," this . value = value; "," } "," } , "," setLabel: function ( label) { "," this . getDom( 'button_body' ). innerHTML = label; "," this . label = label; "," } , "," getLabelForUnknowValue: function ( value) { "," return value; "," } , "," indexByValue: function ( value) { "," for ( var i= 0 ; i< this . items. length; i++) { "," if ( value == this . items[ i]. value) { "," return i; "," } "," } "," return - 1 ; "," } , "," getItem: function ( index) { "," return this . items[ index]; "," } , "," selectByIndex: function ( index) { "," if ( index < this . items. length && this . fireEvent( 'select' , index) !== false ) { "," this . selectedIndex = index; "," this . value = this . items[ index]. value; "," this . setLabel( this . items[ index]. label); "," } "," } "," } ; "," utils. inherits( Combox, SplitButton); ","} )(); "];
+_$jscoverage['ui/combox.js'][5]++;
+(function () {
+ _$jscoverage['ui/combox.js'][7]++;
+ var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, Menu = baidu.editor.ui.Menu, SplitButton = baidu.editor.ui.SplitButton, Combox = (baidu.editor.ui.Combox = (function (options) {
+ _$jscoverage['ui/combox.js'][12]++;
+ this.initOptions(options);
+ _$jscoverage['ui/combox.js'][13]++;
+ this.initCombox();
+}));
+ _$jscoverage['ui/combox.js'][15]++;
+ Combox.prototype = {uiName: "combox", initCombox: (function () {
+ _$jscoverage['ui/combox.js'][18]++;
+ var me = this;
+ _$jscoverage['ui/combox.js'][19]++;
+ this.items = (this.items || []);
+ _$jscoverage['ui/combox.js'][20]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/combox.js'][21]++;
+ var item = this.items[i];
+ _$jscoverage['ui/combox.js'][22]++;
+ item.uiName = "listitem";
+ _$jscoverage['ui/combox.js'][23]++;
+ item.index = i;
+ _$jscoverage['ui/combox.js'][24]++;
+ item.onclick = (function () {
+ _$jscoverage['ui/combox.js'][25]++;
+ me.selectByIndex(this.index);
+});
+}
+ _$jscoverage['ui/combox.js'][28]++;
+ this.popup = new Menu({items: this.items, uiName: "list", editor: this.editor, captureWheel: true, combox: this});
+ _$jscoverage['ui/combox.js'][36]++;
+ this.initSplitButton();
+}), _SplitButton_postRender: SplitButton.prototype.postRender, postRender: (function () {
+ _$jscoverage['ui/combox.js'][40]++;
+ this._SplitButton_postRender();
+ _$jscoverage['ui/combox.js'][41]++;
+ this.setLabel((this.label || ""));
+ _$jscoverage['ui/combox.js'][42]++;
+ this.setValue((this.initValue || ""));
+}), showPopup: (function () {
+ _$jscoverage['ui/combox.js'][45]++;
+ var rect = uiUtils.getClientRect(this.getDom());
+ _$jscoverage['ui/combox.js'][46]++;
+ rect.top += 1;
+ _$jscoverage['ui/combox.js'][47]++;
+ rect.bottom -= 1;
+ _$jscoverage['ui/combox.js'][48]++;
+ rect.height -= 2;
+ _$jscoverage['ui/combox.js'][49]++;
+ this.popup.showAnchorRect(rect);
+}), getValue: (function () {
+ _$jscoverage['ui/combox.js'][52]++;
+ return this.value;
+}), setValue: (function (value) {
+ _$jscoverage['ui/combox.js'][55]++;
+ var index = this.indexByValue(value);
+ _$jscoverage['ui/combox.js'][56]++;
+ if ((index != -1)) {
+ _$jscoverage['ui/combox.js'][57]++;
+ this.selectedIndex = index;
+ _$jscoverage['ui/combox.js'][58]++;
+ this.setLabel(this.items[index].label);
+ _$jscoverage['ui/combox.js'][59]++;
+ this.value = this.items[index].value;
+ }
+ else {
+ _$jscoverage['ui/combox.js'][61]++;
+ this.selectedIndex = -1;
+ _$jscoverage['ui/combox.js'][62]++;
+ this.setLabel(this.getLabelForUnknowValue(value));
+ _$jscoverage['ui/combox.js'][63]++;
+ this.value = value;
+ }
+}), setLabel: (function (label) {
+ _$jscoverage['ui/combox.js'][67]++;
+ this.getDom("button_body").innerHTML = label;
+ _$jscoverage['ui/combox.js'][68]++;
+ this.label = label;
+}), getLabelForUnknowValue: (function (value) {
+ _$jscoverage['ui/combox.js'][71]++;
+ return value;
+}), indexByValue: (function (value) {
+ _$jscoverage['ui/combox.js'][74]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/combox.js'][75]++;
+ if ((value == this.items[i].value)) {
+ _$jscoverage['ui/combox.js'][76]++;
+ return i;
+ }
+}
+ _$jscoverage['ui/combox.js'][79]++;
+ return -1;
+}), getItem: (function (index) {
+ _$jscoverage['ui/combox.js'][82]++;
+ return this.items[index];
+}), selectByIndex: (function (index) {
+ _$jscoverage['ui/combox.js'][85]++;
+ if (((index < this.items.length) && (this.fireEvent("select", index) !== false))) {
+ _$jscoverage['ui/combox.js'][86]++;
+ this.selectedIndex = index;
+ _$jscoverage['ui/combox.js'][87]++;
+ this.value = this.items[index].value;
+ _$jscoverage['ui/combox.js'][88]++;
+ this.setLabel(this.items[index].label);
+ }
+})};
+ _$jscoverage['ui/combox.js'][92]++;
+ utils.inherits(Combox, SplitButton);
+})();
diff --git a/_test/coverage/ui/dialog.js b/_test/coverage/ui/dialog.js
new file mode 100644
index 000000000..798216438
--- /dev/null
+++ b/_test/coverage/ui/dialog.js
@@ -0,0 +1,535 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/dialog.js']) {
+ _$jscoverage['ui/dialog.js'] = [];
+ _$jscoverage['ui/dialog.js'][5] = 0;
+ _$jscoverage['ui/dialog.js'][6] = 0;
+ _$jscoverage['ui/dialog.js'][13] = 0;
+ _$jscoverage['ui/dialog.js'][19] = 0;
+ _$jscoverage['ui/dialog.js'][24] = 0;
+ _$jscoverage['ui/dialog.js'][26] = 0;
+ _$jscoverage['ui/dialog.js'][27] = 0;
+ _$jscoverage['ui/dialog.js'][28] = 0;
+ _$jscoverage['ui/dialog.js'][32] = 0;
+ _$jscoverage['ui/dialog.js'][34] = 0;
+ _$jscoverage['ui/dialog.js'][35] = 0;
+ _$jscoverage['ui/dialog.js'][39] = 0;
+ _$jscoverage['ui/dialog.js'][43] = 0;
+ _$jscoverage['ui/dialog.js'][48] = 0;
+ _$jscoverage['ui/dialog.js'][51] = 0;
+ _$jscoverage['ui/dialog.js'][52] = 0;
+ _$jscoverage['ui/dialog.js'][53] = 0;
+ _$jscoverage['ui/dialog.js'][54] = 0;
+ _$jscoverage['ui/dialog.js'][60] = 0;
+ _$jscoverage['ui/dialog.js'][65] = 0;
+ _$jscoverage['ui/dialog.js'][66] = 0;
+ _$jscoverage['ui/dialog.js'][67] = 0;
+ _$jscoverage['ui/dialog.js'][68] = 0;
+ _$jscoverage['ui/dialog.js'][71] = 0;
+ _$jscoverage['ui/dialog.js'][72] = 0;
+ _$jscoverage['ui/dialog.js'][73] = 0;
+ _$jscoverage['ui/dialog.js'][74] = 0;
+ _$jscoverage['ui/dialog.js'][75] = 0;
+ _$jscoverage['ui/dialog.js'][76] = 0;
+ _$jscoverage['ui/dialog.js'][77] = 0;
+ _$jscoverage['ui/dialog.js'][79] = 0;
+ _$jscoverage['ui/dialog.js'][80] = 0;
+ _$jscoverage['ui/dialog.js'][81] = 0;
+ _$jscoverage['ui/dialog.js'][83] = 0;
+ _$jscoverage['ui/dialog.js'][84] = 0;
+ _$jscoverage['ui/dialog.js'][87] = 0;
+ _$jscoverage['ui/dialog.js'][88] = 0;
+ _$jscoverage['ui/dialog.js'][89] = 0;
+ _$jscoverage['ui/dialog.js'][90] = 0;
+ _$jscoverage['ui/dialog.js'][91] = 0;
+ _$jscoverage['ui/dialog.js'][92] = 0;
+ _$jscoverage['ui/dialog.js'][93] = 0;
+ _$jscoverage['ui/dialog.js'][94] = 0;
+ _$jscoverage['ui/dialog.js'][98] = 0;
+ _$jscoverage['ui/dialog.js'][99] = 0;
+ _$jscoverage['ui/dialog.js'][101] = 0;
+ _$jscoverage['ui/dialog.js'][104] = 0;
+ _$jscoverage['ui/dialog.js'][105] = 0;
+ _$jscoverage['ui/dialog.js'][106] = 0;
+ _$jscoverage['ui/dialog.js'][107] = 0;
+ _$jscoverage['ui/dialog.js'][108] = 0;
+ _$jscoverage['ui/dialog.js'][111] = 0;
+ _$jscoverage['ui/dialog.js'][114] = 0;
+ _$jscoverage['ui/dialog.js'][116] = 0;
+ _$jscoverage['ui/dialog.js'][117] = 0;
+ _$jscoverage['ui/dialog.js'][118] = 0;
+ _$jscoverage['ui/dialog.js'][119] = 0;
+ _$jscoverage['ui/dialog.js'][121] = 0;
+ _$jscoverage['ui/dialog.js'][126] = 0;
+ _$jscoverage['ui/dialog.js'][140] = 0;
+ _$jscoverage['ui/dialog.js'][141] = 0;
+ _$jscoverage['ui/dialog.js'][142] = 0;
+ _$jscoverage['ui/dialog.js'][144] = 0;
+ _$jscoverage['ui/dialog.js'][145] = 0;
+ _$jscoverage['ui/dialog.js'][146] = 0;
+ _$jscoverage['ui/dialog.js'][148] = 0;
+ _$jscoverage['ui/dialog.js'][149] = 0;
+ _$jscoverage['ui/dialog.js'][150] = 0;
+ _$jscoverage['ui/dialog.js'][152] = 0;
+ _$jscoverage['ui/dialog.js'][153] = 0;
+ _$jscoverage['ui/dialog.js'][155] = 0;
+ _$jscoverage['ui/dialog.js'][156] = 0;
+ _$jscoverage['ui/dialog.js'][157] = 0;
+ _$jscoverage['ui/dialog.js'][160] = 0;
+ _$jscoverage['ui/dialog.js'][161] = 0;
+ _$jscoverage['ui/dialog.js'][162] = 0;
+ _$jscoverage['ui/dialog.js'][163] = 0;
+ _$jscoverage['ui/dialog.js'][169] = 0;
+ _$jscoverage['ui/dialog.js'][171] = 0;
+ _$jscoverage['ui/dialog.js'][172] = 0;
+ _$jscoverage['ui/dialog.js'][173] = 0;
+ _$jscoverage['ui/dialog.js'][176] = 0;
+ _$jscoverage['ui/dialog.js'][177] = 0;
+ _$jscoverage['ui/dialog.js'][178] = 0;
+ _$jscoverage['ui/dialog.js'][180] = 0;
+ _$jscoverage['ui/dialog.js'][182] = 0;
+ _$jscoverage['ui/dialog.js'][184] = 0;
+ _$jscoverage['ui/dialog.js'][185] = 0;
+ _$jscoverage['ui/dialog.js'][186] = 0;
+ _$jscoverage['ui/dialog.js'][187] = 0;
+ _$jscoverage['ui/dialog.js'][188] = 0;
+ _$jscoverage['ui/dialog.js'][195] = 0;
+ _$jscoverage['ui/dialog.js'][196] = 0;
+ _$jscoverage['ui/dialog.js'][205] = 0;
+ _$jscoverage['ui/dialog.js'][208] = 0;
+ _$jscoverage['ui/dialog.js'][209] = 0;
+ _$jscoverage['ui/dialog.js'][210] = 0;
+ _$jscoverage['ui/dialog.js'][211] = 0;
+ _$jscoverage['ui/dialog.js'][212] = 0;
+ _$jscoverage['ui/dialog.js'][215] = 0;
+ _$jscoverage['ui/dialog.js'][216] = 0;
+ _$jscoverage['ui/dialog.js'][217] = 0;
+ _$jscoverage['ui/dialog.js'][218] = 0;
+ _$jscoverage['ui/dialog.js'][219] = 0;
+ _$jscoverage['ui/dialog.js'][221] = 0;
+ _$jscoverage['ui/dialog.js'][222] = 0;
+ _$jscoverage['ui/dialog.js'][223] = 0;
+ _$jscoverage['ui/dialog.js'][226] = 0;
+ _$jscoverage['ui/dialog.js'][227] = 0;
+ _$jscoverage['ui/dialog.js'][228] = 0;
+ _$jscoverage['ui/dialog.js'][234] = 0;
+ _$jscoverage['ui/dialog.js'][235] = 0;
+ _$jscoverage['ui/dialog.js'][236] = 0;
+ _$jscoverage['ui/dialog.js'][242] = 0;
+ _$jscoverage['ui/dialog.js'][243] = 0;
+ _$jscoverage['ui/dialog.js'][246] = 0;
+ _$jscoverage['ui/dialog.js'][247] = 0;
+ _$jscoverage['ui/dialog.js'][250] = 0;
+ _$jscoverage['ui/dialog.js'][251] = 0;
+ _$jscoverage['ui/dialog.js'][252] = 0;
+ _$jscoverage['ui/dialog.js'][253] = 0;
+ _$jscoverage['ui/dialog.js'][257] = 0;
+ _$jscoverage['ui/dialog.js'][260] = 0;
+ _$jscoverage['ui/dialog.js'][261] = 0;
+ _$jscoverage['ui/dialog.js'][262] = 0;
+ _$jscoverage['ui/dialog.js'][263] = 0;
+ _$jscoverage['ui/dialog.js'][264] = 0;
+ _$jscoverage['ui/dialog.js'][268] = 0;
+ _$jscoverage['ui/dialog.js'][270] = 0;
+ _$jscoverage['ui/dialog.js'][271] = 0;
+ _$jscoverage['ui/dialog.js'][273] = 0;
+ _$jscoverage['ui/dialog.js'][274] = 0;
+ _$jscoverage['ui/dialog.js'][277] = 0;
+ _$jscoverage['ui/dialog.js'][278] = 0;
+ _$jscoverage['ui/dialog.js'][279] = 0;
+ _$jscoverage['ui/dialog.js'][280] = 0;
+ _$jscoverage['ui/dialog.js'][285] = 0;
+ _$jscoverage['ui/dialog.js'][288] = 0;
+ _$jscoverage['ui/dialog.js'][289] = 0;
+ _$jscoverage['ui/dialog.js'][293] = 0;
+}
+_$jscoverage['ui/dialog.js'].source = ["///import core ","///import uicore ","///import ui/mask.js ","///import ui/button.js ","( function () { "," var utils = baidu. editor. utils, "," domUtils = baidu. editor. dom. domUtils, "," uiUtils = baidu. editor. ui. uiUtils, "," Mask = baidu. editor. ui. Mask, "," UIBase = baidu. editor. ui. UIBase, "," Button = baidu. editor. ui. Button, "," Dialog = baidu. editor. ui. Dialog = function ( options) { "," this . initOptions( utils. extend( { "," autoReset: true , "," draggable: true , "," onok: function () {} , "," oncancel: function () {} , "," onclose: function ( t, ok) { "," return ok ? this . onok() : this . oncancel(); "," } , "," //是否控制dialog中的scroll事件, 默认为不阻止 "," holdScroll: false "," } , options)); "," this . initDialog(); "," } ; "," var modalMask; "," var dragMask; "," Dialog. prototype = { "," draggable: false , "," uiName: 'dialog' , "," initDialog: function () { "," var me = this , "," theme= this . editor. options. theme; "," this . initUIBase(); "," this . modalMask = ( modalMask || ( modalMask = new Mask( { "," className: 'edui-dialog-modalmask' , "," theme: theme"," } ))); "," this . dragMask = ( dragMask || ( dragMask = new Mask( { "," className: 'edui-dialog-dragmask' , "," theme: theme"," } ))); "," this . closeButton = new Button( { "," className: 'edui-dialog-closebutton' , "," title: me. closeDialog, "," theme: theme, "," onclick: function () { "," me. close( false ); "," } "," } ); "," if ( this . buttons) { "," for ( var i= 0 ; i< this . buttons. length; i++) { "," if (!( this . buttons[ i] instanceof Button)) { "," this . buttons[ i] = new Button( this . buttons[ i]); "," } "," } "," } "," } , "," fitSize: function () { "," var popBodyEl = this . getDom( 'body' ); ","// if (!(baidu.editor.browser.ie && baidu.editor.browser.version == 7)) { ","// uiUtils.removeStyle(popBodyEl, 'width'); ","// uiUtils.removeStyle(popBodyEl, 'height'); ","// } "," var size = this . mesureSize(); "," popBodyEl. style. width = size. width + 'px' ; "," popBodyEl. style. height = size. height + 'px' ; "," return size; "," } , "," safeSetOffset: function ( offset) { "," var me = this ; "," var el = me. getDom(); "," var vpRect = uiUtils. getViewportRect(); "," var rect = uiUtils. getClientRect( el); "," var left = offset. left; "," if ( left + rect. width > vpRect. right) { "," left = vpRect. right - rect. width; "," } "," var top = offset. top; "," if ( top + rect. height > vpRect. bottom) { "," top = vpRect. bottom - rect. height; "," } "," el. style. left = Math. max( left, 0 ) + 'px' ; "," el. style. top = Math. max( top, 0 ) + 'px' ; "," } , "," showAtCenter: function () { "," this . getDom(). style. display = '' ; "," var vpRect = uiUtils. getViewportRect(); "," var popSize = this . fitSize(); "," var titleHeight = this . getDom( 'titlebar' ). offsetHeight | 0 ; "," var left = vpRect. width / 2 - popSize. width / 2 ; "," var top = vpRect. height / 2 - ( popSize. height - titleHeight) / 2 - titleHeight; "," var popEl = this . getDom(); "," this . safeSetOffset( { "," left: Math. max( left | 0 , 0 ), "," top: Math. max( top | 0 , 0 ) "," } ); "," if (! domUtils. hasClass( popEl, 'edui-state-centered' )) { "," popEl. className += ' edui-state-centered' ; "," } "," this . _show(); "," } , "," getContentHtml: function () { "," var contentHtml = '' ; "," if ( typeof this . content == 'string' ) { "," contentHtml = this . content; "," } else if ( this . iframeUrl) { "," contentHtml = '<span id=\"' + this . id + '_contmask\" class=\"dialogcontmask\"></span><iframe id=\"' + this . id + "," '_iframe\" class=\"%%-iframe\" height=\"100%\" width=\"100%\" frameborder=\"0\" src=\"' + this . iframeUrl + '\"></iframe>' ; "," } "," return contentHtml; "," } , "," getHtmlTpl: function () { "," var footHtml = '' ; ",""," if ( this . buttons) { "," var buff = []; "," for ( var i= 0 ; i< this . buttons. length; i++) { "," buff[ i] = this . buttons[ i]. renderHtml(); "," } "," footHtml = '<div class=\"%%-foot\">' + "," '<div id=\"##_buttons\" class=\"%%-buttons\">' + buff. join( '' ) + '</div>' + "," '</div>' ; "," } ",""," return '<div id=\"##\" class=\"%%\"><div class=\"%%-wrap\"><div id=\"##_body\" class=\"%%-body\">' + "," '<div class=\"%%-shadow\"></div>' + "," '<div id=\"##_titlebar\" class=\"%%-titlebar\">' + "," '<div class=\"%%-draghandle\" onmousedown=\"$$._onTitlebarMouseDown(event, this);\">' + "," '<span class=\"%%-caption\">' + ( this . title || '' ) + '</span>' + "," '</div>' + "," this . closeButton. renderHtml() + "," '</div>' + "," '<div id=\"##_content\" class=\"%%-content\">' + ( this . autoReset ? '' : this . getContentHtml()) + '</div>' + "," footHtml + "," '</div></div></div>' ; "," } , "," postRender: function () { "," // todo: 保持居中/记住上次关闭位置选项 "," if (! this . modalMask. getDom()) { "," this . modalMask. render(); "," this . modalMask. hide(); "," } "," if (! this . dragMask. getDom()) { "," this . dragMask. render(); "," this . dragMask. hide(); "," } "," var me = this ; "," this . addListener( 'show' , function () { "," me. modalMask. show( this . getDom(). style. zIndex - 2 ); "," } ); "," this . addListener( 'hide' , function () { "," me. modalMask. hide(); "," } ); "," if ( this . buttons) { "," for ( var i= 0 ; i< this . buttons. length; i++) { "," this . buttons[ i]. postRender(); "," } "," } "," domUtils. on( window, 'resize' , function () { "," setTimeout( function () { "," if (! me. isHidden()) { "," me. safeSetOffset( uiUtils. getClientRect( me. getDom())); "," } "," } ); "," } ); ",""," //hold住scroll事件,防止dialog的滚动影响页面 "," if ( this . holdScroll ) { ",""," if ( ! me. iframeUrl ) { "," domUtils. on( document. getElementById( me. id + \"_iframe\" ), ! browser. gecko ? \"mousewheel\" : \"DOMMouseScroll\" , function ( e) { "," domUtils. preventDefault( e); "," } ); "," } else { "," me. addListener( 'dialogafterreset' , function () { "," window. setTimeout( function () { "," var iframeWindow = document. getElementById( me. id + \"_iframe\" ). contentWindow; ",""," if ( browser. ie ) { ",""," var timer = window. setInterval( function () { ",""," if ( iframeWindow. document && iframeWindow. document. body ) { "," window. clearInterval( timer ); "," timer = null ; "," domUtils. on( iframeWindow. document. body, ! browser. gecko ? \"mousewheel\" : \"DOMMouseScroll\" , function ( e) { "," domUtils. preventDefault( e); "," } ); "," } ",""," } , 100 ); ",""," } else { "," domUtils. on( iframeWindow, ! browser. gecko ? \"mousewheel\" : \"DOMMouseScroll\" , function ( e) { "," domUtils. preventDefault( e); "," } ); "," } ",""," } , 1 ); "," } ); "," } ",""," } "," this . _hide(); "," } , "," mesureSize: function () { "," var body = this . getDom( 'body' ); "," var width = uiUtils. getClientRect( this . getDom( 'content' )). width; "," var dialogBodyStyle = body. style; "," dialogBodyStyle. width = width; "," return uiUtils. getClientRect( body); "," } , "," _onTitlebarMouseDown: function ( evt, el) { "," if ( this . draggable) { "," var rect; "," var vpRect = uiUtils. getViewportRect(); "," var me = this ; "," uiUtils. startDrag( evt, { "," ondragstart: function () { "," rect = uiUtils. getClientRect( me. getDom()); "," me. getDom( 'contmask' ). style. visibility = 'visible' ; "," me. dragMask. show( me. getDom(). style. zIndex - 1 ); "," } , "," ondragmove: function ( x, y) { "," var left = rect. left + x; "," var top = rect. top + y; "," me. safeSetOffset( { "," left: left, "," top: top"," } ); "," } , "," ondragstop: function () { "," me. getDom( 'contmask' ). style. visibility = 'hidden' ; "," domUtils. removeClasses( me. getDom(), [ 'edui-state-centered' ]); "," me. dragMask. hide(); "," } "," } ); "," } "," } , "," reset: function () { "," this . getDom( 'content' ). innerHTML = this . getContentHtml(); "," this . fireEvent( 'dialogafterreset' ); "," } , "," _show: function () { "," if ( this . _hidden) { "," this . getDom(). style. display = '' ; ",""," //要高过编辑器的zindxe "," this . editor. container. style. zIndex && ( this . getDom(). style. zIndex = this . editor. container. style. zIndex * 1 + 10 ); "," this . _hidden = false ; "," this . fireEvent( 'show' ); "," baidu. editor. ui. uiUtils. getFixedLayer(). style. zIndex = this . getDom(). style. zIndex - 4 ; "," } "," } , "," isHidden: function () { "," return this . _hidden; "," } , "," _hide: function () { "," if (! this . _hidden) { "," this . getDom(). style. display = 'none' ; "," this . getDom(). style. zIndex = '' ; "," this . _hidden = true ; "," this . fireEvent( 'hide' ); "," } "," } , "," open: function () { "," if ( this . autoReset) { "," //有可能还没有渲染 "," try { "," this . reset(); "," } catch ( e) { "," this . render(); "," this . open() "," } "," } "," this . showAtCenter(); "," if ( this . iframeUrl) { "," try { "," this . getDom( 'iframe' ). focus(); "," } catch ( ex) {} "," } "," } , "," _onCloseButtonClick: function ( evt, el) { "," this . close( false ); "," } , "," close: function ( ok) { "," if ( this . fireEvent( 'close' , ok) !== false ) { "," this . _hide(); "," } "," } "," } ; "," utils. inherits( Dialog, UIBase); ","} )(); "];
+_$jscoverage['ui/dialog.js'][5]++;
+(function () {
+ _$jscoverage['ui/dialog.js'][6]++;
+ var utils = baidu.editor.utils, domUtils = baidu.editor.dom.domUtils, uiUtils = baidu.editor.ui.uiUtils, Mask = baidu.editor.ui.Mask, UIBase = baidu.editor.ui.UIBase, Button = baidu.editor.ui.Button, Dialog = (baidu.editor.ui.Dialog = (function (options) {
+ _$jscoverage['ui/dialog.js'][13]++;
+ this.initOptions(utils.extend({autoReset: true, draggable: true, onok: (function () {
+}), oncancel: (function () {
+}), onclose: (function (t, ok) {
+ _$jscoverage['ui/dialog.js'][19]++;
+ return (ok? this.onok(): this.oncancel());
+}), holdScroll: false}, options));
+ _$jscoverage['ui/dialog.js'][24]++;
+ this.initDialog();
+}));
+ _$jscoverage['ui/dialog.js'][26]++;
+ var modalMask;
+ _$jscoverage['ui/dialog.js'][27]++;
+ var dragMask;
+ _$jscoverage['ui/dialog.js'][28]++;
+ Dialog.prototype = {draggable: false, uiName: "dialog", initDialog: (function () {
+ _$jscoverage['ui/dialog.js'][32]++;
+ var me = this, theme = this.editor.options.theme;
+ _$jscoverage['ui/dialog.js'][34]++;
+ this.initUIBase();
+ _$jscoverage['ui/dialog.js'][35]++;
+ this.modalMask = (modalMask || (modalMask = new Mask({className: "edui-dialog-modalmask", theme: theme})));
+ _$jscoverage['ui/dialog.js'][39]++;
+ this.dragMask = (dragMask || (dragMask = new Mask({className: "edui-dialog-dragmask", theme: theme})));
+ _$jscoverage['ui/dialog.js'][43]++;
+ this.closeButton = new Button({className: "edui-dialog-closebutton", title: me.closeDialog, theme: theme, onclick: (function () {
+ _$jscoverage['ui/dialog.js'][48]++;
+ me.close(false);
+})});
+ _$jscoverage['ui/dialog.js'][51]++;
+ if (this.buttons) {
+ _$jscoverage['ui/dialog.js'][52]++;
+ for (var i = 0; (i < this.buttons.length); (i++)) {
+ _$jscoverage['ui/dialog.js'][53]++;
+ if ((! (this.buttons[i] instanceof Button))) {
+ _$jscoverage['ui/dialog.js'][54]++;
+ this.buttons[i] = new Button(this.buttons[i]);
+ }
+}
+ }
+}), fitSize: (function () {
+ _$jscoverage['ui/dialog.js'][60]++;
+ var popBodyEl = this.getDom("body");
+ _$jscoverage['ui/dialog.js'][65]++;
+ var size = this.mesureSize();
+ _$jscoverage['ui/dialog.js'][66]++;
+ popBodyEl.style.width = (size.width + "px");
+ _$jscoverage['ui/dialog.js'][67]++;
+ popBodyEl.style.height = (size.height + "px");
+ _$jscoverage['ui/dialog.js'][68]++;
+ return size;
+}), safeSetOffset: (function (offset) {
+ _$jscoverage['ui/dialog.js'][71]++;
+ var me = this;
+ _$jscoverage['ui/dialog.js'][72]++;
+ var el = me.getDom();
+ _$jscoverage['ui/dialog.js'][73]++;
+ var vpRect = uiUtils.getViewportRect();
+ _$jscoverage['ui/dialog.js'][74]++;
+ var rect = uiUtils.getClientRect(el);
+ _$jscoverage['ui/dialog.js'][75]++;
+ var left = offset.left;
+ _$jscoverage['ui/dialog.js'][76]++;
+ if (((left + rect.width) > vpRect.right)) {
+ _$jscoverage['ui/dialog.js'][77]++;
+ left = (vpRect.right - rect.width);
+ }
+ _$jscoverage['ui/dialog.js'][79]++;
+ var top = offset.top;
+ _$jscoverage['ui/dialog.js'][80]++;
+ if (((top + rect.height) > vpRect.bottom)) {
+ _$jscoverage['ui/dialog.js'][81]++;
+ top = (vpRect.bottom - rect.height);
+ }
+ _$jscoverage['ui/dialog.js'][83]++;
+ el.style.left = (Math.max(left, 0) + "px");
+ _$jscoverage['ui/dialog.js'][84]++;
+ el.style.top = (Math.max(top, 0) + "px");
+}), showAtCenter: (function () {
+ _$jscoverage['ui/dialog.js'][87]++;
+ this.getDom().style.display = "";
+ _$jscoverage['ui/dialog.js'][88]++;
+ var vpRect = uiUtils.getViewportRect();
+ _$jscoverage['ui/dialog.js'][89]++;
+ var popSize = this.fitSize();
+ _$jscoverage['ui/dialog.js'][90]++;
+ var titleHeight = (this.getDom("titlebar").offsetHeight | 0);
+ _$jscoverage['ui/dialog.js'][91]++;
+ var left = ((vpRect.width / 2) - (popSize.width / 2));
+ _$jscoverage['ui/dialog.js'][92]++;
+ var top = ((vpRect.height / 2) - ((popSize.height - titleHeight) / 2) - titleHeight);
+ _$jscoverage['ui/dialog.js'][93]++;
+ var popEl = this.getDom();
+ _$jscoverage['ui/dialog.js'][94]++;
+ this.safeSetOffset({left: Math.max((left | 0), 0), top: Math.max((top | 0), 0)});
+ _$jscoverage['ui/dialog.js'][98]++;
+ if ((! domUtils.hasClass(popEl, "edui-state-centered"))) {
+ _$jscoverage['ui/dialog.js'][99]++;
+ popEl.className += " edui-state-centered";
+ }
+ _$jscoverage['ui/dialog.js'][101]++;
+ this._show();
+}), getContentHtml: (function () {
+ _$jscoverage['ui/dialog.js'][104]++;
+ var contentHtml = "";
+ _$jscoverage['ui/dialog.js'][105]++;
+ if (((typeof this.content) == "string")) {
+ _$jscoverage['ui/dialog.js'][106]++;
+ contentHtml = this.content;
+ }
+ else {
+ _$jscoverage['ui/dialog.js'][107]++;
+ if (this.iframeUrl) {
+ _$jscoverage['ui/dialog.js'][108]++;
+ contentHtml = (" ");
+ }
+ }
+ _$jscoverage['ui/dialog.js'][111]++;
+ return contentHtml;
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/dialog.js'][114]++;
+ var footHtml = "";
+ _$jscoverage['ui/dialog.js'][116]++;
+ if (this.buttons) {
+ _$jscoverage['ui/dialog.js'][117]++;
+ var buff = [];
+ _$jscoverage['ui/dialog.js'][118]++;
+ for (var i = 0; (i < this.buttons.length); (i++)) {
+ _$jscoverage['ui/dialog.js'][119]++;
+ buff[i] = this.buttons[i].renderHtml();
+}
+ _$jscoverage['ui/dialog.js'][121]++;
+ footHtml = ("");
+ }
+ _$jscoverage['ui/dialog.js'][126]++;
+ return ("" + "
" + "
" + "
" + "" + (this.title || "") + " " + "
" + this.closeButton.renderHtml() + "
" + "
" + (this.autoReset? "": this.getContentHtml()) + "
" + footHtml + "
");
+}), postRender: (function () {
+ _$jscoverage['ui/dialog.js'][140]++;
+ if ((! this.modalMask.getDom())) {
+ _$jscoverage['ui/dialog.js'][141]++;
+ this.modalMask.render();
+ _$jscoverage['ui/dialog.js'][142]++;
+ this.modalMask.hide();
+ }
+ _$jscoverage['ui/dialog.js'][144]++;
+ if ((! this.dragMask.getDom())) {
+ _$jscoverage['ui/dialog.js'][145]++;
+ this.dragMask.render();
+ _$jscoverage['ui/dialog.js'][146]++;
+ this.dragMask.hide();
+ }
+ _$jscoverage['ui/dialog.js'][148]++;
+ var me = this;
+ _$jscoverage['ui/dialog.js'][149]++;
+ this.addListener("show", (function () {
+ _$jscoverage['ui/dialog.js'][150]++;
+ me.modalMask.show((this.getDom().style.zIndex - 2));
+}));
+ _$jscoverage['ui/dialog.js'][152]++;
+ this.addListener("hide", (function () {
+ _$jscoverage['ui/dialog.js'][153]++;
+ me.modalMask.hide();
+}));
+ _$jscoverage['ui/dialog.js'][155]++;
+ if (this.buttons) {
+ _$jscoverage['ui/dialog.js'][156]++;
+ for (var i = 0; (i < this.buttons.length); (i++)) {
+ _$jscoverage['ui/dialog.js'][157]++;
+ this.buttons[i].postRender();
+}
+ }
+ _$jscoverage['ui/dialog.js'][160]++;
+ domUtils.on(window, "resize", (function () {
+ _$jscoverage['ui/dialog.js'][161]++;
+ setTimeout((function () {
+ _$jscoverage['ui/dialog.js'][162]++;
+ if ((! me.isHidden())) {
+ _$jscoverage['ui/dialog.js'][163]++;
+ me.safeSetOffset(uiUtils.getClientRect(me.getDom()));
+ }
+}));
+}));
+ _$jscoverage['ui/dialog.js'][169]++;
+ if (this.holdScroll) {
+ _$jscoverage['ui/dialog.js'][171]++;
+ if ((! me.iframeUrl)) {
+ _$jscoverage['ui/dialog.js'][172]++;
+ domUtils.on(document.getElementById((me.id + "_iframe")), ((! browser.gecko)? "mousewheel": "DOMMouseScroll"), (function (e) {
+ _$jscoverage['ui/dialog.js'][173]++;
+ domUtils.preventDefault(e);
+}));
+ }
+ else {
+ _$jscoverage['ui/dialog.js'][176]++;
+ me.addListener("dialogafterreset", (function () {
+ _$jscoverage['ui/dialog.js'][177]++;
+ window.setTimeout((function () {
+ _$jscoverage['ui/dialog.js'][178]++;
+ var iframeWindow = document.getElementById((me.id + "_iframe")).contentWindow;
+ _$jscoverage['ui/dialog.js'][180]++;
+ if (browser.ie) {
+ _$jscoverage['ui/dialog.js'][182]++;
+ var timer = window.setInterval((function () {
+ _$jscoverage['ui/dialog.js'][184]++;
+ if ((iframeWindow.document && iframeWindow.document.body)) {
+ _$jscoverage['ui/dialog.js'][185]++;
+ window.clearInterval(timer);
+ _$jscoverage['ui/dialog.js'][186]++;
+ timer = null;
+ _$jscoverage['ui/dialog.js'][187]++;
+ domUtils.on(iframeWindow.document.body, ((! browser.gecko)? "mousewheel": "DOMMouseScroll"), (function (e) {
+ _$jscoverage['ui/dialog.js'][188]++;
+ domUtils.preventDefault(e);
+}));
+ }
+}), 100);
+ }
+ else {
+ _$jscoverage['ui/dialog.js'][195]++;
+ domUtils.on(iframeWindow, ((! browser.gecko)? "mousewheel": "DOMMouseScroll"), (function (e) {
+ _$jscoverage['ui/dialog.js'][196]++;
+ domUtils.preventDefault(e);
+}));
+ }
+}), 1);
+}));
+ }
+ }
+ _$jscoverage['ui/dialog.js'][205]++;
+ this._hide();
+}), mesureSize: (function () {
+ _$jscoverage['ui/dialog.js'][208]++;
+ var body = this.getDom("body");
+ _$jscoverage['ui/dialog.js'][209]++;
+ var width = uiUtils.getClientRect(this.getDom("content")).width;
+ _$jscoverage['ui/dialog.js'][210]++;
+ var dialogBodyStyle = body.style;
+ _$jscoverage['ui/dialog.js'][211]++;
+ dialogBodyStyle.width = width;
+ _$jscoverage['ui/dialog.js'][212]++;
+ return uiUtils.getClientRect(body);
+}), _onTitlebarMouseDown: (function (evt, el) {
+ _$jscoverage['ui/dialog.js'][215]++;
+ if (this.draggable) {
+ _$jscoverage['ui/dialog.js'][216]++;
+ var rect;
+ _$jscoverage['ui/dialog.js'][217]++;
+ var vpRect = uiUtils.getViewportRect();
+ _$jscoverage['ui/dialog.js'][218]++;
+ var me = this;
+ _$jscoverage['ui/dialog.js'][219]++;
+ uiUtils.startDrag(evt, {ondragstart: (function () {
+ _$jscoverage['ui/dialog.js'][221]++;
+ rect = uiUtils.getClientRect(me.getDom());
+ _$jscoverage['ui/dialog.js'][222]++;
+ me.getDom("contmask").style.visibility = "visible";
+ _$jscoverage['ui/dialog.js'][223]++;
+ me.dragMask.show((me.getDom().style.zIndex - 1));
+}), ondragmove: (function (x, y) {
+ _$jscoverage['ui/dialog.js'][226]++;
+ var left = (rect.left + x);
+ _$jscoverage['ui/dialog.js'][227]++;
+ var top = (rect.top + y);
+ _$jscoverage['ui/dialog.js'][228]++;
+ me.safeSetOffset({left: left, top: top});
+}), ondragstop: (function () {
+ _$jscoverage['ui/dialog.js'][234]++;
+ me.getDom("contmask").style.visibility = "hidden";
+ _$jscoverage['ui/dialog.js'][235]++;
+ domUtils.removeClasses(me.getDom(), ["edui-state-centered"]);
+ _$jscoverage['ui/dialog.js'][236]++;
+ me.dragMask.hide();
+})});
+ }
+}), reset: (function () {
+ _$jscoverage['ui/dialog.js'][242]++;
+ this.getDom("content").innerHTML = this.getContentHtml();
+ _$jscoverage['ui/dialog.js'][243]++;
+ this.fireEvent("dialogafterreset");
+}), _show: (function () {
+ _$jscoverage['ui/dialog.js'][246]++;
+ if (this._hidden) {
+ _$jscoverage['ui/dialog.js'][247]++;
+ this.getDom().style.display = "";
+ _$jscoverage['ui/dialog.js'][250]++;
+ (this.editor.container.style.zIndex && (this.getDom().style.zIndex = ((this.editor.container.style.zIndex * 1) + 10)));
+ _$jscoverage['ui/dialog.js'][251]++;
+ this._hidden = false;
+ _$jscoverage['ui/dialog.js'][252]++;
+ this.fireEvent("show");
+ _$jscoverage['ui/dialog.js'][253]++;
+ baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = (this.getDom().style.zIndex - 4);
+ }
+}), isHidden: (function () {
+ _$jscoverage['ui/dialog.js'][257]++;
+ return this._hidden;
+}), _hide: (function () {
+ _$jscoverage['ui/dialog.js'][260]++;
+ if ((! this._hidden)) {
+ _$jscoverage['ui/dialog.js'][261]++;
+ this.getDom().style.display = "none";
+ _$jscoverage['ui/dialog.js'][262]++;
+ this.getDom().style.zIndex = "";
+ _$jscoverage['ui/dialog.js'][263]++;
+ this._hidden = true;
+ _$jscoverage['ui/dialog.js'][264]++;
+ this.fireEvent("hide");
+ }
+}), open: (function () {
+ _$jscoverage['ui/dialog.js'][268]++;
+ if (this.autoReset) {
+ _$jscoverage['ui/dialog.js'][270]++;
+ try {
+ _$jscoverage['ui/dialog.js'][271]++;
+ this.reset();
+ }
+ catch (e) {
+ _$jscoverage['ui/dialog.js'][273]++;
+ this.render();
+ _$jscoverage['ui/dialog.js'][274]++;
+ this.open();
+ }
+ }
+ _$jscoverage['ui/dialog.js'][277]++;
+ this.showAtCenter();
+ _$jscoverage['ui/dialog.js'][278]++;
+ if (this.iframeUrl) {
+ _$jscoverage['ui/dialog.js'][279]++;
+ try {
+ _$jscoverage['ui/dialog.js'][280]++;
+ this.getDom("iframe").focus();
+ }
+ catch (ex) {
+ }
+ }
+}), _onCloseButtonClick: (function (evt, el) {
+ _$jscoverage['ui/dialog.js'][285]++;
+ this.close(false);
+}), close: (function (ok) {
+ _$jscoverage['ui/dialog.js'][288]++;
+ if ((this.fireEvent("close", ok) !== false)) {
+ _$jscoverage['ui/dialog.js'][289]++;
+ this._hide();
+ }
+})};
+ _$jscoverage['ui/dialog.js'][293]++;
+ utils.inherits(Dialog, UIBase);
+})();
diff --git a/_test/coverage/ui/editor.js b/_test/coverage/ui/editor.js
new file mode 100644
index 000000000..254ce39da
--- /dev/null
+++ b/_test/coverage/ui/editor.js
@@ -0,0 +1,1531 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/editor.js']) {
+ _$jscoverage['ui/editor.js'] = [];
+ _$jscoverage['ui/editor.js'][5] = 0;
+ _$jscoverage['ui/editor.js'][6] = 0;
+ _$jscoverage['ui/editor.js'][10] = 0;
+ _$jscoverage['ui/editor.js'][12] = 0;
+ _$jscoverage['ui/editor.js'][13] = 0;
+ _$jscoverage['ui/editor.js'][14] = 0;
+ _$jscoverage['ui/editor.js'][17] = 0;
+ _$jscoverage['ui/editor.js'][20] = 0;
+ _$jscoverage['ui/editor.js'][21] = 0;
+ _$jscoverage['ui/editor.js'][22] = 0;
+ _$jscoverage['ui/editor.js'][23] = 0;
+ _$jscoverage['ui/editor.js'][24] = 0;
+ _$jscoverage['ui/editor.js'][27] = 0;
+ _$jscoverage['ui/editor.js'][29] = 0;
+ _$jscoverage['ui/editor.js'][30] = 0;
+ _$jscoverage['ui/editor.js'][32] = 0;
+ _$jscoverage['ui/editor.js'][33] = 0;
+ _$jscoverage['ui/editor.js'][36] = 0;
+ _$jscoverage['ui/editor.js'][39] = 0;
+ _$jscoverage['ui/editor.js'][40] = 0;
+ _$jscoverage['ui/editor.js'][42] = 0;
+ _$jscoverage['ui/editor.js'][43] = 0;
+ _$jscoverage['ui/editor.js'][44] = 0;
+ _$jscoverage['ui/editor.js'][45] = 0;
+ _$jscoverage['ui/editor.js'][47] = 0;
+ _$jscoverage['ui/editor.js'][48] = 0;
+ _$jscoverage['ui/editor.js'][50] = 0;
+ _$jscoverage['ui/editor.js'][51] = 0;
+ _$jscoverage['ui/editor.js'][52] = 0;
+ _$jscoverage['ui/editor.js'][53] = 0;
+ _$jscoverage['ui/editor.js'][55] = 0;
+ _$jscoverage['ui/editor.js'][57] = 0;
+ _$jscoverage['ui/editor.js'][59] = 0;
+ _$jscoverage['ui/editor.js'][60] = 0;
+ _$jscoverage['ui/editor.js'][61] = 0;
+ _$jscoverage['ui/editor.js'][62] = 0;
+ _$jscoverage['ui/editor.js'][65] = 0;
+ _$jscoverage['ui/editor.js'][66] = 0;
+ _$jscoverage['ui/editor.js'][71] = 0;
+ _$jscoverage['ui/editor.js'][72] = 0;
+ _$jscoverage['ui/editor.js'][73] = 0;
+ _$jscoverage['ui/editor.js'][74] = 0;
+ _$jscoverage['ui/editor.js'][77] = 0;
+ _$jscoverage['ui/editor.js'][78] = 0;
+ _$jscoverage['ui/editor.js'][79] = 0;
+ _$jscoverage['ui/editor.js'][81] = 0;
+ _$jscoverage['ui/editor.js'][84] = 0;
+ _$jscoverage['ui/editor.js'][85] = 0;
+ _$jscoverage['ui/editor.js'][86] = 0;
+ _$jscoverage['ui/editor.js'][87] = 0;
+ _$jscoverage['ui/editor.js'][88] = 0;
+ _$jscoverage['ui/editor.js'][89] = 0;
+ _$jscoverage['ui/editor.js'][94] = 0;
+ _$jscoverage['ui/editor.js'][96] = 0;
+ _$jscoverage['ui/editor.js'][99] = 0;
+ _$jscoverage['ui/editor.js'][100] = 0;
+ _$jscoverage['ui/editor.js'][101] = 0;
+ _$jscoverage['ui/editor.js'][102] = 0;
+ _$jscoverage['ui/editor.js'][103] = 0;
+ _$jscoverage['ui/editor.js'][104] = 0;
+ _$jscoverage['ui/editor.js'][109] = 0;
+ _$jscoverage['ui/editor.js'][110] = 0;
+ _$jscoverage['ui/editor.js'][111] = 0;
+ _$jscoverage['ui/editor.js'][112] = 0;
+ _$jscoverage['ui/editor.js'][115] = 0;
+ _$jscoverage['ui/editor.js'][117] = 0;
+ _$jscoverage['ui/editor.js'][118] = 0;
+ _$jscoverage['ui/editor.js'][122] = 0;
+ _$jscoverage['ui/editor.js'][123] = 0;
+ _$jscoverage['ui/editor.js'][125] = 0;
+ _$jscoverage['ui/editor.js'][126] = 0;
+ _$jscoverage['ui/editor.js'][127] = 0;
+ _$jscoverage['ui/editor.js'][128] = 0;
+ _$jscoverage['ui/editor.js'][129] = 0;
+ _$jscoverage['ui/editor.js'][132] = 0;
+ _$jscoverage['ui/editor.js'][133] = 0;
+ _$jscoverage['ui/editor.js'][135] = 0;
+ _$jscoverage['ui/editor.js'][136] = 0;
+ _$jscoverage['ui/editor.js'][142] = 0;
+ _$jscoverage['ui/editor.js'][147] = 0;
+ _$jscoverage['ui/editor.js'][148] = 0;
+ _$jscoverage['ui/editor.js'][150] = 0;
+ _$jscoverage['ui/editor.js'][151] = 0;
+ _$jscoverage['ui/editor.js'][152] = 0;
+ _$jscoverage['ui/editor.js'][153] = 0;
+ _$jscoverage['ui/editor.js'][155] = 0;
+ _$jscoverage['ui/editor.js'][159] = 0;
+ _$jscoverage['ui/editor.js'][160] = 0;
+ _$jscoverage['ui/editor.js'][161] = 0;
+ _$jscoverage['ui/editor.js'][163] = 0;
+ _$jscoverage['ui/editor.js'][164] = 0;
+ _$jscoverage['ui/editor.js'][168] = 0;
+ _$jscoverage['ui/editor.js'][173] = 0;
+ _$jscoverage['ui/editor.js'][174] = 0;
+ _$jscoverage['ui/editor.js'][177] = 0;
+ _$jscoverage['ui/editor.js'][178] = 0;
+ _$jscoverage['ui/editor.js'][182] = 0;
+ _$jscoverage['ui/editor.js'][183] = 0;
+ _$jscoverage['ui/editor.js'][187] = 0;
+ _$jscoverage['ui/editor.js'][188] = 0;
+ _$jscoverage['ui/editor.js'][189] = 0;
+ _$jscoverage['ui/editor.js'][191] = 0;
+ _$jscoverage['ui/editor.js'][192] = 0;
+ _$jscoverage['ui/editor.js'][194] = 0;
+ _$jscoverage['ui/editor.js'][195] = 0;
+ _$jscoverage['ui/editor.js'][197] = 0;
+ _$jscoverage['ui/editor.js'][198] = 0;
+ _$jscoverage['ui/editor.js'][200] = 0;
+ _$jscoverage['ui/editor.js'][201] = 0;
+ _$jscoverage['ui/editor.js'][202] = 0;
+ _$jscoverage['ui/editor.js'][203] = 0;
+ _$jscoverage['ui/editor.js'][206] = 0;
+ _$jscoverage['ui/editor.js'][207] = 0;
+ _$jscoverage['ui/editor.js'][208] = 0;
+ _$jscoverage['ui/editor.js'][211] = 0;
+ _$jscoverage['ui/editor.js'][212] = 0;
+ _$jscoverage['ui/editor.js'][215] = 0;
+ _$jscoverage['ui/editor.js'][216] = 0;
+ _$jscoverage['ui/editor.js'][217] = 0;
+ _$jscoverage['ui/editor.js'][220] = 0;
+ _$jscoverage['ui/editor.js'][223] = 0;
+ _$jscoverage['ui/editor.js'][224] = 0;
+ _$jscoverage['ui/editor.js'][225] = 0;
+ _$jscoverage['ui/editor.js'][226] = 0;
+ _$jscoverage['ui/editor.js'][227] = 0;
+ _$jscoverage['ui/editor.js'][228] = 0;
+ _$jscoverage['ui/editor.js'][229] = 0;
+ _$jscoverage['ui/editor.js'][232] = 0;
+ _$jscoverage['ui/editor.js'][233] = 0;
+ _$jscoverage['ui/editor.js'][234] = 0;
+ _$jscoverage['ui/editor.js'][235] = 0;
+ _$jscoverage['ui/editor.js'][237] = 0;
+ _$jscoverage['ui/editor.js'][241] = 0;
+ _$jscoverage['ui/editor.js'][242] = 0;
+ _$jscoverage['ui/editor.js'][243] = 0;
+ _$jscoverage['ui/editor.js'][246] = 0;
+ _$jscoverage['ui/editor.js'][247] = 0;
+ _$jscoverage['ui/editor.js'][248] = 0;
+ _$jscoverage['ui/editor.js'][249] = 0;
+ _$jscoverage['ui/editor.js'][251] = 0;
+ _$jscoverage['ui/editor.js'][252] = 0;
+ _$jscoverage['ui/editor.js'][254] = 0;
+ _$jscoverage['ui/editor.js'][255] = 0;
+ _$jscoverage['ui/editor.js'][257] = 0;
+ _$jscoverage['ui/editor.js'][258] = 0;
+ _$jscoverage['ui/editor.js'][260] = 0;
+ _$jscoverage['ui/editor.js'][261] = 0;
+ _$jscoverage['ui/editor.js'][263] = 0;
+ _$jscoverage['ui/editor.js'][264] = 0;
+ _$jscoverage['ui/editor.js'][265] = 0;
+ _$jscoverage['ui/editor.js'][269] = 0;
+ _$jscoverage['ui/editor.js'][271] = 0;
+ _$jscoverage['ui/editor.js'][272] = 0;
+ _$jscoverage['ui/editor.js'][274] = 0;
+ _$jscoverage['ui/editor.js'][275] = 0;
+ _$jscoverage['ui/editor.js'][277] = 0;
+ _$jscoverage['ui/editor.js'][284] = 0;
+ _$jscoverage['ui/editor.js'][287] = 0;
+ _$jscoverage['ui/editor.js'][288] = 0;
+ _$jscoverage['ui/editor.js'][289] = 0;
+ _$jscoverage['ui/editor.js'][290] = 0;
+ _$jscoverage['ui/editor.js'][291] = 0;
+ _$jscoverage['ui/editor.js'][292] = 0;
+ _$jscoverage['ui/editor.js'][293] = 0;
+ _$jscoverage['ui/editor.js'][295] = 0;
+ _$jscoverage['ui/editor.js'][296] = 0;
+ _$jscoverage['ui/editor.js'][298] = 0;
+ _$jscoverage['ui/editor.js'][302] = 0;
+ _$jscoverage['ui/editor.js'][306] = 0;
+ _$jscoverage['ui/editor.js'][307] = 0;
+ _$jscoverage['ui/editor.js'][308] = 0;
+ _$jscoverage['ui/editor.js'][309] = 0;
+ _$jscoverage['ui/editor.js'][311] = 0;
+ _$jscoverage['ui/editor.js'][318] = 0;
+ _$jscoverage['ui/editor.js'][319] = 0;
+ _$jscoverage['ui/editor.js'][320] = 0;
+ _$jscoverage['ui/editor.js'][321] = 0;
+ _$jscoverage['ui/editor.js'][322] = 0;
+ _$jscoverage['ui/editor.js'][323] = 0;
+ _$jscoverage['ui/editor.js'][324] = 0;
+ _$jscoverage['ui/editor.js'][325] = 0;
+ _$jscoverage['ui/editor.js'][326] = 0;
+ _$jscoverage['ui/editor.js'][327] = 0;
+ _$jscoverage['ui/editor.js'][328] = 0;
+ _$jscoverage['ui/editor.js'][329] = 0;
+ _$jscoverage['ui/editor.js'][330] = 0;
+ _$jscoverage['ui/editor.js'][332] = 0;
+ _$jscoverage['ui/editor.js'][333] = 0;
+ _$jscoverage['ui/editor.js'][335] = 0;
+ _$jscoverage['ui/editor.js'][336] = 0;
+ _$jscoverage['ui/editor.js'][340] = 0;
+ _$jscoverage['ui/editor.js'][341] = 0;
+ _$jscoverage['ui/editor.js'][342] = 0;
+ _$jscoverage['ui/editor.js'][344] = 0;
+ _$jscoverage['ui/editor.js'][347] = 0;
+ _$jscoverage['ui/editor.js'][352] = 0;
+ _$jscoverage['ui/editor.js'][354] = 0;
+ _$jscoverage['ui/editor.js'][356] = 0;
+ _$jscoverage['ui/editor.js'][359] = 0;
+ _$jscoverage['ui/editor.js'][361] = 0;
+ _$jscoverage['ui/editor.js'][364] = 0;
+ _$jscoverage['ui/editor.js'][388] = 0;
+ _$jscoverage['ui/editor.js'][389] = 0;
+ _$jscoverage['ui/editor.js'][392] = 0;
+ _$jscoverage['ui/editor.js'][393] = 0;
+ _$jscoverage['ui/editor.js'][394] = 0;
+ _$jscoverage['ui/editor.js'][396] = 0;
+ _$jscoverage['ui/editor.js'][400] = 0;
+ _$jscoverage['ui/editor.js'][402] = 0;
+ _$jscoverage['ui/editor.js'][403] = 0;
+ _$jscoverage['ui/editor.js'][404] = 0;
+ _$jscoverage['ui/editor.js'][405] = 0;
+ _$jscoverage['ui/editor.js'][406] = 0;
+ _$jscoverage['ui/editor.js'][408] = 0;
+ _$jscoverage['ui/editor.js'][409] = 0;
+ _$jscoverage['ui/editor.js'][410] = 0;
+ _$jscoverage['ui/editor.js'][411] = 0;
+ _$jscoverage['ui/editor.js'][412] = 0;
+ _$jscoverage['ui/editor.js'][413] = 0;
+ _$jscoverage['ui/editor.js'][415] = 0;
+ _$jscoverage['ui/editor.js'][416] = 0;
+ _$jscoverage['ui/editor.js'][417] = 0;
+ _$jscoverage['ui/editor.js'][418] = 0;
+ _$jscoverage['ui/editor.js'][420] = 0;
+ _$jscoverage['ui/editor.js'][421] = 0;
+ _$jscoverage['ui/editor.js'][423] = 0;
+ _$jscoverage['ui/editor.js'][424] = 0;
+ _$jscoverage['ui/editor.js'][427] = 0;
+ _$jscoverage['ui/editor.js'][428] = 0;
+ _$jscoverage['ui/editor.js'][429] = 0;
+ _$jscoverage['ui/editor.js'][430] = 0;
+ _$jscoverage['ui/editor.js'][431] = 0;
+ _$jscoverage['ui/editor.js'][432] = 0;
+ _$jscoverage['ui/editor.js'][434] = 0;
+ _$jscoverage['ui/editor.js'][435] = 0;
+ _$jscoverage['ui/editor.js'][436] = 0;
+ _$jscoverage['ui/editor.js'][438] = 0;
+ _$jscoverage['ui/editor.js'][439] = 0;
+ _$jscoverage['ui/editor.js'][440] = 0;
+ _$jscoverage['ui/editor.js'][441] = 0;
+ _$jscoverage['ui/editor.js'][442] = 0;
+ _$jscoverage['ui/editor.js'][445] = 0;
+ _$jscoverage['ui/editor.js'][446] = 0;
+ _$jscoverage['ui/editor.js'][447] = 0;
+ _$jscoverage['ui/editor.js'][448] = 0;
+ _$jscoverage['ui/editor.js'][450] = 0;
+ _$jscoverage['ui/editor.js'][451] = 0;
+ _$jscoverage['ui/editor.js'][452] = 0;
+ _$jscoverage['ui/editor.js'][453] = 0;
+ _$jscoverage['ui/editor.js'][454] = 0;
+ _$jscoverage['ui/editor.js'][455] = 0;
+ _$jscoverage['ui/editor.js'][456] = 0;
+ _$jscoverage['ui/editor.js'][457] = 0;
+ _$jscoverage['ui/editor.js'][458] = 0;
+ _$jscoverage['ui/editor.js'][459] = 0;
+ _$jscoverage['ui/editor.js'][460] = 0;
+ _$jscoverage['ui/editor.js'][461] = 0;
+ _$jscoverage['ui/editor.js'][466] = 0;
+ _$jscoverage['ui/editor.js'][467] = 0;
+ _$jscoverage['ui/editor.js'][468] = 0;
+ _$jscoverage['ui/editor.js'][474] = 0;
+ _$jscoverage['ui/editor.js'][475] = 0;
+ _$jscoverage['ui/editor.js'][476] = 0;
+ _$jscoverage['ui/editor.js'][477] = 0;
+ _$jscoverage['ui/editor.js'][478] = 0;
+ _$jscoverage['ui/editor.js'][480] = 0;
+ _$jscoverage['ui/editor.js'][481] = 0;
+ _$jscoverage['ui/editor.js'][482] = 0;
+ _$jscoverage['ui/editor.js'][491] = 0;
+ _$jscoverage['ui/editor.js'][492] = 0;
+ _$jscoverage['ui/editor.js'][494] = 0;
+ _$jscoverage['ui/editor.js'][495] = 0;
+ _$jscoverage['ui/editor.js'][496] = 0;
+ _$jscoverage['ui/editor.js'][498] = 0;
+ _$jscoverage['ui/editor.js'][501] = 0;
+ _$jscoverage['ui/editor.js'][505] = 0;
+ _$jscoverage['ui/editor.js'][506] = 0;
+ _$jscoverage['ui/editor.js'][507] = 0;
+ _$jscoverage['ui/editor.js'][508] = 0;
+ _$jscoverage['ui/editor.js'][512] = 0;
+ _$jscoverage['ui/editor.js'][513] = 0;
+ _$jscoverage['ui/editor.js'][514] = 0;
+ _$jscoverage['ui/editor.js'][515] = 0;
+ _$jscoverage['ui/editor.js'][518] = 0;
+ _$jscoverage['ui/editor.js'][527] = 0;
+ _$jscoverage['ui/editor.js'][536] = 0;
+ _$jscoverage['ui/editor.js'][537] = 0;
+ _$jscoverage['ui/editor.js'][539] = 0;
+ _$jscoverage['ui/editor.js'][540] = 0;
+ _$jscoverage['ui/editor.js'][543] = 0;
+ _$jscoverage['ui/editor.js'][546] = 0;
+ _$jscoverage['ui/editor.js'][547] = 0;
+ _$jscoverage['ui/editor.js'][548] = 0;
+ _$jscoverage['ui/editor.js'][551] = 0;
+ _$jscoverage['ui/editor.js'][553] = 0;
+ _$jscoverage['ui/editor.js'][554] = 0;
+ _$jscoverage['ui/editor.js'][555] = 0;
+ _$jscoverage['ui/editor.js'][558] = 0;
+ _$jscoverage['ui/editor.js'][559] = 0;
+ _$jscoverage['ui/editor.js'][560] = 0;
+ _$jscoverage['ui/editor.js'][561] = 0;
+ _$jscoverage['ui/editor.js'][562] = 0;
+ _$jscoverage['ui/editor.js'][563] = 0;
+ _$jscoverage['ui/editor.js'][567] = 0;
+ _$jscoverage['ui/editor.js'][568] = 0;
+ _$jscoverage['ui/editor.js'][569] = 0;
+ _$jscoverage['ui/editor.js'][570] = 0;
+ _$jscoverage['ui/editor.js'][571] = 0;
+ _$jscoverage['ui/editor.js'][572] = 0;
+ _$jscoverage['ui/editor.js'][573] = 0;
+ _$jscoverage['ui/editor.js'][575] = 0;
+ _$jscoverage['ui/editor.js'][576] = 0;
+ _$jscoverage['ui/editor.js'][577] = 0;
+ _$jscoverage['ui/editor.js'][579] = 0;
+ _$jscoverage['ui/editor.js'][580] = 0;
+ _$jscoverage['ui/editor.js'][581] = 0;
+ _$jscoverage['ui/editor.js'][585] = 0;
+ _$jscoverage['ui/editor.js'][586] = 0;
+ _$jscoverage['ui/editor.js'][587] = 0;
+ _$jscoverage['ui/editor.js'][588] = 0;
+ _$jscoverage['ui/editor.js'][589] = 0;
+ _$jscoverage['ui/editor.js'][591] = 0;
+ _$jscoverage['ui/editor.js'][593] = 0;
+ _$jscoverage['ui/editor.js'][594] = 0;
+ _$jscoverage['ui/editor.js'][596] = 0;
+ _$jscoverage['ui/editor.js'][597] = 0;
+ _$jscoverage['ui/editor.js'][598] = 0;
+ _$jscoverage['ui/editor.js'][599] = 0;
+ _$jscoverage['ui/editor.js'][602] = 0;
+ _$jscoverage['ui/editor.js'][603] = 0;
+ _$jscoverage['ui/editor.js'][604] = 0;
+ _$jscoverage['ui/editor.js'][606] = 0;
+ _$jscoverage['ui/editor.js'][609] = 0;
+ _$jscoverage['ui/editor.js'][611] = 0;
+ _$jscoverage['ui/editor.js'][612] = 0;
+ _$jscoverage['ui/editor.js'][613] = 0;
+ _$jscoverage['ui/editor.js'][614] = 0;
+ _$jscoverage['ui/editor.js'][616] = 0;
+ _$jscoverage['ui/editor.js'][617] = 0;
+ _$jscoverage['ui/editor.js'][618] = 0;
+ _$jscoverage['ui/editor.js'][619] = 0;
+ _$jscoverage['ui/editor.js'][623] = 0;
+ _$jscoverage['ui/editor.js'][626] = 0;
+ _$jscoverage['ui/editor.js'][627] = 0;
+ _$jscoverage['ui/editor.js'][628] = 0;
+ _$jscoverage['ui/editor.js'][630] = 0;
+ _$jscoverage['ui/editor.js'][631] = 0;
+ _$jscoverage['ui/editor.js'][634] = 0;
+ _$jscoverage['ui/editor.js'][635] = 0;
+ _$jscoverage['ui/editor.js'][636] = 0;
+ _$jscoverage['ui/editor.js'][639] = 0;
+ _$jscoverage['ui/editor.js'][641] = 0;
+ _$jscoverage['ui/editor.js'][642] = 0;
+ _$jscoverage['ui/editor.js'][643] = 0;
+ _$jscoverage['ui/editor.js'][647] = 0;
+ _$jscoverage['ui/editor.js'][648] = 0;
+ _$jscoverage['ui/editor.js'][650] = 0;
+ _$jscoverage['ui/editor.js'][651] = 0;
+ _$jscoverage['ui/editor.js'][652] = 0;
+ _$jscoverage['ui/editor.js'][656] = 0;
+ _$jscoverage['ui/editor.js'][659] = 0;
+ _$jscoverage['ui/editor.js'][662] = 0;
+ _$jscoverage['ui/editor.js'][663] = 0;
+ _$jscoverage['ui/editor.js'][664] = 0;
+ _$jscoverage['ui/editor.js'][666] = 0;
+ _$jscoverage['ui/editor.js'][670] = 0;
+ _$jscoverage['ui/editor.js'][673] = 0;
+ _$jscoverage['ui/editor.js'][676] = 0;
+ _$jscoverage['ui/editor.js'][677] = 0;
+ _$jscoverage['ui/editor.js'][678] = 0;
+ _$jscoverage['ui/editor.js'][679] = 0;
+ _$jscoverage['ui/editor.js'][686] = 0;
+ _$jscoverage['ui/editor.js'][687] = 0;
+ _$jscoverage['ui/editor.js'][688] = 0;
+ _$jscoverage['ui/editor.js'][689] = 0;
+ _$jscoverage['ui/editor.js'][690] = 0;
+ _$jscoverage['ui/editor.js'][692] = 0;
+ _$jscoverage['ui/editor.js'][693] = 0;
+ _$jscoverage['ui/editor.js'][694] = 0;
+ _$jscoverage['ui/editor.js'][695] = 0;
+ _$jscoverage['ui/editor.js'][698] = 0;
+ _$jscoverage['ui/editor.js'][699] = 0;
+ _$jscoverage['ui/editor.js'][700] = 0;
+ _$jscoverage['ui/editor.js'][701] = 0;
+ _$jscoverage['ui/editor.js'][703] = 0;
+ _$jscoverage['ui/editor.js'][704] = 0;
+ _$jscoverage['ui/editor.js'][705] = 0;
+ _$jscoverage['ui/editor.js'][706] = 0;
+ _$jscoverage['ui/editor.js'][707] = 0;
+ _$jscoverage['ui/editor.js'][708] = 0;
+ _$jscoverage['ui/editor.js'][712] = 0;
+ _$jscoverage['ui/editor.js'][713] = 0;
+ _$jscoverage['ui/editor.js'][714] = 0;
+ _$jscoverage['ui/editor.js'][715] = 0;
+ _$jscoverage['ui/editor.js'][716] = 0;
+ _$jscoverage['ui/editor.js'][719] = 0;
+ _$jscoverage['ui/editor.js'][720] = 0;
+ _$jscoverage['ui/editor.js'][722] = 0;
+ _$jscoverage['ui/editor.js'][723] = 0;
+ _$jscoverage['ui/editor.js'][727] = 0;
+ _$jscoverage['ui/editor.js'][728] = 0;
+ _$jscoverage['ui/editor.js'][729] = 0;
+ _$jscoverage['ui/editor.js'][731] = 0;
+ _$jscoverage['ui/editor.js'][732] = 0;
+ _$jscoverage['ui/editor.js'][733] = 0;
+ _$jscoverage['ui/editor.js'][734] = 0;
+ _$jscoverage['ui/editor.js'][735] = 0;
+ _$jscoverage['ui/editor.js'][736] = 0;
+ _$jscoverage['ui/editor.js'][738] = 0;
+ _$jscoverage['ui/editor.js'][739] = 0;
+ _$jscoverage['ui/editor.js'][741] = 0;
+ _$jscoverage['ui/editor.js'][743] = 0;
+ _$jscoverage['ui/editor.js'][744] = 0;
+ _$jscoverage['ui/editor.js'][746] = 0;
+ _$jscoverage['ui/editor.js'][748] = 0;
+ _$jscoverage['ui/editor.js'][749] = 0;
+ _$jscoverage['ui/editor.js'][753] = 0;
+ _$jscoverage['ui/editor.js'][754] = 0;
+ _$jscoverage['ui/editor.js'][756] = 0;
+ _$jscoverage['ui/editor.js'][757] = 0;
+ _$jscoverage['ui/editor.js'][758] = 0;
+ _$jscoverage['ui/editor.js'][763] = 0;
+ _$jscoverage['ui/editor.js'][788] = 0;
+ _$jscoverage['ui/editor.js'][789] = 0;
+ _$jscoverage['ui/editor.js'][790] = 0;
+ _$jscoverage['ui/editor.js'][791] = 0;
+ _$jscoverage['ui/editor.js'][792] = 0;
+ _$jscoverage['ui/editor.js'][794] = 0;
+ _$jscoverage['ui/editor.js'][798] = 0;
+ _$jscoverage['ui/editor.js'][799] = 0;
+ _$jscoverage['ui/editor.js'][800] = 0;
+ _$jscoverage['ui/editor.js'][801] = 0;
+ _$jscoverage['ui/editor.js'][802] = 0;
+}
+_$jscoverage['ui/editor.js'].source = ["///import core ","///commands 全屏 ","///commandsName FullScreen ","///commandsTitle 全屏 ","( function () { "," var utils = baidu. editor. utils, "," uiUtils = baidu. editor. ui. uiUtils, "," UIBase = baidu. editor. ui. UIBase, "," domUtils = baidu. editor. dom. domUtils; "," var nodeStack = []; ",""," function EditorUI( options) { "," this . initOptions( options); "," this . initEditorUI(); "," } ",""," EditorUI. prototype = { "," uiName: 'editor' , "," initEditorUI: function () { "," this . editor. ui = this ; "," this . _dialogs = {} ; "," this . initUIBase(); "," this . _initToolbars(); "," var editor = this . editor, "," me = this ; ",""," editor. addListener( 'ready' , function () { "," //提供getDialog方法 "," editor. getDialog = function ( name) { "," return editor. ui. _dialogs[ name + \"Dialog\" ]; "," } ; "," domUtils. on( editor. window, 'scroll' , function ( evt) { "," baidu. editor. ui. Popup. postHide( evt); "," } ); "," //提供编辑器实时宽高(全屏时宽高不变化) "," editor. ui. _actualFrameWidth = editor. options. initialFrameWidth; ",""," //display bottom-bar label based on config "," if ( editor. options. elementPathEnabled) { "," editor. ui. getDom( 'elementpath' ). innerHTML = '<div class=\"edui-editor-breadcrumb\">' + editor. getLang( \"elementPathTip\" ) + ':</div>' ; "," } "," if ( editor. options. wordCount) { "," function countFn() { "," setCount( editor, me); "," domUtils. un( editor. document, \"click\" , arguments. callee); "," } "," domUtils. on( editor. document, \"click\" , countFn); "," editor. ui. getDom( 'wordcount' ). innerHTML = editor. getLang( \"wordCountTip\" ); "," } "," editor. ui. _scale(); "," if ( editor. options. scaleEnabled) { "," if ( editor. autoHeightEnabled) { "," editor. disableAutoHeight(); "," } "," me. enableScale(); "," } else { "," me. disableScale(); "," } "," if (! editor. options. elementPathEnabled && ! editor. options. wordCount && ! editor. options. scaleEnabled) { "," editor. ui. getDom( 'elementpath' ). style. display = \"none\" ; "," editor. ui. getDom( 'wordcount' ). style. display = \"none\" ; "," editor. ui. getDom( 'scale' ). style. display = \"none\" ; "," } ",""," if (! editor. selection. isFocus()) return ; "," editor. fireEvent( 'selectionchange' , false , true ); ","",""," } ); ",""," editor. addListener( 'mousedown' , function ( t, evt) { "," var el = evt. target || evt. srcElement; "," baidu. editor. ui. Popup. postHide( evt, el); "," baidu. editor. ui. ShortCutMenu. postHide( evt); ",""," } ); "," editor. addListener( \"delcells\" , function () { "," if ( UE. ui[ 'edittip' ]) { "," new UE. ui[ 'edittip' ]( editor); "," } "," editor. getDialog( 'edittip' ). open(); "," } ); ",""," var pastePop, isPaste = false , timer; "," editor. addListener( \"afterpaste\" , function () { "," if ( editor. queryCommandState( 'pasteplain' )) "," return ; "," if ( baidu. editor. ui. PastePicker) { "," pastePop = new baidu. editor. ui. Popup( { "," content: new baidu. editor. ui. PastePicker( { editor: editor} ), "," editor: editor, "," className: 'edui-wordpastepop' "," } ); "," pastePop. render(); "," } "," isPaste = true ; "," } ); ",""," editor. addListener( \"afterinserthtml\" , function () { "," clearTimeout( timer); "," timer = setTimeout( function () { "," if ( pastePop && ( isPaste || editor. ui. _isTransfer)) { "," if ( pastePop. isHidden()) { "," var span = domUtils. createElement( editor. document, 'span' , { "," 'style' : \"line-height:0px;\" , "," 'innerHTML' : ' \\u feff' "," } ), "," range = editor. selection. getRange(); "," range. insertNode( span); "," var tmp= getDomNode( span, 'firstChild' , 'previousSibling' ); "," pastePop. showAnchor( tmp. nodeType == 3 ? tmp. parentNode : tmp); "," domUtils. remove( span); ",""," } else { "," pastePop. show(); "," } "," delete editor. ui. _isTransfer; "," isPaste = false ; "," } "," } , 200 ) "," } ); "," editor. addListener( 'contextmenu' , function ( t, evt) { "," baidu. editor. ui. Popup. postHide( evt); "," } ); "," editor. addListener( 'keydown' , function ( t, evt) { "," if ( pastePop) pastePop. dispose( evt); "," var keyCode = evt. keyCode || evt. which; "," if ( evt. altKey&& keyCode== 90 ) { "," UE. ui. buttons[ 'fullscreen' ]. onclick(); "," } "," } ); "," editor. addListener( 'wordcount' , function ( type) { "," setCount( this , me); "," } ); "," function setCount( editor, ui) { "," editor. setOpt( { "," wordCount: true , "," maximumWords: 10000 , "," wordCountMsg: editor. options. wordCountMsg || editor. getLang( \"wordCountMsg\" ), "," wordOverFlowMsg: editor. options. wordOverFlowMsg || editor. getLang( \"wordOverFlowMsg\" ) "," } ); "," var opt = editor. options, "," max = opt. maximumWords, "," msg = opt. wordCountMsg , "," errMsg = opt. wordOverFlowMsg, "," countDom = ui. getDom( 'wordcount' ); "," if (! opt. wordCount) { "," return ; "," } "," var count = editor. getContentLength( true ); "," if ( count > max) { "," countDom. innerHTML = errMsg; "," editor. fireEvent( \"wordcountoverflow\" ); "," } else { "," countDom. innerHTML = msg. replace( \"{#leave}\" , max - count). replace( \"{#count}\" , count); "," } "," } ",""," editor. addListener( 'selectionchange' , function () { "," if ( editor. options. elementPathEnabled) { "," me[( editor. queryCommandState( 'elementpath' ) == - 1 ? 'dis' : 'en' ) + 'ableElementPath' ]() "," } "," if ( editor. options. scaleEnabled) { "," me[( editor. queryCommandState( 'scale' ) == - 1 ? 'dis' : 'en' ) + 'ableScale' ](); ",""," } "," } ); "," var popup = new baidu. editor. ui. Popup( { "," editor: editor, "," content: '' , "," className: 'edui-bubble' , "," _onEditButtonClick: function () { "," this . hide(); "," editor. ui. _dialogs. linkDialog. open(); "," } , "," _onImgEditButtonClick: function ( name) { "," this . hide(); "," editor. ui. _dialogs[ name] && editor. ui. _dialogs[ name]. open(); ",""," } , "," _onImgSetFloat: function ( value) { "," this . hide(); "," editor. execCommand( \"imagefloat\" , value); ",""," } , "," _setIframeAlign: function ( value) { "," var frame = popup. anchorEl; "," var newFrame = frame. cloneNode( true ); "," switch ( value) { "," case - 2 : "," newFrame. setAttribute( \"align\" , \"\" ); "," break ; "," case - 1 : "," newFrame. setAttribute( \"align\" , \"left\" ); "," break ; "," case 1 : "," newFrame. setAttribute( \"align\" , \"right\" ); "," break ; "," } "," frame. parentNode. insertBefore( newFrame, frame); "," domUtils. remove( frame); "," popup. anchorEl = newFrame; "," popup. showAnchor( popup. anchorEl); "," } , "," _updateIframe: function () { "," editor. _iframe = popup. anchorEl; "," editor. ui. _dialogs. insertframeDialog. open(); "," popup. hide(); "," } , "," _onRemoveButtonClick: function ( cmdName) { "," editor. execCommand( cmdName); "," this . hide(); "," } , "," queryAutoHide: function ( el) { "," if ( el && el. ownerDocument == editor. document) { "," if ( el. tagName. toLowerCase() == 'img' || domUtils. findParentByTagName( el, 'a' , true )) { "," return el !== popup. anchorEl; "," } "," } "," return baidu. editor. ui. Popup. prototype. queryAutoHide. call( this , el); "," } "," } ); "," popup. render(); "," if ( editor. options. imagePopup) { "," editor. addListener( 'mouseover' , function ( t, evt) { "," evt = evt || window. event; "," var el = evt. target || evt. srcElement; "," if ( editor. ui. _dialogs. insertframeDialog && /iframe/ig . test( el. tagName)) { "," var html = popup. formatHtml( "," '<nobr>' + editor. getLang( \"property\" ) + ': <span onclick=$$._setIframeAlign(-2) class=\"edui-clickable\">' + editor. getLang( \"default\" ) + '</span> <span onclick=$$._setIframeAlign(-1) class=\"edui-clickable\">' + editor. getLang( \"justifyleft\" ) + '</span> <span onclick=$$._setIframeAlign(1) class=\"edui-clickable\">' + editor. getLang( \"justifyright\" ) + '</span> ' + "," ' <span onclick=\"$$._updateIframe( this);\" class=\"edui-clickable\">' + editor. getLang( \"modify\" ) + '</span></nobr>' ); "," if ( html) { "," popup. getDom( 'content' ). innerHTML = html; "," popup. anchorEl = el; "," popup. showAnchor( popup. anchorEl); "," } else { "," popup. hide(); "," } "," } "," } ); "," editor. addListener( 'selectionchange' , function ( t, causeByUi) { "," if (! causeByUi) return ; "," var html = '' , str = \"\" , "," img = editor. selection. getRange(). getClosedNode(), "," dialogs = editor. ui. _dialogs; "," if ( img && img. tagName == 'IMG' ) { "," var dialogName = 'insertimageDialog' ; "," if ( img. className. indexOf( \"edui-faked-video\" ) != - 1 ) { "," dialogName = \"insertvideoDialog\" "," } "," if ( img. className. indexOf( \"edui-faked-webapp\" ) != - 1 ) { "," dialogName = \"webappDialog\" "," } "," if ( img. src. indexOf( \"http://api.map.baidu.com\" ) != - 1 ) { "," dialogName = \"mapDialog\" "," } "," if ( img. className. indexOf( \"edui-faked-music\" ) != - 1 ) { "," dialogName = \"musicDialog\" "," } "," if ( img. src. indexOf( \"http://maps.google.com/maps/api/staticmap\" ) != - 1 ) { "," dialogName = \"gmapDialog\" "," } "," if ( img. getAttribute( \"anchorname\" )) { "," dialogName = \"anchorDialog\" ; "," html = popup. formatHtml( "," '<nobr>' + editor. getLang( \"property\" ) + ': <span onclick=$$._onImgEditButtonClick(\"anchorDialog\") class=\"edui-clickable\">' + editor. getLang( \"modify\" ) + '</span> ' + "," '<span onclick=$$._onRemoveButtonClick( \\' anchor \\' ) class=\"edui-clickable\">' + editor. getLang( \"delete\" ) + '</span></nobr>' ); "," } "," if ( img. getAttribute( \"word_img\" )) { "," //todo 放到dialog去做查询 "," editor. word_img = [ img. getAttribute( \"word_img\" )]; "," dialogName = \"wordimageDialog\" "," } "," if (! dialogs[ dialogName]) { "," return ; "," } "," str = '<nobr>' + editor. getLang( \"property\" ) + ': ' + "," '<span onclick=$$._onImgSetFloat(\"none\") class=\"edui-clickable\">' + editor. getLang( \"default\" ) + '</span> ' + "," '<span onclick=$$._onImgSetFloat(\"left\") class=\"edui-clickable\">' + editor. getLang( \"justifyleft\" ) + '</span> ' + "," '<span onclick=$$._onImgSetFloat(\"right\") class=\"edui-clickable\">' + editor. getLang( \"justifyright\" ) + '</span> ' + "," '<span onclick=$$._onImgSetFloat(\"center\") class=\"edui-clickable\">' + editor. getLang( \"justifycenter\" ) + '</span> ' + "," '<span onclick=\"$$._onImgEditButtonClick( \\' ' + dialogName + ' \\' );\" class=\"edui-clickable\">' + editor. getLang( \"modify\" ) + '</span></nobr>' ; ",""," ! html && ( html = popup. formatHtml( str)) ",""," } "," if ( editor. ui. _dialogs. linkDialog) { "," var link = editor. queryCommandValue( 'link' ); "," var url; "," if ( link && ( url = ( link. getAttribute( '_href' ) || link. getAttribute( 'href' , 2 )))) { "," var txt = url; "," if ( url. length > 30 ) { "," txt = url. substring( 0 , 20 ) + \"...\" ; "," } "," if ( html) { "," html += '<div style=\"height:5px;\"></div>' "," } "," html += popup. formatHtml( "," '<nobr>' + editor. getLang( \"anthorMsg\" ) + ': <a target=\"_blank\" href=\"' + url + '\" title=\"' + url + '\" >' + txt + '</a>' + "," ' <span class=\"edui-clickable\" onclick=\"$$._onEditButtonClick();\">' + editor. getLang( \"modify\" ) + '</span>' + "," ' <span class=\"edui-clickable\" onclick=\"$$._onRemoveButtonClick( \\' unlink \\' );\"> ' + editor. getLang( \"clear\" ) + '</span></nobr>' ); "," popup. showAnchor( link); "," } "," } ",""," if ( html) { "," popup. getDom( 'content' ). innerHTML = html; "," popup. anchorEl = img || link; "," popup. showAnchor( popup. anchorEl); "," } else { "," popup. hide(); "," } "," } ); "," } ",""," } , "," _initToolbars: function () { "," var editor = this . editor; "," var toolbars = this . toolbars || []; "," var toolbarUis = []; "," for ( var i = 0 ; i < toolbars. length; i++) { "," var toolbar = toolbars[ i]; "," var toolbarUi = new baidu. editor. ui. Toolbar( { theme: editor. options. theme} ); "," for ( var j = 0 ; j < toolbar. length; j++) { "," var toolbarItem = toolbar[ j]; "," var toolbarItemUi = null ; "," if ( typeof toolbarItem == 'string' ) { "," toolbarItem = toolbarItem. toLowerCase(); "," if ( toolbarItem == '|' ) { "," toolbarItem = 'Separator' ; "," } "," if ( toolbarItem == '||' ) { "," toolbarItem = 'Breakline' ; "," } "," if ( baidu. editor. ui[ toolbarItem]) { "," toolbarItemUi = new baidu. editor. ui[ toolbarItem]( editor); "," } ",""," //fullscreen这里单独处理一下,放到首行去 "," if ( toolbarItem == 'fullscreen' ) { "," if ( toolbarUis && toolbarUis[ 0 ]) { "," toolbarUis[ 0 ]. items. splice( 0 , 0 , toolbarItemUi); "," } else { "," toolbarItemUi && toolbarUi. items. splice( 0 , 0 , toolbarItemUi); "," } ",""," continue ; ","",""," } "," } else { "," toolbarItemUi = toolbarItem; "," } "," if ( toolbarItemUi && toolbarItemUi. id) { ",""," toolbarUi. add( toolbarItemUi); "," } "," } "," toolbarUis[ i] = toolbarUi; "," } "," this . toolbars = toolbarUis; "," } , "," getHtmlTpl: function () { "," return '<div id=\"##\" class=\"%%\">' + "," '<div id=\"##_toolbarbox\" class=\"%%-toolbarbox\">' + "," ( this . toolbars. length ? "," '<div id=\"##_toolbarboxouter\" class=\"%%-toolbarboxouter\"><div class=\"%%-toolbarboxinner\">' + "," this . renderToolbarBoxHtml() + "," '</div></div>' : '' ) + "," '<div id=\"##_toolbarmsg\" class=\"%%-toolbarmsg\" style=\"display:none;\">' + "," '<div id = \"##_upload_dialog\" class=\"%%-toolbarmsg-upload\" onclick=\"$$.showWordImageDialog();\">' + this . editor. getLang( \"clickToUpload\" ) + '</div>' + "," '<div class=\"%%-toolbarmsg-close\" onclick=\"$$.hideToolbarMsg();\">x</div>' + "," '<div id=\"##_toolbarmsg_label\" class=\"%%-toolbarmsg-label\"></div>' + "," '<div style=\"height:0;overflow:hidden;clear:both;\"></div>' + "," '</div>' + "," '</div>' + "," '<div id=\"##_iframeholder\" class=\"%%-iframeholder\"></div>' + "," //modify wdcount by matao "," '<div id=\"##_bottombar\" class=\"%%-bottomContainer\"><table><tr>' + "," '<td id=\"##_elementpath\" class=\"%%-bottombar\"></td>' + "," '<td id=\"##_wordcount\" class=\"%%-wordcount\"></td>' + "," '<td id=\"##_scale\" class=\"%%-scale\"><div class=\"%%-icon\"></div></td>' + "," '</tr></table></div>' + "," '<div id=\"##_scalelayer\"></div>' + "," '</div>' ; "," } , "," showWordImageDialog: function () { "," this . editor. execCommand( \"wordimage\" , \"word_img\" ); "," this . _dialogs[ 'wordimageDialog' ]. open(); "," } , "," renderToolbarBoxHtml: function () { "," var buff = []; "," for ( var i = 0 ; i < this . toolbars. length; i++) { "," buff. push( this . toolbars[ i]. renderHtml()); "," } "," return buff. join( '' ); "," } , "," setFullScreen: function ( fullscreen) { ",""," var editor = this . editor, "," container = editor. container. parentNode. parentNode; "," if ( this . _fullscreen != fullscreen) { "," this . _fullscreen = fullscreen; "," this . editor. fireEvent( 'beforefullscreenchange' , fullscreen); "," if ( baidu. editor. browser. gecko) { "," var bk = editor. selection. getRange(). createBookmark(); "," } "," if ( fullscreen) { "," while ( container. tagName != \"BODY\" ) { "," var position = baidu. editor. dom. domUtils. getComputedStyle( container, \"position\" ); "," nodeStack. push( position); "," container. style. position = \"static\" ; "," container = container. parentNode; "," } "," this . _bakHtmlOverflow = document. documentElement. style. overflow; "," this . _bakBodyOverflow = document. body. style. overflow; "," this . _bakAutoHeight = this . editor. autoHeightEnabled; "," this . _bakScrollTop = Math. max( document. documentElement. scrollTop, document. body. scrollTop); ",""," this . _bakEditorContaninerWidth = editor. iframe. parentNode. offsetWidth; "," if ( this . _bakAutoHeight) { "," //当全屏时不能执行自动长高 "," editor. autoHeightEnabled = false ; "," this . editor. disableAutoHeight(); "," } ",""," document. documentElement. style. overflow = 'hidden' ; "," document. body. style. overflow = 'hidden' ; "," this . _bakCssText = this . getDom(). style. cssText; "," this . _bakCssText1 = this . getDom( 'iframeholder' ). style. cssText; "," editor. iframe. parentNode. style. width = '' ; "," this . _updateFullScreen(); "," } else { "," while ( container. tagName != \"BODY\" ) { "," container. style. position = nodeStack. shift(); "," container = container. parentNode; "," } "," this . getDom(). style. cssText = this . _bakCssText; "," this . getDom( 'iframeholder' ). style. cssText = this . _bakCssText1; "," if ( this . _bakAutoHeight) { "," editor. autoHeightEnabled = true ; "," this . editor. enableAutoHeight(); "," } ",""," document. documentElement. style. overflow = this . _bakHtmlOverflow; "," document. body. style. overflow = this . _bakBodyOverflow; "," editor. iframe. parentNode. style. width = this . _bakEditorContaninerWidth + 'px' ; "," window. scrollTo( 0 , this . _bakScrollTop); "," } "," if ( browser. gecko && editor. body. contentEditable === 'true' ) { "," var input = document. createElement( 'input' ); "," document. body. appendChild( input); "," editor. body. contentEditable = false ; "," setTimeout( function () { "," input. focus(); "," setTimeout( function () { "," editor. body. contentEditable = true ; "," editor. fireEvent( 'fullscreenchanged' , fullscreen); "," editor. selection. getRange(). moveToBookmark( bk). select( true ); "," baidu. editor. dom. domUtils. remove( input); "," fullscreen && window. scroll( 0 , 0 ); "," } , 0 ) "," } , 0 ) "," } ",""," if ( editor. body. contentEditable === 'true' ) { "," this . editor. fireEvent( 'fullscreenchanged' , fullscreen); "," this . triggerLayout(); "," } ",""," } "," } , "," _updateFullScreen: function () { "," if ( this . _fullscreen) { "," var vpRect = uiUtils. getViewportRect(); "," this . getDom(). style. cssText = 'border:0;position:absolute;left:0;top:' + ( this . editor. options. topOffset || 0 ) + 'px;width:' + vpRect. width + 'px;height:' + vpRect. height + 'px;z-index:' + ( this . getDom(). style. zIndex * 1 + 100 ); "," uiUtils. setViewportOffset( this . getDom(), { left: 0 , top: this . editor. options. topOffset || 0 } ); "," this . editor. setHeight( vpRect. height - this . getDom( 'toolbarbox' ). offsetHeight - this . getDom( 'bottombar' ). offsetHeight - ( this . editor. options. topOffset || 0 )); "," //不手动调一下,会导致全屏失效 "," if ( browser. gecko) { "," try { "," window. onresize(); "," } catch ( e) { ",""," } ",""," } "," } "," } , "," _updateElementPath: function () { "," var bottom = this . getDom( 'elementpath' ), list; "," if ( this . elementPathEnabled && ( list = this . editor. queryCommandValue( 'elementpath' ))) { ",""," var buff = []; "," for ( var i = 0 , ci; ci = list[ i]; i++) { "," buff[ i] = this . formatHtml( '<span unselectable=\"on\" onclick=\"$$.editor.execCommand("elementpath", "' + i + '");\">' + ci + '</span>' ); "," } "," bottom. innerHTML = '<div class=\"edui-editor-breadcrumb\" onmousedown=\"return false;\">' + this . editor. getLang( \"elementPathTip\" ) + ': ' + buff. join( ' > ' ) + '</div>' ; ",""," } else { "," bottom. style. display = 'none' "," } "," } , "," disableElementPath: function () { "," var bottom = this . getDom( 'elementpath' ); "," bottom. innerHTML = '' ; "," bottom. style. display = 'none' ; "," this . elementPathEnabled = false ; ",""," } , "," enableElementPath: function () { "," var bottom = this . getDom( 'elementpath' ); "," bottom. style. display = '' ; "," this . elementPathEnabled = true ; "," this . _updateElementPath(); "," } , "," _scale: function () { "," var doc = document, "," editor = this . editor, "," editorHolder = editor. container, "," editorDocument = editor. document, "," toolbarBox = this . getDom( \"toolbarbox\" ), "," bottombar = this . getDom( \"bottombar\" ), "," scale = this . getDom( \"scale\" ), "," scalelayer = this . getDom( \"scalelayer\" ); ",""," var isMouseMove = false , "," position = null , "," minEditorHeight = 0 , "," minEditorWidth = editor. options. minFrameWidth, "," pageX = 0 , "," pageY = 0 , "," scaleWidth = 0 , "," scaleHeight = 0 ; ",""," function down() { "," position = domUtils. getXY( editorHolder); ",""," if (! minEditorHeight) { "," minEditorHeight = editor. options. minFrameHeight + toolbarBox. offsetHeight + bottombar. offsetHeight; "," } ",""," scalelayer. style. cssText = \"position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:\" + editorHolder. offsetWidth + \"px;height:\" "," + editorHolder. offsetHeight + \"px;z-index:\" + ( editor. options. zIndex + 1 ); ",""," domUtils. on( doc, \"mousemove\" , move); "," domUtils. on( editorDocument, \"mouseup\" , up); "," domUtils. on( doc, \"mouseup\" , up); "," } ",""," var me = this ; "," //by xuheng 全屏时关掉缩放 "," this . editor. addListener( 'fullscreenchanged' , function ( e, fullScreen) { "," if ( fullScreen) { "," me. disableScale(); ",""," } else { "," if ( me. editor. options. scaleEnabled) { "," me. enableScale(); "," var tmpNode = me. editor. document. createElement( 'span' ); "," me. editor. body. appendChild( tmpNode); "," me. editor. body. style. height = Math. max( domUtils. getXY( tmpNode). y, me. editor. iframe. offsetHeight - 20 ) + 'px' ; "," domUtils. remove( tmpNode) "," } "," } "," } ); "," function move( event) { "," clearSelection(); "," var e = event || window. event; "," pageX = e. pageX || ( doc. documentElement. scrollLeft + e. clientX); "," pageY = e. pageY || ( doc. documentElement. scrollTop + e. clientY); "," scaleWidth = pageX - position. x; "," scaleHeight = pageY - position. y; ",""," if ( scaleWidth >= minEditorWidth) { "," isMouseMove = true ; "," scalelayer. style. width = scaleWidth + 'px' ; "," } "," if ( scaleHeight >= minEditorHeight) { "," isMouseMove = true ; "," scalelayer. style. height = scaleHeight + \"px\" ; "," } "," } ",""," function up() { "," if ( isMouseMove) { "," isMouseMove = false ; "," editor. ui. _actualFrameWidth = scalelayer. offsetWidth - 2 ; "," editorHolder. style. width = editor. ui. _actualFrameWidth + 'px' ; ",""," editor. setHeight( scalelayer. offsetHeight - bottombar. offsetHeight - toolbarBox. offsetHeight - 2 ); "," } "," if ( scalelayer) { "," scalelayer. style. display = \"none\" ; "," } "," clearSelection(); "," domUtils. un( doc, \"mousemove\" , move); "," domUtils. un( editorDocument, \"mouseup\" , up); "," domUtils. un( doc, \"mouseup\" , up); "," } ",""," function clearSelection() { "," if ( browser. ie) "," doc. selection. clear(); "," else "," window. getSelection(). removeAllRanges(); "," } ",""," this . enableScale = function () { "," //trace:2868 "," if ( editor. queryCommandState( \"source\" ) == 1 ) return ; "," scale. style. display = \"\" ; "," this . scaleEnabled = true ; "," domUtils. on( scale, \"mousedown\" , down); "," } ; "," this . disableScale = function () { "," scale. style. display = \"none\" ; "," this . scaleEnabled = false ; "," domUtils. un( scale, \"mousedown\" , down); "," } ; "," } , "," isFullScreen: function () { "," return this . _fullscreen; "," } , "," postRender: function () { "," UIBase. prototype. postRender. call( this ); "," for ( var i = 0 ; i < this . toolbars. length; i++) { "," this . toolbars[ i]. postRender(); "," } "," var me = this ; "," var timerId, "," domUtils = baidu. editor. dom. domUtils, "," updateFullScreenTime = function () { "," clearTimeout( timerId); "," timerId = setTimeout( function () { "," me. _updateFullScreen(); "," } ); "," } ; "," domUtils. on( window, 'resize' , updateFullScreenTime); ",""," me. addListener( 'destroy' , function () { "," domUtils. un( window, 'resize' , updateFullScreenTime); "," clearTimeout( timerId); "," } ) "," } , "," showToolbarMsg: function ( msg, flag) { "," this . getDom( 'toolbarmsg_label' ). innerHTML = msg; "," this . getDom( 'toolbarmsg' ). style. display = '' ; "," // "," if (! flag) { "," var w = this . getDom( 'upload_dialog' ); "," w. style. display = 'none' ; "," } "," } , "," hideToolbarMsg: function () { "," this . getDom( 'toolbarmsg' ). style. display = 'none' ; "," } , "," mapUrl: function ( url) { "," return url ? url. replace( '~/' , this . editor. options. UEDITOR_HOME_URL || '' ) : '' "," } , "," triggerLayout: function () { "," var dom = this . getDom(); "," if ( dom. style. zoom == '1' ) { "," dom. style. zoom = '100%' ; "," } else { "," dom. style. zoom = '1' ; "," } "," } "," } ; "," utils. inherits( EditorUI, baidu. editor. ui. UIBase); ","",""," var instances = {} ; ","",""," UE. ui. Editor = function ( options) { "," var editor = new UE. Editor( options); "," editor. options. editor = editor; "," utils. loadFile( document, { "," href: editor. options. themePath + editor. options. theme + \"/_css/ueditor.css\" , "," tag: \"link\" , "," type: \"text/css\" , "," rel: \"stylesheet\" "," } ); ",""," var oldRender = editor. render; "," editor. render = function ( holder) { "," if ( holder. constructor === String) { "," editor. key = holder; "," instances[ holder] = editor; "," } "," utils. domReady( function () { "," editor. langIsReady ? renderUI() : editor. addListener( \"langReady\" , renderUI); "," function renderUI() { "," editor. setOpt( { "," labelMap: editor. options. labelMap || editor. getLang( 'labelMap' ) "," } ); "," new EditorUI( editor. options); "," if ( holder) { "," if ( holder. constructor === String) { "," holder = document. getElementById( holder); "," } "," holder && holder. getAttribute( 'name' ) && ( editor. options. textarea = holder. getAttribute( 'name' )); "," if ( holder && /script|textarea/ig . test( holder. tagName)) { "," var newDiv = document. createElement( 'div' ); "," holder. parentNode. insertBefore( newDiv, holder); "," var cont = holder. value || holder. innerHTML; "," editor. options. initialContent = /^[\\t\\r\\n ]*$/ . test( cont) ? editor. options. initialContent : "," cont. replace( />[\\n\\r\\t]+([ ]{4})+/g , '>' ) "," . replace( /[\\n\\r\\t]+([ ]{4})+</g , '<' ) "," . replace( />[\\n\\r\\t]+</g , '><' ); "," holder. className && ( newDiv. className = holder. className); "," holder. style. cssText && ( newDiv. style. cssText = holder. style. cssText); "," if ( /textarea/i . test( holder. tagName)) { "," editor. textarea = holder; "," editor. textarea. style. display = 'none' ; ",""," } else { "," holder. parentNode. removeChild( holder); "," holder. id && ( newDiv. id = holder. id); "," } "," holder = newDiv; "," holder. innerHTML = '' ; "," } ",""," } "," domUtils. addClass( holder, \"edui-\" + editor. options. theme); "," editor. ui. render( holder); "," var opt = editor. options; "," //给实例添加一个编辑器的容器引用 "," editor. container = editor. ui. getDom(); "," var parents = domUtils. findParents( holder, true ); "," var displays = []; "," for ( var i = 0 , ci; ci= parents[ i]; i++) { "," displays[ i] = ci. style. display; "," ci. style. display = 'block' "," } "," if ( opt. initialFrameWidth) { "," opt. minFrameWidth = opt. initialFrameWidth; "," } else { "," opt. minFrameWidth = opt. initialFrameWidth = holder. offsetWidth; "," } "," if ( opt. initialFrameHeight) { "," opt. minFrameHeight = opt. initialFrameHeight; "," } else { "," opt. initialFrameHeight = opt. minFrameHeight = holder. offsetHeight; "," } "," for ( var i = 0 , ci; ci= parents[ i]; i++) { "," ci. style. display = displays[ i] "," } "," //编辑器最外容器设置了高度,会导致,编辑器不占位 "," //todo 先去掉,没有找到原因 "," if ( holder. style. height) { "," holder. style. height = '' "," } "," editor. container. style. width = opt. initialFrameWidth + ( /%$/ . test( opt. initialFrameWidth) ? '' : 'px' ); "," editor. container. style. zIndex = opt. zIndex; "," oldRender. call( editor, editor. ui. getDom( 'iframeholder' )); ",""," } "," } ) "," } ; "," return editor; "," } ; ","",""," /** "," * @file "," * @name UE "," * @short UE "," * @desc UEditor的顶部命名空间 "," */ "," /** "," * @name getEditor "," * @since 1.2.4+ "," * @grammar UE.getEditor(id,[opt]) => Editor实例 "," * @desc 提供一个全局的方法得到编辑器实例 "," * "," * * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回 "," * * ''opt'' 编辑器的可选参数 "," * @example "," * UE.getEditor('containerId',{onready:function(){//创建一个编辑器实例 "," * this.setContent('hello') "," * }}); "," * UE.getEditor('containerId'); //返回刚创建的实例 "," * "," */ "," UE. getEditor = function ( id, opt) { "," var editor = instances[ id]; "," if (! editor) { "," editor = instances[ id] = new UE. ui. Editor( opt); "," editor. render( id); "," } "," return editor; "," } ; ","",""," UE. delEditor = function ( id) { "," var editor; "," if ( editor = instances[ id]) { "," editor. key && editor. destroy(); "," delete instances[ id] "," } "," } ","} )(); "];
+_$jscoverage['ui/editor.js'][5]++;
+(function () {
+ _$jscoverage['ui/editor.js'][6]++;
+ var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, UIBase = baidu.editor.ui.UIBase, domUtils = baidu.editor.dom.domUtils;
+ _$jscoverage['ui/editor.js'][10]++;
+ var nodeStack = [];
+ _$jscoverage['ui/editor.js'][12]++;
+ function EditorUI(options) {
+ _$jscoverage['ui/editor.js'][13]++;
+ this.initOptions(options);
+ _$jscoverage['ui/editor.js'][14]++;
+ this.initEditorUI();
+}
+ _$jscoverage['ui/editor.js'][17]++;
+ EditorUI.prototype = {uiName: "editor", initEditorUI: (function () {
+ _$jscoverage['ui/editor.js'][20]++;
+ this.editor.ui = this;
+ _$jscoverage['ui/editor.js'][21]++;
+ this._dialogs = {};
+ _$jscoverage['ui/editor.js'][22]++;
+ this.initUIBase();
+ _$jscoverage['ui/editor.js'][23]++;
+ this._initToolbars();
+ _$jscoverage['ui/editor.js'][24]++;
+ var editor = this.editor, me = this;
+ _$jscoverage['ui/editor.js'][27]++;
+ editor.addListener("ready", (function () {
+ _$jscoverage['ui/editor.js'][29]++;
+ editor.getDialog = (function (name) {
+ _$jscoverage['ui/editor.js'][30]++;
+ return editor.ui._dialogs[(name + "Dialog")];
+});
+ _$jscoverage['ui/editor.js'][32]++;
+ domUtils.on(editor.window, "scroll", (function (evt) {
+ _$jscoverage['ui/editor.js'][33]++;
+ baidu.editor.ui.Popup.postHide(evt);
+}));
+ _$jscoverage['ui/editor.js'][36]++;
+ editor.ui._actualFrameWidth = editor.options.initialFrameWidth;
+ _$jscoverage['ui/editor.js'][39]++;
+ if (editor.options.elementPathEnabled) {
+ _$jscoverage['ui/editor.js'][40]++;
+ editor.ui.getDom("elementpath").innerHTML = ("" + editor.getLang("elementPathTip") + ":
");
+ }
+ _$jscoverage['ui/editor.js'][42]++;
+ if (editor.options.wordCount) {
+ _$jscoverage['ui/editor.js'][43]++;
+ function countFn() {
+ _$jscoverage['ui/editor.js'][44]++;
+ setCount(editor, me);
+ _$jscoverage['ui/editor.js'][45]++;
+ domUtils.un(editor.document, "click", arguments.callee);
+}
+ _$jscoverage['ui/editor.js'][47]++;
+ domUtils.on(editor.document, "click", countFn);
+ _$jscoverage['ui/editor.js'][48]++;
+ editor.ui.getDom("wordcount").innerHTML = editor.getLang("wordCountTip");
+ }
+ _$jscoverage['ui/editor.js'][50]++;
+ editor.ui._scale();
+ _$jscoverage['ui/editor.js'][51]++;
+ if (editor.options.scaleEnabled) {
+ _$jscoverage['ui/editor.js'][52]++;
+ if (editor.autoHeightEnabled) {
+ _$jscoverage['ui/editor.js'][53]++;
+ editor.disableAutoHeight();
+ }
+ _$jscoverage['ui/editor.js'][55]++;
+ me.enableScale();
+ }
+ else {
+ _$jscoverage['ui/editor.js'][57]++;
+ me.disableScale();
+ }
+ _$jscoverage['ui/editor.js'][59]++;
+ if (((! editor.options.elementPathEnabled) && (! editor.options.wordCount) && (! editor.options.scaleEnabled))) {
+ _$jscoverage['ui/editor.js'][60]++;
+ editor.ui.getDom("elementpath").style.display = "none";
+ _$jscoverage['ui/editor.js'][61]++;
+ editor.ui.getDom("wordcount").style.display = "none";
+ _$jscoverage['ui/editor.js'][62]++;
+ editor.ui.getDom("scale").style.display = "none";
+ }
+ _$jscoverage['ui/editor.js'][65]++;
+ if ((! editor.selection.isFocus())) {
+ _$jscoverage['ui/editor.js'][65]++;
+ return;
+ }
+ _$jscoverage['ui/editor.js'][66]++;
+ editor.fireEvent("selectionchange", false, true);
+}));
+ _$jscoverage['ui/editor.js'][71]++;
+ editor.addListener("mousedown", (function (t, evt) {
+ _$jscoverage['ui/editor.js'][72]++;
+ var el = (evt.target || evt.srcElement);
+ _$jscoverage['ui/editor.js'][73]++;
+ baidu.editor.ui.Popup.postHide(evt, el);
+ _$jscoverage['ui/editor.js'][74]++;
+ baidu.editor.ui.ShortCutMenu.postHide(evt);
+}));
+ _$jscoverage['ui/editor.js'][77]++;
+ editor.addListener("delcells", (function () {
+ _$jscoverage['ui/editor.js'][78]++;
+ if (UE.ui.edittip) {
+ _$jscoverage['ui/editor.js'][79]++;
+ new (UE.ui.edittip)(editor);
+ }
+ _$jscoverage['ui/editor.js'][81]++;
+ editor.getDialog("edittip").open();
+}));
+ _$jscoverage['ui/editor.js'][84]++;
+ var pastePop, isPaste = false, timer;
+ _$jscoverage['ui/editor.js'][85]++;
+ editor.addListener("afterpaste", (function () {
+ _$jscoverage['ui/editor.js'][86]++;
+ if (editor.queryCommandState("pasteplain")) {
+ _$jscoverage['ui/editor.js'][87]++;
+ return;
+ }
+ _$jscoverage['ui/editor.js'][88]++;
+ if (baidu.editor.ui.PastePicker) {
+ _$jscoverage['ui/editor.js'][89]++;
+ pastePop = new (baidu.editor.ui.Popup)({content: new (baidu.editor.ui.PastePicker)({editor: editor}), editor: editor, className: "edui-wordpastepop"});
+ _$jscoverage['ui/editor.js'][94]++;
+ pastePop.render();
+ }
+ _$jscoverage['ui/editor.js'][96]++;
+ isPaste = true;
+}));
+ _$jscoverage['ui/editor.js'][99]++;
+ editor.addListener("afterinserthtml", (function () {
+ _$jscoverage['ui/editor.js'][100]++;
+ clearTimeout(timer);
+ _$jscoverage['ui/editor.js'][101]++;
+ timer = setTimeout((function () {
+ _$jscoverage['ui/editor.js'][102]++;
+ if ((pastePop && (isPaste || editor.ui._isTransfer))) {
+ _$jscoverage['ui/editor.js'][103]++;
+ if (pastePop.isHidden()) {
+ _$jscoverage['ui/editor.js'][104]++;
+ var span = domUtils.createElement(editor.document, "span", {"style": "line-height:0px;", "innerHTML": "\ufeff"}), range = editor.selection.getRange();
+ _$jscoverage['ui/editor.js'][109]++;
+ range.insertNode(span);
+ _$jscoverage['ui/editor.js'][110]++;
+ var tmp = getDomNode(span, "firstChild", "previousSibling");
+ _$jscoverage['ui/editor.js'][111]++;
+ pastePop.showAnchor(((tmp.nodeType == 3)? tmp.parentNode: tmp));
+ _$jscoverage['ui/editor.js'][112]++;
+ domUtils.remove(span);
+ }
+ else {
+ _$jscoverage['ui/editor.js'][115]++;
+ pastePop.show();
+ }
+ _$jscoverage['ui/editor.js'][117]++;
+ (delete editor.ui._isTransfer);
+ _$jscoverage['ui/editor.js'][118]++;
+ isPaste = false;
+ }
+}), 200);
+}));
+ _$jscoverage['ui/editor.js'][122]++;
+ editor.addListener("contextmenu", (function (t, evt) {
+ _$jscoverage['ui/editor.js'][123]++;
+ baidu.editor.ui.Popup.postHide(evt);
+}));
+ _$jscoverage['ui/editor.js'][125]++;
+ editor.addListener("keydown", (function (t, evt) {
+ _$jscoverage['ui/editor.js'][126]++;
+ if (pastePop) {
+ _$jscoverage['ui/editor.js'][126]++;
+ pastePop.dispose(evt);
+ }
+ _$jscoverage['ui/editor.js'][127]++;
+ var keyCode = (evt.keyCode || evt.which);
+ _$jscoverage['ui/editor.js'][128]++;
+ if ((evt.altKey && (keyCode == 90))) {
+ _$jscoverage['ui/editor.js'][129]++;
+ UE.ui.buttons.fullscreen.onclick();
+ }
+}));
+ _$jscoverage['ui/editor.js'][132]++;
+ editor.addListener("wordcount", (function (type) {
+ _$jscoverage['ui/editor.js'][133]++;
+ setCount(this, me);
+}));
+ _$jscoverage['ui/editor.js'][135]++;
+ function setCount(editor, ui) {
+ _$jscoverage['ui/editor.js'][136]++;
+ editor.setOpt({wordCount: true, maximumWords: 10000, wordCountMsg: (editor.options.wordCountMsg || editor.getLang("wordCountMsg")), wordOverFlowMsg: (editor.options.wordOverFlowMsg || editor.getLang("wordOverFlowMsg"))});
+ _$jscoverage['ui/editor.js'][142]++;
+ var opt = editor.options, max = opt.maximumWords, msg = opt.wordCountMsg, errMsg = opt.wordOverFlowMsg, countDom = ui.getDom("wordcount");
+ _$jscoverage['ui/editor.js'][147]++;
+ if ((! opt.wordCount)) {
+ _$jscoverage['ui/editor.js'][148]++;
+ return;
+ }
+ _$jscoverage['ui/editor.js'][150]++;
+ var count = editor.getContentLength(true);
+ _$jscoverage['ui/editor.js'][151]++;
+ if ((count > max)) {
+ _$jscoverage['ui/editor.js'][152]++;
+ countDom.innerHTML = errMsg;
+ _$jscoverage['ui/editor.js'][153]++;
+ editor.fireEvent("wordcountoverflow");
+ }
+ else {
+ _$jscoverage['ui/editor.js'][155]++;
+ countDom.innerHTML = msg.replace("{#leave}", (max - count)).replace("{#count}", count);
+ }
+}
+ _$jscoverage['ui/editor.js'][159]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editor.js'][160]++;
+ if (editor.options.elementPathEnabled) {
+ _$jscoverage['ui/editor.js'][161]++;
+ (me[(((editor.queryCommandState("elementpath") == -1)? "dis": "en") + "ableElementPath")])();
+ }
+ _$jscoverage['ui/editor.js'][163]++;
+ if (editor.options.scaleEnabled) {
+ _$jscoverage['ui/editor.js'][164]++;
+ (me[(((editor.queryCommandState("scale") == -1)? "dis": "en") + "ableScale")])();
+ }
+}));
+ _$jscoverage['ui/editor.js'][168]++;
+ var popup = new (baidu.editor.ui.Popup)({editor: editor, content: "", className: "edui-bubble", _onEditButtonClick: (function () {
+ _$jscoverage['ui/editor.js'][173]++;
+ this.hide();
+ _$jscoverage['ui/editor.js'][174]++;
+ editor.ui._dialogs.linkDialog.open();
+}), _onImgEditButtonClick: (function (name) {
+ _$jscoverage['ui/editor.js'][177]++;
+ this.hide();
+ _$jscoverage['ui/editor.js'][178]++;
+ (editor.ui._dialogs[name] && editor.ui._dialogs[name].open());
+}), _onImgSetFloat: (function (value) {
+ _$jscoverage['ui/editor.js'][182]++;
+ this.hide();
+ _$jscoverage['ui/editor.js'][183]++;
+ editor.execCommand("imagefloat", value);
+}), _setIframeAlign: (function (value) {
+ _$jscoverage['ui/editor.js'][187]++;
+ var frame = popup.anchorEl;
+ _$jscoverage['ui/editor.js'][188]++;
+ var newFrame = frame.cloneNode(true);
+ _$jscoverage['ui/editor.js'][189]++;
+ switch (value) {
+ case -2:
+ _$jscoverage['ui/editor.js'][191]++;
+ newFrame.setAttribute("align", "");
+ _$jscoverage['ui/editor.js'][192]++;
+ break;
+ case -1:
+ _$jscoverage['ui/editor.js'][194]++;
+ newFrame.setAttribute("align", "left");
+ _$jscoverage['ui/editor.js'][195]++;
+ break;
+ case 1:
+ _$jscoverage['ui/editor.js'][197]++;
+ newFrame.setAttribute("align", "right");
+ _$jscoverage['ui/editor.js'][198]++;
+ break;
+ }
+ _$jscoverage['ui/editor.js'][200]++;
+ frame.parentNode.insertBefore(newFrame, frame);
+ _$jscoverage['ui/editor.js'][201]++;
+ domUtils.remove(frame);
+ _$jscoverage['ui/editor.js'][202]++;
+ popup.anchorEl = newFrame;
+ _$jscoverage['ui/editor.js'][203]++;
+ popup.showAnchor(popup.anchorEl);
+}), _updateIframe: (function () {
+ _$jscoverage['ui/editor.js'][206]++;
+ editor._iframe = popup.anchorEl;
+ _$jscoverage['ui/editor.js'][207]++;
+ editor.ui._dialogs.insertframeDialog.open();
+ _$jscoverage['ui/editor.js'][208]++;
+ popup.hide();
+}), _onRemoveButtonClick: (function (cmdName) {
+ _$jscoverage['ui/editor.js'][211]++;
+ editor.execCommand(cmdName);
+ _$jscoverage['ui/editor.js'][212]++;
+ this.hide();
+}), queryAutoHide: (function (el) {
+ _$jscoverage['ui/editor.js'][215]++;
+ if ((el && (el.ownerDocument == editor.document))) {
+ _$jscoverage['ui/editor.js'][216]++;
+ if (((el.tagName.toLowerCase() == "img") || domUtils.findParentByTagName(el, "a", true))) {
+ _$jscoverage['ui/editor.js'][217]++;
+ return (el !== popup.anchorEl);
+ }
+ }
+ _$jscoverage['ui/editor.js'][220]++;
+ return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, el);
+})});
+ _$jscoverage['ui/editor.js'][223]++;
+ popup.render();
+ _$jscoverage['ui/editor.js'][224]++;
+ if (editor.options.imagePopup) {
+ _$jscoverage['ui/editor.js'][225]++;
+ editor.addListener("mouseover", (function (t, evt) {
+ _$jscoverage['ui/editor.js'][226]++;
+ evt = (evt || window.event);
+ _$jscoverage['ui/editor.js'][227]++;
+ var el = (evt.target || evt.srcElement);
+ _$jscoverage['ui/editor.js'][228]++;
+ if ((editor.ui._dialogs.insertframeDialog && /iframe/gi.test(el.tagName))) {
+ _$jscoverage['ui/editor.js'][229]++;
+ var html = popup.formatHtml(("" + editor.getLang("property") + ": " + editor.getLang("default") + " " + editor.getLang("justifyleft") + " " + editor.getLang("justifyright") + " " + " " + editor.getLang("modify") + " "));
+ _$jscoverage['ui/editor.js'][232]++;
+ if (html) {
+ _$jscoverage['ui/editor.js'][233]++;
+ popup.getDom("content").innerHTML = html;
+ _$jscoverage['ui/editor.js'][234]++;
+ popup.anchorEl = el;
+ _$jscoverage['ui/editor.js'][235]++;
+ popup.showAnchor(popup.anchorEl);
+ }
+ else {
+ _$jscoverage['ui/editor.js'][237]++;
+ popup.hide();
+ }
+ }
+}));
+ _$jscoverage['ui/editor.js'][241]++;
+ editor.addListener("selectionchange", (function (t, causeByUi) {
+ _$jscoverage['ui/editor.js'][242]++;
+ if ((! causeByUi)) {
+ _$jscoverage['ui/editor.js'][242]++;
+ return;
+ }
+ _$jscoverage['ui/editor.js'][243]++;
+ var html = "", str = "", img = editor.selection.getRange().getClosedNode(), dialogs = editor.ui._dialogs;
+ _$jscoverage['ui/editor.js'][246]++;
+ if ((img && (img.tagName == "IMG"))) {
+ _$jscoverage['ui/editor.js'][247]++;
+ var dialogName = "insertimageDialog";
+ _$jscoverage['ui/editor.js'][248]++;
+ if ((img.className.indexOf("edui-faked-video") != -1)) {
+ _$jscoverage['ui/editor.js'][249]++;
+ dialogName = "insertvideoDialog";
+ }
+ _$jscoverage['ui/editor.js'][251]++;
+ if ((img.className.indexOf("edui-faked-webapp") != -1)) {
+ _$jscoverage['ui/editor.js'][252]++;
+ dialogName = "webappDialog";
+ }
+ _$jscoverage['ui/editor.js'][254]++;
+ if ((img.src.indexOf("http://api.map.baidu.com") != -1)) {
+ _$jscoverage['ui/editor.js'][255]++;
+ dialogName = "mapDialog";
+ }
+ _$jscoverage['ui/editor.js'][257]++;
+ if ((img.className.indexOf("edui-faked-music") != -1)) {
+ _$jscoverage['ui/editor.js'][258]++;
+ dialogName = "musicDialog";
+ }
+ _$jscoverage['ui/editor.js'][260]++;
+ if ((img.src.indexOf("http://maps.google.com/maps/api/staticmap") != -1)) {
+ _$jscoverage['ui/editor.js'][261]++;
+ dialogName = "gmapDialog";
+ }
+ _$jscoverage['ui/editor.js'][263]++;
+ if (img.getAttribute("anchorname")) {
+ _$jscoverage['ui/editor.js'][264]++;
+ dialogName = "anchorDialog";
+ _$jscoverage['ui/editor.js'][265]++;
+ html = popup.formatHtml(("" + editor.getLang("property") + ": " + editor.getLang("modify") + " " + "" + editor.getLang("delete") + " "));
+ }
+ _$jscoverage['ui/editor.js'][269]++;
+ if (img.getAttribute("word_img")) {
+ _$jscoverage['ui/editor.js'][271]++;
+ editor.word_img = [img.getAttribute("word_img")];
+ _$jscoverage['ui/editor.js'][272]++;
+ dialogName = "wordimageDialog";
+ }
+ _$jscoverage['ui/editor.js'][274]++;
+ if ((! dialogs[dialogName])) {
+ _$jscoverage['ui/editor.js'][275]++;
+ return;
+ }
+ _$jscoverage['ui/editor.js'][277]++;
+ str = ("" + editor.getLang("property") + ": " + "" + editor.getLang("default") + " " + "" + editor.getLang("justifyleft") + " " + "" + editor.getLang("justifyright") + " " + "" + editor.getLang("justifycenter") + " " + "" + editor.getLang("modify") + " ");
+ _$jscoverage['ui/editor.js'][284]++;
+ ((! html) && (html = popup.formatHtml(str)));
+ }
+ _$jscoverage['ui/editor.js'][287]++;
+ if (editor.ui._dialogs.linkDialog) {
+ _$jscoverage['ui/editor.js'][288]++;
+ var link = editor.queryCommandValue("link");
+ _$jscoverage['ui/editor.js'][289]++;
+ var url;
+ _$jscoverage['ui/editor.js'][290]++;
+ if ((link && (url = (link.getAttribute("_href") || link.getAttribute("href", 2))))) {
+ _$jscoverage['ui/editor.js'][291]++;
+ var txt = url;
+ _$jscoverage['ui/editor.js'][292]++;
+ if ((url.length > 30)) {
+ _$jscoverage['ui/editor.js'][293]++;
+ txt = (url.substring(0, 20) + "...");
+ }
+ _$jscoverage['ui/editor.js'][295]++;
+ if (html) {
+ _$jscoverage['ui/editor.js'][296]++;
+ html += "
";
+ }
+ _$jscoverage['ui/editor.js'][298]++;
+ html += popup.formatHtml(("" + editor.getLang("anthorMsg") + ": " + txt + " " + " " + editor.getLang("modify") + " " + " " + editor.getLang("clear") + " "));
+ _$jscoverage['ui/editor.js'][302]++;
+ popup.showAnchor(link);
+ }
+ }
+ _$jscoverage['ui/editor.js'][306]++;
+ if (html) {
+ _$jscoverage['ui/editor.js'][307]++;
+ popup.getDom("content").innerHTML = html;
+ _$jscoverage['ui/editor.js'][308]++;
+ popup.anchorEl = (img || link);
+ _$jscoverage['ui/editor.js'][309]++;
+ popup.showAnchor(popup.anchorEl);
+ }
+ else {
+ _$jscoverage['ui/editor.js'][311]++;
+ popup.hide();
+ }
+}));
+ }
+}), _initToolbars: (function () {
+ _$jscoverage['ui/editor.js'][318]++;
+ var editor = this.editor;
+ _$jscoverage['ui/editor.js'][319]++;
+ var toolbars = (this.toolbars || []);
+ _$jscoverage['ui/editor.js'][320]++;
+ var toolbarUis = [];
+ _$jscoverage['ui/editor.js'][321]++;
+ for (var i = 0; (i < toolbars.length); (i++)) {
+ _$jscoverage['ui/editor.js'][322]++;
+ var toolbar = toolbars[i];
+ _$jscoverage['ui/editor.js'][323]++;
+ var toolbarUi = new (baidu.editor.ui.Toolbar)({theme: editor.options.theme});
+ _$jscoverage['ui/editor.js'][324]++;
+ for (var j = 0; (j < toolbar.length); (j++)) {
+ _$jscoverage['ui/editor.js'][325]++;
+ var toolbarItem = toolbar[j];
+ _$jscoverage['ui/editor.js'][326]++;
+ var toolbarItemUi = null;
+ _$jscoverage['ui/editor.js'][327]++;
+ if (((typeof toolbarItem) == "string")) {
+ _$jscoverage['ui/editor.js'][328]++;
+ toolbarItem = toolbarItem.toLowerCase();
+ _$jscoverage['ui/editor.js'][329]++;
+ if ((toolbarItem == "|")) {
+ _$jscoverage['ui/editor.js'][330]++;
+ toolbarItem = "Separator";
+ }
+ _$jscoverage['ui/editor.js'][332]++;
+ if ((toolbarItem == "||")) {
+ _$jscoverage['ui/editor.js'][333]++;
+ toolbarItem = "Breakline";
+ }
+ _$jscoverage['ui/editor.js'][335]++;
+ if (baidu.editor.ui[toolbarItem]) {
+ _$jscoverage['ui/editor.js'][336]++;
+ toolbarItemUi = new (baidu.editor.ui[toolbarItem])(editor);
+ }
+ _$jscoverage['ui/editor.js'][340]++;
+ if ((toolbarItem == "fullscreen")) {
+ _$jscoverage['ui/editor.js'][341]++;
+ if ((toolbarUis && toolbarUis[0])) {
+ _$jscoverage['ui/editor.js'][342]++;
+ toolbarUis[0].items.splice(0, 0, toolbarItemUi);
+ }
+ else {
+ _$jscoverage['ui/editor.js'][344]++;
+ (toolbarItemUi && toolbarUi.items.splice(0, 0, toolbarItemUi));
+ }
+ _$jscoverage['ui/editor.js'][347]++;
+ continue;
+ }
+ }
+ else {
+ _$jscoverage['ui/editor.js'][352]++;
+ toolbarItemUi = toolbarItem;
+ }
+ _$jscoverage['ui/editor.js'][354]++;
+ if ((toolbarItemUi && toolbarItemUi.id)) {
+ _$jscoverage['ui/editor.js'][356]++;
+ toolbarUi.add(toolbarItemUi);
+ }
+}
+ _$jscoverage['ui/editor.js'][359]++;
+ toolbarUis[i] = toolbarUi;
+}
+ _$jscoverage['ui/editor.js'][361]++;
+ this.toolbars = toolbarUis;
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/editor.js'][364]++;
+ return ("" + "
" + "
" + "
" + "
" + "
");
+}), showWordImageDialog: (function () {
+ _$jscoverage['ui/editor.js'][388]++;
+ this.editor.execCommand("wordimage", "word_img");
+ _$jscoverage['ui/editor.js'][389]++;
+ this._dialogs.wordimageDialog.open();
+}), renderToolbarBoxHtml: (function () {
+ _$jscoverage['ui/editor.js'][392]++;
+ var buff = [];
+ _$jscoverage['ui/editor.js'][393]++;
+ for (var i = 0; (i < this.toolbars.length); (i++)) {
+ _$jscoverage['ui/editor.js'][394]++;
+ buff.push(this.toolbars[i].renderHtml());
+}
+ _$jscoverage['ui/editor.js'][396]++;
+ return buff.join("");
+}), setFullScreen: (function (fullscreen) {
+ _$jscoverage['ui/editor.js'][400]++;
+ var editor = this.editor, container = editor.container.parentNode.parentNode;
+ _$jscoverage['ui/editor.js'][402]++;
+ if ((this._fullscreen != fullscreen)) {
+ _$jscoverage['ui/editor.js'][403]++;
+ this._fullscreen = fullscreen;
+ _$jscoverage['ui/editor.js'][404]++;
+ this.editor.fireEvent("beforefullscreenchange", fullscreen);
+ _$jscoverage['ui/editor.js'][405]++;
+ if (baidu.editor.browser.gecko) {
+ _$jscoverage['ui/editor.js'][406]++;
+ var bk = editor.selection.getRange().createBookmark();
+ }
+ _$jscoverage['ui/editor.js'][408]++;
+ if (fullscreen) {
+ _$jscoverage['ui/editor.js'][409]++;
+ while ((container.tagName != "BODY")) {
+ _$jscoverage['ui/editor.js'][410]++;
+ var position = baidu.editor.dom.domUtils.getComputedStyle(container, "position");
+ _$jscoverage['ui/editor.js'][411]++;
+ nodeStack.push(position);
+ _$jscoverage['ui/editor.js'][412]++;
+ container.style.position = "static";
+ _$jscoverage['ui/editor.js'][413]++;
+ container = container.parentNode;
+}
+ _$jscoverage['ui/editor.js'][415]++;
+ this._bakHtmlOverflow = document.documentElement.style.overflow;
+ _$jscoverage['ui/editor.js'][416]++;
+ this._bakBodyOverflow = document.body.style.overflow;
+ _$jscoverage['ui/editor.js'][417]++;
+ this._bakAutoHeight = this.editor.autoHeightEnabled;
+ _$jscoverage['ui/editor.js'][418]++;
+ this._bakScrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
+ _$jscoverage['ui/editor.js'][420]++;
+ this._bakEditorContaninerWidth = editor.iframe.parentNode.offsetWidth;
+ _$jscoverage['ui/editor.js'][421]++;
+ if (this._bakAutoHeight) {
+ _$jscoverage['ui/editor.js'][423]++;
+ editor.autoHeightEnabled = false;
+ _$jscoverage['ui/editor.js'][424]++;
+ this.editor.disableAutoHeight();
+ }
+ _$jscoverage['ui/editor.js'][427]++;
+ document.documentElement.style.overflow = "hidden";
+ _$jscoverage['ui/editor.js'][428]++;
+ document.body.style.overflow = "hidden";
+ _$jscoverage['ui/editor.js'][429]++;
+ this._bakCssText = this.getDom().style.cssText;
+ _$jscoverage['ui/editor.js'][430]++;
+ this._bakCssText1 = this.getDom("iframeholder").style.cssText;
+ _$jscoverage['ui/editor.js'][431]++;
+ editor.iframe.parentNode.style.width = "";
+ _$jscoverage['ui/editor.js'][432]++;
+ this._updateFullScreen();
+ }
+ else {
+ _$jscoverage['ui/editor.js'][434]++;
+ while ((container.tagName != "BODY")) {
+ _$jscoverage['ui/editor.js'][435]++;
+ container.style.position = nodeStack.shift();
+ _$jscoverage['ui/editor.js'][436]++;
+ container = container.parentNode;
+}
+ _$jscoverage['ui/editor.js'][438]++;
+ this.getDom().style.cssText = this._bakCssText;
+ _$jscoverage['ui/editor.js'][439]++;
+ this.getDom("iframeholder").style.cssText = this._bakCssText1;
+ _$jscoverage['ui/editor.js'][440]++;
+ if (this._bakAutoHeight) {
+ _$jscoverage['ui/editor.js'][441]++;
+ editor.autoHeightEnabled = true;
+ _$jscoverage['ui/editor.js'][442]++;
+ this.editor.enableAutoHeight();
+ }
+ _$jscoverage['ui/editor.js'][445]++;
+ document.documentElement.style.overflow = this._bakHtmlOverflow;
+ _$jscoverage['ui/editor.js'][446]++;
+ document.body.style.overflow = this._bakBodyOverflow;
+ _$jscoverage['ui/editor.js'][447]++;
+ editor.iframe.parentNode.style.width = (this._bakEditorContaninerWidth + "px");
+ _$jscoverage['ui/editor.js'][448]++;
+ window.scrollTo(0, this._bakScrollTop);
+ }
+ _$jscoverage['ui/editor.js'][450]++;
+ if ((browser.gecko && (editor.body.contentEditable === "true"))) {
+ _$jscoverage['ui/editor.js'][451]++;
+ var input = document.createElement("input");
+ _$jscoverage['ui/editor.js'][452]++;
+ document.body.appendChild(input);
+ _$jscoverage['ui/editor.js'][453]++;
+ editor.body.contentEditable = false;
+ _$jscoverage['ui/editor.js'][454]++;
+ setTimeout((function () {
+ _$jscoverage['ui/editor.js'][455]++;
+ input.focus();
+ _$jscoverage['ui/editor.js'][456]++;
+ setTimeout((function () {
+ _$jscoverage['ui/editor.js'][457]++;
+ editor.body.contentEditable = true;
+ _$jscoverage['ui/editor.js'][458]++;
+ editor.fireEvent("fullscreenchanged", fullscreen);
+ _$jscoverage['ui/editor.js'][459]++;
+ editor.selection.getRange().moveToBookmark(bk).select(true);
+ _$jscoverage['ui/editor.js'][460]++;
+ baidu.editor.dom.domUtils.remove(input);
+ _$jscoverage['ui/editor.js'][461]++;
+ (fullscreen && window.scroll(0, 0));
+}), 0);
+}), 0);
+ }
+ _$jscoverage['ui/editor.js'][466]++;
+ if ((editor.body.contentEditable === "true")) {
+ _$jscoverage['ui/editor.js'][467]++;
+ this.editor.fireEvent("fullscreenchanged", fullscreen);
+ _$jscoverage['ui/editor.js'][468]++;
+ this.triggerLayout();
+ }
+ }
+}), _updateFullScreen: (function () {
+ _$jscoverage['ui/editor.js'][474]++;
+ if (this._fullscreen) {
+ _$jscoverage['ui/editor.js'][475]++;
+ var vpRect = uiUtils.getViewportRect();
+ _$jscoverage['ui/editor.js'][476]++;
+ this.getDom().style.cssText = ("border:0;position:absolute;left:0;top:" + (this.editor.options.topOffset || 0) + "px;width:" + vpRect.width + "px;height:" + vpRect.height + "px;z-index:" + ((this.getDom().style.zIndex * 1) + 100));
+ _$jscoverage['ui/editor.js'][477]++;
+ uiUtils.setViewportOffset(this.getDom(), {left: 0, top: (this.editor.options.topOffset || 0)});
+ _$jscoverage['ui/editor.js'][478]++;
+ this.editor.setHeight((vpRect.height - this.getDom("toolbarbox").offsetHeight - this.getDom("bottombar").offsetHeight - (this.editor.options.topOffset || 0)));
+ _$jscoverage['ui/editor.js'][480]++;
+ if (browser.gecko) {
+ _$jscoverage['ui/editor.js'][481]++;
+ try {
+ _$jscoverage['ui/editor.js'][482]++;
+ window.onresize();
+ }
+ catch (e) {
+ }
+ }
+ }
+}), _updateElementPath: (function () {
+ _$jscoverage['ui/editor.js'][491]++;
+ var bottom = this.getDom("elementpath"), list;
+ _$jscoverage['ui/editor.js'][492]++;
+ if ((this.elementPathEnabled && (list = this.editor.queryCommandValue("elementpath")))) {
+ _$jscoverage['ui/editor.js'][494]++;
+ var buff = [];
+ _$jscoverage['ui/editor.js'][495]++;
+ for (var i = 0, ci; (ci = list[i]); (i++)) {
+ _$jscoverage['ui/editor.js'][496]++;
+ buff[i] = this.formatHtml(("" + ci + " "));
+}
+ _$jscoverage['ui/editor.js'][498]++;
+ bottom.innerHTML = ("" + this.editor.getLang("elementPathTip") + ": " + buff.join(" > ") + "
");
+ }
+ else {
+ _$jscoverage['ui/editor.js'][501]++;
+ bottom.style.display = "none";
+ }
+}), disableElementPath: (function () {
+ _$jscoverage['ui/editor.js'][505]++;
+ var bottom = this.getDom("elementpath");
+ _$jscoverage['ui/editor.js'][506]++;
+ bottom.innerHTML = "";
+ _$jscoverage['ui/editor.js'][507]++;
+ bottom.style.display = "none";
+ _$jscoverage['ui/editor.js'][508]++;
+ this.elementPathEnabled = false;
+}), enableElementPath: (function () {
+ _$jscoverage['ui/editor.js'][512]++;
+ var bottom = this.getDom("elementpath");
+ _$jscoverage['ui/editor.js'][513]++;
+ bottom.style.display = "";
+ _$jscoverage['ui/editor.js'][514]++;
+ this.elementPathEnabled = true;
+ _$jscoverage['ui/editor.js'][515]++;
+ this._updateElementPath();
+}), _scale: (function () {
+ _$jscoverage['ui/editor.js'][518]++;
+ var doc = document, editor = this.editor, editorHolder = editor.container, editorDocument = editor.document, toolbarBox = this.getDom("toolbarbox"), bottombar = this.getDom("bottombar"), scale = this.getDom("scale"), scalelayer = this.getDom("scalelayer");
+ _$jscoverage['ui/editor.js'][527]++;
+ var isMouseMove = false, position = null, minEditorHeight = 0, minEditorWidth = editor.options.minFrameWidth, pageX = 0, pageY = 0, scaleWidth = 0, scaleHeight = 0;
+ _$jscoverage['ui/editor.js'][536]++;
+ function down() {
+ _$jscoverage['ui/editor.js'][537]++;
+ position = domUtils.getXY(editorHolder);
+ _$jscoverage['ui/editor.js'][539]++;
+ if ((! minEditorHeight)) {
+ _$jscoverage['ui/editor.js'][540]++;
+ minEditorHeight = (editor.options.minFrameHeight + toolbarBox.offsetHeight + bottombar.offsetHeight);
+ }
+ _$jscoverage['ui/editor.js'][543]++;
+ scalelayer.style.cssText = ("position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:" + editorHolder.offsetWidth + "px;height:" + editorHolder.offsetHeight + "px;z-index:" + (editor.options.zIndex + 1));
+ _$jscoverage['ui/editor.js'][546]++;
+ domUtils.on(doc, "mousemove", move);
+ _$jscoverage['ui/editor.js'][547]++;
+ domUtils.on(editorDocument, "mouseup", up);
+ _$jscoverage['ui/editor.js'][548]++;
+ domUtils.on(doc, "mouseup", up);
+}
+ _$jscoverage['ui/editor.js'][551]++;
+ var me = this;
+ _$jscoverage['ui/editor.js'][553]++;
+ this.editor.addListener("fullscreenchanged", (function (e, fullScreen) {
+ _$jscoverage['ui/editor.js'][554]++;
+ if (fullScreen) {
+ _$jscoverage['ui/editor.js'][555]++;
+ me.disableScale();
+ }
+ else {
+ _$jscoverage['ui/editor.js'][558]++;
+ if (me.editor.options.scaleEnabled) {
+ _$jscoverage['ui/editor.js'][559]++;
+ me.enableScale();
+ _$jscoverage['ui/editor.js'][560]++;
+ var tmpNode = me.editor.document.createElement("span");
+ _$jscoverage['ui/editor.js'][561]++;
+ me.editor.body.appendChild(tmpNode);
+ _$jscoverage['ui/editor.js'][562]++;
+ me.editor.body.style.height = (Math.max(domUtils.getXY(tmpNode).y, (me.editor.iframe.offsetHeight - 20)) + "px");
+ _$jscoverage['ui/editor.js'][563]++;
+ domUtils.remove(tmpNode);
+ }
+ }
+}));
+ _$jscoverage['ui/editor.js'][567]++;
+ function move(event) {
+ _$jscoverage['ui/editor.js'][568]++;
+ clearSelection();
+ _$jscoverage['ui/editor.js'][569]++;
+ var e = (event || window.event);
+ _$jscoverage['ui/editor.js'][570]++;
+ pageX = (e.pageX || (doc.documentElement.scrollLeft + e.clientX));
+ _$jscoverage['ui/editor.js'][571]++;
+ pageY = (e.pageY || (doc.documentElement.scrollTop + e.clientY));
+ _$jscoverage['ui/editor.js'][572]++;
+ scaleWidth = (pageX - position.x);
+ _$jscoverage['ui/editor.js'][573]++;
+ scaleHeight = (pageY - position.y);
+ _$jscoverage['ui/editor.js'][575]++;
+ if ((scaleWidth >= minEditorWidth)) {
+ _$jscoverage['ui/editor.js'][576]++;
+ isMouseMove = true;
+ _$jscoverage['ui/editor.js'][577]++;
+ scalelayer.style.width = (scaleWidth + "px");
+ }
+ _$jscoverage['ui/editor.js'][579]++;
+ if ((scaleHeight >= minEditorHeight)) {
+ _$jscoverage['ui/editor.js'][580]++;
+ isMouseMove = true;
+ _$jscoverage['ui/editor.js'][581]++;
+ scalelayer.style.height = (scaleHeight + "px");
+ }
+}
+ _$jscoverage['ui/editor.js'][585]++;
+ function up() {
+ _$jscoverage['ui/editor.js'][586]++;
+ if (isMouseMove) {
+ _$jscoverage['ui/editor.js'][587]++;
+ isMouseMove = false;
+ _$jscoverage['ui/editor.js'][588]++;
+ editor.ui._actualFrameWidth = (scalelayer.offsetWidth - 2);
+ _$jscoverage['ui/editor.js'][589]++;
+ editorHolder.style.width = (editor.ui._actualFrameWidth + "px");
+ _$jscoverage['ui/editor.js'][591]++;
+ editor.setHeight((scalelayer.offsetHeight - bottombar.offsetHeight - toolbarBox.offsetHeight - 2));
+ }
+ _$jscoverage['ui/editor.js'][593]++;
+ if (scalelayer) {
+ _$jscoverage['ui/editor.js'][594]++;
+ scalelayer.style.display = "none";
+ }
+ _$jscoverage['ui/editor.js'][596]++;
+ clearSelection();
+ _$jscoverage['ui/editor.js'][597]++;
+ domUtils.un(doc, "mousemove", move);
+ _$jscoverage['ui/editor.js'][598]++;
+ domUtils.un(editorDocument, "mouseup", up);
+ _$jscoverage['ui/editor.js'][599]++;
+ domUtils.un(doc, "mouseup", up);
+}
+ _$jscoverage['ui/editor.js'][602]++;
+ function clearSelection() {
+ _$jscoverage['ui/editor.js'][603]++;
+ if (browser.ie) {
+ _$jscoverage['ui/editor.js'][604]++;
+ doc.selection.clear();
+ }
+ else {
+ _$jscoverage['ui/editor.js'][606]++;
+ window.getSelection().removeAllRanges();
+ }
+}
+ _$jscoverage['ui/editor.js'][609]++;
+ this.enableScale = (function () {
+ _$jscoverage['ui/editor.js'][611]++;
+ if ((editor.queryCommandState("source") == 1)) {
+ _$jscoverage['ui/editor.js'][611]++;
+ return;
+ }
+ _$jscoverage['ui/editor.js'][612]++;
+ scale.style.display = "";
+ _$jscoverage['ui/editor.js'][613]++;
+ this.scaleEnabled = true;
+ _$jscoverage['ui/editor.js'][614]++;
+ domUtils.on(scale, "mousedown", down);
+});
+ _$jscoverage['ui/editor.js'][616]++;
+ this.disableScale = (function () {
+ _$jscoverage['ui/editor.js'][617]++;
+ scale.style.display = "none";
+ _$jscoverage['ui/editor.js'][618]++;
+ this.scaleEnabled = false;
+ _$jscoverage['ui/editor.js'][619]++;
+ domUtils.un(scale, "mousedown", down);
+});
+}), isFullScreen: (function () {
+ _$jscoverage['ui/editor.js'][623]++;
+ return this._fullscreen;
+}), postRender: (function () {
+ _$jscoverage['ui/editor.js'][626]++;
+ UIBase.prototype.postRender.call(this);
+ _$jscoverage['ui/editor.js'][627]++;
+ for (var i = 0; (i < this.toolbars.length); (i++)) {
+ _$jscoverage['ui/editor.js'][628]++;
+ this.toolbars[i].postRender();
+}
+ _$jscoverage['ui/editor.js'][630]++;
+ var me = this;
+ _$jscoverage['ui/editor.js'][631]++;
+ var timerId, domUtils = baidu.editor.dom.domUtils, updateFullScreenTime = (function () {
+ _$jscoverage['ui/editor.js'][634]++;
+ clearTimeout(timerId);
+ _$jscoverage['ui/editor.js'][635]++;
+ timerId = setTimeout((function () {
+ _$jscoverage['ui/editor.js'][636]++;
+ me._updateFullScreen();
+}));
+});
+ _$jscoverage['ui/editor.js'][639]++;
+ domUtils.on(window, "resize", updateFullScreenTime);
+ _$jscoverage['ui/editor.js'][641]++;
+ me.addListener("destroy", (function () {
+ _$jscoverage['ui/editor.js'][642]++;
+ domUtils.un(window, "resize", updateFullScreenTime);
+ _$jscoverage['ui/editor.js'][643]++;
+ clearTimeout(timerId);
+}));
+}), showToolbarMsg: (function (msg, flag) {
+ _$jscoverage['ui/editor.js'][647]++;
+ this.getDom("toolbarmsg_label").innerHTML = msg;
+ _$jscoverage['ui/editor.js'][648]++;
+ this.getDom("toolbarmsg").style.display = "";
+ _$jscoverage['ui/editor.js'][650]++;
+ if ((! flag)) {
+ _$jscoverage['ui/editor.js'][651]++;
+ var w = this.getDom("upload_dialog");
+ _$jscoverage['ui/editor.js'][652]++;
+ w.style.display = "none";
+ }
+}), hideToolbarMsg: (function () {
+ _$jscoverage['ui/editor.js'][656]++;
+ this.getDom("toolbarmsg").style.display = "none";
+}), mapUrl: (function (url) {
+ _$jscoverage['ui/editor.js'][659]++;
+ return (url? url.replace("~/", (this.editor.options.UEDITOR_HOME_URL || "")): "");
+}), triggerLayout: (function () {
+ _$jscoverage['ui/editor.js'][662]++;
+ var dom = this.getDom();
+ _$jscoverage['ui/editor.js'][663]++;
+ if ((dom.style.zoom == "1")) {
+ _$jscoverage['ui/editor.js'][664]++;
+ dom.style.zoom = "100%";
+ }
+ else {
+ _$jscoverage['ui/editor.js'][666]++;
+ dom.style.zoom = "1";
+ }
+})};
+ _$jscoverage['ui/editor.js'][670]++;
+ utils.inherits(EditorUI, baidu.editor.ui.UIBase);
+ _$jscoverage['ui/editor.js'][673]++;
+ var instances = {};
+ _$jscoverage['ui/editor.js'][676]++;
+ UE.ui.Editor = (function (options) {
+ _$jscoverage['ui/editor.js'][677]++;
+ var editor = new (UE.Editor)(options);
+ _$jscoverage['ui/editor.js'][678]++;
+ editor.options.editor = editor;
+ _$jscoverage['ui/editor.js'][679]++;
+ utils.loadFile(document, {href: (editor.options.themePath + editor.options.theme + "/_css/ueditor.css"), tag: "link", type: "text/css", rel: "stylesheet"});
+ _$jscoverage['ui/editor.js'][686]++;
+ var oldRender = editor.render;
+ _$jscoverage['ui/editor.js'][687]++;
+ editor.render = (function (holder) {
+ _$jscoverage['ui/editor.js'][688]++;
+ if ((holder.constructor === String)) {
+ _$jscoverage['ui/editor.js'][689]++;
+ editor.key = holder;
+ _$jscoverage['ui/editor.js'][690]++;
+ instances[holder] = editor;
+ }
+ _$jscoverage['ui/editor.js'][692]++;
+ utils.domReady((function () {
+ _$jscoverage['ui/editor.js'][693]++;
+ (editor.langIsReady? renderUI(): editor.addListener("langReady", renderUI));
+ _$jscoverage['ui/editor.js'][694]++;
+ function renderUI() {
+ _$jscoverage['ui/editor.js'][695]++;
+ editor.setOpt({labelMap: (editor.options.labelMap || editor.getLang("labelMap"))});
+ _$jscoverage['ui/editor.js'][698]++;
+ new EditorUI(editor.options);
+ _$jscoverage['ui/editor.js'][699]++;
+ if (holder) {
+ _$jscoverage['ui/editor.js'][700]++;
+ if ((holder.constructor === String)) {
+ _$jscoverage['ui/editor.js'][701]++;
+ holder = document.getElementById(holder);
+ }
+ _$jscoverage['ui/editor.js'][703]++;
+ (holder && holder.getAttribute("name") && (editor.options.textarea = holder.getAttribute("name")));
+ _$jscoverage['ui/editor.js'][704]++;
+ if ((holder && /script|textarea/gi.test(holder.tagName))) {
+ _$jscoverage['ui/editor.js'][705]++;
+ var newDiv = document.createElement("div");
+ _$jscoverage['ui/editor.js'][706]++;
+ holder.parentNode.insertBefore(newDiv, holder);
+ _$jscoverage['ui/editor.js'][707]++;
+ var cont = (holder.value || holder.innerHTML);
+ _$jscoverage['ui/editor.js'][708]++;
+ editor.options.initialContent = (/^[\t\r\n ]*$/.test(cont)? editor.options.initialContent: cont.replace(/>[\n\r\t]+([ ]{4})+/g, ">").replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<"));
+ _$jscoverage['ui/editor.js'][712]++;
+ (holder.className && (newDiv.className = holder.className));
+ _$jscoverage['ui/editor.js'][713]++;
+ (holder.style.cssText && (newDiv.style.cssText = holder.style.cssText));
+ _$jscoverage['ui/editor.js'][714]++;
+ if (/textarea/i.test(holder.tagName)) {
+ _$jscoverage['ui/editor.js'][715]++;
+ editor.textarea = holder;
+ _$jscoverage['ui/editor.js'][716]++;
+ editor.textarea.style.display = "none";
+ }
+ else {
+ _$jscoverage['ui/editor.js'][719]++;
+ holder.parentNode.removeChild(holder);
+ _$jscoverage['ui/editor.js'][720]++;
+ (holder.id && (newDiv.id = holder.id));
+ }
+ _$jscoverage['ui/editor.js'][722]++;
+ holder = newDiv;
+ _$jscoverage['ui/editor.js'][723]++;
+ holder.innerHTML = "";
+ }
+ }
+ _$jscoverage['ui/editor.js'][727]++;
+ domUtils.addClass(holder, ("edui-" + editor.options.theme));
+ _$jscoverage['ui/editor.js'][728]++;
+ editor.ui.render(holder);
+ _$jscoverage['ui/editor.js'][729]++;
+ var opt = editor.options;
+ _$jscoverage['ui/editor.js'][731]++;
+ editor.container = editor.ui.getDom();
+ _$jscoverage['ui/editor.js'][732]++;
+ var parents = domUtils.findParents(holder, true);
+ _$jscoverage['ui/editor.js'][733]++;
+ var displays = [];
+ _$jscoverage['ui/editor.js'][734]++;
+ for (var i = 0, ci; (ci = parents[i]); (i++)) {
+ _$jscoverage['ui/editor.js'][735]++;
+ displays[i] = ci.style.display;
+ _$jscoverage['ui/editor.js'][736]++;
+ ci.style.display = "block";
+}
+ _$jscoverage['ui/editor.js'][738]++;
+ if (opt.initialFrameWidth) {
+ _$jscoverage['ui/editor.js'][739]++;
+ opt.minFrameWidth = opt.initialFrameWidth;
+ }
+ else {
+ _$jscoverage['ui/editor.js'][741]++;
+ opt.minFrameWidth = (opt.initialFrameWidth = holder.offsetWidth);
+ }
+ _$jscoverage['ui/editor.js'][743]++;
+ if (opt.initialFrameHeight) {
+ _$jscoverage['ui/editor.js'][744]++;
+ opt.minFrameHeight = opt.initialFrameHeight;
+ }
+ else {
+ _$jscoverage['ui/editor.js'][746]++;
+ opt.initialFrameHeight = (opt.minFrameHeight = holder.offsetHeight);
+ }
+ _$jscoverage['ui/editor.js'][748]++;
+ for (var i = 0, ci = ci; (ci = parents[i]); (i++)) {
+ _$jscoverage['ui/editor.js'][749]++;
+ ci.style.display = displays[i];
+}
+ _$jscoverage['ui/editor.js'][753]++;
+ if (holder.style.height) {
+ _$jscoverage['ui/editor.js'][754]++;
+ holder.style.height = "";
+ }
+ _$jscoverage['ui/editor.js'][756]++;
+ editor.container.style.width = (opt.initialFrameWidth + (/%$/.test(opt.initialFrameWidth)? "": "px"));
+ _$jscoverage['ui/editor.js'][757]++;
+ editor.container.style.zIndex = opt.zIndex;
+ _$jscoverage['ui/editor.js'][758]++;
+ oldRender.call(editor, editor.ui.getDom("iframeholder"));
+}
+}));
+});
+ _$jscoverage['ui/editor.js'][763]++;
+ return editor;
+});
+ _$jscoverage['ui/editor.js'][788]++;
+ UE.getEditor = (function (id, opt) {
+ _$jscoverage['ui/editor.js'][789]++;
+ var editor = instances[id];
+ _$jscoverage['ui/editor.js'][790]++;
+ if ((! editor)) {
+ _$jscoverage['ui/editor.js'][791]++;
+ editor = (instances[id] = new (UE.ui.Editor)(opt));
+ _$jscoverage['ui/editor.js'][792]++;
+ editor.render(id);
+ }
+ _$jscoverage['ui/editor.js'][794]++;
+ return editor;
+});
+ _$jscoverage['ui/editor.js'][798]++;
+ UE.delEditor = (function (id) {
+ _$jscoverage['ui/editor.js'][799]++;
+ var editor;
+ _$jscoverage['ui/editor.js'][800]++;
+ if ((editor = instances[id])) {
+ _$jscoverage['ui/editor.js'][801]++;
+ (editor.key && editor.destroy());
+ _$jscoverage['ui/editor.js'][802]++;
+ (delete instances[id]);
+ }
+});
+})();
diff --git a/_test/coverage/ui/editorui.js b/_test/coverage/ui/editorui.js
new file mode 100644
index 000000000..61249dfff
--- /dev/null
+++ b/_test/coverage/ui/editorui.js
@@ -0,0 +1,1302 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/editorui.js']) {
+ _$jscoverage['ui/editorui.js'] = [];
+ _$jscoverage['ui/editorui.js'][4] = 0;
+ _$jscoverage['ui/editorui.js'][5] = 0;
+ _$jscoverage['ui/editorui.js'][6] = 0;
+ _$jscoverage['ui/editorui.js'][7] = 0;
+ _$jscoverage['ui/editorui.js'][8] = 0;
+ _$jscoverage['ui/editorui.js'][10] = 0;
+ _$jscoverage['ui/editorui.js'][11] = 0;
+ _$jscoverage['ui/editorui.js'][12] = 0;
+ _$jscoverage['ui/editorui.js'][14] = 0;
+ _$jscoverage['ui/editorui.js'][15] = 0;
+ _$jscoverage['ui/editorui.js'][16] = 0;
+ _$jscoverage['ui/editorui.js'][17] = 0;
+ _$jscoverage['ui/editorui.js'][18] = 0;
+ _$jscoverage['ui/editorui.js'][20] = 0;
+ _$jscoverage['ui/editorui.js'][21] = 0;
+ _$jscoverage['ui/editorui.js'][23] = 0;
+ _$jscoverage['ui/editorui.js'][31] = 0;
+ _$jscoverage['ui/editorui.js'][34] = 0;
+ _$jscoverage['ui/editorui.js'][60] = 0;
+ _$jscoverage['ui/editorui.js'][68] = 0;
+ _$jscoverage['ui/editorui.js'][69] = 0;
+ _$jscoverage['ui/editorui.js'][70] = 0;
+ _$jscoverage['ui/editorui.js'][71] = 0;
+ _$jscoverage['ui/editorui.js'][72] = 0;
+ _$jscoverage['ui/editorui.js'][76] = 0;
+ _$jscoverage['ui/editorui.js'][81] = 0;
+ _$jscoverage['ui/editorui.js'][82] = 0;
+ _$jscoverage['ui/editorui.js'][83] = 0;
+ _$jscoverage['ui/editorui.js'][84] = 0;
+ _$jscoverage['ui/editorui.js'][85] = 0;
+ _$jscoverage['ui/editorui.js'][86] = 0;
+ _$jscoverage['ui/editorui.js'][88] = 0;
+ _$jscoverage['ui/editorui.js'][89] = 0;
+ _$jscoverage['ui/editorui.js'][90] = 0;
+ _$jscoverage['ui/editorui.js'][94] = 0;
+ _$jscoverage['ui/editorui.js'][100] = 0;
+ _$jscoverage['ui/editorui.js'][101] = 0;
+ _$jscoverage['ui/editorui.js'][106] = 0;
+ _$jscoverage['ui/editorui.js'][107] = 0;
+ _$jscoverage['ui/editorui.js'][111] = 0;
+ _$jscoverage['ui/editorui.js'][112] = 0;
+ _$jscoverage['ui/editorui.js'][113] = 0;
+ _$jscoverage['ui/editorui.js'][115] = 0;
+ _$jscoverage['ui/editorui.js'][119] = 0;
+ _$jscoverage['ui/editorui.js'][125] = 0;
+ _$jscoverage['ui/editorui.js'][127] = 0;
+ _$jscoverage['ui/editorui.js'][128] = 0;
+ _$jscoverage['ui/editorui.js'][129] = 0;
+ _$jscoverage['ui/editorui.js'][130] = 0;
+ _$jscoverage['ui/editorui.js'][131] = 0;
+ _$jscoverage['ui/editorui.js'][136] = 0;
+ _$jscoverage['ui/editorui.js'][139] = 0;
+ _$jscoverage['ui/editorui.js'][140] = 0;
+ _$jscoverage['ui/editorui.js'][141] = 0;
+ _$jscoverage['ui/editorui.js'][142] = 0;
+ _$jscoverage['ui/editorui.js'][144] = 0;
+ _$jscoverage['ui/editorui.js'][152] = 0;
+ _$jscoverage['ui/editorui.js'][153] = 0;
+ _$jscoverage['ui/editorui.js'][154] = 0;
+ _$jscoverage['ui/editorui.js'][155] = 0;
+ _$jscoverage['ui/editorui.js'][161] = 0;
+ _$jscoverage['ui/editorui.js'][164] = 0;
+ _$jscoverage['ui/editorui.js'][165] = 0;
+ _$jscoverage['ui/editorui.js'][166] = 0;
+ _$jscoverage['ui/editorui.js'][169] = 0;
+ _$jscoverage['ui/editorui.js'][172] = 0;
+ _$jscoverage['ui/editorui.js'][173] = 0;
+ _$jscoverage['ui/editorui.js'][174] = 0;
+ _$jscoverage['ui/editorui.js'][176] = 0;
+ _$jscoverage['ui/editorui.js'][182] = 0;
+ _$jscoverage['ui/editorui.js'][189] = 0;
+ _$jscoverage['ui/editorui.js'][190] = 0;
+ _$jscoverage['ui/editorui.js'][191] = 0;
+ _$jscoverage['ui/editorui.js'][193] = 0;
+ _$jscoverage['ui/editorui.js'][194] = 0;
+ _$jscoverage['ui/editorui.js'][196] = 0;
+ _$jscoverage['ui/editorui.js'][197] = 0;
+ _$jscoverage['ui/editorui.js'][198] = 0;
+ _$jscoverage['ui/editorui.js'][199] = 0;
+ _$jscoverage['ui/editorui.js'][201] = 0;
+ _$jscoverage['ui/editorui.js'][203] = 0;
+ _$jscoverage['ui/editorui.js'][204] = 0;
+ _$jscoverage['ui/editorui.js'][218] = 0;
+ _$jscoverage['ui/editorui.js'][226] = 0;
+ _$jscoverage['ui/editorui.js'][232] = 0;
+ _$jscoverage['ui/editorui.js'][235] = 0;
+ _$jscoverage['ui/editorui.js'][239] = 0;
+ _$jscoverage['ui/editorui.js'][240] = 0;
+ _$jscoverage['ui/editorui.js'][242] = 0;
+ _$jscoverage['ui/editorui.js'][243] = 0;
+ _$jscoverage['ui/editorui.js'][244] = 0;
+ _$jscoverage['ui/editorui.js'][245] = 0;
+ _$jscoverage['ui/editorui.js'][247] = 0;
+ _$jscoverage['ui/editorui.js'][249] = 0;
+ _$jscoverage['ui/editorui.js'][250] = 0;
+ _$jscoverage['ui/editorui.js'][251] = 0;
+ _$jscoverage['ui/editorui.js'][254] = 0;
+ _$jscoverage['ui/editorui.js'][256] = 0;
+ _$jscoverage['ui/editorui.js'][257] = 0;
+ _$jscoverage['ui/editorui.js'][264] = 0;
+ _$jscoverage['ui/editorui.js'][265] = 0;
+ _$jscoverage['ui/editorui.js'][267] = 0;
+ _$jscoverage['ui/editorui.js'][268] = 0;
+ _$jscoverage['ui/editorui.js'][270] = 0;
+ _$jscoverage['ui/editorui.js'][271] = 0;
+ _$jscoverage['ui/editorui.js'][272] = 0;
+ _$jscoverage['ui/editorui.js'][273] = 0;
+ _$jscoverage['ui/editorui.js'][278] = 0;
+ _$jscoverage['ui/editorui.js'][285] = 0;
+ _$jscoverage['ui/editorui.js'][286] = 0;
+ _$jscoverage['ui/editorui.js'][287] = 0;
+ _$jscoverage['ui/editorui.js'][291] = 0;
+ _$jscoverage['ui/editorui.js'][296] = 0;
+ _$jscoverage['ui/editorui.js'][297] = 0;
+ _$jscoverage['ui/editorui.js'][298] = 0;
+ _$jscoverage['ui/editorui.js'][299] = 0;
+ _$jscoverage['ui/editorui.js'][310] = 0;
+ _$jscoverage['ui/editorui.js'][318] = 0;
+ _$jscoverage['ui/editorui.js'][324] = 0;
+ _$jscoverage['ui/editorui.js'][325] = 0;
+ _$jscoverage['ui/editorui.js'][327] = 0;
+ _$jscoverage['ui/editorui.js'][328] = 0;
+ _$jscoverage['ui/editorui.js'][330] = 0;
+ _$jscoverage['ui/editorui.js'][333] = 0;
+ _$jscoverage['ui/editorui.js'][334] = 0;
+ _$jscoverage['ui/editorui.js'][335] = 0;
+ _$jscoverage['ui/editorui.js'][337] = 0;
+ _$jscoverage['ui/editorui.js'][338] = 0;
+ _$jscoverage['ui/editorui.js'][339] = 0;
+ _$jscoverage['ui/editorui.js'][344] = 0;
+ _$jscoverage['ui/editorui.js'][349] = 0;
+ _$jscoverage['ui/editorui.js'][353] = 0;
+ _$jscoverage['ui/editorui.js'][356] = 0;
+ _$jscoverage['ui/editorui.js'][362] = 0;
+ _$jscoverage['ui/editorui.js'][363] = 0;
+ _$jscoverage['ui/editorui.js'][364] = 0;
+ _$jscoverage['ui/editorui.js'][365] = 0;
+ _$jscoverage['ui/editorui.js'][369] = 0;
+ _$jscoverage['ui/editorui.js'][372] = 0;
+ _$jscoverage['ui/editorui.js'][373] = 0;
+ _$jscoverage['ui/editorui.js'][374] = 0;
+ _$jscoverage['ui/editorui.js'][375] = 0;
+ _$jscoverage['ui/editorui.js'][376] = 0;
+ _$jscoverage['ui/editorui.js'][377] = 0;
+ _$jscoverage['ui/editorui.js'][379] = 0;
+ _$jscoverage['ui/editorui.js'][380] = 0;
+ _$jscoverage['ui/editorui.js'][381] = 0;
+ _$jscoverage['ui/editorui.js'][382] = 0;
+ _$jscoverage['ui/editorui.js'][383] = 0;
+ _$jscoverage['ui/editorui.js'][386] = 0;
+ _$jscoverage['ui/editorui.js'][387] = 0;
+ _$jscoverage['ui/editorui.js'][393] = 0;
+ _$jscoverage['ui/editorui.js'][395] = 0;
+ _$jscoverage['ui/editorui.js'][397] = 0;
+ _$jscoverage['ui/editorui.js'][398] = 0;
+ _$jscoverage['ui/editorui.js'][399] = 0;
+ _$jscoverage['ui/editorui.js'][400] = 0;
+ _$jscoverage['ui/editorui.js'][401] = 0;
+ _$jscoverage['ui/editorui.js'][402] = 0;
+ _$jscoverage['ui/editorui.js'][403] = 0;
+ _$jscoverage['ui/editorui.js'][408] = 0;
+ _$jscoverage['ui/editorui.js'][414] = 0;
+ _$jscoverage['ui/editorui.js'][418] = 0;
+ _$jscoverage['ui/editorui.js'][421] = 0;
+ _$jscoverage['ui/editorui.js'][427] = 0;
+ _$jscoverage['ui/editorui.js'][428] = 0;
+ _$jscoverage['ui/editorui.js'][429] = 0;
+ _$jscoverage['ui/editorui.js'][430] = 0;
+ _$jscoverage['ui/editorui.js'][434] = 0;
+ _$jscoverage['ui/editorui.js'][437] = 0;
+ _$jscoverage['ui/editorui.js'][438] = 0;
+ _$jscoverage['ui/editorui.js'][439] = 0;
+ _$jscoverage['ui/editorui.js'][440] = 0;
+ _$jscoverage['ui/editorui.js'][441] = 0;
+ _$jscoverage['ui/editorui.js'][442] = 0;
+ _$jscoverage['ui/editorui.js'][444] = 0;
+ _$jscoverage['ui/editorui.js'][445] = 0;
+ _$jscoverage['ui/editorui.js'][447] = 0;
+ _$jscoverage['ui/editorui.js'][448] = 0;
+ _$jscoverage['ui/editorui.js'][454] = 0;
+ _$jscoverage['ui/editorui.js'][457] = 0;
+ _$jscoverage['ui/editorui.js'][458] = 0;
+ _$jscoverage['ui/editorui.js'][459] = 0;
+ _$jscoverage['ui/editorui.js'][460] = 0;
+ _$jscoverage['ui/editorui.js'][461] = 0;
+ _$jscoverage['ui/editorui.js'][462] = 0;
+ _$jscoverage['ui/editorui.js'][463] = 0;
+ _$jscoverage['ui/editorui.js'][464] = 0;
+ _$jscoverage['ui/editorui.js'][469] = 0;
+ _$jscoverage['ui/editorui.js'][474] = 0;
+ _$jscoverage['ui/editorui.js'][480] = 0;
+ _$jscoverage['ui/editorui.js'][483] = 0;
+ _$jscoverage['ui/editorui.js'][487] = 0;
+ _$jscoverage['ui/editorui.js'][488] = 0;
+ _$jscoverage['ui/editorui.js'][489] = 0;
+ _$jscoverage['ui/editorui.js'][490] = 0;
+ _$jscoverage['ui/editorui.js'][491] = 0;
+ _$jscoverage['ui/editorui.js'][492] = 0;
+ _$jscoverage['ui/editorui.js'][494] = 0;
+ _$jscoverage['ui/editorui.js'][495] = 0;
+ _$jscoverage['ui/editorui.js'][500] = 0;
+ _$jscoverage['ui/editorui.js'][503] = 0;
+ _$jscoverage['ui/editorui.js'][504] = 0;
+ _$jscoverage['ui/editorui.js'][505] = 0;
+ _$jscoverage['ui/editorui.js'][506] = 0;
+ _$jscoverage['ui/editorui.js'][507] = 0;
+ _$jscoverage['ui/editorui.js'][508] = 0;
+ _$jscoverage['ui/editorui.js'][509] = 0;
+ _$jscoverage['ui/editorui.js'][514] = 0;
+ _$jscoverage['ui/editorui.js'][518] = 0;
+ _$jscoverage['ui/editorui.js'][525] = 0;
+ _$jscoverage['ui/editorui.js'][528] = 0;
+ _$jscoverage['ui/editorui.js'][531] = 0;
+ _$jscoverage['ui/editorui.js'][532] = 0;
+ _$jscoverage['ui/editorui.js'][533] = 0;
+ _$jscoverage['ui/editorui.js'][534] = 0;
+ _$jscoverage['ui/editorui.js'][535] = 0;
+ _$jscoverage['ui/editorui.js'][536] = 0;
+ _$jscoverage['ui/editorui.js'][538] = 0;
+ _$jscoverage['ui/editorui.js'][539] = 0;
+ _$jscoverage['ui/editorui.js'][540] = 0;
+ _$jscoverage['ui/editorui.js'][541] = 0;
+ _$jscoverage['ui/editorui.js'][542] = 0;
+ _$jscoverage['ui/editorui.js'][544] = 0;
+ _$jscoverage['ui/editorui.js'][550] = 0;
+ _$jscoverage['ui/editorui.js'][555] = 0;
+ _$jscoverage['ui/editorui.js'][556] = 0;
+ _$jscoverage['ui/editorui.js'][558] = 0;
+ _$jscoverage['ui/editorui.js'][559] = 0;
+ _$jscoverage['ui/editorui.js'][560] = 0;
+ _$jscoverage['ui/editorui.js'][561] = 0;
+ _$jscoverage['ui/editorui.js'][562] = 0;
+ _$jscoverage['ui/editorui.js'][563] = 0;
+ _$jscoverage['ui/editorui.js'][564] = 0;
+ _$jscoverage['ui/editorui.js'][565] = 0;
+ _$jscoverage['ui/editorui.js'][566] = 0;
+ _$jscoverage['ui/editorui.js'][567] = 0;
+ _$jscoverage['ui/editorui.js'][572] = 0;
+ _$jscoverage['ui/editorui.js'][580] = 0;
+ _$jscoverage['ui/editorui.js'][587] = 0;
+ _$jscoverage['ui/editorui.js'][590] = 0;
+ _$jscoverage['ui/editorui.js'][593] = 0;
+ _$jscoverage['ui/editorui.js'][594] = 0;
+ _$jscoverage['ui/editorui.js'][595] = 0;
+ _$jscoverage['ui/editorui.js'][598] = 0;
+ _$jscoverage['ui/editorui.js'][601] = 0;
+ _$jscoverage['ui/editorui.js'][602] = 0;
+ _$jscoverage['ui/editorui.js'][603] = 0;
+ _$jscoverage['ui/editorui.js'][604] = 0;
+ _$jscoverage['ui/editorui.js'][605] = 0;
+ _$jscoverage['ui/editorui.js'][606] = 0;
+ _$jscoverage['ui/editorui.js'][608] = 0;
+ _$jscoverage['ui/editorui.js'][609] = 0;
+ _$jscoverage['ui/editorui.js'][610] = 0;
+ _$jscoverage['ui/editorui.js'][611] = 0;
+ _$jscoverage['ui/editorui.js'][612] = 0;
+ _$jscoverage['ui/editorui.js'][614] = 0;
+ _$jscoverage['ui/editorui.js'][620] = 0;
+ _$jscoverage['ui/editorui.js'][622] = 0;
+ _$jscoverage['ui/editorui.js'][623] = 0;
+ _$jscoverage['ui/editorui.js'][624] = 0;
+ _$jscoverage['ui/editorui.js'][629] = 0;
+ _$jscoverage['ui/editorui.js'][632] = 0;
+ _$jscoverage['ui/editorui.js'][635] = 0;
+ _$jscoverage['ui/editorui.js'][636] = 0;
+ _$jscoverage['ui/editorui.js'][637] = 0;
+ _$jscoverage['ui/editorui.js'][639] = 0;
+ _$jscoverage['ui/editorui.js'][642] = 0;
+ _$jscoverage['ui/editorui.js'][643] = 0;
+ _$jscoverage['ui/editorui.js'][644] = 0;
+ _$jscoverage['ui/editorui.js'][645] = 0;
+ _$jscoverage['ui/editorui.js'][646] = 0;
+ _$jscoverage['ui/editorui.js'][652] = 0;
+ _$jscoverage['ui/editorui.js'][656] = 0;
+ _$jscoverage['ui/editorui.js'][662] = 0;
+ _$jscoverage['ui/editorui.js'][663] = 0;
+ _$jscoverage['ui/editorui.js'][666] = 0;
+ _$jscoverage['ui/editorui.js'][667] = 0;
+ _$jscoverage['ui/editorui.js'][668] = 0;
+ _$jscoverage['ui/editorui.js'][669] = 0;
+ _$jscoverage['ui/editorui.js'][670] = 0;
+ _$jscoverage['ui/editorui.js'][672] = 0;
+ _$jscoverage['ui/editorui.js'][673] = 0;
+ _$jscoverage['ui/editorui.js'][674] = 0;
+ _$jscoverage['ui/editorui.js'][675] = 0;
+ _$jscoverage['ui/editorui.js'][678] = 0;
+ _$jscoverage['ui/editorui.js'][681] = 0;
+ _$jscoverage['ui/editorui.js'][682] = 0;
+ _$jscoverage['ui/editorui.js'][683] = 0;
+ _$jscoverage['ui/editorui.js'][684] = 0;
+ _$jscoverage['ui/editorui.js'][685] = 0;
+ _$jscoverage['ui/editorui.js'][686] = 0;
+ _$jscoverage['ui/editorui.js'][687] = 0;
+ _$jscoverage['ui/editorui.js'][688] = 0;
+ _$jscoverage['ui/editorui.js'][693] = 0;
+ _$jscoverage['ui/editorui.js'][697] = 0;
+ _$jscoverage['ui/editorui.js'][703] = 0;
+ _$jscoverage['ui/editorui.js'][704] = 0;
+ _$jscoverage['ui/editorui.js'][707] = 0;
+ _$jscoverage['ui/editorui.js'][708] = 0;
+ _$jscoverage['ui/editorui.js'][709] = 0;
+ _$jscoverage['ui/editorui.js'][710] = 0;
+ _$jscoverage['ui/editorui.js'][711] = 0;
+ _$jscoverage['ui/editorui.js'][713] = 0;
+ _$jscoverage['ui/editorui.js'][714] = 0;
+ _$jscoverage['ui/editorui.js'][715] = 0;
+ _$jscoverage['ui/editorui.js'][716] = 0;
+ _$jscoverage['ui/editorui.js'][719] = 0;
+ _$jscoverage['ui/editorui.js'][724] = 0;
+ _$jscoverage['ui/editorui.js'][725] = 0;
+ _$jscoverage['ui/editorui.js'][726] = 0;
+ _$jscoverage['ui/editorui.js'][727] = 0;
+ _$jscoverage['ui/editorui.js'][728] = 0;
+ _$jscoverage['ui/editorui.js'][730] = 0;
+ _$jscoverage['ui/editorui.js'][732] = 0;
+ _$jscoverage['ui/editorui.js'][733] = 0;
+ _$jscoverage['ui/editorui.js'][740] = 0;
+ _$jscoverage['ui/editorui.js'][746] = 0;
+ _$jscoverage['ui/editorui.js'][747] = 0;
+ _$jscoverage['ui/editorui.js'][750] = 0;
+ _$jscoverage['ui/editorui.js'][751] = 0;
+ _$jscoverage['ui/editorui.js'][752] = 0;
+ _$jscoverage['ui/editorui.js'][753] = 0;
+ _$jscoverage['ui/editorui.js'][754] = 0;
+ _$jscoverage['ui/editorui.js'][756] = 0;
+ _$jscoverage['ui/editorui.js'][757] = 0;
+ _$jscoverage['ui/editorui.js'][758] = 0;
+ _$jscoverage['ui/editorui.js'][759] = 0;
+ _$jscoverage['ui/editorui.js'][762] = 0;
+ _$jscoverage['ui/editorui.js'][767] = 0;
+ _$jscoverage['ui/editorui.js'][768] = 0;
+ _$jscoverage['ui/editorui.js'][769] = 0;
+ _$jscoverage['ui/editorui.js'][774] = 0;
+ _$jscoverage['ui/editorui.js'][775] = 0;
+ _$jscoverage['ui/editorui.js'][777] = 0;
+ _$jscoverage['ui/editorui.js'][780] = 0;
+ _$jscoverage['ui/editorui.js'][781] = 0;
+ _$jscoverage['ui/editorui.js'][782] = 0;
+ _$jscoverage['ui/editorui.js'][783] = 0;
+ _$jscoverage['ui/editorui.js'][784] = 0;
+ _$jscoverage['ui/editorui.js'][786] = 0;
+ _$jscoverage['ui/editorui.js'][790] = 0;
+ _$jscoverage['ui/editorui.js'][791] = 0;
+ _$jscoverage['ui/editorui.js'][792] = 0;
+ _$jscoverage['ui/editorui.js'][798] = 0;
+ _$jscoverage['ui/editorui.js'][800] = 0;
+ _$jscoverage['ui/editorui.js'][801] = 0;
+ _$jscoverage['ui/editorui.js'][803] = 0;
+ _$jscoverage['ui/editorui.js'][806] = 0;
+ _$jscoverage['ui/editorui.js'][807] = 0;
+ _$jscoverage['ui/editorui.js'][812] = 0;
+ _$jscoverage['ui/editorui.js'][815] = 0;
+ _$jscoverage['ui/editorui.js'][816] = 0;
+ _$jscoverage['ui/editorui.js'][817] = 0;
+ _$jscoverage['ui/editorui.js'][819] = 0;
+}
+_$jscoverage['ui/editorui.js'].source = ["//ui跟编辑器的适配層 ","//那个按钮弹出是dialog,是下拉筐等都是在这个js中配置 ","//自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化 ","( function () { "," var utils = baidu. editor. utils; "," var editorui = baidu. editor. ui; "," var _Dialog = editorui. Dialog; "," editorui. buttons = {} ; ",""," editorui. Dialog = function ( options) { "," var dialog = new _Dialog( options); "," dialog. addListener( 'hide' , function () { ",""," if ( dialog. editor) { "," var editor = dialog. editor; "," try { "," if ( browser. gecko) { "," var y = editor. window. scrollY, "," x = editor. window. scrollX; "," editor. body. focus(); "," editor. window. scrollTo( x, y); "," } else { "," editor. focus(); "," } ","",""," } catch ( ex) { "," } "," } "," } ); "," return dialog; "," } ; ",""," var iframeUrlMap = { "," 'anchor' : '~/dialogs/anchor/anchor.html' , "," 'insertimage' : '~/dialogs/image/image.html' , "," 'link' : '~/dialogs/link/link.html' , "," 'spechars' : '~/dialogs/spechars/spechars.html' , "," 'searchreplace' : '~/dialogs/searchreplace/searchreplace.html' , "," 'map' : '~/dialogs/map/map.html' , "," 'gmap' : '~/dialogs/gmap/gmap.html' , "," 'insertvideo' : '~/dialogs/video/video.html' , "," 'help' : '~/dialogs/help/help.html' , "," //'highlightcode':'~/dialogs/highlightcode/highlightcode.html', "," 'emotion' : '~/dialogs/emotion/emotion.html' , "," 'wordimage' : '~/dialogs/wordimage/wordimage.html' , "," 'attachment' : '~/dialogs/attachment/attachment.html' , "," 'insertframe' : '~/dialogs/insertframe/insertframe.html' , "," 'edittip' : '~/dialogs/table/edittip.html' , "," 'edittable' : '~/dialogs/table/edittable.html' , "," 'edittd' : '~/dialogs/table/edittd.html' , "," 'webapp' : '~/dialogs/webapp/webapp.html' , "," 'snapscreen' : '~/dialogs/snapscreen/snapscreen.html' , "," 'scrawl' : '~/dialogs/scrawl/scrawl.html' , "," 'music' : '~/dialogs/music/music.html' , "," 'template' : '~/dialogs/template/template.html' , "," 'background' : '~/dialogs/background/background.html' "," } ; "," //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起 "," var btnCmds = [ 'undo' , 'redo' , 'formatmatch' , "," 'bold' , 'italic' , 'underline' , 'fontborder' , 'touppercase' , 'tolowercase' , "," 'strikethrough' , 'subscript' , 'superscript' , 'source' , 'indent' , 'outdent' , "," 'blockquote' , 'pasteplain' , 'pagebreak' , "," 'selectall' , 'print' , 'preview' , 'horizontal' , 'removeformat' , 'time' , 'date' , 'unlink' , "," 'insertparagraphbeforetable' , 'insertrow' , 'insertcol' , 'mergeright' , 'mergedown' , 'deleterow' , "," 'deletecol' , 'splittorows' , 'splittocols' , 'splittocells' , 'mergecells' , 'deletetable' ]; ",""," for ( var i = 0 , ci; ci = btnCmds[ i++];) { "," ci = ci. toLowerCase(); "," editorui[ ci] = function ( cmd) { "," return function ( editor) { "," var ui = new editorui. Button( { "," className: 'edui-for-' + cmd, "," title: editor. options. labelMap[ cmd] || editor. getLang( \"labelMap.\" + cmd) || '' , "," onclick: function () { "," editor. execCommand( cmd); "," } , "," theme: editor. options. theme, "," showText: false "," } ); "," editorui. buttons[ cmd] = ui; "," editor. addListener( 'selectionchange' , function ( type, causeByUi, uiReady) { "," var state = editor. queryCommandState( cmd); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," ui. setChecked( false ); "," } else { "," if (! uiReady) { "," ui. setDisabled( false ); "," ui. setChecked( state); "," } "," } "," } ); "," return ui; "," } ; "," } ( ci); "," } ",""," //清除文档 "," editorui. cleardoc = function ( editor) { "," var ui = new editorui. Button( { "," className: 'edui-for-cleardoc' , "," title: editor. options. labelMap. cleardoc || editor. getLang( \"labelMap.cleardoc\" ) || '' , "," theme: editor. options. theme, "," onclick: function () { "," if ( confirm( editor. getLang( \"confirmClear\" ))) { "," editor. execCommand( 'cleardoc' ); "," } "," } "," } ); "," editorui. buttons[ \"cleardoc\" ] = ui; "," editor. addListener( 'selectionchange' , function () { "," ui. setDisabled( editor. queryCommandState( 'cleardoc' ) == - 1 ); "," } ); "," return ui; "," } ; ",""," //排版,图片排版,文字方向 "," var typeset = { "," 'justify' :[ 'left' , 'right' , 'center' , 'justify' ], "," 'imagefloat' :[ 'none' , 'left' , 'center' , 'right' ], "," 'directionality' :[ 'ltr' , 'rtl' ] "," } ; ",""," for ( var p in typeset) { ",""," ( function ( cmd, val) { "," for ( var i = 0 , ci; ci = val[ i++];) { "," ( function ( cmd2) { "," editorui[ cmd. replace( 'float' , '' ) + cmd2] = function ( editor) { "," var ui = new editorui. Button( { "," className: 'edui-for-' + cmd. replace( 'float' , '' ) + cmd2, "," title: editor. options. labelMap[ cmd. replace( 'float' , '' ) + cmd2] || editor. getLang( \"labelMap.\" + cmd. replace( 'float' , '' ) + cmd2) || '' , "," theme: editor. options. theme, "," onclick: function () { "," editor. execCommand( cmd, cmd2); "," } "," } ); "," editorui. buttons[ cmd] = ui; "," editor. addListener( 'selectionchange' , function ( type, causeByUi, uiReady) { "," ui. setDisabled( editor. queryCommandState( cmd) == - 1 ); "," ui. setChecked( editor. queryCommandValue( cmd) == cmd2 && ! uiReady); "," } ); "," return ui; "," } ; "," } )( ci) "," } "," } )( p, typeset[ p]) "," } ",""," //字体颜色和背景颜色 "," for ( var i = 0 , ci; ci = [ 'backcolor' , 'forecolor' ][ i++];) { "," editorui[ ci] = function ( cmd) { "," return function ( editor) { "," var ui = new editorui. ColorButton( { "," className: 'edui-for-' + cmd, "," color: 'default' , "," title: editor. options. labelMap[ cmd] || editor. getLang( \"labelMap.\" + cmd) || '' , "," editor: editor, "," onpickcolor: function ( t, color) { "," editor. execCommand( cmd, color); "," } , "," onpicknocolor: function () { "," editor. execCommand( cmd, 'default' ); "," this . setColor( 'transparent' ); "," this . color = 'default' ; "," } , "," onbuttonclick: function () { "," editor. execCommand( cmd, this . color); "," } "," } ); "," editorui. buttons[ cmd] = ui; "," editor. addListener( 'selectionchange' , function () { "," ui. setDisabled( editor. queryCommandState( cmd) == - 1 ); "," } ); "," return ui; "," } ; "," } ( ci); "," } ","",""," var dialogBtns = { "," noOk:[ 'searchreplace' , 'help' , 'spechars' , 'webapp' ], "," ok:[ 'attachment' , 'anchor' , 'link' , 'insertimage' , 'map' , 'gmap' , 'insertframe' , 'wordimage' , "," 'insertvideo' , 'insertframe' , 'edittip' , 'edittable' , 'edittd' , 'scrawl' , 'template' , 'music' , 'background' ] ",""," } ; ",""," for ( var p in dialogBtns) { "," ( function ( type, vals) { "," for ( var i = 0 , ci; ci = vals[ i++];) { "," //todo opera下存在问题 "," if ( browser. opera && ci === \"searchreplace\" ) { "," continue ; "," } "," ( function ( cmd) { "," editorui[ cmd] = function ( editor, iframeUrl, title) { "," iframeUrl = iframeUrl || ( editor. options. iframeUrlMap || {} )[ cmd] || iframeUrlMap[ cmd]; "," title = editor. options. labelMap[ cmd] || editor. getLang( \"labelMap.\" + cmd) || '' ; ",""," var dialog; "," //没有iframeUrl不创建dialog "," if ( iframeUrl) { "," dialog = new editorui. Dialog( utils. extend( { "," iframeUrl: editor. ui. mapUrl( iframeUrl), "," editor: editor, "," className: 'edui-for-' + cmd, "," title: title, "," holdScroll: cmd === 'insertimage' , "," closeDialog: editor. getLang( \"closeDialog\" ) "," } , type == 'ok' ? { "," buttons:[ "," { "," className: 'edui-okbutton' , "," label: editor. getLang( \"ok\" ), "," editor: editor, "," onclick: function () { "," dialog. close( true ); "," } "," } , "," { "," className: 'edui-cancelbutton' , "," label: editor. getLang( \"cancel\" ), "," editor: editor, "," onclick: function () { "," dialog. close( false ); "," } "," } "," ] "," } : {} )); ",""," editor. ui. _dialogs[ cmd + \"Dialog\" ] = dialog; "," } ",""," var ui = new editorui. Button( { "," className: 'edui-for-' + cmd, "," title: title, "," onclick: function () { "," if ( dialog) { "," switch ( cmd) { "," case \"wordimage\" : "," editor. execCommand( \"wordimage\" , \"word_img\" ); "," if ( editor. word_img) { "," dialog. render(); "," dialog. open(); "," } "," break ; "," case \"scrawl\" : "," if ( editor. queryCommandState( \"scrawl\" ) != - 1 ) { "," dialog. render(); "," dialog. open(); "," } ",""," break ; "," default : "," dialog. render(); "," dialog. open(); "," } "," } "," } , "," theme: editor. options. theme, "," disabled: cmd == 'scrawl' && editor. queryCommandState( \"scrawl\" ) == - 1 "," } ); "," editorui. buttons[ cmd] = ui; "," editor. addListener( 'selectionchange' , function () { "," //只存在于右键菜单而无工具栏按钮的ui不需要检测状态 "," var unNeedCheckState = { 'edittable' : 1 } ; "," if ( cmd in unNeedCheckState) return ; ",""," var state = editor. queryCommandState( cmd); "," if ( ui. getDom()) { "," ui. setDisabled( state == - 1 ); "," ui. setChecked( state); "," } ",""," } ); ",""," return ui; "," } ; "," } )( ci. toLowerCase()) "," } "," } )( p, dialogBtns[ p]) "," } ",""," editorui. snapscreen = function ( editor, iframeUrl, title) { "," title = editor. options. labelMap[ 'snapscreen' ] || editor. getLang( \"labelMap.snapscreen\" ) || '' ; "," var ui = new editorui. Button( { "," className: 'edui-for-snapscreen' , "," title: title, "," onclick: function () { "," editor. execCommand( \"snapscreen\" ); "," } , "," theme: editor. options. theme",""," } ); "," editorui. buttons[ 'snapscreen' ] = ui; "," iframeUrl = iframeUrl || ( editor. options. iframeUrlMap || {} )[ \"snapscreen\" ] || iframeUrlMap[ \"snapscreen\" ]; "," if ( iframeUrl) { "," var dialog = new editorui. Dialog( { "," iframeUrl: editor. ui. mapUrl( iframeUrl), "," editor: editor, "," className: 'edui-for-snapscreen' , "," title: title, "," buttons:[ "," { "," className: 'edui-okbutton' , "," label: editor. getLang( \"ok\" ), "," editor: editor, "," onclick: function () { "," dialog. close( true ); "," } "," } , "," { "," className: 'edui-cancelbutton' , "," label: editor. getLang( \"cancel\" ), "," editor: editor, "," onclick: function () { "," dialog. close( false ); "," } "," } "," ] ",""," } ); "," dialog. render(); "," editor. ui. _dialogs[ \"snapscreenDialog\" ] = dialog; "," } "," editor. addListener( 'selectionchange' , function () { "," ui. setDisabled( editor. queryCommandState( 'snapscreen' ) == - 1 ); "," } ); "," return ui; "," } ; ",""," editorui. insertcode = function ( editor, list, title) { "," list = editor. options[ 'insertcode' ] || []; "," title = editor. options. labelMap[ 'insertcode' ] || editor. getLang( \"labelMap.insertcode\" ) || '' ; "," // if (!list.length) return; "," var items = []; "," utils. each( list, function ( key, val) { "," items. push( { "," label: key, "," value: val, "," theme: editor. options. theme, "," renderLabelHtml: function () { "," return '<div class=\"edui-label %%-label\" >' + ( this . label || '' ) + '</div>' ; "," } "," } ); "," } ); ",""," var ui = new editorui. Combox( { "," editor: editor, "," items: items, "," onselect: function ( t, index) { "," editor. execCommand( 'insertcode' , this . items[ index]. value); "," } , "," onbuttonclick: function () { "," this . showPopup(); "," } , "," title: title, "," initValue: title, "," className: 'edui-for-insertcode' , "," indexByValue: function ( value) { "," if ( value) { "," for ( var i = 0 , ci; ci = this . items[ i]; i++) { "," if ( ci. value. indexOf( value) != - 1 ) "," return i; "," } "," } ",""," return - 1 ; "," } "," } ); "," editorui. buttons[ 'insertcode' ] = ui; "," editor. addListener( 'selectionchange' , function ( type, causeByUi, uiReady) { "," if (! uiReady) { "," var state = editor. queryCommandState( 'insertcode' ); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," } else { "," ui. setDisabled( false ); "," var value = editor. queryCommandValue( 'insertcode' ); "," if (! value) { "," ui. setValue( title); "," return ; "," } "," //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 "," value && ( value = value. replace( /['\"]/g , '' ). split( ',' )[ 0 ]); "," ui. setValue( value); ",""," } "," } ",""," } ); "," return ui; "," } ; "," editorui. fontfamily = function ( editor, list, title) { ",""," list = editor. options[ 'fontfamily' ] || []; "," title = editor. options. labelMap[ 'fontfamily' ] || editor. getLang( \"labelMap.fontfamily\" ) || '' ; "," if (! list. length) return ; "," for ( var i = 0 , ci, items = []; ci = list[ i]; i++) { "," var langLabel = editor. getLang( 'fontfamily' )[ ci. name] || \"\" ; "," ( function ( key, val) { "," items. push( { "," label: key, "," value: val, "," theme: editor. options. theme, "," renderLabelHtml: function () { "," return '<div class=\"edui-label %%-label\" style=\"font-family:' + "," utils. unhtml( this . value) + '\">' + ( this . label || '' ) + '</div>' ; "," } "," } ); "," } )( ci. label || langLabel, ci. val) "," } "," var ui = new editorui. Combox( { "," editor: editor, "," items: items, "," onselect: function ( t, index) { "," editor. execCommand( 'FontFamily' , this . items[ index]. value); "," } , "," onbuttonclick: function () { "," this . showPopup(); "," } , "," title: title, "," initValue: title, "," className: 'edui-for-fontfamily' , "," indexByValue: function ( value) { "," if ( value) { "," for ( var i = 0 , ci; ci = this . items[ i]; i++) { "," if ( ci. value. indexOf( value) != - 1 ) "," return i; "," } "," } ",""," return - 1 ; "," } "," } ); "," editorui. buttons[ 'fontfamily' ] = ui; "," editor. addListener( 'selectionchange' , function ( type, causeByUi, uiReady) { "," if (! uiReady) { "," var state = editor. queryCommandState( 'FontFamily' ); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," } else { "," ui. setDisabled( false ); "," var value = editor. queryCommandValue( 'FontFamily' ); "," //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 "," value && ( value = value. replace( /['\"]/g , '' ). split( ',' )[ 0 ]); "," ui. setValue( value); ",""," } "," } ",""," } ); "," return ui; "," } ; ",""," editorui. fontsize = function ( editor, list, title) { "," title = editor. options. labelMap[ 'fontsize' ] || editor. getLang( \"labelMap.fontsize\" ) || '' ; "," list = list || editor. options[ 'fontsize' ] || []; "," if (! list. length) return ; "," var items = []; "," for ( var i = 0 ; i < list. length; i++) { "," var size = list[ i] + 'px' ; "," items. push( { "," label: size, "," value: size, "," theme: editor. options. theme, "," renderLabelHtml: function () { "," return '<div class=\"edui-label %%-label\" style=\"line-height:1;font-size:' + "," this . value + '\">' + ( this . label || '' ) + '</div>' ; "," } "," } ); "," } "," var ui = new editorui. Combox( { "," editor: editor, "," items: items, "," title: title, "," initValue: title, "," onselect: function ( t, index) { "," editor. execCommand( 'FontSize' , this . items[ index]. value); "," } , "," onbuttonclick: function () { "," this . showPopup(); "," } , "," className: 'edui-for-fontsize' "," } ); "," editorui. buttons[ 'fontsize' ] = ui; "," editor. addListener( 'selectionchange' , function ( type, causeByUi, uiReady) { "," if (! uiReady) { "," var state = editor. queryCommandState( 'FontSize' ); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," } else { "," ui. setDisabled( false ); "," ui. setValue( editor. queryCommandValue( 'FontSize' )); "," } "," } ",""," } ); "," return ui; "," } ; ",""," editorui. paragraph = function ( editor, list, title) { "," title = editor. options. labelMap[ 'paragraph' ] || editor. getLang( \"labelMap.paragraph\" ) || '' ; "," list = editor. options[ 'paragraph' ] || []; "," if ( utils. isEmptyObject( list)) return ; "," var items = []; "," for ( var i in list) { "," items. push( { "," value: i, "," label: list[ i] || editor. getLang( \"paragraph\" )[ i], "," theme: editor. options. theme, "," renderLabelHtml: function () { "," return '<div class=\"edui-label %%-label\"><span class=\"edui-for-' + this . value + '\">' + ( this . label || '' ) + '</span></div>' ; "," } "," } ) "," } "," var ui = new editorui. Combox( { "," editor: editor, "," items: items, "," title: title, "," initValue: title, "," className: 'edui-for-paragraph' , "," onselect: function ( t, index) { "," editor. execCommand( 'Paragraph' , this . items[ index]. value); "," } , "," onbuttonclick: function () { "," this . showPopup(); "," } "," } ); "," editorui. buttons[ 'paragraph' ] = ui; "," editor. addListener( 'selectionchange' , function ( type, causeByUi, uiReady) { "," if (! uiReady) { "," var state = editor. queryCommandState( 'Paragraph' ); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," } else { "," ui. setDisabled( false ); "," var value = editor. queryCommandValue( 'Paragraph' ); "," var index = ui. indexByValue( value); "," if ( index != - 1 ) { "," ui. setValue( value); "," } else { "," ui. setValue( ui. initValue); "," } "," } "," } ",""," } ); "," return ui; "," } ; ","",""," //自定义标题 "," editorui. customstyle = function ( editor) { "," var list = editor. options[ 'customstyle' ] || [], "," title = editor. options. labelMap[ 'customstyle' ] || editor. getLang( \"labelMap.customstyle\" ) || '' ; "," if (! list. length) return ; "," var langCs = editor. getLang( 'customstyle' ); "," for ( var i = 0 , items = [], t; t = list[ i++];) { "," ( function ( t) { "," var ck = {} ; "," ck. label = t. label ? t. label : langCs[ t. name]; "," ck. style = t. style; "," ck. className = t. className; "," ck. tag = t. tag; "," items. push( { "," label: ck. label, "," value: ck, "," theme: editor. options. theme, "," renderLabelHtml: function () { "," return '<div class=\"edui-label %%-label\">' + '<' + ck. tag + ' ' + ( ck. className ? ' class=\"' + ck. className + '\"' : \"\" ) "," + ( ck. style ? ' style=\"' + ck. style + '\"' : \"\" ) + '>' + ck. label + \"< \\/ \" + ck. tag + \">\" "," + '</div>' ; "," } "," } ); "," } )( t); "," } ",""," var ui = new editorui. Combox( { "," editor: editor, "," items: items, "," title: title, "," initValue: title, "," className: 'edui-for-customstyle' , "," onselect: function ( t, index) { "," editor. execCommand( 'customstyle' , this . items[ index]. value); "," } , "," onbuttonclick: function () { "," this . showPopup(); "," } , "," indexByValue: function ( value) { "," for ( var i = 0 , ti; ti = this . items[ i++];) { "," if ( ti. label == value) { "," return i - 1 "," } "," } "," return - 1 ; "," } "," } ); "," editorui. buttons[ 'customstyle' ] = ui; "," editor. addListener( 'selectionchange' , function ( type, causeByUi, uiReady) { "," if (! uiReady) { "," var state = editor. queryCommandState( 'customstyle' ); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," } else { "," ui. setDisabled( false ); "," var value = editor. queryCommandValue( 'customstyle' ); "," var index = ui. indexByValue( value); "," if ( index != - 1 ) { "," ui. setValue( value); "," } else { "," ui. setValue( ui. initValue); "," } "," } "," } ",""," } ); "," return ui; "," } ; "," editorui. inserttable = function ( editor, iframeUrl, title) { "," title = editor. options. labelMap[ 'inserttable' ] || editor. getLang( \"labelMap.inserttable\" ) || '' ; "," var ui = new editorui. TableButton( { "," editor: editor, "," title: title, "," className: 'edui-for-inserttable' , "," onpicktable: function ( t, numCols, numRows) { "," editor. execCommand( 'InsertTable' , { numRows: numRows, numCols: numCols, border: 1 } ); "," } , "," onbuttonclick: function () { "," this . showPopup(); "," } "," } ); "," editorui. buttons[ 'inserttable' ] = ui; "," editor. addListener( 'selectionchange' , function () { "," ui. setDisabled( editor. queryCommandState( 'inserttable' ) == - 1 ); "," } ); "," return ui; "," } ; ",""," editorui. lineheight = function ( editor) { "," var val = editor. options. lineheight || []; "," if (! val. length) return ; "," for ( var i = 0 , ci, items = []; ci = val[ i++];) { "," items. push( { "," //todo:写死了 "," label: ci, "," value: ci, "," theme: editor. options. theme, "," onclick: function () { "," editor. execCommand( \"lineheight\" , this . value); "," } "," } ) "," } "," var ui = new editorui. MenuButton( { "," editor: editor, "," className: 'edui-for-lineheight' , "," title: editor. options. labelMap[ 'lineheight' ] || editor. getLang( \"labelMap.lineheight\" ) || '' , "," items: items, "," onbuttonclick: function () { "," var value = editor. queryCommandValue( 'LineHeight' ) || this . value; "," editor. execCommand( \"LineHeight\" , value); "," } "," } ); "," editorui. buttons[ 'lineheight' ] = ui; "," editor. addListener( 'selectionchange' , function () { "," var state = editor. queryCommandState( 'LineHeight' ); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," } else { "," ui. setDisabled( false ); "," var value = editor. queryCommandValue( 'LineHeight' ); "," value && ui. setValue(( value + '' ). replace( /cm/ , '' )); "," ui. setChecked( state) "," } "," } ); "," return ui; "," } ; ",""," var rowspacings = [ 'top' , 'bottom' ]; "," for ( var r = 0 , ri; ri = rowspacings[ r++];) { "," ( function ( cmd) { "," editorui[ 'rowspacing' + cmd] = function ( editor) { "," var val = editor. options[ 'rowspacing' + cmd] || []; "," if (! val. length) return null ; "," for ( var i = 0 , ci, items = []; ci = val[ i++];) { "," items. push( { "," label: ci, "," value: ci, "," theme: editor. options. theme, "," onclick: function () { "," editor. execCommand( \"rowspacing\" , this . value, cmd); "," } "," } ) "," } "," var ui = new editorui. MenuButton( { "," editor: editor, "," className: 'edui-for-rowspacing' + cmd, "," title: editor. options. labelMap[ 'rowspacing' + cmd] || editor. getLang( \"labelMap.rowspacing\" + cmd) || '' , "," items: items, "," onbuttonclick: function () { "," var value = editor. queryCommandValue( 'rowspacing' , cmd) || this . value; "," editor. execCommand( \"rowspacing\" , value, cmd); "," } "," } ); "," editorui. buttons[ cmd] = ui; "," editor. addListener( 'selectionchange' , function () { "," var state = editor. queryCommandState( 'rowspacing' , cmd); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," } else { "," ui. setDisabled( false ); "," var value = editor. queryCommandValue( 'rowspacing' , cmd); "," value && ui. setValue(( value + '' ). replace( /%/ , '' )); "," ui. setChecked( state) "," } "," } ); "," return ui; "," } "," } )( ri) "," } "," //有序,无序列表 "," var lists = [ 'insertorderedlist' , 'insertunorderedlist' ]; "," for ( var l = 0 , cl; cl = lists[ l++];) { "," ( function ( cmd) { "," editorui[ cmd] = function ( editor) { "," var vals = editor. options[ cmd], "," _onMenuClick = function () { "," editor. execCommand( cmd, this . value); "," } , items = []; "," for ( var i in vals) { "," items. push( { "," label: vals[ i] || editor. getLang()[ cmd][ i] || \"\" , "," value: i, "," theme: editor. options. theme, "," onclick: _onMenuClick"," } ) "," } "," var ui = new editorui. MenuButton( { "," editor: editor, "," className: 'edui-for-' + cmd, "," title: editor. getLang( \"labelMap.\" + cmd) || '' , "," 'items' : items, "," onbuttonclick: function () { "," var value = editor. queryCommandValue( cmd) || this . value; "," editor. execCommand( cmd, value); "," } "," } ); "," editorui. buttons[ cmd] = ui; "," editor. addListener( 'selectionchange' , function () { "," var state = editor. queryCommandState( cmd); "," if ( state == - 1 ) { "," ui. setDisabled( true ); "," } else { "," ui. setDisabled( false ); "," var value = editor. queryCommandValue( cmd); "," ui. setValue( value); "," ui. setChecked( state) "," } "," } ); "," return ui; "," } ; "," } )( cl) "," } ",""," editorui. fullscreen = function ( editor, title) { "," title = editor. options. labelMap[ 'fullscreen' ] || editor. getLang( \"labelMap.fullscreen\" ) || '' ; "," var ui = new editorui. Button( { "," className: 'edui-for-fullscreen' , "," title: title, "," theme: editor. options. theme, "," onclick: function () { "," if ( editor. ui) { "," editor. ui. setFullScreen(! editor. ui. isFullScreen()); "," } "," this . setChecked( editor. ui. isFullScreen()); "," } "," } ); "," editorui. buttons[ 'fullscreen' ] = ui; "," editor. addListener( 'selectionchange' , function () { "," var state = editor. queryCommandState( 'fullscreen' ); "," ui. setDisabled( state == - 1 ); "," ui. setChecked( editor. ui. isFullScreen()); "," } ); "," return ui; "," } ; ",""," // 表情 "," editorui[ \"emotion\" ] = function ( editor, iframeUrl) { "," var cmd = \"emotion\" ; "," var ui = new editorui. MultiMenuPop( { "," title: editor. options. labelMap[ cmd] || editor. getLang( \"labelMap.\" + cmd + \"\" ) || '' , "," editor: editor, "," className: 'edui-for-' + cmd, "," iframeUrl: editor. ui. mapUrl( iframeUrl || ( editor. options. iframeUrlMap || {} )[ cmd] || iframeUrlMap[ cmd]) "," } ); "," editorui. buttons[ cmd] = ui; ",""," editor. addListener( 'selectionchange' , function () { "," ui. setDisabled( editor. queryCommandState( cmd) == - 1 ) "," } ); "," return ui; "," } ; ",""," editorui. autotypeset = function ( editor) { "," var ui = new editorui. AutoTypeSetButton( { "," editor: editor, "," title: editor. options. labelMap[ 'autotypeset' ] || editor. getLang( \"labelMap.autotypeset\" ) || '' , "," className: 'edui-for-autotypeset' , "," onbuttonclick: function () { "," editor. execCommand( 'autotypeset' ) "," } "," } ); "," editorui. buttons[ 'autotypeset' ] = ui; "," editor. addListener( 'selectionchange' , function () { "," ui. setDisabled( editor. queryCommandState( 'autotypeset' ) == - 1 ); "," } ); "," return ui; "," } ; ","","} )(); "];
+_$jscoverage['ui/editorui.js'][4]++;
+(function () {
+ _$jscoverage['ui/editorui.js'][5]++;
+ var utils = baidu.editor.utils;
+ _$jscoverage['ui/editorui.js'][6]++;
+ var editorui = baidu.editor.ui;
+ _$jscoverage['ui/editorui.js'][7]++;
+ var _Dialog = editorui.Dialog;
+ _$jscoverage['ui/editorui.js'][8]++;
+ editorui.buttons = {};
+ _$jscoverage['ui/editorui.js'][10]++;
+ editorui.Dialog = (function (options) {
+ _$jscoverage['ui/editorui.js'][11]++;
+ var dialog = new _Dialog(options);
+ _$jscoverage['ui/editorui.js'][12]++;
+ dialog.addListener("hide", (function () {
+ _$jscoverage['ui/editorui.js'][14]++;
+ if (dialog.editor) {
+ _$jscoverage['ui/editorui.js'][15]++;
+ var editor = dialog.editor;
+ _$jscoverage['ui/editorui.js'][16]++;
+ try {
+ _$jscoverage['ui/editorui.js'][17]++;
+ if (browser.gecko) {
+ _$jscoverage['ui/editorui.js'][18]++;
+ var y = editor.window.scrollY, x = editor.window.scrollX;
+ _$jscoverage['ui/editorui.js'][20]++;
+ editor.body.focus();
+ _$jscoverage['ui/editorui.js'][21]++;
+ editor.window.scrollTo(x, y);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][23]++;
+ editor.focus();
+ }
+ }
+ catch (ex) {
+ }
+ }
+}));
+ _$jscoverage['ui/editorui.js'][31]++;
+ return dialog;
+});
+ _$jscoverage['ui/editorui.js'][34]++;
+ var iframeUrlMap = {"anchor": "~/dialogs/anchor/anchor.html", "insertimage": "~/dialogs/image/image.html", "link": "~/dialogs/link/link.html", "spechars": "~/dialogs/spechars/spechars.html", "searchreplace": "~/dialogs/searchreplace/searchreplace.html", "map": "~/dialogs/map/map.html", "gmap": "~/dialogs/gmap/gmap.html", "insertvideo": "~/dialogs/video/video.html", "help": "~/dialogs/help/help.html", "emotion": "~/dialogs/emotion/emotion.html", "wordimage": "~/dialogs/wordimage/wordimage.html", "attachment": "~/dialogs/attachment/attachment.html", "insertframe": "~/dialogs/insertframe/insertframe.html", "edittip": "~/dialogs/table/edittip.html", "edittable": "~/dialogs/table/edittable.html", "edittd": "~/dialogs/table/edittd.html", "webapp": "~/dialogs/webapp/webapp.html", "snapscreen": "~/dialogs/snapscreen/snapscreen.html", "scrawl": "~/dialogs/scrawl/scrawl.html", "music": "~/dialogs/music/music.html", "template": "~/dialogs/template/template.html", "background": "~/dialogs/background/background.html"};
+ _$jscoverage['ui/editorui.js'][60]++;
+ var btnCmds = ["undo", "redo", "formatmatch", "bold", "italic", "underline", "fontborder", "touppercase", "tolowercase", "strikethrough", "subscript", "superscript", "source", "indent", "outdent", "blockquote", "pasteplain", "pagebreak", "selectall", "print", "preview", "horizontal", "removeformat", "time", "date", "unlink", "insertparagraphbeforetable", "insertrow", "insertcol", "mergeright", "mergedown", "deleterow", "deletecol", "splittorows", "splittocols", "splittocells", "mergecells", "deletetable"];
+ _$jscoverage['ui/editorui.js'][68]++;
+ for (var i = 0, ci; (ci = btnCmds[(i++)]);) {
+ _$jscoverage['ui/editorui.js'][69]++;
+ ci = ci.toLowerCase();
+ _$jscoverage['ui/editorui.js'][70]++;
+ editorui[ci] = (function (cmd) {
+ _$jscoverage['ui/editorui.js'][71]++;
+ return (function (editor) {
+ _$jscoverage['ui/editorui.js'][72]++;
+ var ui = new (editorui.Button)({className: ("edui-for-" + cmd), title: (editor.options.labelMap[cmd] || editor.getLang(("labelMap." + cmd)) || ""), onclick: (function () {
+ _$jscoverage['ui/editorui.js'][76]++;
+ editor.execCommand(cmd);
+}), theme: editor.options.theme, showText: false});
+ _$jscoverage['ui/editorui.js'][81]++;
+ editorui.buttons[cmd] = ui;
+ _$jscoverage['ui/editorui.js'][82]++;
+ editor.addListener("selectionchange", (function (type, causeByUi, uiReady) {
+ _$jscoverage['ui/editorui.js'][83]++;
+ var state = editor.queryCommandState(cmd);
+ _$jscoverage['ui/editorui.js'][84]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][85]++;
+ ui.setDisabled(true);
+ _$jscoverage['ui/editorui.js'][86]++;
+ ui.setChecked(false);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][88]++;
+ if ((! uiReady)) {
+ _$jscoverage['ui/editorui.js'][89]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][90]++;
+ ui.setChecked(state);
+ }
+ }
+}));
+ _$jscoverage['ui/editorui.js'][94]++;
+ return ui;
+});
+})(ci);
+}
+ _$jscoverage['ui/editorui.js'][100]++;
+ editorui.cleardoc = (function (editor) {
+ _$jscoverage['ui/editorui.js'][101]++;
+ var ui = new (editorui.Button)({className: "edui-for-cleardoc", title: (editor.options.labelMap.cleardoc || editor.getLang("labelMap.cleardoc") || ""), theme: editor.options.theme, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][106]++;
+ if (confirm(editor.getLang("confirmClear"))) {
+ _$jscoverage['ui/editorui.js'][107]++;
+ editor.execCommand("cleardoc");
+ }
+})});
+ _$jscoverage['ui/editorui.js'][111]++;
+ editorui.buttons.cleardoc = ui;
+ _$jscoverage['ui/editorui.js'][112]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][113]++;
+ ui.setDisabled((editor.queryCommandState("cleardoc") == -1));
+}));
+ _$jscoverage['ui/editorui.js'][115]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][119]++;
+ var typeset = {"justify": ["left", "right", "center", "justify"], "imagefloat": ["none", "left", "center", "right"], "directionality": ["ltr", "rtl"]};
+ _$jscoverage['ui/editorui.js'][125]++;
+ for (var p in typeset) {
+ _$jscoverage['ui/editorui.js'][127]++;
+ (function (cmd, val) {
+ _$jscoverage['ui/editorui.js'][128]++;
+ for (var i = 0, ci; (ci = val[(i++)]);) {
+ _$jscoverage['ui/editorui.js'][129]++;
+ (function (cmd2) {
+ _$jscoverage['ui/editorui.js'][130]++;
+ editorui[(cmd.replace("float", "") + cmd2)] = (function (editor) {
+ _$jscoverage['ui/editorui.js'][131]++;
+ var ui = new (editorui.Button)({className: ("edui-for-" + cmd.replace("float", "") + cmd2), title: (editor.options.labelMap[(cmd.replace("float", "") + cmd2)] || editor.getLang(("labelMap." + cmd.replace("float", "") + cmd2)) || ""), theme: editor.options.theme, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][136]++;
+ editor.execCommand(cmd, cmd2);
+})});
+ _$jscoverage['ui/editorui.js'][139]++;
+ editorui.buttons[cmd] = ui;
+ _$jscoverage['ui/editorui.js'][140]++;
+ editor.addListener("selectionchange", (function (type, causeByUi, uiReady) {
+ _$jscoverage['ui/editorui.js'][141]++;
+ ui.setDisabled((editor.queryCommandState(cmd) == -1));
+ _$jscoverage['ui/editorui.js'][142]++;
+ ui.setChecked(((editor.queryCommandValue(cmd) == cmd2) && (! uiReady)));
+}));
+ _$jscoverage['ui/editorui.js'][144]++;
+ return ui;
+});
+})(ci);
+}
+})(p, typeset[p]);
+}
+ _$jscoverage['ui/editorui.js'][152]++;
+ for (var i = 0, ci = ci; (ci = ["backcolor", "forecolor"][(i++)]);) {
+ _$jscoverage['ui/editorui.js'][153]++;
+ editorui[ci] = (function (cmd) {
+ _$jscoverage['ui/editorui.js'][154]++;
+ return (function (editor) {
+ _$jscoverage['ui/editorui.js'][155]++;
+ var ui = new (editorui.ColorButton)({className: ("edui-for-" + cmd), color: "default", title: (editor.options.labelMap[cmd] || editor.getLang(("labelMap." + cmd)) || ""), editor: editor, onpickcolor: (function (t, color) {
+ _$jscoverage['ui/editorui.js'][161]++;
+ editor.execCommand(cmd, color);
+}), onpicknocolor: (function () {
+ _$jscoverage['ui/editorui.js'][164]++;
+ editor.execCommand(cmd, "default");
+ _$jscoverage['ui/editorui.js'][165]++;
+ this.setColor("transparent");
+ _$jscoverage['ui/editorui.js'][166]++;
+ this.color = "default";
+}), onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][169]++;
+ editor.execCommand(cmd, this.color);
+})});
+ _$jscoverage['ui/editorui.js'][172]++;
+ editorui.buttons[cmd] = ui;
+ _$jscoverage['ui/editorui.js'][173]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][174]++;
+ ui.setDisabled((editor.queryCommandState(cmd) == -1));
+}));
+ _$jscoverage['ui/editorui.js'][176]++;
+ return ui;
+});
+})(ci);
+}
+ _$jscoverage['ui/editorui.js'][182]++;
+ var dialogBtns = {noOk: ["searchreplace", "help", "spechars", "webapp"], ok: ["attachment", "anchor", "link", "insertimage", "map", "gmap", "insertframe", "wordimage", "insertvideo", "insertframe", "edittip", "edittable", "edittd", "scrawl", "template", "music", "background"]};
+ _$jscoverage['ui/editorui.js'][189]++;
+ for (var p = p in dialogBtns) {
+ _$jscoverage['ui/editorui.js'][190]++;
+ (function (type, vals) {
+ _$jscoverage['ui/editorui.js'][191]++;
+ for (var i = 0, ci; (ci = vals[(i++)]);) {
+ _$jscoverage['ui/editorui.js'][193]++;
+ if ((browser.opera && (ci === "searchreplace"))) {
+ _$jscoverage['ui/editorui.js'][194]++;
+ continue;
+ }
+ _$jscoverage['ui/editorui.js'][196]++;
+ (function (cmd) {
+ _$jscoverage['ui/editorui.js'][197]++;
+ editorui[cmd] = (function (editor, iframeUrl, title) {
+ _$jscoverage['ui/editorui.js'][198]++;
+ iframeUrl = (iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd]);
+ _$jscoverage['ui/editorui.js'][199]++;
+ title = (editor.options.labelMap[cmd] || editor.getLang(("labelMap." + cmd)) || "");
+ _$jscoverage['ui/editorui.js'][201]++;
+ var dialog;
+ _$jscoverage['ui/editorui.js'][203]++;
+ if (iframeUrl) {
+ _$jscoverage['ui/editorui.js'][204]++;
+ dialog = new (editorui.Dialog)(utils.extend({iframeUrl: editor.ui.mapUrl(iframeUrl), editor: editor, className: ("edui-for-" + cmd), title: title, holdScroll: (cmd === "insertimage"), closeDialog: editor.getLang("closeDialog")}, ((type == "ok")? {buttons: [{className: "edui-okbutton", label: editor.getLang("ok"), editor: editor, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][218]++;
+ dialog.close(true);
+})}, {className: "edui-cancelbutton", label: editor.getLang("cancel"), editor: editor, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][226]++;
+ dialog.close(false);
+})}]}: {})));
+ _$jscoverage['ui/editorui.js'][232]++;
+ editor.ui._dialogs[(cmd + "Dialog")] = dialog;
+ }
+ _$jscoverage['ui/editorui.js'][235]++;
+ var ui = new (editorui.Button)({className: ("edui-for-" + cmd), title: title, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][239]++;
+ if (dialog) {
+ _$jscoverage['ui/editorui.js'][240]++;
+ switch (cmd) {
+ case "wordimage":
+ _$jscoverage['ui/editorui.js'][242]++;
+ editor.execCommand("wordimage", "word_img");
+ _$jscoverage['ui/editorui.js'][243]++;
+ if (editor.word_img) {
+ _$jscoverage['ui/editorui.js'][244]++;
+ dialog.render();
+ _$jscoverage['ui/editorui.js'][245]++;
+ dialog.open();
+ }
+ _$jscoverage['ui/editorui.js'][247]++;
+ break;
+ case "scrawl":
+ _$jscoverage['ui/editorui.js'][249]++;
+ if ((editor.queryCommandState("scrawl") != -1)) {
+ _$jscoverage['ui/editorui.js'][250]++;
+ dialog.render();
+ _$jscoverage['ui/editorui.js'][251]++;
+ dialog.open();
+ }
+ _$jscoverage['ui/editorui.js'][254]++;
+ break;
+ default:
+ _$jscoverage['ui/editorui.js'][256]++;
+ dialog.render();
+ _$jscoverage['ui/editorui.js'][257]++;
+ dialog.open();
+ }
+ }
+}), theme: editor.options.theme, disabled: ((cmd == "scrawl") && (editor.queryCommandState("scrawl") == -1))});
+ _$jscoverage['ui/editorui.js'][264]++;
+ editorui.buttons[cmd] = ui;
+ _$jscoverage['ui/editorui.js'][265]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][267]++;
+ var unNeedCheckState = {"edittable": 1};
+ _$jscoverage['ui/editorui.js'][268]++;
+ if ((cmd in unNeedCheckState)) {
+ _$jscoverage['ui/editorui.js'][268]++;
+ return;
+ }
+ _$jscoverage['ui/editorui.js'][270]++;
+ var state = editor.queryCommandState(cmd);
+ _$jscoverage['ui/editorui.js'][271]++;
+ if (ui.getDom()) {
+ _$jscoverage['ui/editorui.js'][272]++;
+ ui.setDisabled((state == -1));
+ _$jscoverage['ui/editorui.js'][273]++;
+ ui.setChecked(state);
+ }
+}));
+ _$jscoverage['ui/editorui.js'][278]++;
+ return ui;
+});
+})(ci.toLowerCase());
+}
+})(p, dialogBtns[p]);
+}
+ _$jscoverage['ui/editorui.js'][285]++;
+ editorui.snapscreen = (function (editor, iframeUrl, title) {
+ _$jscoverage['ui/editorui.js'][286]++;
+ title = (editor.options.labelMap.snapscreen || editor.getLang("labelMap.snapscreen") || "");
+ _$jscoverage['ui/editorui.js'][287]++;
+ var ui = new (editorui.Button)({className: "edui-for-snapscreen", title: title, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][291]++;
+ editor.execCommand("snapscreen");
+}), theme: editor.options.theme});
+ _$jscoverage['ui/editorui.js'][296]++;
+ editorui.buttons.snapscreen = ui;
+ _$jscoverage['ui/editorui.js'][297]++;
+ iframeUrl = (iframeUrl || (editor.options.iframeUrlMap || {}).snapscreen || iframeUrlMap.snapscreen);
+ _$jscoverage['ui/editorui.js'][298]++;
+ if (iframeUrl) {
+ _$jscoverage['ui/editorui.js'][299]++;
+ var dialog = new (editorui.Dialog)({iframeUrl: editor.ui.mapUrl(iframeUrl), editor: editor, className: "edui-for-snapscreen", title: title, buttons: [{className: "edui-okbutton", label: editor.getLang("ok"), editor: editor, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][310]++;
+ dialog.close(true);
+})}, {className: "edui-cancelbutton", label: editor.getLang("cancel"), editor: editor, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][318]++;
+ dialog.close(false);
+})}]});
+ _$jscoverage['ui/editorui.js'][324]++;
+ dialog.render();
+ _$jscoverage['ui/editorui.js'][325]++;
+ editor.ui._dialogs.snapscreenDialog = dialog;
+ }
+ _$jscoverage['ui/editorui.js'][327]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][328]++;
+ ui.setDisabled((editor.queryCommandState("snapscreen") == -1));
+}));
+ _$jscoverage['ui/editorui.js'][330]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][333]++;
+ editorui.insertcode = (function (editor, list, title) {
+ _$jscoverage['ui/editorui.js'][334]++;
+ list = (editor.options.insertcode || []);
+ _$jscoverage['ui/editorui.js'][335]++;
+ title = (editor.options.labelMap.insertcode || editor.getLang("labelMap.insertcode") || "");
+ _$jscoverage['ui/editorui.js'][337]++;
+ var items = [];
+ _$jscoverage['ui/editorui.js'][338]++;
+ utils.each(list, (function (key, val) {
+ _$jscoverage['ui/editorui.js'][339]++;
+ items.push({label: key, value: val, theme: editor.options.theme, renderLabelHtml: (function () {
+ _$jscoverage['ui/editorui.js'][344]++;
+ return ("" + (this.label || "") + "
");
+})});
+}));
+ _$jscoverage['ui/editorui.js'][349]++;
+ var ui = new (editorui.Combox)({editor: editor, items: items, onselect: (function (t, index) {
+ _$jscoverage['ui/editorui.js'][353]++;
+ editor.execCommand("insertcode", this.items[index].value);
+}), onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][356]++;
+ this.showPopup();
+}), title: title, initValue: title, className: "edui-for-insertcode", indexByValue: (function (value) {
+ _$jscoverage['ui/editorui.js'][362]++;
+ if (value) {
+ _$jscoverage['ui/editorui.js'][363]++;
+ for (var i = 0, ci; (ci = this.items[i]); (i++)) {
+ _$jscoverage['ui/editorui.js'][364]++;
+ if ((ci.value.indexOf(value) != -1)) {
+ _$jscoverage['ui/editorui.js'][365]++;
+ return i;
+ }
+}
+ }
+ _$jscoverage['ui/editorui.js'][369]++;
+ return -1;
+})});
+ _$jscoverage['ui/editorui.js'][372]++;
+ editorui.buttons.insertcode = ui;
+ _$jscoverage['ui/editorui.js'][373]++;
+ editor.addListener("selectionchange", (function (type, causeByUi, uiReady) {
+ _$jscoverage['ui/editorui.js'][374]++;
+ if ((! uiReady)) {
+ _$jscoverage['ui/editorui.js'][375]++;
+ var state = editor.queryCommandState("insertcode");
+ _$jscoverage['ui/editorui.js'][376]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][377]++;
+ ui.setDisabled(true);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][379]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][380]++;
+ var value = editor.queryCommandValue("insertcode");
+ _$jscoverage['ui/editorui.js'][381]++;
+ if ((! value)) {
+ _$jscoverage['ui/editorui.js'][382]++;
+ ui.setValue(title);
+ _$jscoverage['ui/editorui.js'][383]++;
+ return;
+ }
+ _$jscoverage['ui/editorui.js'][386]++;
+ (value && (value = value.replace(/['"]/g, "").split(",")[0]));
+ _$jscoverage['ui/editorui.js'][387]++;
+ ui.setValue(value);
+ }
+ }
+}));
+ _$jscoverage['ui/editorui.js'][393]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][395]++;
+ editorui.fontfamily = (function (editor, list, title) {
+ _$jscoverage['ui/editorui.js'][397]++;
+ list = (editor.options.fontfamily || []);
+ _$jscoverage['ui/editorui.js'][398]++;
+ title = (editor.options.labelMap.fontfamily || editor.getLang("labelMap.fontfamily") || "");
+ _$jscoverage['ui/editorui.js'][399]++;
+ if ((! list.length)) {
+ _$jscoverage['ui/editorui.js'][399]++;
+ return;
+ }
+ _$jscoverage['ui/editorui.js'][400]++;
+ for (var i = 0, ci, items = []; (ci = list[i]); (i++)) {
+ _$jscoverage['ui/editorui.js'][401]++;
+ var langLabel = (editor.getLang("fontfamily")[ci.name] || "");
+ _$jscoverage['ui/editorui.js'][402]++;
+ (function (key, val) {
+ _$jscoverage['ui/editorui.js'][403]++;
+ items.push({label: key, value: val, theme: editor.options.theme, renderLabelHtml: (function () {
+ _$jscoverage['ui/editorui.js'][408]++;
+ return ("" + (this.label || "") + "
");
+})});
+})((ci.label || langLabel), ci.val);
+}
+ _$jscoverage['ui/editorui.js'][414]++;
+ var ui = new (editorui.Combox)({editor: editor, items: items, onselect: (function (t, index) {
+ _$jscoverage['ui/editorui.js'][418]++;
+ editor.execCommand("FontFamily", this.items[index].value);
+}), onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][421]++;
+ this.showPopup();
+}), title: title, initValue: title, className: "edui-for-fontfamily", indexByValue: (function (value) {
+ _$jscoverage['ui/editorui.js'][427]++;
+ if (value) {
+ _$jscoverage['ui/editorui.js'][428]++;
+ for (var i = 0, ci; (ci = this.items[i]); (i++)) {
+ _$jscoverage['ui/editorui.js'][429]++;
+ if ((ci.value.indexOf(value) != -1)) {
+ _$jscoverage['ui/editorui.js'][430]++;
+ return i;
+ }
+}
+ }
+ _$jscoverage['ui/editorui.js'][434]++;
+ return -1;
+})});
+ _$jscoverage['ui/editorui.js'][437]++;
+ editorui.buttons.fontfamily = ui;
+ _$jscoverage['ui/editorui.js'][438]++;
+ editor.addListener("selectionchange", (function (type, causeByUi, uiReady) {
+ _$jscoverage['ui/editorui.js'][439]++;
+ if ((! uiReady)) {
+ _$jscoverage['ui/editorui.js'][440]++;
+ var state = editor.queryCommandState("FontFamily");
+ _$jscoverage['ui/editorui.js'][441]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][442]++;
+ ui.setDisabled(true);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][444]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][445]++;
+ var value = editor.queryCommandValue("FontFamily");
+ _$jscoverage['ui/editorui.js'][447]++;
+ (value && (value = value.replace(/['"]/g, "").split(",")[0]));
+ _$jscoverage['ui/editorui.js'][448]++;
+ ui.setValue(value);
+ }
+ }
+}));
+ _$jscoverage['ui/editorui.js'][454]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][457]++;
+ editorui.fontsize = (function (editor, list, title) {
+ _$jscoverage['ui/editorui.js'][458]++;
+ title = (editor.options.labelMap.fontsize || editor.getLang("labelMap.fontsize") || "");
+ _$jscoverage['ui/editorui.js'][459]++;
+ list = (list || editor.options.fontsize || []);
+ _$jscoverage['ui/editorui.js'][460]++;
+ if ((! list.length)) {
+ _$jscoverage['ui/editorui.js'][460]++;
+ return;
+ }
+ _$jscoverage['ui/editorui.js'][461]++;
+ var items = [];
+ _$jscoverage['ui/editorui.js'][462]++;
+ for (var i = 0; (i < list.length); (i++)) {
+ _$jscoverage['ui/editorui.js'][463]++;
+ var size = (list[i] + "px");
+ _$jscoverage['ui/editorui.js'][464]++;
+ items.push({label: size, value: size, theme: editor.options.theme, renderLabelHtml: (function () {
+ _$jscoverage['ui/editorui.js'][469]++;
+ return ("" + (this.label || "") + "
");
+})});
+}
+ _$jscoverage['ui/editorui.js'][474]++;
+ var ui = new (editorui.Combox)({editor: editor, items: items, title: title, initValue: title, onselect: (function (t, index) {
+ _$jscoverage['ui/editorui.js'][480]++;
+ editor.execCommand("FontSize", this.items[index].value);
+}), onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][483]++;
+ this.showPopup();
+}), className: "edui-for-fontsize"});
+ _$jscoverage['ui/editorui.js'][487]++;
+ editorui.buttons.fontsize = ui;
+ _$jscoverage['ui/editorui.js'][488]++;
+ editor.addListener("selectionchange", (function (type, causeByUi, uiReady) {
+ _$jscoverage['ui/editorui.js'][489]++;
+ if ((! uiReady)) {
+ _$jscoverage['ui/editorui.js'][490]++;
+ var state = editor.queryCommandState("FontSize");
+ _$jscoverage['ui/editorui.js'][491]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][492]++;
+ ui.setDisabled(true);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][494]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][495]++;
+ ui.setValue(editor.queryCommandValue("FontSize"));
+ }
+ }
+}));
+ _$jscoverage['ui/editorui.js'][500]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][503]++;
+ editorui.paragraph = (function (editor, list, title) {
+ _$jscoverage['ui/editorui.js'][504]++;
+ title = (editor.options.labelMap.paragraph || editor.getLang("labelMap.paragraph") || "");
+ _$jscoverage['ui/editorui.js'][505]++;
+ list = (editor.options.paragraph || []);
+ _$jscoverage['ui/editorui.js'][506]++;
+ if (utils.isEmptyObject(list)) {
+ _$jscoverage['ui/editorui.js'][506]++;
+ return;
+ }
+ _$jscoverage['ui/editorui.js'][507]++;
+ var items = [];
+ _$jscoverage['ui/editorui.js'][508]++;
+ for (var i in list) {
+ _$jscoverage['ui/editorui.js'][509]++;
+ items.push({value: i, label: (list[i] || editor.getLang("paragraph")[i]), theme: editor.options.theme, renderLabelHtml: (function () {
+ _$jscoverage['ui/editorui.js'][514]++;
+ return ("" + (this.label || "") + "
");
+})});
+}
+ _$jscoverage['ui/editorui.js'][518]++;
+ var ui = new (editorui.Combox)({editor: editor, items: items, title: title, initValue: title, className: "edui-for-paragraph", onselect: (function (t, index) {
+ _$jscoverage['ui/editorui.js'][525]++;
+ editor.execCommand("Paragraph", this.items[index].value);
+}), onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][528]++;
+ this.showPopup();
+})});
+ _$jscoverage['ui/editorui.js'][531]++;
+ editorui.buttons.paragraph = ui;
+ _$jscoverage['ui/editorui.js'][532]++;
+ editor.addListener("selectionchange", (function (type, causeByUi, uiReady) {
+ _$jscoverage['ui/editorui.js'][533]++;
+ if ((! uiReady)) {
+ _$jscoverage['ui/editorui.js'][534]++;
+ var state = editor.queryCommandState("Paragraph");
+ _$jscoverage['ui/editorui.js'][535]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][536]++;
+ ui.setDisabled(true);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][538]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][539]++;
+ var value = editor.queryCommandValue("Paragraph");
+ _$jscoverage['ui/editorui.js'][540]++;
+ var index = ui.indexByValue(value);
+ _$jscoverage['ui/editorui.js'][541]++;
+ if ((index != -1)) {
+ _$jscoverage['ui/editorui.js'][542]++;
+ ui.setValue(value);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][544]++;
+ ui.setValue(ui.initValue);
+ }
+ }
+ }
+}));
+ _$jscoverage['ui/editorui.js'][550]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][555]++;
+ editorui.customstyle = (function (editor) {
+ _$jscoverage['ui/editorui.js'][556]++;
+ var list = (editor.options.customstyle || []), title = (editor.options.labelMap.customstyle || editor.getLang("labelMap.customstyle") || "");
+ _$jscoverage['ui/editorui.js'][558]++;
+ if ((! list.length)) {
+ _$jscoverage['ui/editorui.js'][558]++;
+ return;
+ }
+ _$jscoverage['ui/editorui.js'][559]++;
+ var langCs = editor.getLang("customstyle");
+ _$jscoverage['ui/editorui.js'][560]++;
+ for (var i = 0, items = [], t; (t = list[(i++)]);) {
+ _$jscoverage['ui/editorui.js'][561]++;
+ (function (t) {
+ _$jscoverage['ui/editorui.js'][562]++;
+ var ck = {};
+ _$jscoverage['ui/editorui.js'][563]++;
+ ck.label = (t.label? t.label: langCs[t.name]);
+ _$jscoverage['ui/editorui.js'][564]++;
+ ck.style = t.style;
+ _$jscoverage['ui/editorui.js'][565]++;
+ ck.className = t.className;
+ _$jscoverage['ui/editorui.js'][566]++;
+ ck.tag = t.tag;
+ _$jscoverage['ui/editorui.js'][567]++;
+ items.push({label: ck.label, value: ck, theme: editor.options.theme, renderLabelHtml: (function () {
+ _$jscoverage['ui/editorui.js'][572]++;
+ return ("" + "<" + ck.tag + " " + (ck.className? (" class=\"" + ck.className + "\""): "") + (ck.style? (" style=\"" + ck.style + "\""): "") + ">" + ck.label + "" + ck.tag + ">" + "
");
+})});
+})(t);
+}
+ _$jscoverage['ui/editorui.js'][580]++;
+ var ui = new (editorui.Combox)({editor: editor, items: items, title: title, initValue: title, className: "edui-for-customstyle", onselect: (function (t, index) {
+ _$jscoverage['ui/editorui.js'][587]++;
+ editor.execCommand("customstyle", this.items[index].value);
+}), onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][590]++;
+ this.showPopup();
+}), indexByValue: (function (value) {
+ _$jscoverage['ui/editorui.js'][593]++;
+ for (var i = 0, ti; (ti = this.items[(i++)]);) {
+ _$jscoverage['ui/editorui.js'][594]++;
+ if ((ti.label == value)) {
+ _$jscoverage['ui/editorui.js'][595]++;
+ return (i - 1);
+ }
+}
+ _$jscoverage['ui/editorui.js'][598]++;
+ return -1;
+})});
+ _$jscoverage['ui/editorui.js'][601]++;
+ editorui.buttons.customstyle = ui;
+ _$jscoverage['ui/editorui.js'][602]++;
+ editor.addListener("selectionchange", (function (type, causeByUi, uiReady) {
+ _$jscoverage['ui/editorui.js'][603]++;
+ if ((! uiReady)) {
+ _$jscoverage['ui/editorui.js'][604]++;
+ var state = editor.queryCommandState("customstyle");
+ _$jscoverage['ui/editorui.js'][605]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][606]++;
+ ui.setDisabled(true);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][608]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][609]++;
+ var value = editor.queryCommandValue("customstyle");
+ _$jscoverage['ui/editorui.js'][610]++;
+ var index = ui.indexByValue(value);
+ _$jscoverage['ui/editorui.js'][611]++;
+ if ((index != -1)) {
+ _$jscoverage['ui/editorui.js'][612]++;
+ ui.setValue(value);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][614]++;
+ ui.setValue(ui.initValue);
+ }
+ }
+ }
+}));
+ _$jscoverage['ui/editorui.js'][620]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][622]++;
+ editorui.inserttable = (function (editor, iframeUrl, title) {
+ _$jscoverage['ui/editorui.js'][623]++;
+ title = (editor.options.labelMap.inserttable || editor.getLang("labelMap.inserttable") || "");
+ _$jscoverage['ui/editorui.js'][624]++;
+ var ui = new (editorui.TableButton)({editor: editor, title: title, className: "edui-for-inserttable", onpicktable: (function (t, numCols, numRows) {
+ _$jscoverage['ui/editorui.js'][629]++;
+ editor.execCommand("InsertTable", {numRows: numRows, numCols: numCols, border: 1});
+}), onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][632]++;
+ this.showPopup();
+})});
+ _$jscoverage['ui/editorui.js'][635]++;
+ editorui.buttons.inserttable = ui;
+ _$jscoverage['ui/editorui.js'][636]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][637]++;
+ ui.setDisabled((editor.queryCommandState("inserttable") == -1));
+}));
+ _$jscoverage['ui/editorui.js'][639]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][642]++;
+ editorui.lineheight = (function (editor) {
+ _$jscoverage['ui/editorui.js'][643]++;
+ var val = (editor.options.lineheight || []);
+ _$jscoverage['ui/editorui.js'][644]++;
+ if ((! val.length)) {
+ _$jscoverage['ui/editorui.js'][644]++;
+ return;
+ }
+ _$jscoverage['ui/editorui.js'][645]++;
+ for (var i = 0, ci, items = []; (ci = val[(i++)]);) {
+ _$jscoverage['ui/editorui.js'][646]++;
+ items.push({label: ci, value: ci, theme: editor.options.theme, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][652]++;
+ editor.execCommand("lineheight", this.value);
+})});
+}
+ _$jscoverage['ui/editorui.js'][656]++;
+ var ui = new (editorui.MenuButton)({editor: editor, className: "edui-for-lineheight", title: (editor.options.labelMap.lineheight || editor.getLang("labelMap.lineheight") || ""), items: items, onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][662]++;
+ var value = (editor.queryCommandValue("LineHeight") || this.value);
+ _$jscoverage['ui/editorui.js'][663]++;
+ editor.execCommand("LineHeight", value);
+})});
+ _$jscoverage['ui/editorui.js'][666]++;
+ editorui.buttons.lineheight = ui;
+ _$jscoverage['ui/editorui.js'][667]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][668]++;
+ var state = editor.queryCommandState("LineHeight");
+ _$jscoverage['ui/editorui.js'][669]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][670]++;
+ ui.setDisabled(true);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][672]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][673]++;
+ var value = editor.queryCommandValue("LineHeight");
+ _$jscoverage['ui/editorui.js'][674]++;
+ (value && ui.setValue((value + "").replace(/cm/, "")));
+ _$jscoverage['ui/editorui.js'][675]++;
+ ui.setChecked(state);
+ }
+}));
+ _$jscoverage['ui/editorui.js'][678]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][681]++;
+ var rowspacings = ["top", "bottom"];
+ _$jscoverage['ui/editorui.js'][682]++;
+ for (var r = 0, ri; (ri = rowspacings[(r++)]);) {
+ _$jscoverage['ui/editorui.js'][683]++;
+ (function (cmd) {
+ _$jscoverage['ui/editorui.js'][684]++;
+ editorui[("rowspacing" + cmd)] = (function (editor) {
+ _$jscoverage['ui/editorui.js'][685]++;
+ var val = (editor.options[("rowspacing" + cmd)] || []);
+ _$jscoverage['ui/editorui.js'][686]++;
+ if ((! val.length)) {
+ _$jscoverage['ui/editorui.js'][686]++;
+ return null;
+ }
+ _$jscoverage['ui/editorui.js'][687]++;
+ for (var i = 0, ci, items = []; (ci = val[(i++)]);) {
+ _$jscoverage['ui/editorui.js'][688]++;
+ items.push({label: ci, value: ci, theme: editor.options.theme, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][693]++;
+ editor.execCommand("rowspacing", this.value, cmd);
+})});
+}
+ _$jscoverage['ui/editorui.js'][697]++;
+ var ui = new (editorui.MenuButton)({editor: editor, className: ("edui-for-rowspacing" + cmd), title: (editor.options.labelMap[("rowspacing" + cmd)] || editor.getLang(("labelMap.rowspacing" + cmd)) || ""), items: items, onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][703]++;
+ var value = (editor.queryCommandValue("rowspacing", cmd) || this.value);
+ _$jscoverage['ui/editorui.js'][704]++;
+ editor.execCommand("rowspacing", value, cmd);
+})});
+ _$jscoverage['ui/editorui.js'][707]++;
+ editorui.buttons[cmd] = ui;
+ _$jscoverage['ui/editorui.js'][708]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][709]++;
+ var state = editor.queryCommandState("rowspacing", cmd);
+ _$jscoverage['ui/editorui.js'][710]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][711]++;
+ ui.setDisabled(true);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][713]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][714]++;
+ var value = editor.queryCommandValue("rowspacing", cmd);
+ _$jscoverage['ui/editorui.js'][715]++;
+ (value && ui.setValue((value + "").replace(/%/, "")));
+ _$jscoverage['ui/editorui.js'][716]++;
+ ui.setChecked(state);
+ }
+}));
+ _$jscoverage['ui/editorui.js'][719]++;
+ return ui;
+});
+})(ri);
+}
+ _$jscoverage['ui/editorui.js'][724]++;
+ var lists = ["insertorderedlist", "insertunorderedlist"];
+ _$jscoverage['ui/editorui.js'][725]++;
+ for (var l = 0, cl; (cl = lists[(l++)]);) {
+ _$jscoverage['ui/editorui.js'][726]++;
+ (function (cmd) {
+ _$jscoverage['ui/editorui.js'][727]++;
+ editorui[cmd] = (function (editor) {
+ _$jscoverage['ui/editorui.js'][728]++;
+ var vals = editor.options[cmd], _onMenuClick = (function () {
+ _$jscoverage['ui/editorui.js'][730]++;
+ editor.execCommand(cmd, this.value);
+}), items = [];
+ _$jscoverage['ui/editorui.js'][732]++;
+ for (var i in vals) {
+ _$jscoverage['ui/editorui.js'][733]++;
+ items.push({label: (vals[i] || editor.getLang()[cmd][i] || ""), value: i, theme: editor.options.theme, onclick: _onMenuClick});
+}
+ _$jscoverage['ui/editorui.js'][740]++;
+ var ui = new (editorui.MenuButton)({editor: editor, className: ("edui-for-" + cmd), title: (editor.getLang(("labelMap." + cmd)) || ""), "items": items, onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][746]++;
+ var value = (editor.queryCommandValue(cmd) || this.value);
+ _$jscoverage['ui/editorui.js'][747]++;
+ editor.execCommand(cmd, value);
+})});
+ _$jscoverage['ui/editorui.js'][750]++;
+ editorui.buttons[cmd] = ui;
+ _$jscoverage['ui/editorui.js'][751]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][752]++;
+ var state = editor.queryCommandState(cmd);
+ _$jscoverage['ui/editorui.js'][753]++;
+ if ((state == -1)) {
+ _$jscoverage['ui/editorui.js'][754]++;
+ ui.setDisabled(true);
+ }
+ else {
+ _$jscoverage['ui/editorui.js'][756]++;
+ ui.setDisabled(false);
+ _$jscoverage['ui/editorui.js'][757]++;
+ var value = editor.queryCommandValue(cmd);
+ _$jscoverage['ui/editorui.js'][758]++;
+ ui.setValue(value);
+ _$jscoverage['ui/editorui.js'][759]++;
+ ui.setChecked(state);
+ }
+}));
+ _$jscoverage['ui/editorui.js'][762]++;
+ return ui;
+});
+})(cl);
+}
+ _$jscoverage['ui/editorui.js'][767]++;
+ editorui.fullscreen = (function (editor, title) {
+ _$jscoverage['ui/editorui.js'][768]++;
+ title = (editor.options.labelMap.fullscreen || editor.getLang("labelMap.fullscreen") || "");
+ _$jscoverage['ui/editorui.js'][769]++;
+ var ui = new (editorui.Button)({className: "edui-for-fullscreen", title: title, theme: editor.options.theme, onclick: (function () {
+ _$jscoverage['ui/editorui.js'][774]++;
+ if (editor.ui) {
+ _$jscoverage['ui/editorui.js'][775]++;
+ editor.ui.setFullScreen((! editor.ui.isFullScreen()));
+ }
+ _$jscoverage['ui/editorui.js'][777]++;
+ this.setChecked(editor.ui.isFullScreen());
+})});
+ _$jscoverage['ui/editorui.js'][780]++;
+ editorui.buttons.fullscreen = ui;
+ _$jscoverage['ui/editorui.js'][781]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][782]++;
+ var state = editor.queryCommandState("fullscreen");
+ _$jscoverage['ui/editorui.js'][783]++;
+ ui.setDisabled((state == -1));
+ _$jscoverage['ui/editorui.js'][784]++;
+ ui.setChecked(editor.ui.isFullScreen());
+}));
+ _$jscoverage['ui/editorui.js'][786]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][790]++;
+ editorui.emotion = (function (editor, iframeUrl) {
+ _$jscoverage['ui/editorui.js'][791]++;
+ var cmd = "emotion";
+ _$jscoverage['ui/editorui.js'][792]++;
+ var ui = new (editorui.MultiMenuPop)({title: (editor.options.labelMap[cmd] || editor.getLang(("labelMap." + cmd + "")) || ""), editor: editor, className: ("edui-for-" + cmd), iframeUrl: editor.ui.mapUrl((iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd]))});
+ _$jscoverage['ui/editorui.js'][798]++;
+ editorui.buttons[cmd] = ui;
+ _$jscoverage['ui/editorui.js'][800]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][801]++;
+ ui.setDisabled((editor.queryCommandState(cmd) == -1));
+}));
+ _$jscoverage['ui/editorui.js'][803]++;
+ return ui;
+});
+ _$jscoverage['ui/editorui.js'][806]++;
+ editorui.autotypeset = (function (editor) {
+ _$jscoverage['ui/editorui.js'][807]++;
+ var ui = new (editorui.AutoTypeSetButton)({editor: editor, title: (editor.options.labelMap.autotypeset || editor.getLang("labelMap.autotypeset") || ""), className: "edui-for-autotypeset", onbuttonclick: (function () {
+ _$jscoverage['ui/editorui.js'][812]++;
+ editor.execCommand("autotypeset");
+})});
+ _$jscoverage['ui/editorui.js'][815]++;
+ editorui.buttons.autotypeset = ui;
+ _$jscoverage['ui/editorui.js'][816]++;
+ editor.addListener("selectionchange", (function () {
+ _$jscoverage['ui/editorui.js'][817]++;
+ ui.setDisabled((editor.queryCommandState("autotypeset") == -1));
+}));
+ _$jscoverage['ui/editorui.js'][819]++;
+ return ui;
+});
+})();
diff --git a/_test/coverage/ui/mask.js b/_test/coverage/ui/mask.js
new file mode 100644
index 000000000..c9498ee73
--- /dev/null
+++ b/_test/coverage/ui/mask.js
@@ -0,0 +1,127 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/mask.js']) {
+ _$jscoverage['ui/mask.js'] = [];
+ _$jscoverage['ui/mask.js'][3] = 0;
+ _$jscoverage['ui/mask.js'][4] = 0;
+ _$jscoverage['ui/mask.js'][9] = 0;
+ _$jscoverage['ui/mask.js'][10] = 0;
+ _$jscoverage['ui/mask.js'][11] = 0;
+ _$jscoverage['ui/mask.js'][13] = 0;
+ _$jscoverage['ui/mask.js'][15] = 0;
+ _$jscoverage['ui/mask.js'][18] = 0;
+ _$jscoverage['ui/mask.js'][19] = 0;
+ _$jscoverage['ui/mask.js'][20] = 0;
+ _$jscoverage['ui/mask.js'][21] = 0;
+ _$jscoverage['ui/mask.js'][22] = 0;
+ _$jscoverage['ui/mask.js'][28] = 0;
+ _$jscoverage['ui/mask.js'][29] = 0;
+ _$jscoverage['ui/mask.js'][30] = 0;
+ _$jscoverage['ui/mask.js'][33] = 0;
+ _$jscoverage['ui/mask.js'][34] = 0;
+ _$jscoverage['ui/mask.js'][37] = 0;
+ _$jscoverage['ui/mask.js'][40] = 0;
+ _$jscoverage['ui/mask.js'][43] = 0;
+ _$jscoverage['ui/mask.js'][44] = 0;
+ _$jscoverage['ui/mask.js'][45] = 0;
+ _$jscoverage['ui/mask.js'][46] = 0;
+ _$jscoverage['ui/mask.js'][49] = 0;
+}
+_$jscoverage['ui/mask.js'].source = ["///import core ","///import uicore ","( function () { "," var utils = baidu. editor. utils, "," domUtils = baidu. editor. dom. domUtils, "," UIBase = baidu. editor. ui. UIBase, "," uiUtils = baidu. editor. ui. uiUtils; "," "," var Mask = baidu. editor. ui. Mask = function ( options) { "," this . initOptions( options); "," this . initUIBase(); "," } ; "," Mask. prototype = { "," getHtmlTpl: function () { "," return '<div id=\"##\" class=\"edui-mask %%\" onmousedown=\"return $$._onMouseDown(event, this);\"></div>' ; "," } , "," postRender: function () { "," var me = this ; "," domUtils. on( window, 'resize' , function () { "," setTimeout( function () { "," if (! me. isHidden()) { "," me. _fill(); "," } "," } ); "," } ); "," } , "," show: function ( zIndex) { "," this . _fill(); "," this . getDom(). style. display = '' ; "," this . getDom(). style. zIndex = zIndex; "," } , "," hide: function () { "," this . getDom(). style. display = 'none' ; "," this . getDom(). style. zIndex = '' ; "," } , "," isHidden: function () { "," return this . getDom(). style. display == 'none' ; "," } , "," _onMouseDown: function () { "," return false ; "," } , "," _fill: function () { "," var el = this . getDom(); "," var vpRect = uiUtils. getViewportRect(); "," el. style. width = vpRect. width + 'px' ; "," el. style. height = vpRect. height + 'px' ; "," } "," } ; "," utils. inherits( Mask, UIBase); ","} )(); "];
+_$jscoverage['ui/mask.js'][3]++;
+(function () {
+ _$jscoverage['ui/mask.js'][4]++;
+ var utils = baidu.editor.utils, domUtils = baidu.editor.dom.domUtils, UIBase = baidu.editor.ui.UIBase, uiUtils = baidu.editor.ui.uiUtils;
+ _$jscoverage['ui/mask.js'][9]++;
+ var Mask = (baidu.editor.ui.Mask = (function (options) {
+ _$jscoverage['ui/mask.js'][10]++;
+ this.initOptions(options);
+ _$jscoverage['ui/mask.js'][11]++;
+ this.initUIBase();
+}));
+ _$jscoverage['ui/mask.js'][13]++;
+ Mask.prototype = {getHtmlTpl: (function () {
+ _$jscoverage['ui/mask.js'][15]++;
+ return "
";
+}), postRender: (function () {
+ _$jscoverage['ui/mask.js'][18]++;
+ var me = this;
+ _$jscoverage['ui/mask.js'][19]++;
+ domUtils.on(window, "resize", (function () {
+ _$jscoverage['ui/mask.js'][20]++;
+ setTimeout((function () {
+ _$jscoverage['ui/mask.js'][21]++;
+ if ((! me.isHidden())) {
+ _$jscoverage['ui/mask.js'][22]++;
+ me._fill();
+ }
+}));
+}));
+}), show: (function (zIndex) {
+ _$jscoverage['ui/mask.js'][28]++;
+ this._fill();
+ _$jscoverage['ui/mask.js'][29]++;
+ this.getDom().style.display = "";
+ _$jscoverage['ui/mask.js'][30]++;
+ this.getDom().style.zIndex = zIndex;
+}), hide: (function () {
+ _$jscoverage['ui/mask.js'][33]++;
+ this.getDom().style.display = "none";
+ _$jscoverage['ui/mask.js'][34]++;
+ this.getDom().style.zIndex = "";
+}), isHidden: (function () {
+ _$jscoverage['ui/mask.js'][37]++;
+ return (this.getDom().style.display == "none");
+}), _onMouseDown: (function () {
+ _$jscoverage['ui/mask.js'][40]++;
+ return false;
+}), _fill: (function () {
+ _$jscoverage['ui/mask.js'][43]++;
+ var el = this.getDom();
+ _$jscoverage['ui/mask.js'][44]++;
+ var vpRect = uiUtils.getViewportRect();
+ _$jscoverage['ui/mask.js'][45]++;
+ el.style.width = (vpRect.width + "px");
+ _$jscoverage['ui/mask.js'][46]++;
+ el.style.height = (vpRect.height + "px");
+})};
+ _$jscoverage['ui/mask.js'][49]++;
+ utils.inherits(Mask, UIBase);
+})();
diff --git a/_test/coverage/ui/menu.js b/_test/coverage/ui/menu.js
new file mode 100644
index 000000000..8f001266a
--- /dev/null
+++ b/_test/coverage/ui/menu.js
@@ -0,0 +1,541 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/menu.js']) {
+ _$jscoverage['ui/menu.js'] = [];
+ _$jscoverage['ui/menu.js'][5] = 0;
+ _$jscoverage['ui/menu.js'][6] = 0;
+ _$jscoverage['ui/menu.js'][15] = 0;
+ _$jscoverage['ui/menu.js'][16] = 0;
+ _$jscoverage['ui/menu.js'][19] = 0;
+ _$jscoverage['ui/menu.js'][21] = 0;
+ _$jscoverage['ui/menu.js'][26] = 0;
+ _$jscoverage['ui/menu.js'][29] = 0;
+ _$jscoverage['ui/menu.js'][33] = 0;
+ _$jscoverage['ui/menu.js'][34] = 0;
+ _$jscoverage['ui/menu.js'][35] = 0;
+ _$jscoverage['ui/menu.js'][38] = 0;
+ _$jscoverage['ui/menu.js'][39] = 0;
+ _$jscoverage['ui/menu.js'][40] = 0;
+ _$jscoverage['ui/menu.js'][41] = 0;
+ _$jscoverage['ui/menu.js'][42] = 0;
+ _$jscoverage['ui/menu.js'][43] = 0;
+ _$jscoverage['ui/menu.js'][44] = 0;
+ _$jscoverage['ui/menu.js'][45] = 0;
+ _$jscoverage['ui/menu.js'][50] = 0;
+ _$jscoverage['ui/menu.js'][54] = 0;
+ _$jscoverage['ui/menu.js'][55] = 0;
+ _$jscoverage['ui/menu.js'][59] = 0;
+ _$jscoverage['ui/menu.js'][60] = 0;
+ _$jscoverage['ui/menu.js'][62] = 0;
+ _$jscoverage['ui/menu.js'][63] = 0;
+ _$jscoverage['ui/menu.js'][64] = 0;
+ _$jscoverage['ui/menu.js'][65] = 0;
+ _$jscoverage['ui/menu.js'][67] = 0;
+ _$jscoverage['ui/menu.js'][71] = 0;
+ _$jscoverage['ui/menu.js'][72] = 0;
+ _$jscoverage['ui/menu.js'][73] = 0;
+ _$jscoverage['ui/menu.js'][74] = 0;
+ _$jscoverage['ui/menu.js'][75] = 0;
+ _$jscoverage['ui/menu.js'][77] = 0;
+ _$jscoverage['ui/menu.js'][78] = 0;
+ _$jscoverage['ui/menu.js'][79] = 0;
+ _$jscoverage['ui/menu.js'][80] = 0;
+ _$jscoverage['ui/menu.js'][81] = 0;
+ _$jscoverage['ui/menu.js'][82] = 0;
+ _$jscoverage['ui/menu.js'][85] = 0;
+ _$jscoverage['ui/menu.js'][88] = 0;
+ _$jscoverage['ui/menu.js'][89] = 0;
+ _$jscoverage['ui/menu.js'][90] = 0;
+ _$jscoverage['ui/menu.js'][92] = 0;
+ _$jscoverage['ui/menu.js'][93] = 0;
+ _$jscoverage['ui/menu.js'][94] = 0;
+ _$jscoverage['ui/menu.js'][95] = 0;
+ _$jscoverage['ui/menu.js'][101] = 0;
+ _$jscoverage['ui/menu.js'][102] = 0;
+ _$jscoverage['ui/menu.js'][103] = 0;
+ _$jscoverage['ui/menu.js'][104] = 0;
+ _$jscoverage['ui/menu.js'][105] = 0;
+ _$jscoverage['ui/menu.js'][106] = 0;
+ _$jscoverage['ui/menu.js'][109] = 0;
+ _$jscoverage['ui/menu.js'][112] = 0;
+ _$jscoverage['ui/menu.js'][113] = 0;
+ _$jscoverage['ui/menu.js'][115] = 0;
+ _$jscoverage['ui/menu.js'][118] = 0;
+ _$jscoverage['ui/menu.js'][121] = 0;
+ _$jscoverage['ui/menu.js'][127] = 0;
+ _$jscoverage['ui/menu.js'][128] = 0;
+ _$jscoverage['ui/menu.js'][129] = 0;
+ _$jscoverage['ui/menu.js'][130] = 0;
+ _$jscoverage['ui/menu.js'][131] = 0;
+ _$jscoverage['ui/menu.js'][132] = 0;
+ _$jscoverage['ui/menu.js'][133] = 0;
+ _$jscoverage['ui/menu.js'][136] = 0;
+ _$jscoverage['ui/menu.js'][138] = 0;
+ _$jscoverage['ui/menu.js'][143] = 0;
+ _$jscoverage['ui/menu.js'][144] = 0;
+ _$jscoverage['ui/menu.js'][148] = 0;
+ _$jscoverage['ui/menu.js'][149] = 0;
+ _$jscoverage['ui/menu.js'][150] = 0;
+ _$jscoverage['ui/menu.js'][154] = 0;
+ _$jscoverage['ui/menu.js'][158] = 0;
+ _$jscoverage['ui/menu.js'][165] = 0;
+ _$jscoverage['ui/menu.js'][172] = 0;
+ _$jscoverage['ui/menu.js'][173] = 0;
+ _$jscoverage['ui/menu.js'][174] = 0;
+ _$jscoverage['ui/menu.js'][175] = 0;
+ _$jscoverage['ui/menu.js'][176] = 0;
+ _$jscoverage['ui/menu.js'][179] = 0;
+ _$jscoverage['ui/menu.js'][180] = 0;
+ _$jscoverage['ui/menu.js'][181] = 0;
+ _$jscoverage['ui/menu.js'][182] = 0;
+ _$jscoverage['ui/menu.js'][183] = 0;
+ _$jscoverage['ui/menu.js'][185] = 0;
+ _$jscoverage['ui/menu.js'][186] = 0;
+ _$jscoverage['ui/menu.js'][187] = 0;
+ _$jscoverage['ui/menu.js'][188] = 0;
+ _$jscoverage['ui/menu.js'][190] = 0;
+ _$jscoverage['ui/menu.js'][191] = 0;
+ _$jscoverage['ui/menu.js'][193] = 0;
+ _$jscoverage['ui/menu.js'][194] = 0;
+ _$jscoverage['ui/menu.js'][195] = 0;
+ _$jscoverage['ui/menu.js'][198] = 0;
+ _$jscoverage['ui/menu.js'][199] = 0;
+ _$jscoverage['ui/menu.js'][200] = 0;
+ _$jscoverage['ui/menu.js'][201] = 0;
+ _$jscoverage['ui/menu.js'][203] = 0;
+ _$jscoverage['ui/menu.js'][206] = 0;
+ _$jscoverage['ui/menu.js'][207] = 0;
+ _$jscoverage['ui/menu.js'][208] = 0;
+ _$jscoverage['ui/menu.js'][211] = 0;
+ _$jscoverage['ui/menu.js'][212] = 0;
+ _$jscoverage['ui/menu.js'][213] = 0;
+ _$jscoverage['ui/menu.js'][214] = 0;
+ _$jscoverage['ui/menu.js'][215] = 0;
+ _$jscoverage['ui/menu.js'][216] = 0;
+ _$jscoverage['ui/menu.js'][217] = 0;
+ _$jscoverage['ui/menu.js'][218] = 0;
+ _$jscoverage['ui/menu.js'][223] = 0;
+ _$jscoverage['ui/menu.js'][224] = 0;
+ _$jscoverage['ui/menu.js'][225] = 0;
+ _$jscoverage['ui/menu.js'][226] = 0;
+ _$jscoverage['ui/menu.js'][227] = 0;
+ _$jscoverage['ui/menu.js'][228] = 0;
+ _$jscoverage['ui/menu.js'][229] = 0;
+ _$jscoverage['ui/menu.js'][230] = 0;
+ _$jscoverage['ui/menu.js'][232] = 0;
+ _$jscoverage['ui/menu.js'][238] = 0;
+ _$jscoverage['ui/menu.js'][243] = 0;
+ _$jscoverage['ui/menu.js'][246] = 0;
+ _$jscoverage['ui/menu.js'][247] = 0;
+ _$jscoverage['ui/menu.js'][251] = 0;
+ _$jscoverage['ui/menu.js'][252] = 0;
+ _$jscoverage['ui/menu.js'][253] = 0;
+ _$jscoverage['ui/menu.js'][254] = 0;
+ _$jscoverage['ui/menu.js'][256] = 0;
+ _$jscoverage['ui/menu.js'][261] = 0;
+ _$jscoverage['ui/menu.js'][262] = 0;
+ _$jscoverage['ui/menu.js'][263] = 0;
+ _$jscoverage['ui/menu.js'][264] = 0;
+ _$jscoverage['ui/menu.js'][265] = 0;
+ _$jscoverage['ui/menu.js'][266] = 0;
+ _$jscoverage['ui/menu.js'][267] = 0;
+ _$jscoverage['ui/menu.js'][268] = 0;
+ _$jscoverage['ui/menu.js'][271] = 0;
+ _$jscoverage['ui/menu.js'][274] = 0;
+ _$jscoverage['ui/menu.js'][275] = 0;
+}
+_$jscoverage['ui/menu.js'].source = ["///import core ","///import uicore ","///import ui\\popup.js ","///import ui\\stateful.js ","( function () { "," var utils = baidu. editor. utils, "," domUtils = baidu. editor. dom. domUtils, "," uiUtils = baidu. editor. ui. uiUtils, "," UIBase = baidu. editor. ui. UIBase, "," Popup = baidu. editor. ui. Popup, "," Stateful = baidu. editor. ui. Stateful, "," CellAlignPicker = baidu. editor. ui. CellAlignPicker, ",""," Menu = baidu. editor. ui. Menu = function ( options) { "," this . initOptions( options); "," this . initMenu(); "," } ; ",""," var menuSeparator = { "," renderHtml: function () { "," return '<div class=\"edui-menuitem edui-menuseparator\"><div class=\"edui-menuseparator-inner\"></div></div>' ; "," } , "," postRender: function () { "," } , "," queryAutoHide: function () { "," return true ; "," } "," } ; "," Menu. prototype = { "," items: null , "," uiName: 'menu' , "," initMenu: function () { "," this . items = this . items || []; "," this . initPopup(); "," this . initItems(); "," } , "," initItems: function () { "," for ( var i = 0 ; i < this . items. length; i++) { "," var item = this . items[ i]; "," if ( item == '-' ) { "," this . items[ i] = this . getSeparator(); "," } else if (!( item instanceof MenuItem)) { "," item. editor = this . editor; "," item. theme = this . editor. options. theme; "," this . items[ i] = this . createItem( item); "," } "," } "," } , "," getSeparator: function () { "," return menuSeparator; "," } , "," createItem: function ( item) { "," //新增一个参数menu, 该参数存储了menuItem所对应的menu引用 "," item. menu = this ; "," return new MenuItem( item); "," } , "," _Popup_getContentHtmlTpl: Popup. prototype. getContentHtmlTpl, "," getContentHtmlTpl: function () { "," if ( this . items. length == 0 ) { "," return this . _Popup_getContentHtmlTpl(); "," } "," var buff = []; "," for ( var i = 0 ; i < this . items. length; i++) { "," var item = this . items[ i]; "," buff[ i] = item. renderHtml(); "," } "," return ( '<div class=\"%%-body\">' + buff. join( '' ) + '</div>' ); "," } , "," _Popup_postRender: Popup. prototype. postRender, "," postRender: function () { "," var me = this ; "," for ( var i = 0 ; i < this . items. length; i++) { "," var item = this . items[ i]; "," item. ownerMenu = this ; "," item. postRender(); "," } "," domUtils. on( this . getDom(), 'mouseover' , function ( evt) { "," evt = evt || event; "," var rel = evt. relatedTarget || evt. fromElement; "," var el = me. getDom(); "," if (! uiUtils. contains( el, rel) && el !== rel) { "," me. fireEvent( 'over' ); "," } "," } ); "," this . _Popup_postRender(); "," } , "," queryAutoHide: function ( el) { "," if ( el) { "," if ( uiUtils. contains( this . getDom(), el)) { "," return false ; "," } "," for ( var i = 0 ; i < this . items. length; i++) { "," var item = this . items[ i]; "," if ( item. queryAutoHide( el) === false ) { "," return false ; "," } "," } "," } "," } , "," clearItems: function () { "," for ( var i = 0 ; i < this . items. length; i++) { "," var item = this . items[ i]; "," clearTimeout( item. _showingTimer); "," clearTimeout( item. _closingTimer); "," if ( item. subMenu) { "," item. subMenu. destroy(); "," } "," } "," this . items = []; "," } , "," destroy: function () { "," if ( this . getDom()) { "," domUtils. remove( this . getDom()); "," } "," this . clearItems(); "," } , "," dispose: function () { "," this . destroy(); "," } "," } ; "," utils. inherits( Menu, Popup); ",""," /** "," * @update 2013/04/03 hancong03 新增一个参数menu, 该参数存储了menuItem所对应的menu引用 "," * @type {Function} "," */ "," var MenuItem = baidu. editor. ui. MenuItem = function ( options) { "," this . initOptions( options); "," this . initUIBase(); "," this . Stateful_init(); "," if ( this . subMenu && !( this . subMenu instanceof Menu)) { "," if ( options. className && options. className. indexOf( \"aligntd\" ) != - 1 ) { "," var me = this ; ",""," //获取单元格对齐初始状态 "," this . subMenu. selected = this . editor. queryCommandValue( 'cellalignment' ); ",""," this . subMenu = new Popup( { "," content: new CellAlignPicker( this . subMenu), "," parentMenu: me, "," editor: me. editor, "," destroy: function () { "," if ( this . getDom()) { "," domUtils. remove( this . getDom()); "," } "," } "," } ); "," this . subMenu. addListener( \"postRenderAfter\" , function () { "," domUtils. on( this . getDom(), \"mouseover\" , function () { "," me. addState( 'opened' ); "," } ); "," } ); "," } else { "," this . subMenu = new Menu( this . subMenu); "," } "," } "," } ; "," MenuItem. prototype = { "," label: '' , "," subMenu: null , "," ownerMenu: null , "," uiName: 'menuitem' , "," alwalysHoverable: true , "," getHtmlTpl: function () { "," return '<div id=\"##\" class=\"%%\" stateful onclick=\"$$._onClick(event, this);\">' + "," '<div class=\"%%-body\">' + "," this . renderLabelHtml() + "," '</div>' + "," '</div>' ; "," } , "," postRender: function () { "," var me = this ; "," this . addListener( 'over' , function () { "," me. ownerMenu. fireEvent( 'submenuover' , me); "," if ( me. subMenu) { "," me. delayShowSubMenu(); "," } "," } ); "," if ( this . subMenu) { "," this . getDom(). className += ' edui-hassubmenu' ; "," this . subMenu. render(); "," this . addListener( 'out' , function () { "," me. delayHideSubMenu(); "," } ); "," this . subMenu. addListener( 'over' , function () { "," clearTimeout( me. _closingTimer); "," me. _closingTimer = null ; "," me. addState( 'opened' ); "," } ); "," this . ownerMenu. addListener( 'hide' , function () { "," me. hideSubMenu(); "," } ); "," this . ownerMenu. addListener( 'submenuover' , function ( t, subMenu) { "," if ( subMenu !== me) { "," me. delayHideSubMenu(); "," } "," } ); "," this . subMenu. _bakQueryAutoHide = this . subMenu. queryAutoHide; "," this . subMenu. queryAutoHide = function ( el) { "," if ( el && uiUtils. contains( me. getDom(), el)) { "," return false ; "," } "," return this . _bakQueryAutoHide( el); "," } ; "," } "," this . getDom(). style. tabIndex = '-1' ; "," uiUtils. makeUnselectable( this . getDom()); "," this . Stateful_postRender(); "," } , "," delayShowSubMenu: function () { "," var me = this ; "," if (! me. isDisabled()) { "," me. addState( 'opened' ); "," clearTimeout( me. _showingTimer); "," clearTimeout( me. _closingTimer); "," me. _closingTimer = null ; "," me. _showingTimer = setTimeout( function () { "," me. showSubMenu(); "," } , 250 ); "," } "," } , "," delayHideSubMenu: function () { "," var me = this ; "," if (! me. isDisabled()) { "," me. removeState( 'opened' ); "," clearTimeout( me. _showingTimer); "," if (! me. _closingTimer) { "," me. _closingTimer = setTimeout( function () { "," if (! me. hasState( 'opened' )) { "," me. hideSubMenu(); "," } "," me. _closingTimer = null ; "," } , 400 ); "," } "," } "," } , "," renderLabelHtml: function () { "," return '<div class=\"edui-arrow\"></div>' + "," '<div class=\"edui-box edui-icon\"></div>' + "," '<div class=\"edui-box edui-label %%-label\">' + ( this . label || '' ) + '</div>' ; "," } , "," getStateDom: function () { "," return this . getDom(); "," } , "," queryAutoHide: function ( el) { "," if ( this . subMenu && this . hasState( 'opened' )) { "," return this . subMenu. queryAutoHide( el); "," } "," } , "," _onClick: function ( event, this_) { "," if ( this . hasState( 'disabled' )) return ; "," if ( this . fireEvent( 'click' , event, this_) !== false ) { "," if ( this . subMenu) { "," this . showSubMenu(); "," } else { "," Popup. postHide( event); "," } "," } "," } , "," showSubMenu: function () { "," var rect = uiUtils. getClientRect( this . getDom()); "," rect. right -= 5 ; "," rect. left += 2 ; "," rect. width -= 7 ; "," rect. top -= 4 ; "," rect. bottom += 4 ; "," rect. height += 8 ; "," this . subMenu. showAnchorRect( rect, true , true ); "," } , "," hideSubMenu: function () { "," this . subMenu. hide(); "," } "," } ; "," utils. inherits( MenuItem, UIBase); "," utils. extend( MenuItem. prototype, Stateful, true ); ","} )(); "];
+_$jscoverage['ui/menu.js'][5]++;
+(function () {
+ _$jscoverage['ui/menu.js'][6]++;
+ var utils = baidu.editor.utils, domUtils = baidu.editor.dom.domUtils, uiUtils = baidu.editor.ui.uiUtils, UIBase = baidu.editor.ui.UIBase, Popup = baidu.editor.ui.Popup, Stateful = baidu.editor.ui.Stateful, CellAlignPicker = baidu.editor.ui.CellAlignPicker, Menu = (baidu.editor.ui.Menu = (function (options) {
+ _$jscoverage['ui/menu.js'][15]++;
+ this.initOptions(options);
+ _$jscoverage['ui/menu.js'][16]++;
+ this.initMenu();
+}));
+ _$jscoverage['ui/menu.js'][19]++;
+ var menuSeparator = {renderHtml: (function () {
+ _$jscoverage['ui/menu.js'][21]++;
+ return "";
+}), postRender: (function () {
+}), queryAutoHide: (function () {
+ _$jscoverage['ui/menu.js'][26]++;
+ return true;
+})};
+ _$jscoverage['ui/menu.js'][29]++;
+ Menu.prototype = {items: null, uiName: "menu", initMenu: (function () {
+ _$jscoverage['ui/menu.js'][33]++;
+ this.items = (this.items || []);
+ _$jscoverage['ui/menu.js'][34]++;
+ this.initPopup();
+ _$jscoverage['ui/menu.js'][35]++;
+ this.initItems();
+}), initItems: (function () {
+ _$jscoverage['ui/menu.js'][38]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/menu.js'][39]++;
+ var item = this.items[i];
+ _$jscoverage['ui/menu.js'][40]++;
+ if ((item == "-")) {
+ _$jscoverage['ui/menu.js'][41]++;
+ this.items[i] = this.getSeparator();
+ }
+ else {
+ _$jscoverage['ui/menu.js'][42]++;
+ if ((! (item instanceof MenuItem))) {
+ _$jscoverage['ui/menu.js'][43]++;
+ item.editor = this.editor;
+ _$jscoverage['ui/menu.js'][44]++;
+ item.theme = this.editor.options.theme;
+ _$jscoverage['ui/menu.js'][45]++;
+ this.items[i] = this.createItem(item);
+ }
+ }
+}
+}), getSeparator: (function () {
+ _$jscoverage['ui/menu.js'][50]++;
+ return menuSeparator;
+}), createItem: (function (item) {
+ _$jscoverage['ui/menu.js'][54]++;
+ item.menu = this;
+ _$jscoverage['ui/menu.js'][55]++;
+ return new MenuItem(item);
+}), _Popup_getContentHtmlTpl: Popup.prototype.getContentHtmlTpl, getContentHtmlTpl: (function () {
+ _$jscoverage['ui/menu.js'][59]++;
+ if ((this.items.length == 0)) {
+ _$jscoverage['ui/menu.js'][60]++;
+ return this._Popup_getContentHtmlTpl();
+ }
+ _$jscoverage['ui/menu.js'][62]++;
+ var buff = [];
+ _$jscoverage['ui/menu.js'][63]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/menu.js'][64]++;
+ var item = this.items[i];
+ _$jscoverage['ui/menu.js'][65]++;
+ buff[i] = item.renderHtml();
+}
+ _$jscoverage['ui/menu.js'][67]++;
+ return ("" + buff.join("") + "
");
+}), _Popup_postRender: Popup.prototype.postRender, postRender: (function () {
+ _$jscoverage['ui/menu.js'][71]++;
+ var me = this;
+ _$jscoverage['ui/menu.js'][72]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/menu.js'][73]++;
+ var item = this.items[i];
+ _$jscoverage['ui/menu.js'][74]++;
+ item.ownerMenu = this;
+ _$jscoverage['ui/menu.js'][75]++;
+ item.postRender();
+}
+ _$jscoverage['ui/menu.js'][77]++;
+ domUtils.on(this.getDom(), "mouseover", (function (evt) {
+ _$jscoverage['ui/menu.js'][78]++;
+ evt = (evt || event);
+ _$jscoverage['ui/menu.js'][79]++;
+ var rel = (evt.relatedTarget || evt.fromElement);
+ _$jscoverage['ui/menu.js'][80]++;
+ var el = me.getDom();
+ _$jscoverage['ui/menu.js'][81]++;
+ if (((! uiUtils.contains(el, rel)) && (el !== rel))) {
+ _$jscoverage['ui/menu.js'][82]++;
+ me.fireEvent("over");
+ }
+}));
+ _$jscoverage['ui/menu.js'][85]++;
+ this._Popup_postRender();
+}), queryAutoHide: (function (el) {
+ _$jscoverage['ui/menu.js'][88]++;
+ if (el) {
+ _$jscoverage['ui/menu.js'][89]++;
+ if (uiUtils.contains(this.getDom(), el)) {
+ _$jscoverage['ui/menu.js'][90]++;
+ return false;
+ }
+ _$jscoverage['ui/menu.js'][92]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/menu.js'][93]++;
+ var item = this.items[i];
+ _$jscoverage['ui/menu.js'][94]++;
+ if ((item.queryAutoHide(el) === false)) {
+ _$jscoverage['ui/menu.js'][95]++;
+ return false;
+ }
+}
+ }
+}), clearItems: (function () {
+ _$jscoverage['ui/menu.js'][101]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/menu.js'][102]++;
+ var item = this.items[i];
+ _$jscoverage['ui/menu.js'][103]++;
+ clearTimeout(item._showingTimer);
+ _$jscoverage['ui/menu.js'][104]++;
+ clearTimeout(item._closingTimer);
+ _$jscoverage['ui/menu.js'][105]++;
+ if (item.subMenu) {
+ _$jscoverage['ui/menu.js'][106]++;
+ item.subMenu.destroy();
+ }
+}
+ _$jscoverage['ui/menu.js'][109]++;
+ this.items = [];
+}), destroy: (function () {
+ _$jscoverage['ui/menu.js'][112]++;
+ if (this.getDom()) {
+ _$jscoverage['ui/menu.js'][113]++;
+ domUtils.remove(this.getDom());
+ }
+ _$jscoverage['ui/menu.js'][115]++;
+ this.clearItems();
+}), dispose: (function () {
+ _$jscoverage['ui/menu.js'][118]++;
+ this.destroy();
+})};
+ _$jscoverage['ui/menu.js'][121]++;
+ utils.inherits(Menu, Popup);
+ _$jscoverage['ui/menu.js'][127]++;
+ var MenuItem = (baidu.editor.ui.MenuItem = (function (options) {
+ _$jscoverage['ui/menu.js'][128]++;
+ this.initOptions(options);
+ _$jscoverage['ui/menu.js'][129]++;
+ this.initUIBase();
+ _$jscoverage['ui/menu.js'][130]++;
+ this.Stateful_init();
+ _$jscoverage['ui/menu.js'][131]++;
+ if ((this.subMenu && (! (this.subMenu instanceof Menu)))) {
+ _$jscoverage['ui/menu.js'][132]++;
+ if ((options.className && (options.className.indexOf("aligntd") != -1))) {
+ _$jscoverage['ui/menu.js'][133]++;
+ var me = this;
+ _$jscoverage['ui/menu.js'][136]++;
+ this.subMenu.selected = this.editor.queryCommandValue("cellalignment");
+ _$jscoverage['ui/menu.js'][138]++;
+ this.subMenu = new Popup({content: new CellAlignPicker(this.subMenu), parentMenu: me, editor: me.editor, destroy: (function () {
+ _$jscoverage['ui/menu.js'][143]++;
+ if (this.getDom()) {
+ _$jscoverage['ui/menu.js'][144]++;
+ domUtils.remove(this.getDom());
+ }
+})});
+ _$jscoverage['ui/menu.js'][148]++;
+ this.subMenu.addListener("postRenderAfter", (function () {
+ _$jscoverage['ui/menu.js'][149]++;
+ domUtils.on(this.getDom(), "mouseover", (function () {
+ _$jscoverage['ui/menu.js'][150]++;
+ me.addState("opened");
+}));
+}));
+ }
+ else {
+ _$jscoverage['ui/menu.js'][154]++;
+ this.subMenu = new Menu(this.subMenu);
+ }
+ }
+}));
+ _$jscoverage['ui/menu.js'][158]++;
+ MenuItem.prototype = {label: "", subMenu: null, ownerMenu: null, uiName: "menuitem", alwalysHoverable: true, getHtmlTpl: (function () {
+ _$jscoverage['ui/menu.js'][165]++;
+ return ("" + "
" + this.renderLabelHtml() + "
" + "
");
+}), postRender: (function () {
+ _$jscoverage['ui/menu.js'][172]++;
+ var me = this;
+ _$jscoverage['ui/menu.js'][173]++;
+ this.addListener("over", (function () {
+ _$jscoverage['ui/menu.js'][174]++;
+ me.ownerMenu.fireEvent("submenuover", me);
+ _$jscoverage['ui/menu.js'][175]++;
+ if (me.subMenu) {
+ _$jscoverage['ui/menu.js'][176]++;
+ me.delayShowSubMenu();
+ }
+}));
+ _$jscoverage['ui/menu.js'][179]++;
+ if (this.subMenu) {
+ _$jscoverage['ui/menu.js'][180]++;
+ this.getDom().className += " edui-hassubmenu";
+ _$jscoverage['ui/menu.js'][181]++;
+ this.subMenu.render();
+ _$jscoverage['ui/menu.js'][182]++;
+ this.addListener("out", (function () {
+ _$jscoverage['ui/menu.js'][183]++;
+ me.delayHideSubMenu();
+}));
+ _$jscoverage['ui/menu.js'][185]++;
+ this.subMenu.addListener("over", (function () {
+ _$jscoverage['ui/menu.js'][186]++;
+ clearTimeout(me._closingTimer);
+ _$jscoverage['ui/menu.js'][187]++;
+ me._closingTimer = null;
+ _$jscoverage['ui/menu.js'][188]++;
+ me.addState("opened");
+}));
+ _$jscoverage['ui/menu.js'][190]++;
+ this.ownerMenu.addListener("hide", (function () {
+ _$jscoverage['ui/menu.js'][191]++;
+ me.hideSubMenu();
+}));
+ _$jscoverage['ui/menu.js'][193]++;
+ this.ownerMenu.addListener("submenuover", (function (t, subMenu) {
+ _$jscoverage['ui/menu.js'][194]++;
+ if ((subMenu !== me)) {
+ _$jscoverage['ui/menu.js'][195]++;
+ me.delayHideSubMenu();
+ }
+}));
+ _$jscoverage['ui/menu.js'][198]++;
+ this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide;
+ _$jscoverage['ui/menu.js'][199]++;
+ this.subMenu.queryAutoHide = (function (el) {
+ _$jscoverage['ui/menu.js'][200]++;
+ if ((el && uiUtils.contains(me.getDom(), el))) {
+ _$jscoverage['ui/menu.js'][201]++;
+ return false;
+ }
+ _$jscoverage['ui/menu.js'][203]++;
+ return this._bakQueryAutoHide(el);
+});
+ }
+ _$jscoverage['ui/menu.js'][206]++;
+ this.getDom().style.tabIndex = "-1";
+ _$jscoverage['ui/menu.js'][207]++;
+ uiUtils.makeUnselectable(this.getDom());
+ _$jscoverage['ui/menu.js'][208]++;
+ this.Stateful_postRender();
+}), delayShowSubMenu: (function () {
+ _$jscoverage['ui/menu.js'][211]++;
+ var me = this;
+ _$jscoverage['ui/menu.js'][212]++;
+ if ((! me.isDisabled())) {
+ _$jscoverage['ui/menu.js'][213]++;
+ me.addState("opened");
+ _$jscoverage['ui/menu.js'][214]++;
+ clearTimeout(me._showingTimer);
+ _$jscoverage['ui/menu.js'][215]++;
+ clearTimeout(me._closingTimer);
+ _$jscoverage['ui/menu.js'][216]++;
+ me._closingTimer = null;
+ _$jscoverage['ui/menu.js'][217]++;
+ me._showingTimer = setTimeout((function () {
+ _$jscoverage['ui/menu.js'][218]++;
+ me.showSubMenu();
+}), 250);
+ }
+}), delayHideSubMenu: (function () {
+ _$jscoverage['ui/menu.js'][223]++;
+ var me = this;
+ _$jscoverage['ui/menu.js'][224]++;
+ if ((! me.isDisabled())) {
+ _$jscoverage['ui/menu.js'][225]++;
+ me.removeState("opened");
+ _$jscoverage['ui/menu.js'][226]++;
+ clearTimeout(me._showingTimer);
+ _$jscoverage['ui/menu.js'][227]++;
+ if ((! me._closingTimer)) {
+ _$jscoverage['ui/menu.js'][228]++;
+ me._closingTimer = setTimeout((function () {
+ _$jscoverage['ui/menu.js'][229]++;
+ if ((! me.hasState("opened"))) {
+ _$jscoverage['ui/menu.js'][230]++;
+ me.hideSubMenu();
+ }
+ _$jscoverage['ui/menu.js'][232]++;
+ me._closingTimer = null;
+}), 400);
+ }
+ }
+}), renderLabelHtml: (function () {
+ _$jscoverage['ui/menu.js'][238]++;
+ return ("
" + "
" + "" + (this.label || "") + "
");
+}), getStateDom: (function () {
+ _$jscoverage['ui/menu.js'][243]++;
+ return this.getDom();
+}), queryAutoHide: (function (el) {
+ _$jscoverage['ui/menu.js'][246]++;
+ if ((this.subMenu && this.hasState("opened"))) {
+ _$jscoverage['ui/menu.js'][247]++;
+ return this.subMenu.queryAutoHide(el);
+ }
+}), _onClick: (function (event, this_) {
+ _$jscoverage['ui/menu.js'][251]++;
+ if (this.hasState("disabled")) {
+ _$jscoverage['ui/menu.js'][251]++;
+ return;
+ }
+ _$jscoverage['ui/menu.js'][252]++;
+ if ((this.fireEvent("click", event, this_) !== false)) {
+ _$jscoverage['ui/menu.js'][253]++;
+ if (this.subMenu) {
+ _$jscoverage['ui/menu.js'][254]++;
+ this.showSubMenu();
+ }
+ else {
+ _$jscoverage['ui/menu.js'][256]++;
+ Popup.postHide(event);
+ }
+ }
+}), showSubMenu: (function () {
+ _$jscoverage['ui/menu.js'][261]++;
+ var rect = uiUtils.getClientRect(this.getDom());
+ _$jscoverage['ui/menu.js'][262]++;
+ rect.right -= 5;
+ _$jscoverage['ui/menu.js'][263]++;
+ rect.left += 2;
+ _$jscoverage['ui/menu.js'][264]++;
+ rect.width -= 7;
+ _$jscoverage['ui/menu.js'][265]++;
+ rect.top -= 4;
+ _$jscoverage['ui/menu.js'][266]++;
+ rect.bottom += 4;
+ _$jscoverage['ui/menu.js'][267]++;
+ rect.height += 8;
+ _$jscoverage['ui/menu.js'][268]++;
+ this.subMenu.showAnchorRect(rect, true, true);
+}), hideSubMenu: (function () {
+ _$jscoverage['ui/menu.js'][271]++;
+ this.subMenu.hide();
+})};
+ _$jscoverage['ui/menu.js'][274]++;
+ utils.inherits(MenuItem, UIBase);
+ _$jscoverage['ui/menu.js'][275]++;
+ utils.extend(MenuItem.prototype, Stateful, true);
+})();
diff --git a/_test/coverage/ui/menubutton.js b/_test/coverage/ui/menubutton.js
new file mode 100644
index 000000000..00f482ad9
--- /dev/null
+++ b/_test/coverage/ui/menubutton.js
@@ -0,0 +1,104 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/menubutton.js']) {
+ _$jscoverage['ui/menubutton.js'] = [];
+ _$jscoverage['ui/menubutton.js'][5] = 0;
+ _$jscoverage['ui/menubutton.js'][6] = 0;
+ _$jscoverage['ui/menubutton.js'][10] = 0;
+ _$jscoverage['ui/menubutton.js'][11] = 0;
+ _$jscoverage['ui/menubutton.js'][13] = 0;
+ _$jscoverage['ui/menubutton.js'][15] = 0;
+ _$jscoverage['ui/menubutton.js'][16] = 0;
+ _$jscoverage['ui/menubutton.js'][17] = 0;
+ _$jscoverage['ui/menubutton.js'][22] = 0;
+ _$jscoverage['ui/menubutton.js'][23] = 0;
+ _$jscoverage['ui/menubutton.js'][24] = 0;
+ _$jscoverage['ui/menubutton.js'][25] = 0;
+ _$jscoverage['ui/menubutton.js'][26] = 0;
+ _$jscoverage['ui/menubutton.js'][27] = 0;
+ _$jscoverage['ui/menubutton.js'][28] = 0;
+ _$jscoverage['ui/menubutton.js'][32] = 0;
+ _$jscoverage['ui/menubutton.js'][35] = 0;
+ _$jscoverage['ui/menubutton.js'][39] = 0;
+}
+_$jscoverage['ui/menubutton.js'].source = ["///import core ","///import uicore ","///import ui/menu.js ","///import ui/splitbutton.js ","( function () { "," var utils = baidu. editor. utils, "," Menu = baidu. editor. ui. Menu, "," SplitButton = baidu. editor. ui. SplitButton, "," MenuButton = baidu. editor. ui. MenuButton = function ( options) { "," this . initOptions( options); "," this . initMenuButton(); "," } ; "," MenuButton. prototype = { "," initMenuButton: function () { "," var me = this ; "," this . uiName = \"menubutton\" ; "," this . popup = new Menu( { "," items: me. items, "," className: me. className, "," editor: me. editor"," } ); "," this . popup. addListener( 'show' , function () { "," var list = this ; "," for ( var i= 0 ; i< list. items. length; i++) { "," list. items[ i]. removeState( 'checked' ); "," if ( list. items[ i]. value == me. _value) { "," list. items[ i]. addState( 'checked' ); "," this . value = me. _value; "," } "," } "," } ); "," this . initSplitButton(); "," } , "," setValue : function ( value) { "," this . _value = value; "," } "," "," } ; "," utils. inherits( MenuButton, SplitButton); ","} )(); "];
+_$jscoverage['ui/menubutton.js'][5]++;
+(function () {
+ _$jscoverage['ui/menubutton.js'][6]++;
+ var utils = baidu.editor.utils, Menu = baidu.editor.ui.Menu, SplitButton = baidu.editor.ui.SplitButton, MenuButton = (baidu.editor.ui.MenuButton = (function (options) {
+ _$jscoverage['ui/menubutton.js'][10]++;
+ this.initOptions(options);
+ _$jscoverage['ui/menubutton.js'][11]++;
+ this.initMenuButton();
+}));
+ _$jscoverage['ui/menubutton.js'][13]++;
+ MenuButton.prototype = {initMenuButton: (function () {
+ _$jscoverage['ui/menubutton.js'][15]++;
+ var me = this;
+ _$jscoverage['ui/menubutton.js'][16]++;
+ this.uiName = "menubutton";
+ _$jscoverage['ui/menubutton.js'][17]++;
+ this.popup = new Menu({items: me.items, className: me.className, editor: me.editor});
+ _$jscoverage['ui/menubutton.js'][22]++;
+ this.popup.addListener("show", (function () {
+ _$jscoverage['ui/menubutton.js'][23]++;
+ var list = this;
+ _$jscoverage['ui/menubutton.js'][24]++;
+ for (var i = 0; (i < list.items.length); (i++)) {
+ _$jscoverage['ui/menubutton.js'][25]++;
+ list.items[i].removeState("checked");
+ _$jscoverage['ui/menubutton.js'][26]++;
+ if ((list.items[i].value == me._value)) {
+ _$jscoverage['ui/menubutton.js'][27]++;
+ list.items[i].addState("checked");
+ _$jscoverage['ui/menubutton.js'][28]++;
+ this.value = me._value;
+ }
+}
+}));
+ _$jscoverage['ui/menubutton.js'][32]++;
+ this.initSplitButton();
+}), setValue: (function (value) {
+ _$jscoverage['ui/menubutton.js'][35]++;
+ this._value = value;
+})};
+ _$jscoverage['ui/menubutton.js'][39]++;
+ utils.inherits(MenuButton, SplitButton);
+})();
diff --git a/_test/coverage/ui/multiMenu.js b/_test/coverage/ui/multiMenu.js
new file mode 100644
index 000000000..78557ac8f
--- /dev/null
+++ b/_test/coverage/ui/multiMenu.js
@@ -0,0 +1,94 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/multiMenu.js']) {
+ _$jscoverage['ui/multiMenu.js'] = [];
+ _$jscoverage['ui/multiMenu.js'][4] = 0;
+ _$jscoverage['ui/multiMenu.js'][5] = 0;
+ _$jscoverage['ui/multiMenu.js'][9] = 0;
+ _$jscoverage['ui/multiMenu.js'][10] = 0;
+ _$jscoverage['ui/multiMenu.js'][13] = 0;
+ _$jscoverage['ui/multiMenu.js'][15] = 0;
+ _$jscoverage['ui/multiMenu.js'][16] = 0;
+ _$jscoverage['ui/multiMenu.js'][21] = 0;
+ _$jscoverage['ui/multiMenu.js'][22] = 0;
+ _$jscoverage['ui/multiMenu.js'][23] = 0;
+ _$jscoverage['ui/multiMenu.js'][24] = 0;
+ _$jscoverage['ui/multiMenu.js'][30] = 0;
+ _$jscoverage['ui/multiMenu.js'][31] = 0;
+ _$jscoverage['ui/multiMenu.js'][33] = 0;
+ _$jscoverage['ui/multiMenu.js'][38] = 0;
+}
+_$jscoverage['ui/multiMenu.js'].source = ["///import core ","///import uicore "," ///commands 表情 ","( function () { "," var utils = baidu. editor. utils, "," Popup = baidu. editor. ui. Popup, "," SplitButton = baidu. editor. ui. SplitButton, "," MultiMenuPop = baidu. editor. ui. MultiMenuPop = function ( options) { "," this . initOptions( options); "," this . initMultiMenu(); "," } ; ",""," MultiMenuPop. prototype = { "," initMultiMenu: function () { "," var me = this ; "," this . popup = new Popup( { "," content: '' , "," editor : me. editor, "," iframe_rendered: false , "," onshow: function () { "," if (! this . iframe_rendered) { "," this . iframe_rendered = true ; "," this . getDom( 'content' ). innerHTML = '<iframe id=\"' + me. id+ '_iframe\" src=\"' + me. iframeUrl + '\" frameborder=\"0\"></iframe>' ; "," me. editor. container. style. zIndex && ( this . getDom(). style. zIndex = me. editor. container. style. zIndex * 1 + 1 ); "," } "," } "," // canSideUp:false, "," // canSideLeft:false "," } ); "," this . onbuttonclick = function () { "," this . showPopup(); "," } ; "," this . initSplitButton(); "," } ",""," } ; ",""," utils. inherits( MultiMenuPop, SplitButton); ","} )(); "];
+_$jscoverage['ui/multiMenu.js'][4]++;
+(function () {
+ _$jscoverage['ui/multiMenu.js'][5]++;
+ var utils = baidu.editor.utils, Popup = baidu.editor.ui.Popup, SplitButton = baidu.editor.ui.SplitButton, MultiMenuPop = (baidu.editor.ui.MultiMenuPop = (function (options) {
+ _$jscoverage['ui/multiMenu.js'][9]++;
+ this.initOptions(options);
+ _$jscoverage['ui/multiMenu.js'][10]++;
+ this.initMultiMenu();
+}));
+ _$jscoverage['ui/multiMenu.js'][13]++;
+ MultiMenuPop.prototype = {initMultiMenu: (function () {
+ _$jscoverage['ui/multiMenu.js'][15]++;
+ var me = this;
+ _$jscoverage['ui/multiMenu.js'][16]++;
+ this.popup = new Popup({content: "", editor: me.editor, iframe_rendered: false, onshow: (function () {
+ _$jscoverage['ui/multiMenu.js'][21]++;
+ if ((! this.iframe_rendered)) {
+ _$jscoverage['ui/multiMenu.js'][22]++;
+ this.iframe_rendered = true;
+ _$jscoverage['ui/multiMenu.js'][23]++;
+ this.getDom("content").innerHTML = ("");
+ _$jscoverage['ui/multiMenu.js'][24]++;
+ (me.editor.container.style.zIndex && (this.getDom().style.zIndex = ((me.editor.container.style.zIndex * 1) + 1)));
+ }
+})});
+ _$jscoverage['ui/multiMenu.js'][30]++;
+ this.onbuttonclick = (function () {
+ _$jscoverage['ui/multiMenu.js'][31]++;
+ this.showPopup();
+});
+ _$jscoverage['ui/multiMenu.js'][33]++;
+ this.initSplitButton();
+})};
+ _$jscoverage['ui/multiMenu.js'][38]++;
+ utils.inherits(MultiMenuPop, SplitButton);
+})();
diff --git a/_test/coverage/ui/pastepicker.js b/_test/coverage/ui/pastepicker.js
new file mode 100644
index 000000000..d17ca60dc
--- /dev/null
+++ b/_test/coverage/ui/pastepicker.js
@@ -0,0 +1,125 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/pastepicker.js']) {
+ _$jscoverage['ui/pastepicker.js'] = [];
+ _$jscoverage['ui/pastepicker.js'][3] = 0;
+ _$jscoverage['ui/pastepicker.js'][4] = 0;
+ _$jscoverage['ui/pastepicker.js'][9] = 0;
+ _$jscoverage['ui/pastepicker.js'][10] = 0;
+ _$jscoverage['ui/pastepicker.js'][11] = 0;
+ _$jscoverage['ui/pastepicker.js'][13] = 0;
+ _$jscoverage['ui/pastepicker.js'][15] = 0;
+ _$jscoverage['ui/pastepicker.js'][16] = 0;
+ _$jscoverage['ui/pastepicker.js'][19] = 0;
+ _$jscoverage['ui/pastepicker.js'][34] = 0;
+ _$jscoverage['ui/pastepicker.js'][37] = 0;
+ _$jscoverage['ui/pastepicker.js'][38] = 0;
+ _$jscoverage['ui/pastepicker.js'][41] = 0;
+ _$jscoverage['ui/pastepicker.js'][45] = 0;
+ _$jscoverage['ui/pastepicker.js'][46] = 0;
+ _$jscoverage['ui/pastepicker.js'][48] = 0;
+ _$jscoverage['ui/pastepicker.js'][50] = 0;
+ _$jscoverage['ui/pastepicker.js'][51] = 0;
+ _$jscoverage['ui/pastepicker.js'][52] = 0;
+ _$jscoverage['ui/pastepicker.js'][54] = 0;
+ _$jscoverage['ui/pastepicker.js'][55] = 0;
+ _$jscoverage['ui/pastepicker.js'][60] = 0;
+ _$jscoverage['ui/pastepicker.js'][61] = 0;
+}
+_$jscoverage['ui/pastepicker.js'].source = ["///import core ","///import uicore ","( function () { "," var utils = baidu. editor. utils, "," Stateful = baidu. editor. ui. Stateful, "," uiUtils = baidu. editor. ui. uiUtils, "," UIBase = baidu. editor. ui. UIBase; ",""," var PastePicker = baidu. editor. ui. PastePicker = function ( options) { "," this . initOptions( options); "," this . initPastePicker(); "," } ; "," PastePicker. prototype = { "," initPastePicker: function () { "," this . initUIBase(); "," this . Stateful_init(); "," } , "," getHtmlTpl: function () { "," return '<div class=\"edui-pasteicon\" onclick=\"$$._onClick(this)\"></div>' + "," '<div class=\"edui-pastecontainer\">' + "," '<div class=\"edui-title\">' + this . editor. getLang( \"pasteOpt\" ) + '</div>' + "," '<div class=\"edui-button\">' + "," '<div title=\"' + this . editor. getLang( \"pasteSourceFormat\" ) + '\" onclick=\"$$.format(false)\" stateful>' + "," '<div class=\"edui-richtxticon\"></div></div>' + "," '<div title=\"' + this . editor. getLang( \"tagFormat\" ) + '\" onclick=\"$$.format(2)\" stateful>' + "," '<div class=\"edui-tagicon\"></div></div>' + "," '<div title=\"' + this . editor. getLang( \"pasteTextFormat\" ) + '\" onclick=\"$$.format(true)\" stateful>' + "," '<div class=\"edui-plaintxticon\"></div></div>' + "," '</div>' + "," '</div>' + "," '</div>' "," } , "," getStateDom: function () { "," return this . target; "," } , "," format: function ( param) { "," this . editor. ui. _isTransfer = true ; "," this . editor. fireEvent( 'pasteTransfer' , param); "," } , "," _onClick: function ( cur) { "," var node = domUtils. getNextDomNode( cur), "," screenHt = uiUtils. getViewportRect(). height, "," subPop = uiUtils. getClientRect( node); ",""," if (( subPop. top + subPop. height) > screenHt) "," node. style. top = (- subPop. height - cur. offsetHeight) + \"px\" ; "," else "," node. style. top = \"\" ; ",""," if ( /hidden/ig . test( domUtils. getComputedStyle( node, \"visibility\" ))) { "," node. style. visibility = \"visible\" ; "," domUtils. addClass( cur, \"edui-state-opened\" ); "," } else { "," node. style. visibility = \"hidden\" ; "," domUtils. removeClasses( cur, \"edui-state-opened\" ) "," } "," } , "," _UIBase_render: UIBase. prototype. render"," } ; "," utils. inherits( PastePicker, UIBase); "," utils. extend( PastePicker. prototype, Stateful, true ); ","} )(); ","","","",""];
+_$jscoverage['ui/pastepicker.js'][3]++;
+(function () {
+ _$jscoverage['ui/pastepicker.js'][4]++;
+ var utils = baidu.editor.utils, Stateful = baidu.editor.ui.Stateful, uiUtils = baidu.editor.ui.uiUtils, UIBase = baidu.editor.ui.UIBase;
+ _$jscoverage['ui/pastepicker.js'][9]++;
+ var PastePicker = (baidu.editor.ui.PastePicker = (function (options) {
+ _$jscoverage['ui/pastepicker.js'][10]++;
+ this.initOptions(options);
+ _$jscoverage['ui/pastepicker.js'][11]++;
+ this.initPastePicker();
+}));
+ _$jscoverage['ui/pastepicker.js'][13]++;
+ PastePicker.prototype = {initPastePicker: (function () {
+ _$jscoverage['ui/pastepicker.js'][15]++;
+ this.initUIBase();
+ _$jscoverage['ui/pastepicker.js'][16]++;
+ this.Stateful_init();
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/pastepicker.js'][19]++;
+ return ("
" + "" + "
" + this.editor.getLang("pasteOpt") + "
" + "
" + "
" + "");
+}), getStateDom: (function () {
+ _$jscoverage['ui/pastepicker.js'][34]++;
+ return this.target;
+}), format: (function (param) {
+ _$jscoverage['ui/pastepicker.js'][37]++;
+ this.editor.ui._isTransfer = true;
+ _$jscoverage['ui/pastepicker.js'][38]++;
+ this.editor.fireEvent("pasteTransfer", param);
+}), _onClick: (function (cur) {
+ _$jscoverage['ui/pastepicker.js'][41]++;
+ var node = domUtils.getNextDomNode(cur), screenHt = uiUtils.getViewportRect().height, subPop = uiUtils.getClientRect(node);
+ _$jscoverage['ui/pastepicker.js'][45]++;
+ if (((subPop.top + subPop.height) > screenHt)) {
+ _$jscoverage['ui/pastepicker.js'][46]++;
+ node.style.top = (((- subPop.height) - cur.offsetHeight) + "px");
+ }
+ else {
+ _$jscoverage['ui/pastepicker.js'][48]++;
+ node.style.top = "";
+ }
+ _$jscoverage['ui/pastepicker.js'][50]++;
+ if (/hidden/gi.test(domUtils.getComputedStyle(node, "visibility"))) {
+ _$jscoverage['ui/pastepicker.js'][51]++;
+ node.style.visibility = "visible";
+ _$jscoverage['ui/pastepicker.js'][52]++;
+ domUtils.addClass(cur, "edui-state-opened");
+ }
+ else {
+ _$jscoverage['ui/pastepicker.js'][54]++;
+ node.style.visibility = "hidden";
+ _$jscoverage['ui/pastepicker.js'][55]++;
+ domUtils.removeClasses(cur, "edui-state-opened");
+ }
+}), _UIBase_render: UIBase.prototype.render};
+ _$jscoverage['ui/pastepicker.js'][60]++;
+ utils.inherits(PastePicker, UIBase);
+ _$jscoverage['ui/pastepicker.js'][61]++;
+ utils.extend(PastePicker.prototype, Stateful, true);
+})();
diff --git a/_test/coverage/ui/popup.js b/_test/coverage/ui/popup.js
new file mode 100644
index 000000000..ced902dd1
--- /dev/null
+++ b/_test/coverage/ui/popup.js
@@ -0,0 +1,433 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/popup.js']) {
+ _$jscoverage['ui/popup.js'] = [];
+ _$jscoverage['ui/popup.js'][3] = 0;
+ _$jscoverage['ui/popup.js'][4] = 0;
+ _$jscoverage['ui/popup.js'][9] = 0;
+ _$jscoverage['ui/popup.js'][10] = 0;
+ _$jscoverage['ui/popup.js'][13] = 0;
+ _$jscoverage['ui/popup.js'][14] = 0;
+ _$jscoverage['ui/popup.js'][15] = 0;
+ _$jscoverage['ui/popup.js'][16] = 0;
+ _$jscoverage['ui/popup.js'][17] = 0;
+ _$jscoverage['ui/popup.js'][18] = 0;
+ _$jscoverage['ui/popup.js'][19] = 0;
+ _$jscoverage['ui/popup.js'][20] = 0;
+ _$jscoverage['ui/popup.js'][25] = 0;
+ _$jscoverage['ui/popup.js'][26] = 0;
+ _$jscoverage['ui/popup.js'][29] = 0;
+ _$jscoverage['ui/popup.js'][31] = 0;
+ _$jscoverage['ui/popup.js'][33] = 0;
+ _$jscoverage['ui/popup.js'][41] = 0;
+ _$jscoverage['ui/popup.js'][42] = 0;
+ _$jscoverage['ui/popup.js'][45] = 0;
+ _$jscoverage['ui/popup.js'][56] = 0;
+ _$jscoverage['ui/popup.js'][57] = 0;
+ _$jscoverage['ui/popup.js'][58] = 0;
+ _$jscoverage['ui/popup.js'][60] = 0;
+ _$jscoverage['ui/popup.js'][62] = 0;
+ _$jscoverage['ui/popup.js'][70] = 0;
+ _$jscoverage['ui/popup.js'][71] = 0;
+ _$jscoverage['ui/popup.js'][75] = 0;
+ _$jscoverage['ui/popup.js'][77] = 0;
+ _$jscoverage['ui/popup.js'][79] = 0;
+ _$jscoverage['ui/popup.js'][85] = 0;
+ _$jscoverage['ui/popup.js'][86] = 0;
+ _$jscoverage['ui/popup.js'][87] = 0;
+ _$jscoverage['ui/popup.js'][91] = 0;
+ _$jscoverage['ui/popup.js'][93] = 0;
+ _$jscoverage['ui/popup.js'][95] = 0;
+ _$jscoverage['ui/popup.js'][96] = 0;
+ _$jscoverage['ui/popup.js'][98] = 0;
+ _$jscoverage['ui/popup.js'][101] = 0;
+ _$jscoverage['ui/popup.js'][103] = 0;
+ _$jscoverage['ui/popup.js'][107] = 0;
+ _$jscoverage['ui/popup.js'][116] = 0;
+ _$jscoverage['ui/popup.js'][118] = 0;
+ _$jscoverage['ui/popup.js'][120] = 0;
+ _$jscoverage['ui/popup.js'][127] = 0;
+ _$jscoverage['ui/popup.js'][128] = 0;
+ _$jscoverage['ui/popup.js'][129] = 0;
+ _$jscoverage['ui/popup.js'][132] = 0;
+ _$jscoverage['ui/popup.js'][133] = 0;
+ _$jscoverage['ui/popup.js'][137] = 0;
+ _$jscoverage['ui/popup.js'][138] = 0;
+ _$jscoverage['ui/popup.js'][141] = 0;
+ _$jscoverage['ui/popup.js'][142] = 0;
+ _$jscoverage['ui/popup.js'][144] = 0;
+ _$jscoverage['ui/popup.js'][145] = 0;
+ _$jscoverage['ui/popup.js'][146] = 0;
+ _$jscoverage['ui/popup.js'][147] = 0;
+ _$jscoverage['ui/popup.js'][148] = 0;
+ _$jscoverage['ui/popup.js'][149] = 0;
+ _$jscoverage['ui/popup.js'][150] = 0;
+ _$jscoverage['ui/popup.js'][152] = 0;
+ _$jscoverage['ui/popup.js'][154] = 0;
+ _$jscoverage['ui/popup.js'][155] = 0;
+ _$jscoverage['ui/popup.js'][156] = 0;
+ _$jscoverage['ui/popup.js'][157] = 0;
+ _$jscoverage['ui/popup.js'][160] = 0;
+ _$jscoverage['ui/popup.js'][163] = 0;
+ _$jscoverage['ui/popup.js'][164] = 0;
+ _$jscoverage['ui/popup.js'][165] = 0;
+ _$jscoverage['ui/popup.js'][166] = 0;
+ _$jscoverage['ui/popup.js'][168] = 0;
+ _$jscoverage['ui/popup.js'][169] = 0;
+ _$jscoverage['ui/popup.js'][170] = 0;
+ _$jscoverage['ui/popup.js'][171] = 0;
+ _$jscoverage['ui/popup.js'][172] = 0;
+ _$jscoverage['ui/popup.js'][173] = 0;
+ _$jscoverage['ui/popup.js'][175] = 0;
+ _$jscoverage['ui/popup.js'][176] = 0;
+ _$jscoverage['ui/popup.js'][177] = 0;
+ _$jscoverage['ui/popup.js'][178] = 0;
+ _$jscoverage['ui/popup.js'][181] = 0;
+ _$jscoverage['ui/popup.js'][182] = 0;
+ _$jscoverage['ui/popup.js'][186] = 0;
+ _$jscoverage['ui/popup.js'][187] = 0;
+ _$jscoverage['ui/popup.js'][188] = 0;
+ _$jscoverage['ui/popup.js'][189] = 0;
+ _$jscoverage['ui/popup.js'][190] = 0;
+ _$jscoverage['ui/popup.js'][195] = 0;
+ _$jscoverage['ui/popup.js'][196] = 0;
+ _$jscoverage['ui/popup.js'][197] = 0;
+ _$jscoverage['ui/popup.js'][205] = 0;
+ _$jscoverage['ui/popup.js'][208] = 0;
+ _$jscoverage['ui/popup.js'][209] = 0;
+ _$jscoverage['ui/popup.js'][210] = 0;
+ _$jscoverage['ui/popup.js'][211] = 0;
+ _$jscoverage['ui/popup.js'][215] = 0;
+ _$jscoverage['ui/popup.js'][219] = 0;
+ _$jscoverage['ui/popup.js'][222] = 0;
+ _$jscoverage['ui/popup.js'][223] = 0;
+ _$jscoverage['ui/popup.js'][226] = 0;
+ _$jscoverage['ui/popup.js'][227] = 0;
+ _$jscoverage['ui/popup.js'][228] = 0;
+ _$jscoverage['ui/popup.js'][229] = 0;
+ _$jscoverage['ui/popup.js'][230] = 0;
+ _$jscoverage['ui/popup.js'][235] = 0;
+ _$jscoverage['ui/popup.js'][238] = 0;
+ _$jscoverage['ui/popup.js'][240] = 0;
+ _$jscoverage['ui/popup.js'][241] = 0;
+ _$jscoverage['ui/popup.js'][242] = 0;
+ _$jscoverage['ui/popup.js'][244] = 0;
+ _$jscoverage['ui/popup.js'][245] = 0;
+}
+_$jscoverage['ui/popup.js'].source = ["///import core ","///import uicore ","( function () { "," var utils = baidu. editor. utils, "," uiUtils = baidu. editor. ui. uiUtils, "," domUtils = baidu. editor. dom. domUtils, "," UIBase = baidu. editor. ui. UIBase, "," Popup = baidu. editor. ui. Popup = function ( options) { "," this . initOptions( options); "," this . initPopup(); "," } ; ",""," var allPopups = []; "," function closeAllPopup( evt, el ) { "," for ( var i = 0 ; i < allPopups. length; i++ ) { "," var pop = allPopups[ i]; "," if (! pop. isHidden()) { "," if ( pop. queryAutoHide( el) !== false ) { "," if ( evt&& /scroll/ig . test( evt. type)&& pop. className== \"edui-wordpastepop\" ) return ; "," pop. hide(); "," } "," } "," } ",""," if ( allPopups. length) "," pop. editor. fireEvent( \"afterhidepop\" ); "," } ",""," Popup. postHide = closeAllPopup; ",""," var ANCHOR_CLASSES = [ 'edui-anchor-topleft' , 'edui-anchor-topright' , "," 'edui-anchor-bottomleft' , 'edui-anchor-bottomright' ]; "," Popup. prototype = { "," SHADOW_RADIUS: 5 , "," content: null , "," _hidden: false , "," autoRender: true , "," canSideLeft: true , "," canSideUp: true , "," initPopup: function () { "," this . initUIBase(); "," allPopups. push( this ); "," } , "," getHtmlTpl: function () { "," return '<div id=\"##\" class=\"edui-popup %%\" onmousedown=\"return false;\">' + "," ' <div id=\"##_body\" class=\"edui-popup-body\">' + "," ' <iframe style=\"position:absolute;z-index:-1;left:0;top:0;background-color: transparent;\" frameborder=\"0\" width=\"100%\" height=\"100%\" src=\"javascript:\"></iframe>' + "," ' <div class=\"edui-shadow\"></div>' + "," ' <div id=\"##_content\" class=\"edui-popup-content\">' + "," this . getContentHtmlTpl() + "," ' </div>' + "," ' </div>' + "," '</div>' ; "," } , "," getContentHtmlTpl: function () { "," if ( this . content) { "," if ( typeof this . content == 'string' ) { "," return this . content; "," } "," return this . content. renderHtml(); "," } else { "," return '' "," } ",""," } , "," _UIBase_postRender: UIBase. prototype. postRender, "," postRender: function () { ","",""," if ( this . content instanceof UIBase) { "," this . content. postRender(); "," } ",""," //捕获鼠标滚轮 "," if ( this . captureWheel && ! this . captured ) { ",""," this . captured = true ; ",""," var winHeight = ( document. documentElement. clientHeight || document. body. clientHeight ) - 80 , "," _height = this . getDom(). offsetHeight, "," _top = domUtils. getXY( this . combox. getDom() ). y, "," content = this . getDom( 'content' ), "," me = this ; ",""," while ( _top + _height > winHeight ) { "," _height -= 30 ; "," content. style. height = _height + 'px' ; "," } ",""," //阻止在combox上的鼠标滚轮事件, 防止用户的正常操作被误解 "," if ( window. XMLHttpRequest ) { ",""," domUtils. on( content, ( 'onmousewheel' in document. body ) ? 'mousewheel' : 'DOMMouseScroll' , function ( e) { ",""," if ( e. preventDefault) { "," e. preventDefault(); "," } else { "," e. returnValue = false ; "," } ",""," if ( e. wheelDelta ) { ",""," content. scrollTop -= ( e. wheelDelta / 120 )* 60 ; ",""," } else { ",""," content. scrollTop -= ( e. detail / - 3 )* 60 ; ",""," } ",""," } ); ",""," } else { ",""," //ie6 "," domUtils. on( this . getDom(), 'mousewheel' , function ( e) { ",""," e. returnValue = false ; ",""," me. getDom( 'content' ). scrollTop -= ( e. wheelDelta / 120 )* 60 ; ",""," } ); ",""," } ",""," } "," this . fireEvent( 'postRenderAfter' ); "," this . hide( true ); "," this . _UIBase_postRender(); "," } , "," _doAutoRender: function () { "," if (! this . getDom() && this . autoRender) { "," this . render(); "," } "," } , "," mesureSize: function () { "," var box = this . getDom( 'content' ); "," return uiUtils. getClientRect( box); "," } , "," fitSize: function () { "," if ( this . captureWheel && this . sized ) { "," return this . __size; "," } "," this . sized = true ; "," var popBodyEl = this . getDom( 'body' ); "," popBodyEl. style. width = '' ; "," popBodyEl. style. height = '' ; "," var size = this . mesureSize(); "," if ( this . captureWheel ) { "," popBodyEl. style. width = -(- 20 - size. width) + 'px' ; "," } else { "," popBodyEl. style. width = size. width + 'px' ; "," } "," popBodyEl. style. height = size. height + 'px' ; "," this . __size = size; "," this . captureWheel && ( this . getDom( 'content' ). style. overflow = 'auto' ); "," return size; "," } , "," showAnchor: function ( element, hoz ) { "," this . showAnchorRect( uiUtils. getClientRect( element ), hoz ); "," } , "," showAnchorRect: function ( rect, hoz, adj ) { "," this . _doAutoRender(); "," var vpRect = uiUtils. getViewportRect(); "," this . _show(); "," var popSize = this . fitSize(); ",""," var sideLeft, sideUp, left, top; "," if ( hoz) { "," sideLeft = this . canSideLeft && ( rect. right + popSize. width > vpRect. right && rect. left > popSize. width); "," sideUp = this . canSideUp && ( rect. top + popSize. height > vpRect. bottom && rect. bottom > popSize. height); "," left = ( sideLeft ? rect. left - popSize. width : rect. right); "," top = ( sideUp ? rect. bottom - popSize. height : rect. top); "," } else { "," sideLeft = this . canSideLeft && ( rect. right + popSize. width > vpRect. right && rect. left > popSize. width); "," sideUp = this . canSideUp && ( rect. top + popSize. height > vpRect. bottom && rect. bottom > popSize. height); "," left = ( sideLeft ? rect. right - popSize. width : rect. left); "," top = ( sideUp ? rect. top - popSize. height : rect. bottom); "," } ",""," var popEl = this . getDom(); "," uiUtils. setViewportOffset( popEl, { "," left: left, "," top: top"," } ); "," domUtils. removeClasses( popEl, ANCHOR_CLASSES); "," popEl. className += ' ' + ANCHOR_CLASSES[( sideUp ? 1 : 0 ) * 2 + ( sideLeft ? 1 : 0 )]; "," if ( this . editor) { "," popEl. style. zIndex = this . editor. container. style. zIndex * 1 + 10 ; "," baidu. editor. ui. uiUtils. getFixedLayer(). style. zIndex = popEl. style. zIndex - 1 ; "," } ",""," } , "," showAt: function ( offset) { "," var left = offset. left; "," var top = offset. top; "," var rect = { "," left: left, "," top: top, "," right: left, "," bottom: top, "," height: 0 , "," width: 0 "," } ; "," this . showAnchorRect( rect, false , true ); "," } , "," _show: function () { "," if ( this . _hidden) { "," var box = this . getDom(); "," box. style. display = '' ; "," this . _hidden = false ; ","// if (box.setActive) { ","// box.setActive(); ","// } "," this . fireEvent( 'show' ); "," } "," } , "," isHidden: function () { "," return this . _hidden; "," } , "," show: function () { "," this . _doAutoRender(); "," this . _show(); "," } , "," hide: function ( notNofity) { "," if (! this . _hidden && this . getDom()) { "," this . getDom(). style. display = 'none' ; "," this . _hidden = true ; "," if (! notNofity) { "," this . fireEvent( 'hide' ); "," } "," } "," } , "," queryAutoHide: function ( el) { "," return ! el || ! uiUtils. contains( this . getDom(), el); "," } "," } ; "," utils. inherits( Popup, UIBase); "," "," domUtils. on( document, 'mousedown' , function ( evt ) { "," var el = evt. target || evt. srcElement; "," closeAllPopup( evt, el ); "," } ); "," domUtils. on( window, 'scroll' , function ( evt, el) { "," closeAllPopup( evt, el ); "," } ); ","","} )(); "];
+_$jscoverage['ui/popup.js'][3]++;
+(function () {
+ _$jscoverage['ui/popup.js'][4]++;
+ var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, domUtils = baidu.editor.dom.domUtils, UIBase = baidu.editor.ui.UIBase, Popup = (baidu.editor.ui.Popup = (function (options) {
+ _$jscoverage['ui/popup.js'][9]++;
+ this.initOptions(options);
+ _$jscoverage['ui/popup.js'][10]++;
+ this.initPopup();
+}));
+ _$jscoverage['ui/popup.js'][13]++;
+ var allPopups = [];
+ _$jscoverage['ui/popup.js'][14]++;
+ function closeAllPopup(evt, el) {
+ _$jscoverage['ui/popup.js'][15]++;
+ for (var i = 0; (i < allPopups.length); (i++)) {
+ _$jscoverage['ui/popup.js'][16]++;
+ var pop = allPopups[i];
+ _$jscoverage['ui/popup.js'][17]++;
+ if ((! pop.isHidden())) {
+ _$jscoverage['ui/popup.js'][18]++;
+ if ((pop.queryAutoHide(el) !== false)) {
+ _$jscoverage['ui/popup.js'][19]++;
+ if ((evt && /scroll/gi.test(evt.type) && (pop.className == "edui-wordpastepop"))) {
+ _$jscoverage['ui/popup.js'][19]++;
+ return;
+ }
+ _$jscoverage['ui/popup.js'][20]++;
+ pop.hide();
+ }
+ }
+}
+ _$jscoverage['ui/popup.js'][25]++;
+ if (allPopups.length) {
+ _$jscoverage['ui/popup.js'][26]++;
+ pop.editor.fireEvent("afterhidepop");
+ }
+}
+ _$jscoverage['ui/popup.js'][29]++;
+ Popup.postHide = closeAllPopup;
+ _$jscoverage['ui/popup.js'][31]++;
+ var ANCHOR_CLASSES = ["edui-anchor-topleft", "edui-anchor-topright", "edui-anchor-bottomleft", "edui-anchor-bottomright"];
+ _$jscoverage['ui/popup.js'][33]++;
+ Popup.prototype = {SHADOW_RADIUS: 5, content: null, _hidden: false, autoRender: true, canSideLeft: true, canSideUp: true, initPopup: (function () {
+ _$jscoverage['ui/popup.js'][41]++;
+ this.initUIBase();
+ _$jscoverage['ui/popup.js'][42]++;
+ allPopups.push(this);
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/popup.js'][45]++;
+ return ("");
+}), getContentHtmlTpl: (function () {
+ _$jscoverage['ui/popup.js'][56]++;
+ if (this.content) {
+ _$jscoverage['ui/popup.js'][57]++;
+ if (((typeof this.content) == "string")) {
+ _$jscoverage['ui/popup.js'][58]++;
+ return this.content;
+ }
+ _$jscoverage['ui/popup.js'][60]++;
+ return this.content.renderHtml();
+ }
+ else {
+ _$jscoverage['ui/popup.js'][62]++;
+ return "";
+ }
+}), _UIBase_postRender: UIBase.prototype.postRender, postRender: (function () {
+ _$jscoverage['ui/popup.js'][70]++;
+ if ((this.content instanceof UIBase)) {
+ _$jscoverage['ui/popup.js'][71]++;
+ this.content.postRender();
+ }
+ _$jscoverage['ui/popup.js'][75]++;
+ if ((this.captureWheel && (! this.captured))) {
+ _$jscoverage['ui/popup.js'][77]++;
+ this.captured = true;
+ _$jscoverage['ui/popup.js'][79]++;
+ var winHeight = ((document.documentElement.clientHeight || document.body.clientHeight) - 80), _height = this.getDom().offsetHeight, _top = domUtils.getXY(this.combox.getDom()).y, content = this.getDom("content"), me = this;
+ _$jscoverage['ui/popup.js'][85]++;
+ while (((_top + _height) > winHeight)) {
+ _$jscoverage['ui/popup.js'][86]++;
+ _height -= 30;
+ _$jscoverage['ui/popup.js'][87]++;
+ content.style.height = (_height + "px");
+}
+ _$jscoverage['ui/popup.js'][91]++;
+ if (window.XMLHttpRequest) {
+ _$jscoverage['ui/popup.js'][93]++;
+ domUtils.on(content, (("onmousewheel" in document.body)? "mousewheel": "DOMMouseScroll"), (function (e) {
+ _$jscoverage['ui/popup.js'][95]++;
+ if (e.preventDefault) {
+ _$jscoverage['ui/popup.js'][96]++;
+ e.preventDefault();
+ }
+ else {
+ _$jscoverage['ui/popup.js'][98]++;
+ e.returnValue = false;
+ }
+ _$jscoverage['ui/popup.js'][101]++;
+ if (e.wheelDelta) {
+ _$jscoverage['ui/popup.js'][103]++;
+ content.scrollTop -= ((e.wheelDelta / 120) * 60);
+ }
+ else {
+ _$jscoverage['ui/popup.js'][107]++;
+ content.scrollTop -= ((e.detail / -3) * 60);
+ }
+}));
+ }
+ else {
+ _$jscoverage['ui/popup.js'][116]++;
+ domUtils.on(this.getDom(), "mousewheel", (function (e) {
+ _$jscoverage['ui/popup.js'][118]++;
+ e.returnValue = false;
+ _$jscoverage['ui/popup.js'][120]++;
+ me.getDom("content").scrollTop -= ((e.wheelDelta / 120) * 60);
+}));
+ }
+ }
+ _$jscoverage['ui/popup.js'][127]++;
+ this.fireEvent("postRenderAfter");
+ _$jscoverage['ui/popup.js'][128]++;
+ this.hide(true);
+ _$jscoverage['ui/popup.js'][129]++;
+ this._UIBase_postRender();
+}), _doAutoRender: (function () {
+ _$jscoverage['ui/popup.js'][132]++;
+ if (((! this.getDom()) && this.autoRender)) {
+ _$jscoverage['ui/popup.js'][133]++;
+ this.render();
+ }
+}), mesureSize: (function () {
+ _$jscoverage['ui/popup.js'][137]++;
+ var box = this.getDom("content");
+ _$jscoverage['ui/popup.js'][138]++;
+ return uiUtils.getClientRect(box);
+}), fitSize: (function () {
+ _$jscoverage['ui/popup.js'][141]++;
+ if ((this.captureWheel && this.sized)) {
+ _$jscoverage['ui/popup.js'][142]++;
+ return this.__size;
+ }
+ _$jscoverage['ui/popup.js'][144]++;
+ this.sized = true;
+ _$jscoverage['ui/popup.js'][145]++;
+ var popBodyEl = this.getDom("body");
+ _$jscoverage['ui/popup.js'][146]++;
+ popBodyEl.style.width = "";
+ _$jscoverage['ui/popup.js'][147]++;
+ popBodyEl.style.height = "";
+ _$jscoverage['ui/popup.js'][148]++;
+ var size = this.mesureSize();
+ _$jscoverage['ui/popup.js'][149]++;
+ if (this.captureWheel) {
+ _$jscoverage['ui/popup.js'][150]++;
+ popBodyEl.style.width = ((- (-20 - size.width)) + "px");
+ }
+ else {
+ _$jscoverage['ui/popup.js'][152]++;
+ popBodyEl.style.width = (size.width + "px");
+ }
+ _$jscoverage['ui/popup.js'][154]++;
+ popBodyEl.style.height = (size.height + "px");
+ _$jscoverage['ui/popup.js'][155]++;
+ this.__size = size;
+ _$jscoverage['ui/popup.js'][156]++;
+ (this.captureWheel && (this.getDom("content").style.overflow = "auto"));
+ _$jscoverage['ui/popup.js'][157]++;
+ return size;
+}), showAnchor: (function (element, hoz) {
+ _$jscoverage['ui/popup.js'][160]++;
+ this.showAnchorRect(uiUtils.getClientRect(element), hoz);
+}), showAnchorRect: (function (rect, hoz, adj) {
+ _$jscoverage['ui/popup.js'][163]++;
+ this._doAutoRender();
+ _$jscoverage['ui/popup.js'][164]++;
+ var vpRect = uiUtils.getViewportRect();
+ _$jscoverage['ui/popup.js'][165]++;
+ this._show();
+ _$jscoverage['ui/popup.js'][166]++;
+ var popSize = this.fitSize();
+ _$jscoverage['ui/popup.js'][168]++;
+ var sideLeft, sideUp, left, top;
+ _$jscoverage['ui/popup.js'][169]++;
+ if (hoz) {
+ _$jscoverage['ui/popup.js'][170]++;
+ sideLeft = (this.canSideLeft && (((rect.right + popSize.width) > vpRect.right) && (rect.left > popSize.width)));
+ _$jscoverage['ui/popup.js'][171]++;
+ sideUp = (this.canSideUp && (((rect.top + popSize.height) > vpRect.bottom) && (rect.bottom > popSize.height)));
+ _$jscoverage['ui/popup.js'][172]++;
+ left = (sideLeft? (rect.left - popSize.width): rect.right);
+ _$jscoverage['ui/popup.js'][173]++;
+ top = (sideUp? (rect.bottom - popSize.height): rect.top);
+ }
+ else {
+ _$jscoverage['ui/popup.js'][175]++;
+ sideLeft = (this.canSideLeft && (((rect.right + popSize.width) > vpRect.right) && (rect.left > popSize.width)));
+ _$jscoverage['ui/popup.js'][176]++;
+ sideUp = (this.canSideUp && (((rect.top + popSize.height) > vpRect.bottom) && (rect.bottom > popSize.height)));
+ _$jscoverage['ui/popup.js'][177]++;
+ left = (sideLeft? (rect.right - popSize.width): rect.left);
+ _$jscoverage['ui/popup.js'][178]++;
+ top = (sideUp? (rect.top - popSize.height): rect.bottom);
+ }
+ _$jscoverage['ui/popup.js'][181]++;
+ var popEl = this.getDom();
+ _$jscoverage['ui/popup.js'][182]++;
+ uiUtils.setViewportOffset(popEl, {left: left, top: top});
+ _$jscoverage['ui/popup.js'][186]++;
+ domUtils.removeClasses(popEl, ANCHOR_CLASSES);
+ _$jscoverage['ui/popup.js'][187]++;
+ popEl.className += (" " + ANCHOR_CLASSES[(((sideUp? 1: 0) * 2) + (sideLeft? 1: 0))]);
+ _$jscoverage['ui/popup.js'][188]++;
+ if (this.editor) {
+ _$jscoverage['ui/popup.js'][189]++;
+ popEl.style.zIndex = ((this.editor.container.style.zIndex * 1) + 10);
+ _$jscoverage['ui/popup.js'][190]++;
+ baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = (popEl.style.zIndex - 1);
+ }
+}), showAt: (function (offset) {
+ _$jscoverage['ui/popup.js'][195]++;
+ var left = offset.left;
+ _$jscoverage['ui/popup.js'][196]++;
+ var top = offset.top;
+ _$jscoverage['ui/popup.js'][197]++;
+ var rect = {left: left, top: top, right: left, bottom: top, height: 0, width: 0};
+ _$jscoverage['ui/popup.js'][205]++;
+ this.showAnchorRect(rect, false, true);
+}), _show: (function () {
+ _$jscoverage['ui/popup.js'][208]++;
+ if (this._hidden) {
+ _$jscoverage['ui/popup.js'][209]++;
+ var box = this.getDom();
+ _$jscoverage['ui/popup.js'][210]++;
+ box.style.display = "";
+ _$jscoverage['ui/popup.js'][211]++;
+ this._hidden = false;
+ _$jscoverage['ui/popup.js'][215]++;
+ this.fireEvent("show");
+ }
+}), isHidden: (function () {
+ _$jscoverage['ui/popup.js'][219]++;
+ return this._hidden;
+}), show: (function () {
+ _$jscoverage['ui/popup.js'][222]++;
+ this._doAutoRender();
+ _$jscoverage['ui/popup.js'][223]++;
+ this._show();
+}), hide: (function (notNofity) {
+ _$jscoverage['ui/popup.js'][226]++;
+ if (((! this._hidden) && this.getDom())) {
+ _$jscoverage['ui/popup.js'][227]++;
+ this.getDom().style.display = "none";
+ _$jscoverage['ui/popup.js'][228]++;
+ this._hidden = true;
+ _$jscoverage['ui/popup.js'][229]++;
+ if ((! notNofity)) {
+ _$jscoverage['ui/popup.js'][230]++;
+ this.fireEvent("hide");
+ }
+ }
+}), queryAutoHide: (function (el) {
+ _$jscoverage['ui/popup.js'][235]++;
+ return ((! el) || (! uiUtils.contains(this.getDom(), el)));
+})};
+ _$jscoverage['ui/popup.js'][238]++;
+ utils.inherits(Popup, UIBase);
+ _$jscoverage['ui/popup.js'][240]++;
+ domUtils.on(document, "mousedown", (function (evt) {
+ _$jscoverage['ui/popup.js'][241]++;
+ var el = (evt.target || evt.srcElement);
+ _$jscoverage['ui/popup.js'][242]++;
+ closeAllPopup(evt, el);
+}));
+ _$jscoverage['ui/popup.js'][244]++;
+ domUtils.on(window, "scroll", (function (evt, el) {
+ _$jscoverage['ui/popup.js'][245]++;
+ closeAllPopup(evt, el);
+}));
+})();
diff --git a/_test/coverage/ui/separator.js b/_test/coverage/ui/separator.js
new file mode 100644
index 000000000..1ea7a8980
--- /dev/null
+++ b/_test/coverage/ui/separator.js
@@ -0,0 +1,71 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/separator.js']) {
+ _$jscoverage['ui/separator.js'] = [];
+ _$jscoverage['ui/separator.js'][1] = 0;
+ _$jscoverage['ui/separator.js'][2] = 0;
+ _$jscoverage['ui/separator.js'][5] = 0;
+ _$jscoverage['ui/separator.js'][6] = 0;
+ _$jscoverage['ui/separator.js'][8] = 0;
+ _$jscoverage['ui/separator.js'][11] = 0;
+ _$jscoverage['ui/separator.js'][14] = 0;
+ _$jscoverage['ui/separator.js'][17] = 0;
+}
+_$jscoverage['ui/separator.js'].source = ["( function () { "," var utils = baidu. editor. utils, "," UIBase = baidu. editor. ui. UIBase, "," Separator = baidu. editor. ui. Separator = function ( options) { "," this . initOptions( options); "," this . initSeparator(); "," } ; "," Separator. prototype = { "," uiName: 'separator' , "," initSeparator: function () { "," this . initUIBase(); "," } , "," getHtmlTpl: function () { "," return '<div id=\"##\" class=\"edui-box %%\"></div>' ; "," } "," } ; "," utils. inherits( Separator, UIBase); ","","} )(); "];
+_$jscoverage['ui/separator.js'][1]++;
+(function () {
+ _$jscoverage['ui/separator.js'][2]++;
+ var utils = baidu.editor.utils, UIBase = baidu.editor.ui.UIBase, Separator = (baidu.editor.ui.Separator = (function (options) {
+ _$jscoverage['ui/separator.js'][5]++;
+ this.initOptions(options);
+ _$jscoverage['ui/separator.js'][6]++;
+ this.initSeparator();
+}));
+ _$jscoverage['ui/separator.js'][8]++;
+ Separator.prototype = {uiName: "separator", initSeparator: (function () {
+ _$jscoverage['ui/separator.js'][11]++;
+ this.initUIBase();
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/separator.js'][14]++;
+ return "
";
+})};
+ _$jscoverage['ui/separator.js'][17]++;
+ utils.inherits(Separator, UIBase);
+})();
diff --git a/_test/coverage/ui/shortcutmenu.js b/_test/coverage/ui/shortcutmenu.js
new file mode 100644
index 000000000..a15b2d07a
--- /dev/null
+++ b/_test/coverage/ui/shortcutmenu.js
@@ -0,0 +1,462 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/shortcutmenu.js']) {
+ _$jscoverage['ui/shortcutmenu.js'] = [];
+ _$jscoverage['ui/shortcutmenu.js'][1] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][2] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][8] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][12] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][13] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][14] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][17] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][19] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][23] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][24] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][25] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][26] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][27] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][30] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][33] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][34] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][36] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][39] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][48] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][49] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][50] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][51] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][52] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][53] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][54] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][55] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][56] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][59] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][60] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][61] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][62] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][63] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][64] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][71] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][72] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][73] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][75] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][76] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][81] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][82] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][83] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][89] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][90] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][91] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][93] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][94] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][95] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][101] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][102] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][104] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][108] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][109] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][110] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][111] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][114] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][115] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][116] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][119] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][122] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][127] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][128] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][129] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][131] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][132] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][134] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][137] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][138] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][139] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][141] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][142] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][143] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][144] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][148] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][149] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][151] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][152] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][153] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][154] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][156] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][157] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][161] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][162] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][163] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][164] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][165] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][169] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][170] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][171] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][173] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][174] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][175] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][179] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][180] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][182] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][185] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][186] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][187] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][192] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][193] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][194] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][195] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][196] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][198] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][200] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][203] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][209] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][211] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][212] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][214] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][217] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][218] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][219] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][224] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][225] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][228] = 0;
+ _$jscoverage['ui/shortcutmenu.js'][229] = 0;
+}
+_$jscoverage['ui/shortcutmenu.js'].source = ["( function () { "," var UI = baidu. editor. ui, "," UIBase = UI. UIBase, "," uiUtils = UI. uiUtils, "," utils = baidu. editor. utils, "," domUtils = baidu. editor. dom. domUtils; ",""," var allMenus = [], //存储所有快捷菜单 "," timeID, "," isSubMenuShow = false ; //是否有子pop显示 ",""," var ShortCutMenu = UI. ShortCutMenu = function ( options) { "," this . initOptions ( options); "," this . initShortCutMenu (); "," } ; ",""," ShortCutMenu. postHide = hideAllMenu; ",""," ShortCutMenu. prototype = { "," isHidden : true , "," SPACE : 5 , "," initShortCutMenu : function () { "," this . items = this . items || []; "," this . initUIBase (); "," this . initItems (); "," this . initEvent (); "," allMenus. push ( this ); "," } , "," initEvent : function () { "," var me = this , "," doc = me. editor. document; ",""," domUtils. on ( doc , \"mousemove\" , function ( e) { "," if ( me. isHidden === false ) { "," //有pop显示就不隐藏快捷菜单 "," if ( me. getSubMenuMark () || me. eventType == \"contextmenu\" ) return ; ","",""," var flag = true , "," el = me. getDom (), "," wt = el. offsetWidth, "," ht = el. offsetHeight, "," distanceX = wt / 2 + me. SPACE, //距离中心X标准 "," distanceY = ht / 2 , //距离中心Y标准 "," x = Math. abs ( e. screenX - me. left), //离中心距离横坐标 "," y = Math. abs ( e. screenY - me. top); //离中心距离纵坐标 ",""," clearTimeout ( timeID); "," timeID = setTimeout ( function () { "," if ( y > 0 && y < distanceY) { "," me. setOpacity ( el , \"1\" ); "," } else if ( y > distanceY && y < distanceY + 70 ) { "," me. setOpacity ( el , \"0.5\" ); "," flag = false ; "," } else if ( y > distanceY + 70 && y < distanceY + 140 ) { "," me. hide (); "," } ",""," if ( flag && x > 0 && x < distanceX) { "," me. setOpacity ( el , \"1\" ) "," } else if ( x > distanceX && x < distanceX + 70 ) { "," me. setOpacity ( el , \"0.5\" ) "," } else if ( x > distanceX + 70 && x < distanceX + 140 ) { "," me. hide (); "," } "," } ); "," } "," } ); ",""," //ie\\ff下 mouseout不准 "," if ( browser. chrome) { "," domUtils. on ( doc , \"mouseout\" , function ( e) { "," var relatedTgt = e. relatedTarget || e. toElement; ",""," if ( relatedTgt == null || relatedTgt. tagName == \"HTML\" ) { "," me. hide (); "," } "," } ); "," } ",""," me. editor. addListener ( \"afterhidepop\" , function () { "," if (! me. isHidden) { "," isSubMenuShow = true ; "," } "," } ); ",""," } , "," initItems : function () { "," if ( utils. isArray ( this . items)) { "," for ( var i = 0 , len = this . items. length ; i < len ; i++) { "," var item = this . items[ i]. toLowerCase (); ",""," if ( UI[ item]) { "," this . items[ i] = new UI[ item] ( this . editor); "," this . items[ i]. className += \" edui-shortcutsubmenu \" ; "," } "," } "," } "," } , "," setOpacity : function ( el , value) { "," if ( browser. ie && browser. version < 9 ) { "," el. style. filter = \"alpha(opacity = \" + parseFloat ( value) * 100 + \");\" "," } else { "," el. style. opacity = value; "," } "," } , "," getSubMenuMark : function () { "," isSubMenuShow = false ; "," var layerEle = uiUtils. getFixedLayer (); "," var list = domUtils. getElementsByTagName ( layerEle , \"div\" , function ( node) { "," return domUtils. hasClass ( node , \"edui-shortcutsubmenu edui-popup\" ) "," } ); ",""," for ( var i = 0 , node ; node = list[ i++] ;) { "," if ( node. style. display != \"none\" ) { "," isSubMenuShow = true ; "," } "," } "," return isSubMenuShow; "," } , "," show : function ( e , hasContextmenu) { "," var me = this , "," offset = {} , "," el = this . getDom (), "," fixedlayer = uiUtils. getFixedLayer (); ",""," function setPos ( offset) { "," if ( offset. left < 0 ) { "," offset. left = 0 ; "," } "," if ( offset. top < 0 ) { "," offset. top = 0 ; "," } "," el. style. cssText = \"position:absolute;left:\" + offset. left + \"px;top:\" + offset. top + \"px;\" ; "," } ",""," function setPosByCxtMenu ( menu) { "," if (! menu. tagName) { "," menu = menu. getDom (); "," } "," offset. left = parseInt ( menu. style. left); "," offset. top = parseInt ( menu. style. top); "," offset. top -= el. offsetHeight + 15 ; "," setPos ( offset); "," } ","",""," me. eventType = e. type; "," el. style. cssText = \"display:block;left:-9999px\" ; ",""," if ( e. type == \"contextmenu\" && hasContextmenu) { "," var menu = domUtils. getElementsByTagName ( fixedlayer , \"div\" , \"edui-contextmenu\" )[ 0 ]; "," if ( menu) { "," setPosByCxtMenu ( menu) "," } else { "," me. editor. addListener ( \"aftershowcontextmenu\" , function ( type , menu) { "," setPosByCxtMenu ( menu); "," } ); "," } "," } else { "," offset = uiUtils. getViewportOffsetByEvent ( e); "," offset. top -= el. offsetHeight + me. SPACE; "," offset. left += me. SPACE + 20 ; "," setPos ( offset); "," me. setOpacity ( el , 0.2 ); "," } ","",""," me. isHidden = false ; "," me. left = e. screenX + el. offsetWidth / 2 - me. SPACE; "," me. top = e. screenY - ( el. offsetHeight / 2 ) - me. SPACE; ",""," if ( me. editor) { "," el. style. zIndex = me. editor. container. style. zIndex * 1 + 10 ; "," fixedlayer. style. zIndex = el. style. zIndex - 1 ; "," } "," } , "," hide : function () { "," if ( this . getDom ()) { "," this . getDom (). style. display = \"none\" ; "," } "," this . isHidden = true ; "," } , "," postRender : function () { "," if ( utils. isArray ( this . items)) { "," for ( var i = 0 , item ; item = this . items[ i++] ;) { "," item. postRender (); "," } "," } "," } , "," getHtmlTpl : function () { "," var buff; "," if ( utils. isArray ( this . items)) { "," buff = []; "," for ( var i = 0 ; i < this . items. length ; i++) { "," buff[ i] = this . items[ i]. renderHtml (); "," } "," buff = buff. join ( \"\" ); "," } else { "," buff = this . items; "," } ",""," return '<div id=\"##\" class=\"%% edui-toolbar\" data-src=\"shortcutmenu\" onmousedown=\"return false;\" onselectstart=\"return false;\" >' + "," buff + "," '</div>' ; "," } "," } ; ",""," utils. inherits ( ShortCutMenu , UIBase); ",""," function hideAllMenu ( e) { "," var tgt = e. target || e. srcElement, "," cur = domUtils. findParent ( tgt , function ( node) { "," return domUtils. hasClass ( node , \"edui-shortcutmenu\" ) || domUtils. hasClass ( node , \"edui-popup\" ); "," } , true ); ",""," if (! cur) { "," for ( var i = 0 , menu ; menu = allMenus[ i++] ;) { "," menu. hide () "," } "," } "," } ",""," domUtils. on ( document , 'mousedown' , function ( e) { "," hideAllMenu ( e); "," } ); ",""," domUtils. on ( window , 'scroll' , function ( e) { "," hideAllMenu ( e); "," } ); ","","} ) (); "];
+_$jscoverage['ui/shortcutmenu.js'][1]++;
+(function () {
+ _$jscoverage['ui/shortcutmenu.js'][2]++;
+ var UI = baidu.editor.ui, UIBase = UI.UIBase, uiUtils = UI.uiUtils, utils = baidu.editor.utils, domUtils = baidu.editor.dom.domUtils;
+ _$jscoverage['ui/shortcutmenu.js'][8]++;
+ var allMenus = [], timeID, isSubMenuShow = false;
+ _$jscoverage['ui/shortcutmenu.js'][12]++;
+ var ShortCutMenu = (UI.ShortCutMenu = (function (options) {
+ _$jscoverage['ui/shortcutmenu.js'][13]++;
+ this.initOptions(options);
+ _$jscoverage['ui/shortcutmenu.js'][14]++;
+ this.initShortCutMenu();
+}));
+ _$jscoverage['ui/shortcutmenu.js'][17]++;
+ ShortCutMenu.postHide = hideAllMenu;
+ _$jscoverage['ui/shortcutmenu.js'][19]++;
+ ShortCutMenu.prototype = {isHidden: true, SPACE: 5, initShortCutMenu: (function () {
+ _$jscoverage['ui/shortcutmenu.js'][23]++;
+ this.items = (this.items || []);
+ _$jscoverage['ui/shortcutmenu.js'][24]++;
+ this.initUIBase();
+ _$jscoverage['ui/shortcutmenu.js'][25]++;
+ this.initItems();
+ _$jscoverage['ui/shortcutmenu.js'][26]++;
+ this.initEvent();
+ _$jscoverage['ui/shortcutmenu.js'][27]++;
+ allMenus.push(this);
+}), initEvent: (function () {
+ _$jscoverage['ui/shortcutmenu.js'][30]++;
+ var me = this, doc = me.editor.document;
+ _$jscoverage['ui/shortcutmenu.js'][33]++;
+ domUtils.on(doc, "mousemove", (function (e) {
+ _$jscoverage['ui/shortcutmenu.js'][34]++;
+ if ((me.isHidden === false)) {
+ _$jscoverage['ui/shortcutmenu.js'][36]++;
+ if ((me.getSubMenuMark() || (me.eventType == "contextmenu"))) {
+ _$jscoverage['ui/shortcutmenu.js'][36]++;
+ return;
+ }
+ _$jscoverage['ui/shortcutmenu.js'][39]++;
+ var flag = true, el = me.getDom(), wt = el.offsetWidth, ht = el.offsetHeight, distanceX = ((wt / 2) + me.SPACE), distanceY = (ht / 2), x = Math.abs((e.screenX - me.left)), y = Math.abs((e.screenY - me.top));
+ _$jscoverage['ui/shortcutmenu.js'][48]++;
+ clearTimeout(timeID);
+ _$jscoverage['ui/shortcutmenu.js'][49]++;
+ timeID = setTimeout((function () {
+ _$jscoverage['ui/shortcutmenu.js'][50]++;
+ if (((y > 0) && (y < distanceY))) {
+ _$jscoverage['ui/shortcutmenu.js'][51]++;
+ me.setOpacity(el, "1");
+ }
+ else {
+ _$jscoverage['ui/shortcutmenu.js'][52]++;
+ if (((y > distanceY) && (y < (distanceY + 70)))) {
+ _$jscoverage['ui/shortcutmenu.js'][53]++;
+ me.setOpacity(el, "0.5");
+ _$jscoverage['ui/shortcutmenu.js'][54]++;
+ flag = false;
+ }
+ else {
+ _$jscoverage['ui/shortcutmenu.js'][55]++;
+ if (((y > (distanceY + 70)) && (y < (distanceY + 140)))) {
+ _$jscoverage['ui/shortcutmenu.js'][56]++;
+ me.hide();
+ }
+ }
+ }
+ _$jscoverage['ui/shortcutmenu.js'][59]++;
+ if ((flag && (x > 0) && (x < distanceX))) {
+ _$jscoverage['ui/shortcutmenu.js'][60]++;
+ me.setOpacity(el, "1");
+ }
+ else {
+ _$jscoverage['ui/shortcutmenu.js'][61]++;
+ if (((x > distanceX) && (x < (distanceX + 70)))) {
+ _$jscoverage['ui/shortcutmenu.js'][62]++;
+ me.setOpacity(el, "0.5");
+ }
+ else {
+ _$jscoverage['ui/shortcutmenu.js'][63]++;
+ if (((x > (distanceX + 70)) && (x < (distanceX + 140)))) {
+ _$jscoverage['ui/shortcutmenu.js'][64]++;
+ me.hide();
+ }
+ }
+ }
+}));
+ }
+}));
+ _$jscoverage['ui/shortcutmenu.js'][71]++;
+ if (browser.chrome) {
+ _$jscoverage['ui/shortcutmenu.js'][72]++;
+ domUtils.on(doc, "mouseout", (function (e) {
+ _$jscoverage['ui/shortcutmenu.js'][73]++;
+ var relatedTgt = (e.relatedTarget || e.toElement);
+ _$jscoverage['ui/shortcutmenu.js'][75]++;
+ if (((relatedTgt == null) || (relatedTgt.tagName == "HTML"))) {
+ _$jscoverage['ui/shortcutmenu.js'][76]++;
+ me.hide();
+ }
+}));
+ }
+ _$jscoverage['ui/shortcutmenu.js'][81]++;
+ me.editor.addListener("afterhidepop", (function () {
+ _$jscoverage['ui/shortcutmenu.js'][82]++;
+ if ((! me.isHidden)) {
+ _$jscoverage['ui/shortcutmenu.js'][83]++;
+ isSubMenuShow = true;
+ }
+}));
+}), initItems: (function () {
+ _$jscoverage['ui/shortcutmenu.js'][89]++;
+ if (utils.isArray(this.items)) {
+ _$jscoverage['ui/shortcutmenu.js'][90]++;
+ for (var i = 0, len = this.items.length; (i < len); (i++)) {
+ _$jscoverage['ui/shortcutmenu.js'][91]++;
+ var item = this.items[i].toLowerCase();
+ _$jscoverage['ui/shortcutmenu.js'][93]++;
+ if (UI[item]) {
+ _$jscoverage['ui/shortcutmenu.js'][94]++;
+ this.items[i] = new (UI[item])(this.editor);
+ _$jscoverage['ui/shortcutmenu.js'][95]++;
+ this.items[i].className += " edui-shortcutsubmenu ";
+ }
+}
+ }
+}), setOpacity: (function (el, value) {
+ _$jscoverage['ui/shortcutmenu.js'][101]++;
+ if ((browser.ie && (browser.version < 9))) {
+ _$jscoverage['ui/shortcutmenu.js'][102]++;
+ el.style.filter = ("alpha(opacity = " + (parseFloat(value) * 100) + ");");
+ }
+ else {
+ _$jscoverage['ui/shortcutmenu.js'][104]++;
+ el.style.opacity = value;
+ }
+}), getSubMenuMark: (function () {
+ _$jscoverage['ui/shortcutmenu.js'][108]++;
+ isSubMenuShow = false;
+ _$jscoverage['ui/shortcutmenu.js'][109]++;
+ var layerEle = uiUtils.getFixedLayer();
+ _$jscoverage['ui/shortcutmenu.js'][110]++;
+ var list = domUtils.getElementsByTagName(layerEle, "div", (function (node) {
+ _$jscoverage['ui/shortcutmenu.js'][111]++;
+ return domUtils.hasClass(node, "edui-shortcutsubmenu edui-popup");
+}));
+ _$jscoverage['ui/shortcutmenu.js'][114]++;
+ for (var i = 0, node; (node = list[(i++)]);) {
+ _$jscoverage['ui/shortcutmenu.js'][115]++;
+ if ((node.style.display != "none")) {
+ _$jscoverage['ui/shortcutmenu.js'][116]++;
+ isSubMenuShow = true;
+ }
+}
+ _$jscoverage['ui/shortcutmenu.js'][119]++;
+ return isSubMenuShow;
+}), show: (function (e, hasContextmenu) {
+ _$jscoverage['ui/shortcutmenu.js'][122]++;
+ var me = this, offset = {}, el = this.getDom(), fixedlayer = uiUtils.getFixedLayer();
+ _$jscoverage['ui/shortcutmenu.js'][127]++;
+ function setPos(offset) {
+ _$jscoverage['ui/shortcutmenu.js'][128]++;
+ if ((offset.left < 0)) {
+ _$jscoverage['ui/shortcutmenu.js'][129]++;
+ offset.left = 0;
+ }
+ _$jscoverage['ui/shortcutmenu.js'][131]++;
+ if ((offset.top < 0)) {
+ _$jscoverage['ui/shortcutmenu.js'][132]++;
+ offset.top = 0;
+ }
+ _$jscoverage['ui/shortcutmenu.js'][134]++;
+ el.style.cssText = ("position:absolute;left:" + offset.left + "px;top:" + offset.top + "px;");
+}
+ _$jscoverage['ui/shortcutmenu.js'][137]++;
+ function setPosByCxtMenu(menu) {
+ _$jscoverage['ui/shortcutmenu.js'][138]++;
+ if ((! menu.tagName)) {
+ _$jscoverage['ui/shortcutmenu.js'][139]++;
+ menu = menu.getDom();
+ }
+ _$jscoverage['ui/shortcutmenu.js'][141]++;
+ offset.left = parseInt(menu.style.left);
+ _$jscoverage['ui/shortcutmenu.js'][142]++;
+ offset.top = parseInt(menu.style.top);
+ _$jscoverage['ui/shortcutmenu.js'][143]++;
+ offset.top -= (el.offsetHeight + 15);
+ _$jscoverage['ui/shortcutmenu.js'][144]++;
+ setPos(offset);
+}
+ _$jscoverage['ui/shortcutmenu.js'][148]++;
+ me.eventType = e.type;
+ _$jscoverage['ui/shortcutmenu.js'][149]++;
+ el.style.cssText = "display:block;left:-9999px";
+ _$jscoverage['ui/shortcutmenu.js'][151]++;
+ if (((e.type == "contextmenu") && hasContextmenu)) {
+ _$jscoverage['ui/shortcutmenu.js'][152]++;
+ var menu = domUtils.getElementsByTagName(fixedlayer, "div", "edui-contextmenu")[0];
+ _$jscoverage['ui/shortcutmenu.js'][153]++;
+ if (menu) {
+ _$jscoverage['ui/shortcutmenu.js'][154]++;
+ setPosByCxtMenu(menu);
+ }
+ else {
+ _$jscoverage['ui/shortcutmenu.js'][156]++;
+ me.editor.addListener("aftershowcontextmenu", (function (type, menu) {
+ _$jscoverage['ui/shortcutmenu.js'][157]++;
+ setPosByCxtMenu(menu);
+}));
+ }
+ }
+ else {
+ _$jscoverage['ui/shortcutmenu.js'][161]++;
+ offset = uiUtils.getViewportOffsetByEvent(e);
+ _$jscoverage['ui/shortcutmenu.js'][162]++;
+ offset.top -= (el.offsetHeight + me.SPACE);
+ _$jscoverage['ui/shortcutmenu.js'][163]++;
+ offset.left += (me.SPACE + 20);
+ _$jscoverage['ui/shortcutmenu.js'][164]++;
+ setPos(offset);
+ _$jscoverage['ui/shortcutmenu.js'][165]++;
+ me.setOpacity(el, 0.20000000000000001);
+ }
+ _$jscoverage['ui/shortcutmenu.js'][169]++;
+ me.isHidden = false;
+ _$jscoverage['ui/shortcutmenu.js'][170]++;
+ me.left = ((e.screenX + (el.offsetWidth / 2)) - me.SPACE);
+ _$jscoverage['ui/shortcutmenu.js'][171]++;
+ me.top = (e.screenY - (el.offsetHeight / 2) - me.SPACE);
+ _$jscoverage['ui/shortcutmenu.js'][173]++;
+ if (me.editor) {
+ _$jscoverage['ui/shortcutmenu.js'][174]++;
+ el.style.zIndex = ((me.editor.container.style.zIndex * 1) + 10);
+ _$jscoverage['ui/shortcutmenu.js'][175]++;
+ fixedlayer.style.zIndex = (el.style.zIndex - 1);
+ }
+}), hide: (function () {
+ _$jscoverage['ui/shortcutmenu.js'][179]++;
+ if (this.getDom()) {
+ _$jscoverage['ui/shortcutmenu.js'][180]++;
+ this.getDom().style.display = "none";
+ }
+ _$jscoverage['ui/shortcutmenu.js'][182]++;
+ this.isHidden = true;
+}), postRender: (function () {
+ _$jscoverage['ui/shortcutmenu.js'][185]++;
+ if (utils.isArray(this.items)) {
+ _$jscoverage['ui/shortcutmenu.js'][186]++;
+ for (var i = 0, item; (item = this.items[(i++)]);) {
+ _$jscoverage['ui/shortcutmenu.js'][187]++;
+ item.postRender();
+}
+ }
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/shortcutmenu.js'][192]++;
+ var buff;
+ _$jscoverage['ui/shortcutmenu.js'][193]++;
+ if (utils.isArray(this.items)) {
+ _$jscoverage['ui/shortcutmenu.js'][194]++;
+ buff = [];
+ _$jscoverage['ui/shortcutmenu.js'][195]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/shortcutmenu.js'][196]++;
+ buff[i] = this.items[i].renderHtml();
+}
+ _$jscoverage['ui/shortcutmenu.js'][198]++;
+ buff = buff.join("");
+ }
+ else {
+ _$jscoverage['ui/shortcutmenu.js'][200]++;
+ buff = this.items;
+ }
+ _$jscoverage['ui/shortcutmenu.js'][203]++;
+ return ("" + buff + "
");
+})};
+ _$jscoverage['ui/shortcutmenu.js'][209]++;
+ utils.inherits(ShortCutMenu, UIBase);
+ _$jscoverage['ui/shortcutmenu.js'][211]++;
+ function hideAllMenu(e) {
+ _$jscoverage['ui/shortcutmenu.js'][212]++;
+ var tgt = (e.target || e.srcElement), cur = domUtils.findParent(tgt, (function (node) {
+ _$jscoverage['ui/shortcutmenu.js'][214]++;
+ return (domUtils.hasClass(node, "edui-shortcutmenu") || domUtils.hasClass(node, "edui-popup"));
+}), true);
+ _$jscoverage['ui/shortcutmenu.js'][217]++;
+ if ((! cur)) {
+ _$jscoverage['ui/shortcutmenu.js'][218]++;
+ for (var i = 0, menu; (menu = allMenus[(i++)]);) {
+ _$jscoverage['ui/shortcutmenu.js'][219]++;
+ menu.hide();
+}
+ }
+}
+ _$jscoverage['ui/shortcutmenu.js'][224]++;
+ domUtils.on(document, "mousedown", (function (e) {
+ _$jscoverage['ui/shortcutmenu.js'][225]++;
+ hideAllMenu(e);
+}));
+ _$jscoverage['ui/shortcutmenu.js'][228]++;
+ domUtils.on(window, "scroll", (function (e) {
+ _$jscoverage['ui/shortcutmenu.js'][229]++;
+ hideAllMenu(e);
+}));
+})();
diff --git a/_test/coverage/ui/splitbutton.js b/_test/coverage/ui/splitbutton.js
new file mode 100644
index 000000000..9d7b95a5d
--- /dev/null
+++ b/_test/coverage/ui/splitbutton.js
@@ -0,0 +1,170 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/splitbutton.js']) {
+ _$jscoverage['ui/splitbutton.js'] = [];
+ _$jscoverage['ui/splitbutton.js'][4] = 0;
+ _$jscoverage['ui/splitbutton.js'][5] = 0;
+ _$jscoverage['ui/splitbutton.js'][11] = 0;
+ _$jscoverage['ui/splitbutton.js'][12] = 0;
+ _$jscoverage['ui/splitbutton.js'][14] = 0;
+ _$jscoverage['ui/splitbutton.js'][19] = 0;
+ _$jscoverage['ui/splitbutton.js'][20] = 0;
+ _$jscoverage['ui/splitbutton.js'][21] = 0;
+ _$jscoverage['ui/splitbutton.js'][22] = 0;
+ _$jscoverage['ui/splitbutton.js'][23] = 0;
+ _$jscoverage['ui/splitbutton.js'][24] = 0;
+ _$jscoverage['ui/splitbutton.js'][25] = 0;
+ _$jscoverage['ui/splitbutton.js'][30] = 0;
+ _$jscoverage['ui/splitbutton.js'][31] = 0;
+ _$jscoverage['ui/splitbutton.js'][34] = 0;
+ _$jscoverage['ui/splitbutton.js'][35] = 0;
+ _$jscoverage['ui/splitbutton.js'][36] = 0;
+ _$jscoverage['ui/splitbutton.js'][38] = 0;
+ _$jscoverage['ui/splitbutton.js'][39] = 0;
+ _$jscoverage['ui/splitbutton.js'][40] = 0;
+ _$jscoverage['ui/splitbutton.js'][41] = 0;
+ _$jscoverage['ui/splitbutton.js'][46] = 0;
+ _$jscoverage['ui/splitbutton.js'][48] = 0;
+ _$jscoverage['ui/splitbutton.js'][51] = 0;
+ _$jscoverage['ui/splitbutton.js'][54] = 0;
+ _$jscoverage['ui/splitbutton.js'][57] = 0;
+ _$jscoverage['ui/splitbutton.js'][68] = 0;
+ _$jscoverage['ui/splitbutton.js'][69] = 0;
+ _$jscoverage['ui/splitbutton.js'][70] = 0;
+ _$jscoverage['ui/splitbutton.js'][71] = 0;
+ _$jscoverage['ui/splitbutton.js'][74] = 0;
+ _$jscoverage['ui/splitbutton.js'][75] = 0;
+ _$jscoverage['ui/splitbutton.js'][79] = 0;
+ _$jscoverage['ui/splitbutton.js'][80] = 0;
+ _$jscoverage['ui/splitbutton.js'][84] = 0;
+ _$jscoverage['ui/splitbutton.js'][85] = 0;
+}
+_$jscoverage['ui/splitbutton.js'].source = ["///import core ","///import uicore ","///import ui/stateful.js ","( function () { "," var utils = baidu. editor. utils, "," uiUtils = baidu. editor. ui. uiUtils, "," domUtils = baidu. editor. dom. domUtils, "," UIBase = baidu. editor. ui. UIBase, "," Stateful = baidu. editor. ui. Stateful, "," SplitButton = baidu. editor. ui. SplitButton = function ( options) { "," this . initOptions( options); "," this . initSplitButton(); "," } ; "," SplitButton. prototype = { "," popup: null , "," uiName: 'splitbutton' , "," title: '' , "," initSplitButton: function () { "," this . initUIBase(); "," this . Stateful_init(); "," var me = this ; "," if ( this . popup != null ) { "," var popup = this . popup; "," this . popup = null ; "," this . setPopup( popup); "," } "," } , "," _UIBase_postRender: UIBase. prototype. postRender, "," postRender: function () { "," this . Stateful_postRender(); "," this . _UIBase_postRender(); "," } , "," setPopup: function ( popup) { "," if ( this . popup === popup) return ; "," if ( this . popup != null ) { "," this . popup. dispose(); "," } "," popup. addListener( 'show' , utils. bind( this . _onPopupShow, this )); "," popup. addListener( 'hide' , utils. bind( this . _onPopupHide, this )); "," popup. addListener( 'postrender' , utils. bind( function () { "," popup. getDom( 'body' ). appendChild( "," uiUtils. createElementByHtml( '<div id=\"' + "," this . popup. id + '_bordereraser\" class=\"edui-bordereraser edui-background\" style=\"width:' + "," ( uiUtils. getClientRect( this . getDom()). width + 20 ) + 'px\"></div>' ) "," ); "," popup. getDom(). className += ' ' + this . className; "," } , this )); "," this . popup = popup; "," } , "," _onPopupShow: function () { "," this . addState( 'opened' ); "," } , "," _onPopupHide: function () { "," this . removeState( 'opened' ); "," } , "," getHtmlTpl: function () { "," return '<div id=\"##\" class=\"edui-box %%\">' + "," '<div ' + ( this . title ? 'title=\"' + this . title + '\"' : '' ) + ' id=\"##_state\" stateful><div class=\"%%-body\">' + "," '<div id=\"##_button_body\" class=\"edui-box edui-button-body\" onclick=\"$$._onButtonClick(event, this);\">' + "," '<div class=\"edui-box edui-icon\"></div>' + "," '</div>' + "," '<div class=\"edui-box edui-splitborder\"></div>' + "," '<div class=\"edui-box edui-arrow\" onclick=\"$$._onArrowClick();\"></div>' + "," '</div></div></div>' ; "," } , "," showPopup: function () { "," // 当popup往上弹出的时候,做特殊处理 "," var rect = uiUtils. getClientRect( this . getDom()); "," rect. top -= this . popup. SHADOW_RADIUS; "," rect. height += this . popup. SHADOW_RADIUS; "," this . popup. showAnchorRect( rect); "," } , "," _onArrowClick: function ( event, el) { "," if (! this . isDisabled()) { "," this . showPopup(); "," } "," } , "," _onButtonClick: function () { "," if (! this . isDisabled()) { "," this . fireEvent( 'buttonclick' ); "," } "," } "," } ; "," utils. inherits( SplitButton, UIBase); "," utils. extend( SplitButton. prototype, Stateful, true ); ","","} )(); "];
+_$jscoverage['ui/splitbutton.js'][4]++;
+(function () {
+ _$jscoverage['ui/splitbutton.js'][5]++;
+ var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, domUtils = baidu.editor.dom.domUtils, UIBase = baidu.editor.ui.UIBase, Stateful = baidu.editor.ui.Stateful, SplitButton = (baidu.editor.ui.SplitButton = (function (options) {
+ _$jscoverage['ui/splitbutton.js'][11]++;
+ this.initOptions(options);
+ _$jscoverage['ui/splitbutton.js'][12]++;
+ this.initSplitButton();
+}));
+ _$jscoverage['ui/splitbutton.js'][14]++;
+ SplitButton.prototype = {popup: null, uiName: "splitbutton", title: "", initSplitButton: (function () {
+ _$jscoverage['ui/splitbutton.js'][19]++;
+ this.initUIBase();
+ _$jscoverage['ui/splitbutton.js'][20]++;
+ this.Stateful_init();
+ _$jscoverage['ui/splitbutton.js'][21]++;
+ var me = this;
+ _$jscoverage['ui/splitbutton.js'][22]++;
+ if ((this.popup != null)) {
+ _$jscoverage['ui/splitbutton.js'][23]++;
+ var popup = this.popup;
+ _$jscoverage['ui/splitbutton.js'][24]++;
+ this.popup = null;
+ _$jscoverage['ui/splitbutton.js'][25]++;
+ this.setPopup(popup);
+ }
+}), _UIBase_postRender: UIBase.prototype.postRender, postRender: (function () {
+ _$jscoverage['ui/splitbutton.js'][30]++;
+ this.Stateful_postRender();
+ _$jscoverage['ui/splitbutton.js'][31]++;
+ this._UIBase_postRender();
+}), setPopup: (function (popup) {
+ _$jscoverage['ui/splitbutton.js'][34]++;
+ if ((this.popup === popup)) {
+ _$jscoverage['ui/splitbutton.js'][34]++;
+ return;
+ }
+ _$jscoverage['ui/splitbutton.js'][35]++;
+ if ((this.popup != null)) {
+ _$jscoverage['ui/splitbutton.js'][36]++;
+ this.popup.dispose();
+ }
+ _$jscoverage['ui/splitbutton.js'][38]++;
+ popup.addListener("show", utils.bind(this._onPopupShow, this));
+ _$jscoverage['ui/splitbutton.js'][39]++;
+ popup.addListener("hide", utils.bind(this._onPopupHide, this));
+ _$jscoverage['ui/splitbutton.js'][40]++;
+ popup.addListener("postrender", utils.bind((function () {
+ _$jscoverage['ui/splitbutton.js'][41]++;
+ popup.getDom("body").appendChild(uiUtils.createElementByHtml(("
")));
+ _$jscoverage['ui/splitbutton.js'][46]++;
+ popup.getDom().className += (" " + this.className);
+}), this));
+ _$jscoverage['ui/splitbutton.js'][48]++;
+ this.popup = popup;
+}), _onPopupShow: (function () {
+ _$jscoverage['ui/splitbutton.js'][51]++;
+ this.addState("opened");
+}), _onPopupHide: (function () {
+ _$jscoverage['ui/splitbutton.js'][54]++;
+ this.removeState("opened");
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/splitbutton.js'][57]++;
+ return ("");
+}), showPopup: (function () {
+ _$jscoverage['ui/splitbutton.js'][68]++;
+ var rect = uiUtils.getClientRect(this.getDom());
+ _$jscoverage['ui/splitbutton.js'][69]++;
+ rect.top -= this.popup.SHADOW_RADIUS;
+ _$jscoverage['ui/splitbutton.js'][70]++;
+ rect.height += this.popup.SHADOW_RADIUS;
+ _$jscoverage['ui/splitbutton.js'][71]++;
+ this.popup.showAnchorRect(rect);
+}), _onArrowClick: (function (event, el) {
+ _$jscoverage['ui/splitbutton.js'][74]++;
+ if ((! this.isDisabled())) {
+ _$jscoverage['ui/splitbutton.js'][75]++;
+ this.showPopup();
+ }
+}), _onButtonClick: (function () {
+ _$jscoverage['ui/splitbutton.js'][79]++;
+ if ((! this.isDisabled())) {
+ _$jscoverage['ui/splitbutton.js'][80]++;
+ this.fireEvent("buttonclick");
+ }
+})};
+ _$jscoverage['ui/splitbutton.js'][84]++;
+ utils.inherits(SplitButton, UIBase);
+ _$jscoverage['ui/splitbutton.js'][85]++;
+ utils.extend(SplitButton.prototype, Stateful, true);
+})();
diff --git a/_test/coverage/ui/stateful.js b/_test/coverage/ui/stateful.js
new file mode 100644
index 000000000..61621e327
--- /dev/null
+++ b/_test/coverage/ui/stateful.js
@@ -0,0 +1,214 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/stateful.js']) {
+ _$jscoverage['ui/stateful.js'] = [];
+ _$jscoverage['ui/stateful.js'][1] = 0;
+ _$jscoverage['ui/stateful.js'][2] = 0;
+ _$jscoverage['ui/stateful.js'][6] = 0;
+ _$jscoverage['ui/stateful.js'][15] = 0;
+ _$jscoverage['ui/stateful.js'][19] = 0;
+ _$jscoverage['ui/stateful.js'][20] = 0;
+ _$jscoverage['ui/stateful.js'][23] = 0;
+ _$jscoverage['ui/stateful.js'][25] = 0;
+ _$jscoverage['ui/stateful.js'][28] = 0;
+ _$jscoverage['ui/stateful.js'][29] = 0;
+ _$jscoverage['ui/stateful.js'][30] = 0;
+ _$jscoverage['ui/stateful.js'][31] = 0;
+ _$jscoverage['ui/stateful.js'][35] = 0;
+ _$jscoverage['ui/stateful.js'][36] = 0;
+ _$jscoverage['ui/stateful.js'][37] = 0;
+ _$jscoverage['ui/stateful.js'][38] = 0;
+ _$jscoverage['ui/stateful.js'][42] = 0;
+ _$jscoverage['ui/stateful.js'][43] = 0;
+ _$jscoverage['ui/stateful.js'][44] = 0;
+ _$jscoverage['ui/stateful.js'][48] = 0;
+ _$jscoverage['ui/stateful.js'][49] = 0;
+ _$jscoverage['ui/stateful.js'][50] = 0;
+ _$jscoverage['ui/stateful.js'][54] = 0;
+ _$jscoverage['ui/stateful.js'][55] = 0;
+ _$jscoverage['ui/stateful.js'][59] = 0;
+ _$jscoverage['ui/stateful.js'][60] = 0;
+ _$jscoverage['ui/stateful.js'][64] = 0;
+ _$jscoverage['ui/stateful.js'][65] = 0;
+ _$jscoverage['ui/stateful.js'][69] = 0;
+ _$jscoverage['ui/stateful.js'][72] = 0;
+ _$jscoverage['ui/stateful.js'][73] = 0;
+ _$jscoverage['ui/stateful.js'][77] = 0;
+ _$jscoverage['ui/stateful.js'][78] = 0;
+ _$jscoverage['ui/stateful.js'][82] = 0;
+ _$jscoverage['ui/stateful.js'][85] = 0;
+ _$jscoverage['ui/stateful.js'][88] = 0;
+ _$jscoverage['ui/stateful.js'][89] = 0;
+ _$jscoverage['ui/stateful.js'][91] = 0;
+ _$jscoverage['ui/stateful.js'][95] = 0;
+ _$jscoverage['ui/stateful.js'][98] = 0;
+ _$jscoverage['ui/stateful.js'][99] = 0;
+ _$jscoverage['ui/stateful.js'][100] = 0;
+ _$jscoverage['ui/stateful.js'][101] = 0;
+ _$jscoverage['ui/stateful.js'][102] = 0;
+ _$jscoverage['ui/stateful.js'][104] = 0;
+}
+_$jscoverage['ui/stateful.js'].source = ["( function () { "," var browser = baidu. editor. browser, "," domUtils = baidu. editor. dom. domUtils, "," uiUtils = baidu. editor. ui. uiUtils; "," "," var TPL_STATEFUL = 'onmousedown=\"$$.Stateful_onMouseDown(event, this);\"' + "," ' onmouseup=\"$$.Stateful_onMouseUp(event, this);\"' + "," ( browser. ie ? ( "," ' onmouseenter=\"$$.Stateful_onMouseEnter(event, this);\"' + "," ' onmouseleave=\"$$.Stateful_onMouseLeave(event, this);\"' ) "," : ( "," ' onmouseover=\"$$.Stateful_onMouseOver(event, this);\"' + "," ' onmouseout=\"$$.Stateful_onMouseOut(event, this);\"' )); "," "," baidu. editor. ui. Stateful = { "," alwalysHoverable: false , "," target: null , //目标元素和this指向dom不一样 "," Stateful_init: function () { "," this . _Stateful_dGetHtmlTpl = this . getHtmlTpl; "," this . getHtmlTpl = this . Stateful_getHtmlTpl; "," } , "," Stateful_getHtmlTpl: function () { "," var tpl = this . _Stateful_dGetHtmlTpl(); "," // 使用function避免$转义 "," return tpl. replace( /stateful/g , function () { return TPL_STATEFUL; } ); "," } , "," Stateful_onMouseEnter: function ( evt, el) { "," this . target= el; "," if (! this . isDisabled() || this . alwalysHoverable) { "," this . addState( 'hover' ); "," this . fireEvent( 'over' ); "," } "," } , "," Stateful_onMouseLeave: function ( evt, el) { "," if (! this . isDisabled() || this . alwalysHoverable) { "," this . removeState( 'hover' ); "," this . removeState( 'active' ); "," this . fireEvent( 'out' ); "," } "," } , "," Stateful_onMouseOver: function ( evt, el) { "," var rel = evt. relatedTarget; "," if (! uiUtils. contains( el, rel) && el !== rel) { "," this . Stateful_onMouseEnter( evt, el); "," } "," } , "," Stateful_onMouseOut: function ( evt, el) { "," var rel = evt. relatedTarget; "," if (! uiUtils. contains( el, rel) && el !== rel) { "," this . Stateful_onMouseLeave( evt, el); "," } "," } , "," Stateful_onMouseDown: function ( evt, el) { "," if (! this . isDisabled()) { "," this . addState( 'active' ); "," } "," } , "," Stateful_onMouseUp: function ( evt, el) { "," if (! this . isDisabled()) { "," this . removeState( 'active' ); "," } "," } , "," Stateful_postRender: function () { "," if ( this . disabled && ! this . hasState( 'disabled' )) { "," this . addState( 'disabled' ); "," } "," } , "," hasState: function ( state) { "," return domUtils. hasClass( this . getStateDom(), 'edui-state-' + state); "," } , "," addState: function ( state) { "," if (! this . hasState( state)) { "," this . getStateDom(). className += ' edui-state-' + state; "," } "," } , "," removeState: function ( state) { "," if ( this . hasState( state)) { "," domUtils. removeClasses( this . getStateDom(), [ 'edui-state-' + state]); "," } "," } , "," getStateDom: function () { "," return this . getDom( 'state' ); "," } , "," isChecked: function () { "," return this . hasState( 'checked' ); "," } , "," setChecked: function ( checked) { "," if (! this . isDisabled() && checked) { "," this . addState( 'checked' ); "," } else { "," this . removeState( 'checked' ); "," } "," } , "," isDisabled: function () { "," return this . hasState( 'disabled' ); "," } , "," setDisabled: function ( disabled) { "," if ( disabled) { "," this . removeState( 'hover' ); "," this . removeState( 'checked' ); "," this . removeState( 'active' ); "," this . addState( 'disabled' ); "," } else { "," this . removeState( 'disabled' ); "," } "," } "," } ; ","} )(); "];
+_$jscoverage['ui/stateful.js'][1]++;
+(function () {
+ _$jscoverage['ui/stateful.js'][2]++;
+ var browser = baidu.editor.browser, domUtils = baidu.editor.dom.domUtils, uiUtils = baidu.editor.ui.uiUtils;
+ _$jscoverage['ui/stateful.js'][6]++;
+ var TPL_STATEFUL = ("onmousedown=\"$$.Stateful_onMouseDown(event, this);\"" + " onmouseup=\"$$.Stateful_onMouseUp(event, this);\"" + (browser.ie? " onmouseenter=\"$$.Stateful_onMouseEnter(event, this);\" onmouseleave=\"$$.Stateful_onMouseLeave(event, this);\"": " onmouseover=\"$$.Stateful_onMouseOver(event, this);\" onmouseout=\"$$.Stateful_onMouseOut(event, this);\""));
+ _$jscoverage['ui/stateful.js'][15]++;
+ baidu.editor.ui.Stateful = {alwalysHoverable: false, target: null, Stateful_init: (function () {
+ _$jscoverage['ui/stateful.js'][19]++;
+ this._Stateful_dGetHtmlTpl = this.getHtmlTpl;
+ _$jscoverage['ui/stateful.js'][20]++;
+ this.getHtmlTpl = this.Stateful_getHtmlTpl;
+}), Stateful_getHtmlTpl: (function () {
+ _$jscoverage['ui/stateful.js'][23]++;
+ var tpl = this._Stateful_dGetHtmlTpl();
+ _$jscoverage['ui/stateful.js'][25]++;
+ return tpl.replace(/stateful/g, (function () {
+ _$jscoverage['ui/stateful.js'][25]++;
+ return TPL_STATEFUL;
+}));
+}), Stateful_onMouseEnter: (function (evt, el) {
+ _$jscoverage['ui/stateful.js'][28]++;
+ this.target = el;
+ _$jscoverage['ui/stateful.js'][29]++;
+ if (((! this.isDisabled()) || this.alwalysHoverable)) {
+ _$jscoverage['ui/stateful.js'][30]++;
+ this.addState("hover");
+ _$jscoverage['ui/stateful.js'][31]++;
+ this.fireEvent("over");
+ }
+}), Stateful_onMouseLeave: (function (evt, el) {
+ _$jscoverage['ui/stateful.js'][35]++;
+ if (((! this.isDisabled()) || this.alwalysHoverable)) {
+ _$jscoverage['ui/stateful.js'][36]++;
+ this.removeState("hover");
+ _$jscoverage['ui/stateful.js'][37]++;
+ this.removeState("active");
+ _$jscoverage['ui/stateful.js'][38]++;
+ this.fireEvent("out");
+ }
+}), Stateful_onMouseOver: (function (evt, el) {
+ _$jscoverage['ui/stateful.js'][42]++;
+ var rel = evt.relatedTarget;
+ _$jscoverage['ui/stateful.js'][43]++;
+ if (((! uiUtils.contains(el, rel)) && (el !== rel))) {
+ _$jscoverage['ui/stateful.js'][44]++;
+ this.Stateful_onMouseEnter(evt, el);
+ }
+}), Stateful_onMouseOut: (function (evt, el) {
+ _$jscoverage['ui/stateful.js'][48]++;
+ var rel = evt.relatedTarget;
+ _$jscoverage['ui/stateful.js'][49]++;
+ if (((! uiUtils.contains(el, rel)) && (el !== rel))) {
+ _$jscoverage['ui/stateful.js'][50]++;
+ this.Stateful_onMouseLeave(evt, el);
+ }
+}), Stateful_onMouseDown: (function (evt, el) {
+ _$jscoverage['ui/stateful.js'][54]++;
+ if ((! this.isDisabled())) {
+ _$jscoverage['ui/stateful.js'][55]++;
+ this.addState("active");
+ }
+}), Stateful_onMouseUp: (function (evt, el) {
+ _$jscoverage['ui/stateful.js'][59]++;
+ if ((! this.isDisabled())) {
+ _$jscoverage['ui/stateful.js'][60]++;
+ this.removeState("active");
+ }
+}), Stateful_postRender: (function () {
+ _$jscoverage['ui/stateful.js'][64]++;
+ if ((this.disabled && (! this.hasState("disabled")))) {
+ _$jscoverage['ui/stateful.js'][65]++;
+ this.addState("disabled");
+ }
+}), hasState: (function (state) {
+ _$jscoverage['ui/stateful.js'][69]++;
+ return domUtils.hasClass(this.getStateDom(), ("edui-state-" + state));
+}), addState: (function (state) {
+ _$jscoverage['ui/stateful.js'][72]++;
+ if ((! this.hasState(state))) {
+ _$jscoverage['ui/stateful.js'][73]++;
+ this.getStateDom().className += (" edui-state-" + state);
+ }
+}), removeState: (function (state) {
+ _$jscoverage['ui/stateful.js'][77]++;
+ if (this.hasState(state)) {
+ _$jscoverage['ui/stateful.js'][78]++;
+ domUtils.removeClasses(this.getStateDom(), [("edui-state-" + state)]);
+ }
+}), getStateDom: (function () {
+ _$jscoverage['ui/stateful.js'][82]++;
+ return this.getDom("state");
+}), isChecked: (function () {
+ _$jscoverage['ui/stateful.js'][85]++;
+ return this.hasState("checked");
+}), setChecked: (function (checked) {
+ _$jscoverage['ui/stateful.js'][88]++;
+ if (((! this.isDisabled()) && checked)) {
+ _$jscoverage['ui/stateful.js'][89]++;
+ this.addState("checked");
+ }
+ else {
+ _$jscoverage['ui/stateful.js'][91]++;
+ this.removeState("checked");
+ }
+}), isDisabled: (function () {
+ _$jscoverage['ui/stateful.js'][95]++;
+ return this.hasState("disabled");
+}), setDisabled: (function (disabled) {
+ _$jscoverage['ui/stateful.js'][98]++;
+ if (disabled) {
+ _$jscoverage['ui/stateful.js'][99]++;
+ this.removeState("hover");
+ _$jscoverage['ui/stateful.js'][100]++;
+ this.removeState("checked");
+ _$jscoverage['ui/stateful.js'][101]++;
+ this.removeState("active");
+ _$jscoverage['ui/stateful.js'][102]++;
+ this.addState("disabled");
+ }
+ else {
+ _$jscoverage['ui/stateful.js'][104]++;
+ this.removeState("disabled");
+ }
+})};
+})();
diff --git a/_test/coverage/ui/tablebutton.js b/_test/coverage/ui/tablebutton.js
new file mode 100644
index 000000000..1460e41de
--- /dev/null
+++ b/_test/coverage/ui/tablebutton.js
@@ -0,0 +1,85 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/tablebutton.js']) {
+ _$jscoverage['ui/tablebutton.js'] = [];
+ _$jscoverage['ui/tablebutton.js'][6] = 0;
+ _$jscoverage['ui/tablebutton.js'][7] = 0;
+ _$jscoverage['ui/tablebutton.js'][12] = 0;
+ _$jscoverage['ui/tablebutton.js'][13] = 0;
+ _$jscoverage['ui/tablebutton.js'][15] = 0;
+ _$jscoverage['ui/tablebutton.js'][17] = 0;
+ _$jscoverage['ui/tablebutton.js'][18] = 0;
+ _$jscoverage['ui/tablebutton.js'][22] = 0;
+ _$jscoverage['ui/tablebutton.js'][27] = 0;
+ _$jscoverage['ui/tablebutton.js'][30] = 0;
+ _$jscoverage['ui/tablebutton.js'][31] = 0;
+ _$jscoverage['ui/tablebutton.js'][35] = 0;
+}
+_$jscoverage['ui/tablebutton.js'].source = ["///import core ","///import uicore ","///import ui/popup.js ","///import ui/tablepicker.js ","///import ui/splitbutton.js ","( function () { "," var utils = baidu. editor. utils, "," Popup = baidu. editor. ui. Popup, "," TablePicker = baidu. editor. ui. TablePicker, "," SplitButton = baidu. editor. ui. SplitButton, "," TableButton = baidu. editor. ui. TableButton = function ( options) { "," this . initOptions( options); "," this . initTableButton(); "," } ; "," TableButton. prototype = { "," initTableButton: function () { "," var me = this ; "," this . popup = new Popup( { "," content: new TablePicker( { "," editor: me. editor, "," onpicktable: function ( t, numCols, numRows) { "," me. _onPickTable( numCols, numRows); "," } "," } ), "," 'editor' : me. editor"," } ); "," this . initSplitButton(); "," } , "," _onPickTable: function ( numCols, numRows) { "," if ( this . fireEvent( 'picktable' , numCols, numRows) !== false ) { "," this . popup. hide(); "," } "," } "," } ; "," utils. inherits( TableButton, SplitButton); ","","} )(); "];
+_$jscoverage['ui/tablebutton.js'][6]++;
+(function () {
+ _$jscoverage['ui/tablebutton.js'][7]++;
+ var utils = baidu.editor.utils, Popup = baidu.editor.ui.Popup, TablePicker = baidu.editor.ui.TablePicker, SplitButton = baidu.editor.ui.SplitButton, TableButton = (baidu.editor.ui.TableButton = (function (options) {
+ _$jscoverage['ui/tablebutton.js'][12]++;
+ this.initOptions(options);
+ _$jscoverage['ui/tablebutton.js'][13]++;
+ this.initTableButton();
+}));
+ _$jscoverage['ui/tablebutton.js'][15]++;
+ TableButton.prototype = {initTableButton: (function () {
+ _$jscoverage['ui/tablebutton.js'][17]++;
+ var me = this;
+ _$jscoverage['ui/tablebutton.js'][18]++;
+ this.popup = new Popup({content: new TablePicker({editor: me.editor, onpicktable: (function (t, numCols, numRows) {
+ _$jscoverage['ui/tablebutton.js'][22]++;
+ me._onPickTable(numCols, numRows);
+})}), "editor": me.editor});
+ _$jscoverage['ui/tablebutton.js'][27]++;
+ this.initSplitButton();
+}), _onPickTable: (function (numCols, numRows) {
+ _$jscoverage['ui/tablebutton.js'][30]++;
+ if ((this.fireEvent("picktable", numCols, numRows) !== false)) {
+ _$jscoverage['ui/tablebutton.js'][31]++;
+ this.popup.hide();
+ }
+})};
+ _$jscoverage['ui/tablebutton.js'][35]++;
+ utils.inherits(TableButton, SplitButton);
+})();
diff --git a/_test/coverage/ui/tablepicker.js b/_test/coverage/ui/tablepicker.js
new file mode 100644
index 000000000..255faa362
--- /dev/null
+++ b/_test/coverage/ui/tablepicker.js
@@ -0,0 +1,160 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/tablepicker.js']) {
+ _$jscoverage['ui/tablepicker.js'] = [];
+ _$jscoverage['ui/tablepicker.js'][3] = 0;
+ _$jscoverage['ui/tablepicker.js'][4] = 0;
+ _$jscoverage['ui/tablepicker.js'][8] = 0;
+ _$jscoverage['ui/tablepicker.js'][9] = 0;
+ _$jscoverage['ui/tablepicker.js'][10] = 0;
+ _$jscoverage['ui/tablepicker.js'][12] = 0;
+ _$jscoverage['ui/tablepicker.js'][21] = 0;
+ _$jscoverage['ui/tablepicker.js'][24] = 0;
+ _$jscoverage['ui/tablepicker.js'][25] = 0;
+ _$jscoverage['ui/tablepicker.js'][43] = 0;
+ _$jscoverage['ui/tablepicker.js'][44] = 0;
+ _$jscoverage['ui/tablepicker.js'][47] = 0;
+ _$jscoverage['ui/tablepicker.js'][48] = 0;
+ _$jscoverage['ui/tablepicker.js'][49] = 0;
+ _$jscoverage['ui/tablepicker.js'][50] = 0;
+ _$jscoverage['ui/tablepicker.js'][51] = 0;
+ _$jscoverage['ui/tablepicker.js'][52] = 0;
+ _$jscoverage['ui/tablepicker.js'][53] = 0;
+ _$jscoverage['ui/tablepicker.js'][54] = 0;
+ _$jscoverage['ui/tablepicker.js'][57] = 0;
+ _$jscoverage['ui/tablepicker.js'][58] = 0;
+ _$jscoverage['ui/tablepicker.js'][59] = 0;
+ _$jscoverage['ui/tablepicker.js'][60] = 0;
+ _$jscoverage['ui/tablepicker.js'][64] = 0;
+ _$jscoverage['ui/tablepicker.js'][65] = 0;
+ _$jscoverage['ui/tablepicker.js'][66] = 0;
+ _$jscoverage['ui/tablepicker.js'][67] = 0;
+ _$jscoverage['ui/tablepicker.js'][71] = 0;
+ _$jscoverage['ui/tablepicker.js'][72] = 0;
+ _$jscoverage['ui/tablepicker.js'][73] = 0;
+ _$jscoverage['ui/tablepicker.js'][74] = 0;
+ _$jscoverage['ui/tablepicker.js'][75] = 0;
+ _$jscoverage['ui/tablepicker.js'][76] = 0;
+ _$jscoverage['ui/tablepicker.js'][79] = 0;
+ _$jscoverage['ui/tablepicker.js'][82] = 0;
+}
+_$jscoverage['ui/tablepicker.js'].source = ["///import core ","///import uicore ","( function () { "," var utils = baidu. editor. utils, "," uiUtils = baidu. editor. ui. uiUtils, "," UIBase = baidu. editor. ui. UIBase; "," "," var TablePicker = baidu. editor. ui. TablePicker = function ( options) { "," this . initOptions( options); "," this . initTablePicker(); "," } ; "," TablePicker. prototype = { "," defaultNumRows: 10 , "," defaultNumCols: 10 , "," maxNumRows: 20 , "," maxNumCols: 20 , "," numRows: 10 , "," numCols: 10 , "," lengthOfCellSide: 22 , "," initTablePicker: function () { "," this . initUIBase(); "," } , "," getHtmlTpl: function () { "," var me = this ; "," return '<div id=\"##\" class=\"edui-tablepicker %%\">' + "," '<div class=\"edui-tablepicker-body\">' + "," '<div class=\"edui-infoarea\">' + "," '<span id=\"##_label\" class=\"edui-label\"></span>' + "," '</div>' + "," '<div class=\"edui-pickarea\"' + "," ' onmousemove=\"$$._onMouseMove(event, this);\"' + "," ' onmouseover=\"$$._onMouseOver(event, this);\"' + "," ' onmouseout=\"$$._onMouseOut(event, this);\"' + "," ' onclick=\"$$._onClick(event, this);\"' + "," '>' + "," '<div id=\"##_overlay\" class=\"edui-overlay\"></div>' + "," '</div>' + "," '</div>' + "," '</div>' ; "," } , "," _UIBase_render: UIBase. prototype. render, "," render: function ( holder) { "," this . _UIBase_render( holder); "," this . getDom( 'label' ). innerHTML = '0' + this . editor. getLang( \"t_row\" )+ ' x 0' + this . editor. getLang( \"t_col\" ); "," } , "," _track: function ( numCols, numRows) { "," var style = this . getDom( 'overlay' ). style; "," var sideLen = this . lengthOfCellSide; "," style. width = numCols * sideLen + 'px' ; "," style. height = numRows * sideLen + 'px' ; "," var label = this . getDom( 'label' ); "," label. innerHTML = numCols + this . editor. getLang( \"t_col\" )+ ' x ' + numRows + this . editor. getLang( \"t_row\" ); "," this . numCols = numCols; "," this . numRows = numRows; "," } , "," _onMouseOver: function ( evt, el) { "," var rel = evt. relatedTarget || evt. fromElement; "," if (! uiUtils. contains( el, rel) && el !== rel) { "," this . getDom( 'label' ). innerHTML = '0' + this . editor. getLang( \"t_col\" )+ ' x 0' + this . editor. getLang( \"t_row\" ); "," this . getDom( 'overlay' ). style. visibility = '' ; "," } "," } , "," _onMouseOut: function ( evt, el) { "," var rel = evt. relatedTarget || evt. toElement; "," if (! uiUtils. contains( el, rel) && el !== rel) { "," this . getDom( 'label' ). innerHTML = '0' + this . editor. getLang( \"t_col\" )+ ' x 0' + this . editor. getLang( \"t_row\" ); "," this . getDom( 'overlay' ). style. visibility = 'hidden' ; "," } "," } , "," _onMouseMove: function ( evt, el) { "," var style = this . getDom( 'overlay' ). style; "," var offset = uiUtils. getEventOffset( evt); "," var sideLen = this . lengthOfCellSide; "," var numCols = Math. ceil( offset. left / sideLen); "," var numRows = Math. ceil( offset. top / sideLen); "," this . _track( numCols, numRows); "," } , "," _onClick: function () { "," this . fireEvent( 'picktable' , this . numCols, this . numRows); "," } "," } ; "," utils. inherits( TablePicker, UIBase); ","} )(); "];
+_$jscoverage['ui/tablepicker.js'][3]++;
+(function () {
+ _$jscoverage['ui/tablepicker.js'][4]++;
+ var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, UIBase = baidu.editor.ui.UIBase;
+ _$jscoverage['ui/tablepicker.js'][8]++;
+ var TablePicker = (baidu.editor.ui.TablePicker = (function (options) {
+ _$jscoverage['ui/tablepicker.js'][9]++;
+ this.initOptions(options);
+ _$jscoverage['ui/tablepicker.js'][10]++;
+ this.initTablePicker();
+}));
+ _$jscoverage['ui/tablepicker.js'][12]++;
+ TablePicker.prototype = {defaultNumRows: 10, defaultNumCols: 10, maxNumRows: 20, maxNumCols: 20, numRows: 10, numCols: 10, lengthOfCellSide: 22, initTablePicker: (function () {
+ _$jscoverage['ui/tablepicker.js'][21]++;
+ this.initUIBase();
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/tablepicker.js'][24]++;
+ var me = this;
+ _$jscoverage['ui/tablepicker.js'][25]++;
+ return "";
+}), _UIBase_render: UIBase.prototype.render, render: (function (holder) {
+ _$jscoverage['ui/tablepicker.js'][43]++;
+ this._UIBase_render(holder);
+ _$jscoverage['ui/tablepicker.js'][44]++;
+ this.getDom("label").innerHTML = ("0" + this.editor.getLang("t_row") + " x 0" + this.editor.getLang("t_col"));
+}), _track: (function (numCols, numRows) {
+ _$jscoverage['ui/tablepicker.js'][47]++;
+ var style = this.getDom("overlay").style;
+ _$jscoverage['ui/tablepicker.js'][48]++;
+ var sideLen = this.lengthOfCellSide;
+ _$jscoverage['ui/tablepicker.js'][49]++;
+ style.width = ((numCols * sideLen) + "px");
+ _$jscoverage['ui/tablepicker.js'][50]++;
+ style.height = ((numRows * sideLen) + "px");
+ _$jscoverage['ui/tablepicker.js'][51]++;
+ var label = this.getDom("label");
+ _$jscoverage['ui/tablepicker.js'][52]++;
+ label.innerHTML = (numCols + this.editor.getLang("t_col") + " x " + numRows + this.editor.getLang("t_row"));
+ _$jscoverage['ui/tablepicker.js'][53]++;
+ this.numCols = numCols;
+ _$jscoverage['ui/tablepicker.js'][54]++;
+ this.numRows = numRows;
+}), _onMouseOver: (function (evt, el) {
+ _$jscoverage['ui/tablepicker.js'][57]++;
+ var rel = (evt.relatedTarget || evt.fromElement);
+ _$jscoverage['ui/tablepicker.js'][58]++;
+ if (((! uiUtils.contains(el, rel)) && (el !== rel))) {
+ _$jscoverage['ui/tablepicker.js'][59]++;
+ this.getDom("label").innerHTML = ("0" + this.editor.getLang("t_col") + " x 0" + this.editor.getLang("t_row"));
+ _$jscoverage['ui/tablepicker.js'][60]++;
+ this.getDom("overlay").style.visibility = "";
+ }
+}), _onMouseOut: (function (evt, el) {
+ _$jscoverage['ui/tablepicker.js'][64]++;
+ var rel = (evt.relatedTarget || evt.toElement);
+ _$jscoverage['ui/tablepicker.js'][65]++;
+ if (((! uiUtils.contains(el, rel)) && (el !== rel))) {
+ _$jscoverage['ui/tablepicker.js'][66]++;
+ this.getDom("label").innerHTML = ("0" + this.editor.getLang("t_col") + " x 0" + this.editor.getLang("t_row"));
+ _$jscoverage['ui/tablepicker.js'][67]++;
+ this.getDom("overlay").style.visibility = "hidden";
+ }
+}), _onMouseMove: (function (evt, el) {
+ _$jscoverage['ui/tablepicker.js'][71]++;
+ var style = this.getDom("overlay").style;
+ _$jscoverage['ui/tablepicker.js'][72]++;
+ var offset = uiUtils.getEventOffset(evt);
+ _$jscoverage['ui/tablepicker.js'][73]++;
+ var sideLen = this.lengthOfCellSide;
+ _$jscoverage['ui/tablepicker.js'][74]++;
+ var numCols = Math.ceil((offset.left / sideLen));
+ _$jscoverage['ui/tablepicker.js'][75]++;
+ var numRows = Math.ceil((offset.top / sideLen));
+ _$jscoverage['ui/tablepicker.js'][76]++;
+ this._track(numCols, numRows);
+}), _onClick: (function () {
+ _$jscoverage['ui/tablepicker.js'][79]++;
+ this.fireEvent("picktable", this.numCols, this.numRows);
+})};
+ _$jscoverage['ui/tablepicker.js'][82]++;
+ utils.inherits(TablePicker, UIBase);
+})();
diff --git a/_test/coverage/ui/toolbar.js b/_test/coverage/ui/toolbar.js
new file mode 100644
index 000000000..7ec17ec85
--- /dev/null
+++ b/_test/coverage/ui/toolbar.js
@@ -0,0 +1,106 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/toolbar.js']) {
+ _$jscoverage['ui/toolbar.js'] = [];
+ _$jscoverage['ui/toolbar.js'][1] = 0;
+ _$jscoverage['ui/toolbar.js'][2] = 0;
+ _$jscoverage['ui/toolbar.js'][6] = 0;
+ _$jscoverage['ui/toolbar.js'][7] = 0;
+ _$jscoverage['ui/toolbar.js'][9] = 0;
+ _$jscoverage['ui/toolbar.js'][12] = 0;
+ _$jscoverage['ui/toolbar.js'][13] = 0;
+ _$jscoverage['ui/toolbar.js'][16] = 0;
+ _$jscoverage['ui/toolbar.js'][19] = 0;
+ _$jscoverage['ui/toolbar.js'][20] = 0;
+ _$jscoverage['ui/toolbar.js'][21] = 0;
+ _$jscoverage['ui/toolbar.js'][23] = 0;
+ _$jscoverage['ui/toolbar.js'][28] = 0;
+ _$jscoverage['ui/toolbar.js'][29] = 0;
+ _$jscoverage['ui/toolbar.js'][30] = 0;
+ _$jscoverage['ui/toolbar.js'][32] = 0;
+ _$jscoverage['ui/toolbar.js'][35] = 0;
+ _$jscoverage['ui/toolbar.js'][38] = 0;
+}
+_$jscoverage['ui/toolbar.js'].source = ["( function () { "," var utils = baidu. editor. utils, "," uiUtils = baidu. editor. ui. uiUtils, "," UIBase = baidu. editor. ui. UIBase, "," Toolbar = baidu. editor. ui. Toolbar = function ( options) { "," this . initOptions( options); "," this . initToolbar(); "," } ; "," Toolbar. prototype = { "," items: null , "," initToolbar: function () { "," this . items = this . items || []; "," this . initUIBase(); "," } , "," add: function ( item) { "," this . items. push( item); "," } , "," getHtmlTpl: function () { "," var buff = []; "," for ( var i= 0 ; i< this . items. length; i++) { "," buff[ i] = this . items[ i]. renderHtml(); "," } "," return '<div id=\"##\" class=\"edui-toolbar %%\" onselectstart=\"return false;\" onmousedown=\"return $$._onMouseDown(event, this);\">' + "," buff. join( '' ) + "," '</div>' "," } , "," postRender: function () { "," var box = this . getDom(); "," for ( var i= 0 ; i< this . items. length; i++) { "," this . items[ i]. postRender(); "," } "," uiUtils. makeUnselectable( box); "," } , "," _onMouseDown: function () { "," return false ; "," } "," } ; "," utils. inherits( Toolbar, UIBase); ","","} )(); "];
+_$jscoverage['ui/toolbar.js'][1]++;
+(function () {
+ _$jscoverage['ui/toolbar.js'][2]++;
+ var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, UIBase = baidu.editor.ui.UIBase, Toolbar = (baidu.editor.ui.Toolbar = (function (options) {
+ _$jscoverage['ui/toolbar.js'][6]++;
+ this.initOptions(options);
+ _$jscoverage['ui/toolbar.js'][7]++;
+ this.initToolbar();
+}));
+ _$jscoverage['ui/toolbar.js'][9]++;
+ Toolbar.prototype = {items: null, initToolbar: (function () {
+ _$jscoverage['ui/toolbar.js'][12]++;
+ this.items = (this.items || []);
+ _$jscoverage['ui/toolbar.js'][13]++;
+ this.initUIBase();
+}), add: (function (item) {
+ _$jscoverage['ui/toolbar.js'][16]++;
+ this.items.push(item);
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/toolbar.js'][19]++;
+ var buff = [];
+ _$jscoverage['ui/toolbar.js'][20]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/toolbar.js'][21]++;
+ buff[i] = this.items[i].renderHtml();
+}
+ _$jscoverage['ui/toolbar.js'][23]++;
+ return ("" + buff.join("") + "
");
+}), postRender: (function () {
+ _$jscoverage['ui/toolbar.js'][28]++;
+ var box = this.getDom();
+ _$jscoverage['ui/toolbar.js'][29]++;
+ for (var i = 0; (i < this.items.length); (i++)) {
+ _$jscoverage['ui/toolbar.js'][30]++;
+ this.items[i].postRender();
+}
+ _$jscoverage['ui/toolbar.js'][32]++;
+ uiUtils.makeUnselectable(box);
+}), _onMouseDown: (function () {
+ _$jscoverage['ui/toolbar.js'][35]++;
+ return false;
+})};
+ _$jscoverage['ui/toolbar.js'][38]++;
+ utils.inherits(Toolbar, UIBase);
+})();
diff --git a/_test/coverage/ui/ui.js b/_test/coverage/ui/ui.js
new file mode 100644
index 000000000..0f59b2cef
--- /dev/null
+++ b/_test/coverage/ui/ui.js
@@ -0,0 +1,52 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/ui.js']) {
+ _$jscoverage['ui/ui.js'] = [];
+ _$jscoverage['ui/ui.js'][1] = 0;
+ _$jscoverage['ui/ui.js'][2] = 0;
+ _$jscoverage['ui/ui.js'][3] = 0;
+}
+_$jscoverage['ui/ui.js'].source = ["var baidu = baidu || {} ; ","baidu. editor = baidu. editor || {} ; ","baidu. editor. ui = {} ; "];
+_$jscoverage['ui/ui.js'][1]++;
+var baidu = (baidu || {});
+_$jscoverage['ui/ui.js'][2]++;
+baidu.editor = (baidu.editor || {});
+_$jscoverage['ui/ui.js'][3]++;
+baidu.editor.ui = {};
diff --git a/_test/coverage/ui/uibase.js b/_test/coverage/ui/uibase.js
new file mode 100644
index 000000000..cd2583fd7
--- /dev/null
+++ b/_test/coverage/ui/uibase.js
@@ -0,0 +1,190 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/uibase.js']) {
+ _$jscoverage['ui/uibase.js'] = [];
+ _$jscoverage['ui/uibase.js'][1] = 0;
+ _$jscoverage['ui/uibase.js'][2] = 0;
+ _$jscoverage['ui/uibase.js'][8] = 0;
+ _$jscoverage['ui/uibase.js'][12] = 0;
+ _$jscoverage['ui/uibase.js'][13] = 0;
+ _$jscoverage['ui/uibase.js'][14] = 0;
+ _$jscoverage['ui/uibase.js'][16] = 0;
+ _$jscoverage['ui/uibase.js'][19] = 0;
+ _$jscoverage['ui/uibase.js'][22] = 0;
+ _$jscoverage['ui/uibase.js'][23] = 0;
+ _$jscoverage['ui/uibase.js'][26] = 0;
+ _$jscoverage['ui/uibase.js'][27] = 0;
+ _$jscoverage['ui/uibase.js'][28] = 0;
+ _$jscoverage['ui/uibase.js'][29] = 0;
+ _$jscoverage['ui/uibase.js'][30] = 0;
+ _$jscoverage['ui/uibase.js'][32] = 0;
+ _$jscoverage['ui/uibase.js'][33] = 0;
+ _$jscoverage['ui/uibase.js'][34] = 0;
+ _$jscoverage['ui/uibase.js'][35] = 0;
+ _$jscoverage['ui/uibase.js'][38] = 0;
+ _$jscoverage['ui/uibase.js'][39] = 0;
+ _$jscoverage['ui/uibase.js'][40] = 0;
+ _$jscoverage['ui/uibase.js'][41] = 0;
+ _$jscoverage['ui/uibase.js'][43] = 0;
+ _$jscoverage['ui/uibase.js'][44] = 0;
+ _$jscoverage['ui/uibase.js'][46] = 0;
+ _$jscoverage['ui/uibase.js'][47] = 0;
+ _$jscoverage['ui/uibase.js'][48] = 0;
+ _$jscoverage['ui/uibase.js'][50] = 0;
+ _$jscoverage['ui/uibase.js'][53] = 0;
+ _$jscoverage['ui/uibase.js'][54] = 0;
+ _$jscoverage['ui/uibase.js'][56] = 0;
+ _$jscoverage['ui/uibase.js'][60] = 0;
+ _$jscoverage['ui/uibase.js'][63] = 0;
+ _$jscoverage['ui/uibase.js'][66] = 0;
+ _$jscoverage['ui/uibase.js'][67] = 0;
+ _$jscoverage['ui/uibase.js'][74] = 0;
+ _$jscoverage['ui/uibase.js'][77] = 0;
+ _$jscoverage['ui/uibase.js'][78] = 0;
+ _$jscoverage['ui/uibase.js'][79] = 0;
+ _$jscoverage['ui/uibase.js'][82] = 0;
+}
+_$jscoverage['ui/uibase.js'].source = ["( function () { "," var utils = baidu. editor. utils, "," uiUtils = baidu. editor. ui. uiUtils, "," EventBase = baidu. editor. EventBase, "," UIBase = baidu. editor. ui. UIBase = function () { "," } ; ",""," UIBase. prototype = { "," className: '' , "," uiName: '' , "," initOptions: function ( options) { "," var me = this ; "," for ( var k in options) { "," me[ k] = options[ k]; "," } "," this . id = this . id || 'edui' + uiUtils. uid(); "," } , "," initUIBase: function () { "," this . _globalKey = utils. unhtml( uiUtils. setGlobal( this . id, this )); "," } , "," render: function ( holder) { "," var html = this . renderHtml(); "," var el = uiUtils. createElementByHtml( html); ",""," //by xuheng 给每个node添加class "," var list = domUtils. getElementsByTagName( el, \"*\" ); "," var theme = \"edui-\" + ( this . theme || this . editor. options. theme); "," var layer = document. getElementById( 'edui_fixedlayer' ); "," for ( var i = 0 , node; node = list[ i++];) { "," domUtils. addClass( node, theme); "," } "," domUtils. addClass( el, theme); "," if ( layer) { "," layer. className= \"\" ; "," domUtils. addClass( layer, theme); "," } ",""," var seatEl = this . getDom(); "," if ( seatEl != null ) { "," seatEl. parentNode. replaceChild( el, seatEl); "," uiUtils. copyAttributes( el, seatEl); "," } else { "," if ( typeof holder == 'string' ) { "," holder = document. getElementById( holder); "," } "," holder = holder || uiUtils. getFixedLayer(); "," domUtils. addClass( holder, theme); "," holder. appendChild( el); "," } "," this . postRender(); "," } , "," getDom: function ( name) { "," if (! name) { "," return document. getElementById( this . id); "," } else { "," return document. getElementById( this . id + '_' + name); "," } "," } , "," postRender: function () { "," this . fireEvent( 'postrender' ); "," } , "," getHtmlTpl: function () { "," return '' ; "," } , "," formatHtml: function ( tpl) { "," var prefix = 'edui-' + this . uiName; "," return ( tpl"," . replace( /##/g , this . id) "," . replace( /%%-/g , this . uiName ? prefix + '-' : '' ) "," . replace( /%%/g , ( this . uiName ? prefix : '' ) + ' ' + this . className) "," . replace( /\\$\\$/g , this . _globalKey)); "," } , "," renderHtml: function () { "," return this . formatHtml( this . getHtmlTpl()); "," } , "," dispose: function () { "," var box = this . getDom(); "," if ( box) baidu. editor. dom. domUtils. remove( box); "," uiUtils. unsetGlobal( this . id); "," } "," } ; "," utils. inherits( UIBase, EventBase); ","} )(); "];
+_$jscoverage['ui/uibase.js'][1]++;
+(function () {
+ _$jscoverage['ui/uibase.js'][2]++;
+ var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, EventBase = baidu.editor.EventBase, UIBase = (baidu.editor.ui.UIBase = (function () {
+}));
+ _$jscoverage['ui/uibase.js'][8]++;
+ UIBase.prototype = {className: "", uiName: "", initOptions: (function (options) {
+ _$jscoverage['ui/uibase.js'][12]++;
+ var me = this;
+ _$jscoverage['ui/uibase.js'][13]++;
+ for (var k in options) {
+ _$jscoverage['ui/uibase.js'][14]++;
+ me[k] = options[k];
+}
+ _$jscoverage['ui/uibase.js'][16]++;
+ this.id = (this.id || ("edui" + uiUtils.uid()));
+}), initUIBase: (function () {
+ _$jscoverage['ui/uibase.js'][19]++;
+ this._globalKey = utils.unhtml(uiUtils.setGlobal(this.id, this));
+}), render: (function (holder) {
+ _$jscoverage['ui/uibase.js'][22]++;
+ var html = this.renderHtml();
+ _$jscoverage['ui/uibase.js'][23]++;
+ var el = uiUtils.createElementByHtml(html);
+ _$jscoverage['ui/uibase.js'][26]++;
+ var list = domUtils.getElementsByTagName(el, "*");
+ _$jscoverage['ui/uibase.js'][27]++;
+ var theme = ("edui-" + (this.theme || this.editor.options.theme));
+ _$jscoverage['ui/uibase.js'][28]++;
+ var layer = document.getElementById("edui_fixedlayer");
+ _$jscoverage['ui/uibase.js'][29]++;
+ for (var i = 0, node; (node = list[(i++)]);) {
+ _$jscoverage['ui/uibase.js'][30]++;
+ domUtils.addClass(node, theme);
+}
+ _$jscoverage['ui/uibase.js'][32]++;
+ domUtils.addClass(el, theme);
+ _$jscoverage['ui/uibase.js'][33]++;
+ if (layer) {
+ _$jscoverage['ui/uibase.js'][34]++;
+ layer.className = "";
+ _$jscoverage['ui/uibase.js'][35]++;
+ domUtils.addClass(layer, theme);
+ }
+ _$jscoverage['ui/uibase.js'][38]++;
+ var seatEl = this.getDom();
+ _$jscoverage['ui/uibase.js'][39]++;
+ if ((seatEl != null)) {
+ _$jscoverage['ui/uibase.js'][40]++;
+ seatEl.parentNode.replaceChild(el, seatEl);
+ _$jscoverage['ui/uibase.js'][41]++;
+ uiUtils.copyAttributes(el, seatEl);
+ }
+ else {
+ _$jscoverage['ui/uibase.js'][43]++;
+ if (((typeof holder) == "string")) {
+ _$jscoverage['ui/uibase.js'][44]++;
+ holder = document.getElementById(holder);
+ }
+ _$jscoverage['ui/uibase.js'][46]++;
+ holder = (holder || uiUtils.getFixedLayer());
+ _$jscoverage['ui/uibase.js'][47]++;
+ domUtils.addClass(holder, theme);
+ _$jscoverage['ui/uibase.js'][48]++;
+ holder.appendChild(el);
+ }
+ _$jscoverage['ui/uibase.js'][50]++;
+ this.postRender();
+}), getDom: (function (name) {
+ _$jscoverage['ui/uibase.js'][53]++;
+ if ((! name)) {
+ _$jscoverage['ui/uibase.js'][54]++;
+ return document.getElementById(this.id);
+ }
+ else {
+ _$jscoverage['ui/uibase.js'][56]++;
+ return document.getElementById((this.id + "_" + name));
+ }
+}), postRender: (function () {
+ _$jscoverage['ui/uibase.js'][60]++;
+ this.fireEvent("postrender");
+}), getHtmlTpl: (function () {
+ _$jscoverage['ui/uibase.js'][63]++;
+ return "";
+}), formatHtml: (function (tpl) {
+ _$jscoverage['ui/uibase.js'][66]++;
+ var prefix = ("edui-" + this.uiName);
+ _$jscoverage['ui/uibase.js'][67]++;
+ return tpl.replace(/##/g, this.id).replace(/%%-/g, (this.uiName? (prefix + "-"): "")).replace(/%%/g, ((this.uiName? prefix: "") + " " + this.className)).replace(/\$\$/g, this._globalKey);
+}), renderHtml: (function () {
+ _$jscoverage['ui/uibase.js'][74]++;
+ return this.formatHtml(this.getHtmlTpl());
+}), dispose: (function () {
+ _$jscoverage['ui/uibase.js'][77]++;
+ var box = this.getDom();
+ _$jscoverage['ui/uibase.js'][78]++;
+ if (box) {
+ _$jscoverage['ui/uibase.js'][78]++;
+ baidu.editor.dom.domUtils.remove(box);
+ }
+ _$jscoverage['ui/uibase.js'][79]++;
+ uiUtils.unsetGlobal(this.id);
+})};
+ _$jscoverage['ui/uibase.js'][82]++;
+ utils.inherits(UIBase, EventBase);
+})();
diff --git a/_test/coverage/ui/uiutils.js b/_test/coverage/ui/uiutils.js
new file mode 100644
index 000000000..bd974add5
--- /dev/null
+++ b/_test/coverage/ui/uiutils.js
@@ -0,0 +1,567 @@
+/* automatically generated by JSCoverage - do not edit */
+try {
+ if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
+ // this is a browser window that was opened from another window
+
+ if (! top.opener._$jscoverage) {
+ top.opener._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null) {
+ // this is a browser window
+
+ try {
+ if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
+ top._$jscoverage = top.opener._$jscoverage;
+ }
+ }
+ catch (e) {}
+
+ if (! top._$jscoverage) {
+ top._$jscoverage = {};
+ }
+ }
+}
+catch (e) {}
+
+try {
+ if (typeof top === 'object' && top !== null && top._$jscoverage) {
+ _$jscoverage = top._$jscoverage;
+ }
+}
+catch (e) {}
+if (typeof _$jscoverage !== 'object') {
+ _$jscoverage = {};
+}
+if (! _$jscoverage['ui/uiutils.js']) {
+ _$jscoverage['ui/uiutils.js'] = [];
+ _$jscoverage['ui/uiutils.js'][1] = 0;
+ _$jscoverage['ui/uiutils.js'][2] = 0;
+ _$jscoverage['ui/uiutils.js'][5] = 0;
+ _$jscoverage['ui/uiutils.js'][6] = 0;
+ _$jscoverage['ui/uiutils.js'][7] = 0;
+ _$jscoverage['ui/uiutils.js'][8] = 0;
+ _$jscoverage['ui/uiutils.js'][10] = 0;
+ _$jscoverage['ui/uiutils.js'][12] = 0;
+ _$jscoverage['ui/uiutils.js'][15] = 0;
+ _$jscoverage['ui/uiutils.js'][16] = 0;
+ _$jscoverage['ui/uiutils.js'][17] = 0;
+ _$jscoverage['ui/uiutils.js'][19] = 0;
+ _$jscoverage['ui/uiutils.js'][20] = 0;
+ _$jscoverage['ui/uiutils.js'][21] = 0;
+ _$jscoverage['ui/uiutils.js'][22] = 0;
+ _$jscoverage['ui/uiutils.js'][24] = 0;
+ _$jscoverage['ui/uiutils.js'][25] = 0;
+ _$jscoverage['ui/uiutils.js'][26] = 0;
+ _$jscoverage['ui/uiutils.js'][27] = 0;
+ _$jscoverage['ui/uiutils.js'][28] = 0;
+ _$jscoverage['ui/uiutils.js'][29] = 0;
+ _$jscoverage['ui/uiutils.js'][32] = 0;
+ _$jscoverage['ui/uiutils.js'][34] = 0;
+ _$jscoverage['ui/uiutils.js'][36] = 0;
+ _$jscoverage['ui/uiutils.js'][37] = 0;
+ _$jscoverage['ui/uiutils.js'][40] = 0;
+ _$jscoverage['ui/uiutils.js'][41] = 0;
+ _$jscoverage['ui/uiutils.js'][42] = 0;
+ _$jscoverage['ui/uiutils.js'][43] = 0;
+ _$jscoverage['ui/uiutils.js'][44] = 0;
+ _$jscoverage['ui/uiutils.js'][47] = 0;
+ _$jscoverage['ui/uiutils.js'][51] = 0;
+ _$jscoverage['ui/uiutils.js'][53] = 0;
+ _$jscoverage['ui/uiutils.js'][54] = 0;
+ _$jscoverage['ui/uiutils.js'][56] = 0;
+ _$jscoverage['ui/uiutils.js'][58] = 0;
+ _$jscoverage['ui/uiutils.js'][64] = 0;
+ _$jscoverage['ui/uiutils.js'][65] = 0;
+ _$jscoverage['ui/uiutils.js'][67] = 0;
+ _$jscoverage['ui/uiutils.js'][68] = 0;
+ _$jscoverage['ui/uiutils.js'][69] = 0;
+ _$jscoverage['ui/uiutils.js'][71] = 0;
+ _$jscoverage['ui/uiutils.js'][72] = 0;
+ _$jscoverage['ui/uiutils.js'][73] = 0;
+ _$jscoverage['ui/uiutils.js'][76] = 0;
+ _$jscoverage['ui/uiutils.js'][77] = 0;
+ _$jscoverage['ui/uiutils.js'][78] = 0;
+ _$jscoverage['ui/uiutils.js'][79] = 0;
+ _$jscoverage['ui/uiutils.js'][89] = 0;
+ _$jscoverage['ui/uiutils.js'][90] = 0;
+ _$jscoverage['ui/uiutils.js'][91] = 0;
+ _$jscoverage['ui/uiutils.js'][92] = 0;
+ _$jscoverage['ui/uiutils.js'][93] = 0;
+ _$jscoverage['ui/uiutils.js'][95] = 0;
+ _$jscoverage['ui/uiutils.js'][99] = 0;
+ _$jscoverage['ui/uiutils.js'][100] = 0;
+ _$jscoverage['ui/uiutils.js'][101] = 0;
+ _$jscoverage['ui/uiutils.js'][102] = 0;
+ _$jscoverage['ui/uiutils.js'][108] = 0;
+ _$jscoverage['ui/uiutils.js'][109] = 0;
+ _$jscoverage['ui/uiutils.js'][110] = 0;
+ _$jscoverage['ui/uiutils.js'][114] = 0;
+ _$jscoverage['ui/uiutils.js'][115] = 0;
+ _$jscoverage['ui/uiutils.js'][116] = 0;
+ _$jscoverage['ui/uiutils.js'][117] = 0;
+ _$jscoverage['ui/uiutils.js'][119] = 0;
+ _$jscoverage['ui/uiutils.js'][122] = 0;
+ _$jscoverage['ui/uiutils.js'][123] = 0;
+ _$jscoverage['ui/uiutils.js'][126] = 0;
+ _$jscoverage['ui/uiutils.js'][129] = 0;
+ _$jscoverage['ui/uiutils.js'][130] = 0;
+ _$jscoverage['ui/uiutils.js'][131] = 0;
+ _$jscoverage['ui/uiutils.js'][132] = 0;
+ _$jscoverage['ui/uiutils.js'][133] = 0;
+ _$jscoverage['ui/uiutils.js'][134] = 0;
+ _$jscoverage['ui/uiutils.js'][137] = 0;
+ _$jscoverage['ui/uiutils.js'][138] = 0;
+ _$jscoverage['ui/uiutils.js'][140] = 0;
+ _$jscoverage['ui/uiutils.js'][141] = 0;
+ _$jscoverage['ui/uiutils.js'][145] = 0;
+ _$jscoverage['ui/uiutils.js'][146] = 0;
+ _$jscoverage['ui/uiutils.js'][147] = 0;
+ _$jscoverage['ui/uiutils.js'][148] = 0;
+ _$jscoverage['ui/uiutils.js'][149] = 0;
+ _$jscoverage['ui/uiutils.js'][152] = 0;
+ _$jscoverage['ui/uiutils.js'][158] = 0;
+ _$jscoverage['ui/uiutils.js'][159] = 0;
+ _$jscoverage['ui/uiutils.js'][160] = 0;
+ _$jscoverage['ui/uiutils.js'][161] = 0;
+ _$jscoverage['ui/uiutils.js'][162] = 0;
+ _$jscoverage['ui/uiutils.js'][163] = 0;
+ _$jscoverage['ui/uiutils.js'][164] = 0;
+ _$jscoverage['ui/uiutils.js'][165] = 0;
+ _$jscoverage['ui/uiutils.js'][166] = 0;
+ _$jscoverage['ui/uiutils.js'][168] = 0;
+ _$jscoverage['ui/uiutils.js'][171] = 0;
+ _$jscoverage['ui/uiutils.js'][172] = 0;
+ _$jscoverage['ui/uiutils.js'][173] = 0;
+ _$jscoverage['ui/uiutils.js'][174] = 0;
+ _$jscoverage['ui/uiutils.js'][175] = 0;
+ _$jscoverage['ui/uiutils.js'][176] = 0;
+ _$jscoverage['ui/uiutils.js'][178] = 0;
+ _$jscoverage['ui/uiutils.js'][179] = 0;
+ _$jscoverage['ui/uiutils.js'][180] = 0;
+ _$jscoverage['ui/uiutils.js'][182] = 0;
+ _$jscoverage['ui/uiutils.js'][184] = 0;
+ _$jscoverage['ui/uiutils.js'][185] = 0;
+ _$jscoverage['ui/uiutils.js'][186] = 0;
+ _$jscoverage['ui/uiutils.js'][187] = 0;
+ _$jscoverage['ui/uiutils.js'][188] = 0;
+ _$jscoverage['ui/uiutils.js'][189] = 0;
+ _$jscoverage['ui/uiutils.js'][190] = 0;
+ _$jscoverage['ui/uiutils.js'][191] = 0;
+ _$jscoverage['ui/uiutils.js'][193] = 0;
+ _$jscoverage['ui/uiutils.js'][194] = 0;
+ _$jscoverage['ui/uiutils.js'][195] = 0;
+ _$jscoverage['ui/uiutils.js'][196] = 0;
+ _$jscoverage['ui/uiutils.js'][198] = 0;
+ _$jscoverage['ui/uiutils.js'][201] = 0;
+ _$jscoverage['ui/uiutils.js'][202] = 0;
+ _$jscoverage['ui/uiutils.js'][203] = 0;
+ _$jscoverage['ui/uiutils.js'][204] = 0;
+ _$jscoverage['ui/uiutils.js'][205] = 0;
+ _$jscoverage['ui/uiutils.js'][206] = 0;
+ _$jscoverage['ui/uiutils.js'][207] = 0;
+ _$jscoverage['ui/uiutils.js'][208] = 0;
+ _$jscoverage['ui/uiutils.js'][209] = 0;
+ _$jscoverage['ui/uiutils.js'][211] = 0;
+ _$jscoverage['ui/uiutils.js'][213] = 0;
+ _$jscoverage['ui/uiutils.js'][214] = 0;
+ _$jscoverage['ui/uiutils.js'][215] = 0;
+ _$jscoverage['ui/uiutils.js'][216] = 0;
+ _$jscoverage['ui/uiutils.js'][218] = 0;
+ _$jscoverage['ui/uiutils.js'][221] = 0;
+ _$jscoverage['ui/uiutils.js'][222] = 0;
+ _$jscoverage['ui/uiutils.js'][223] = 0;
+ _$jscoverage['ui/uiutils.js'][224] = 0;
+ _$jscoverage['ui/uiutils.js'][225] = 0;
+ _$jscoverage['ui/uiutils.js'][226] = 0;
+ _$jscoverage['ui/uiutils.js'][231] = 0;
+ _$jscoverage['ui/uiutils.js'][232] = 0;
+ _$jscoverage['ui/uiutils.js'][233] = 0;
+ _$jscoverage['ui/uiutils.js'][234] = 0;
+ _$jscoverage['ui/uiutils.js'][235] = 0;
+ _$jscoverage['ui/uiutils.js'][236] = 0;
+ _$jscoverage['ui/uiutils.js'][241] = 0;
+ _$jscoverage['ui/uiutils.js'][242] = 0;
+ _$jscoverage['ui/uiutils.js'][243] = 0;
+ _$jscoverage['ui/uiutils.js'][253] = 0;
+ _$jscoverage['ui/uiutils.js'][254] = 0;
+ _$jscoverage['ui/uiutils.js'][255] = 0;
+}
+_$jscoverage['ui/uiutils.js'].source = ["( function () { "," var browser = baidu. editor. browser, "," domUtils = baidu. editor. dom. domUtils; ",""," var magic = '$EDITORUI' ; "," var root = window[ magic] = {} ; "," var uidMagic = 'ID' + magic; "," var uidCount = 0 ; ",""," var uiUtils = baidu. editor. ui. uiUtils = { "," uid: function ( obj) { "," return ( obj ? obj[ uidMagic] || ( obj[ uidMagic] = ++ uidCount) : ++ uidCount); "," } , "," hook: function ( fn, callback ) { "," var dg; "," if ( fn && fn. _callbacks) { "," dg = fn; "," } else { "," dg = function () { "," var q; "," if ( fn) { "," q = fn. apply( this , arguments); "," } "," var callbacks = dg. _callbacks; "," var k = callbacks. length; "," while ( k --) { "," var r = callbacks[ k]. apply( this , arguments); "," if ( q === undefined) { "," q = r; "," } "," } "," return q; "," } ; "," dg. _callbacks = []; "," } "," dg. _callbacks. push( callback); "," return dg; "," } , "," createElementByHtml: function ( html) { "," var el = document. createElement( 'div' ); "," el. innerHTML = html; "," el = el. firstChild; "," el. parentNode. removeChild( el); "," return el; "," } , "," getViewportElement: function () { "," return ( browser. ie && browser. quirks) ? "," document. body : document. documentElement; "," } , "," getClientRect: function ( element) { "," var bcr; "," //trace IE6下在控制编辑器显隐时可能会报错,catch一下 "," try { "," bcr = element. getBoundingClientRect(); "," } catch ( e) { "," bcr= { left: 0 , top: 0 , height: 0 , width: 0 } "," } "," var rect = { "," left: Math. round( bcr. left), "," top: Math. round( bcr. top), "," height: Math. round( bcr. bottom - bcr. top), "," width: Math. round( bcr. right - bcr. left) "," } ; "," var doc; "," while (( doc = element. ownerDocument) !== document && "," ( element = domUtils. getWindow( doc). frameElement)) { "," bcr = element. getBoundingClientRect(); "," rect. left += bcr. left; "," rect. top += bcr. top; "," } "," rect. bottom = rect. top + rect. height; "," rect. right = rect. left + rect. width; "," return rect; "," } , "," getViewportRect: function () { "," var viewportEl = uiUtils. getViewportElement(); "," var width = ( window. innerWidth || viewportEl. clientWidth) | 0 ; "," var height = ( window. innerHeight || viewportEl. clientHeight) | 0 ; "," return { "," left: 0 , "," top: 0 , "," height: height, "," width: width, "," bottom: height, "," right: width"," } ; "," } , "," setViewportOffset: function ( element, offset) { "," var rect; "," var fixedLayer = uiUtils. getFixedLayer(); "," if ( element. parentNode === fixedLayer) { "," element. style. left = offset. left + 'px' ; "," element. style. top = offset. top + 'px' ; "," } else { "," domUtils. setViewportOffset( element, offset); "," } "," } , "," getEventOffset: function ( evt) { "," var el = evt. target || evt. srcElement; "," var rect = uiUtils. getClientRect( el); "," var offset = uiUtils. getViewportOffsetByEvent( evt); "," return { "," left: offset. left - rect. left, "," top: offset. top - rect. top"," } ; "," } , "," getViewportOffsetByEvent: function ( evt) { "," var el = evt. target || evt. srcElement; "," var frameEl = domUtils. getWindow( el). frameElement; "," var offset = { "," left: evt. clientX, "," top: evt. clientY"," } ; "," if ( frameEl && el. ownerDocument !== document) { "," var rect = uiUtils. getClientRect( frameEl); "," offset. left += rect. left; "," offset. top += rect. top; "," } "," return offset; "," } , "," setGlobal: function ( id, obj) { "," root[ id] = obj; "," return magic + '[\"' + id + '\"]' ; "," } , "," unsetGlobal: function ( id) { "," delete root[ id]; "," } , "," copyAttributes: function ( tgt, src) { "," var attributes = src. attributes; "," var k = attributes. length; "," while ( k --) { "," var attrNode = attributes[ k]; "," if ( attrNode. nodeName != 'style' && attrNode. nodeName != 'class' && (! browser. ie || attrNode. specified) ) { "," tgt. setAttribute( attrNode. nodeName, attrNode. nodeValue); "," } "," } "," if ( src. className) { "," domUtils. addClass( tgt, src. className); "," } "," if ( src. style. cssText) { "," tgt. style. cssText += ';' + src. style. cssText; "," } "," } , "," removeStyle: function ( el, styleName) { "," if ( el. style. removeProperty) { "," el. style. removeProperty( styleName); "," } else if ( el. style. removeAttribute) { "," el. style. removeAttribute( styleName); "," } else throw '' ; "," } , "," contains: function ( elA, elB) { "," return elA && elB && ( elA === elB ? false : ( "," elA. contains ? elA. contains( elB) : "," elA. compareDocumentPosition( elB) & 16 "," )); "," } , "," startDrag: function ( evt, callbacks, doc) { "," var doc = doc || document; "," var startX = evt. clientX; "," var startY = evt. clientY; "," function handleMouseMove( evt) { "," var x = evt. clientX - startX; "," var y = evt. clientY - startY; "," callbacks. ondragmove( x, y, evt); "," if ( evt. stopPropagation) { "," evt. stopPropagation(); "," } else { "," evt. cancelBubble = true ; "," } "," } "," if ( doc. addEventListener) { "," function handleMouseUp( evt) { "," doc. removeEventListener( 'mousemove' , handleMouseMove, true ); "," doc. removeEventListener( 'mouseup' , handleMouseUp, true ); "," window. removeEventListener( 'mouseup' , handleMouseUp, true ); "," callbacks. ondragstop(); "," } "," doc. addEventListener( 'mousemove' , handleMouseMove, true ); "," doc. addEventListener( 'mouseup' , handleMouseUp, true ); "," window. addEventListener( 'mouseup' , handleMouseUp, true ); ",""," evt. preventDefault(); "," } else { "," var elm = evt. srcElement; "," elm. setCapture(); "," function releaseCaptrue() { "," elm. releaseCapture(); "," elm. detachEvent( 'onmousemove' , handleMouseMove); "," elm. detachEvent( 'onmouseup' , releaseCaptrue); "," elm. detachEvent( 'onlosecaptrue' , releaseCaptrue); "," callbacks. ondragstop(); "," } "," elm. attachEvent( 'onmousemove' , handleMouseMove); "," elm. attachEvent( 'onmouseup' , releaseCaptrue); "," elm. attachEvent( 'onlosecaptrue' , releaseCaptrue); "," evt. returnValue = false ; "," } "," callbacks. ondragstart(); "," } , "," getFixedLayer: function () { "," var layer = document. getElementById( 'edui_fixedlayer' ); "," if ( layer == null ) { "," layer = document. createElement( 'div' ); "," layer. id = 'edui_fixedlayer' ; "," document. body. appendChild( layer); "," if ( browser. ie && browser. version <= 8 ) { "," layer. style. position = 'absolute' ; "," bindFixedLayer(); "," setTimeout( updateFixedOffset); "," } else { "," layer. style. position = 'fixed' ; "," } "," layer. style. left = '0' ; "," layer. style. top = '0' ; "," layer. style. width = '0' ; "," layer. style. height = '0' ; "," } "," return layer; "," } , "," makeUnselectable: function ( element) { "," if ( browser. opera || ( browser. ie && browser. version < 9 )) { "," element. unselectable = 'on' ; "," if ( element. hasChildNodes()) { "," for ( var i= 0 ; i< element. childNodes. length; i++) { "," if ( element. childNodes[ i]. nodeType == 1 ) { "," uiUtils. makeUnselectable( element. childNodes[ i]); "," } "," } "," } "," } else { "," if ( element. style. MozUserSelect !== undefined) { "," element. style. MozUserSelect = 'none' ; "," } else if ( element. style. WebkitUserSelect !== undefined) { "," element. style. WebkitUserSelect = 'none' ; "," } else if ( element. style. KhtmlUserSelect !== undefined) { "," element. style. KhtmlUserSelect = 'none' ; "," } "," } "," } "," } ; "," function updateFixedOffset() { "," var layer = document. getElementById( 'edui_fixedlayer' ); "," uiUtils. setViewportOffset( layer, { "," left: 0 , "," top: 0 "," } ); ","// layer.style.display = 'none'; ","// layer.style.display = 'block'; ",""," //#trace: 1354 ","// setTimeout(updateFixedOffset); "," } "," function bindFixedLayer( adjOffset) { "," domUtils. on( window, 'scroll' , updateFixedOffset); "," domUtils. on( window, 'resize' , baidu. editor. utils. defer( updateFixedOffset, 0 , true )); "," } ","} )(); "];
+_$jscoverage['ui/uiutils.js'][1]++;
+(function () {
+ _$jscoverage['ui/uiutils.js'][2]++;
+ var browser = baidu.editor.browser, domUtils = baidu.editor.dom.domUtils;
+ _$jscoverage['ui/uiutils.js'][5]++;
+ var magic = "$EDITORUI";
+ _$jscoverage['ui/uiutils.js'][6]++;
+ var root = (window[magic] = {});
+ _$jscoverage['ui/uiutils.js'][7]++;
+ var uidMagic = ("ID" + magic);
+ _$jscoverage['ui/uiutils.js'][8]++;
+ var uidCount = 0;
+ _$jscoverage['ui/uiutils.js'][10]++;
+ var uiUtils = (baidu.editor.ui.uiUtils = {uid: (function (obj) {
+ _$jscoverage['ui/uiutils.js'][12]++;
+ return (obj? (obj[uidMagic] || (obj[uidMagic] = (++uidCount))): (++uidCount));
+}), hook: (function (fn, callback) {
+ _$jscoverage['ui/uiutils.js'][15]++;
+ var dg;
+ _$jscoverage['ui/uiutils.js'][16]++;
+ if ((fn && fn._callbacks)) {
+ _$jscoverage['ui/uiutils.js'][17]++;
+ dg = fn;
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][19]++;
+ dg = (function () {
+ _$jscoverage['ui/uiutils.js'][20]++;
+ var q;
+ _$jscoverage['ui/uiutils.js'][21]++;
+ if (fn) {
+ _$jscoverage['ui/uiutils.js'][22]++;
+ q = fn.apply(this, arguments);
+ }
+ _$jscoverage['ui/uiutils.js'][24]++;
+ var callbacks = dg._callbacks;
+ _$jscoverage['ui/uiutils.js'][25]++;
+ var k = callbacks.length;
+ _$jscoverage['ui/uiutils.js'][26]++;
+ while ((k--)) {
+ _$jscoverage['ui/uiutils.js'][27]++;
+ var r = callbacks[k].apply(this, arguments);
+ _$jscoverage['ui/uiutils.js'][28]++;
+ if ((q === undefined)) {
+ _$jscoverage['ui/uiutils.js'][29]++;
+ q = r;
+ }
+}
+ _$jscoverage['ui/uiutils.js'][32]++;
+ return q;
+});
+ _$jscoverage['ui/uiutils.js'][34]++;
+ dg._callbacks = [];
+ }
+ _$jscoverage['ui/uiutils.js'][36]++;
+ dg._callbacks.push(callback);
+ _$jscoverage['ui/uiutils.js'][37]++;
+ return dg;
+}), createElementByHtml: (function (html) {
+ _$jscoverage['ui/uiutils.js'][40]++;
+ var el = document.createElement("div");
+ _$jscoverage['ui/uiutils.js'][41]++;
+ el.innerHTML = html;
+ _$jscoverage['ui/uiutils.js'][42]++;
+ el = el.firstChild;
+ _$jscoverage['ui/uiutils.js'][43]++;
+ el.parentNode.removeChild(el);
+ _$jscoverage['ui/uiutils.js'][44]++;
+ return el;
+}), getViewportElement: (function () {
+ _$jscoverage['ui/uiutils.js'][47]++;
+ return ((browser.ie && browser.quirks)? document.body: document.documentElement);
+}), getClientRect: (function (element) {
+ _$jscoverage['ui/uiutils.js'][51]++;
+ var bcr;
+ _$jscoverage['ui/uiutils.js'][53]++;
+ try {
+ _$jscoverage['ui/uiutils.js'][54]++;
+ bcr = element.getBoundingClientRect();
+ }
+ catch (e) {
+ _$jscoverage['ui/uiutils.js'][56]++;
+ bcr = {left: 0, top: 0, height: 0, width: 0};
+ }
+ _$jscoverage['ui/uiutils.js'][58]++;
+ var rect = {left: Math.round(bcr.left), top: Math.round(bcr.top), height: Math.round((bcr.bottom - bcr.top)), width: Math.round((bcr.right - bcr.left))};
+ _$jscoverage['ui/uiutils.js'][64]++;
+ var doc;
+ _$jscoverage['ui/uiutils.js'][65]++;
+ while ((((doc = element.ownerDocument) !== document) && (element = domUtils.getWindow(doc).frameElement))) {
+ _$jscoverage['ui/uiutils.js'][67]++;
+ bcr = element.getBoundingClientRect();
+ _$jscoverage['ui/uiutils.js'][68]++;
+ rect.left += bcr.left;
+ _$jscoverage['ui/uiutils.js'][69]++;
+ rect.top += bcr.top;
+}
+ _$jscoverage['ui/uiutils.js'][71]++;
+ rect.bottom = (rect.top + rect.height);
+ _$jscoverage['ui/uiutils.js'][72]++;
+ rect.right = (rect.left + rect.width);
+ _$jscoverage['ui/uiutils.js'][73]++;
+ return rect;
+}), getViewportRect: (function () {
+ _$jscoverage['ui/uiutils.js'][76]++;
+ var viewportEl = uiUtils.getViewportElement();
+ _$jscoverage['ui/uiutils.js'][77]++;
+ var width = ((window.innerWidth || viewportEl.clientWidth) | 0);
+ _$jscoverage['ui/uiutils.js'][78]++;
+ var height = ((window.innerHeight || viewportEl.clientHeight) | 0);
+ _$jscoverage['ui/uiutils.js'][79]++;
+ return ({left: 0, top: 0, height: height, width: width, bottom: height, right: width});
+}), setViewportOffset: (function (element, offset) {
+ _$jscoverage['ui/uiutils.js'][89]++;
+ var rect;
+ _$jscoverage['ui/uiutils.js'][90]++;
+ var fixedLayer = uiUtils.getFixedLayer();
+ _$jscoverage['ui/uiutils.js'][91]++;
+ if ((element.parentNode === fixedLayer)) {
+ _$jscoverage['ui/uiutils.js'][92]++;
+ element.style.left = (offset.left + "px");
+ _$jscoverage['ui/uiutils.js'][93]++;
+ element.style.top = (offset.top + "px");
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][95]++;
+ domUtils.setViewportOffset(element, offset);
+ }
+}), getEventOffset: (function (evt) {
+ _$jscoverage['ui/uiutils.js'][99]++;
+ var el = (evt.target || evt.srcElement);
+ _$jscoverage['ui/uiutils.js'][100]++;
+ var rect = uiUtils.getClientRect(el);
+ _$jscoverage['ui/uiutils.js'][101]++;
+ var offset = uiUtils.getViewportOffsetByEvent(evt);
+ _$jscoverage['ui/uiutils.js'][102]++;
+ return ({left: (offset.left - rect.left), top: (offset.top - rect.top)});
+}), getViewportOffsetByEvent: (function (evt) {
+ _$jscoverage['ui/uiutils.js'][108]++;
+ var el = (evt.target || evt.srcElement);
+ _$jscoverage['ui/uiutils.js'][109]++;
+ var frameEl = domUtils.getWindow(el).frameElement;
+ _$jscoverage['ui/uiutils.js'][110]++;
+ var offset = {left: evt.clientX, top: evt.clientY};
+ _$jscoverage['ui/uiutils.js'][114]++;
+ if ((frameEl && (el.ownerDocument !== document))) {
+ _$jscoverage['ui/uiutils.js'][115]++;
+ var rect = uiUtils.getClientRect(frameEl);
+ _$jscoverage['ui/uiutils.js'][116]++;
+ offset.left += rect.left;
+ _$jscoverage['ui/uiutils.js'][117]++;
+ offset.top += rect.top;
+ }
+ _$jscoverage['ui/uiutils.js'][119]++;
+ return offset;
+}), setGlobal: (function (id, obj) {
+ _$jscoverage['ui/uiutils.js'][122]++;
+ root[id] = obj;
+ _$jscoverage['ui/uiutils.js'][123]++;
+ return (magic + "[\"" + id + "\"]");
+}), unsetGlobal: (function (id) {
+ _$jscoverage['ui/uiutils.js'][126]++;
+ (delete root[id]);
+}), copyAttributes: (function (tgt, src) {
+ _$jscoverage['ui/uiutils.js'][129]++;
+ var attributes = src.attributes;
+ _$jscoverage['ui/uiutils.js'][130]++;
+ var k = attributes.length;
+ _$jscoverage['ui/uiutils.js'][131]++;
+ while ((k--)) {
+ _$jscoverage['ui/uiutils.js'][132]++;
+ var attrNode = attributes[k];
+ _$jscoverage['ui/uiutils.js'][133]++;
+ if (((attrNode.nodeName != "style") && (attrNode.nodeName != "class") && ((! browser.ie) || attrNode.specified))) {
+ _$jscoverage['ui/uiutils.js'][134]++;
+ tgt.setAttribute(attrNode.nodeName, attrNode.nodeValue);
+ }
+}
+ _$jscoverage['ui/uiutils.js'][137]++;
+ if (src.className) {
+ _$jscoverage['ui/uiutils.js'][138]++;
+ domUtils.addClass(tgt, src.className);
+ }
+ _$jscoverage['ui/uiutils.js'][140]++;
+ if (src.style.cssText) {
+ _$jscoverage['ui/uiutils.js'][141]++;
+ tgt.style.cssText += (";" + src.style.cssText);
+ }
+}), removeStyle: (function (el, styleName) {
+ _$jscoverage['ui/uiutils.js'][145]++;
+ if (el.style.removeProperty) {
+ _$jscoverage['ui/uiutils.js'][146]++;
+ el.style.removeProperty(styleName);
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][147]++;
+ if (el.style.removeAttribute) {
+ _$jscoverage['ui/uiutils.js'][148]++;
+ el.style.removeAttribute(styleName);
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][149]++;
+ throw "";
+ }
+ }
+}), contains: (function (elA, elB) {
+ _$jscoverage['ui/uiutils.js'][152]++;
+ return (elA && elB && ((elA === elB)? false: (elA.contains? elA.contains(elB): (elA.compareDocumentPosition(elB) & 16))));
+}), startDrag: (function (evt, callbacks, doc) {
+ _$jscoverage['ui/uiutils.js'][158]++;
+ var doc = (doc || document);
+ _$jscoverage['ui/uiutils.js'][159]++;
+ var startX = evt.clientX;
+ _$jscoverage['ui/uiutils.js'][160]++;
+ var startY = evt.clientY;
+ _$jscoverage['ui/uiutils.js'][161]++;
+ function handleMouseMove(evt) {
+ _$jscoverage['ui/uiutils.js'][162]++;
+ var x = (evt.clientX - startX);
+ _$jscoverage['ui/uiutils.js'][163]++;
+ var y = (evt.clientY - startY);
+ _$jscoverage['ui/uiutils.js'][164]++;
+ callbacks.ondragmove(x, y, evt);
+ _$jscoverage['ui/uiutils.js'][165]++;
+ if (evt.stopPropagation) {
+ _$jscoverage['ui/uiutils.js'][166]++;
+ evt.stopPropagation();
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][168]++;
+ evt.cancelBubble = true;
+ }
+}
+ _$jscoverage['ui/uiutils.js'][171]++;
+ if (doc.addEventListener) {
+ _$jscoverage['ui/uiutils.js'][172]++;
+ function handleMouseUp(evt) {
+ _$jscoverage['ui/uiutils.js'][173]++;
+ doc.removeEventListener("mousemove", handleMouseMove, true);
+ _$jscoverage['ui/uiutils.js'][174]++;
+ doc.removeEventListener("mouseup", handleMouseUp, true);
+ _$jscoverage['ui/uiutils.js'][175]++;
+ window.removeEventListener("mouseup", handleMouseUp, true);
+ _$jscoverage['ui/uiutils.js'][176]++;
+ callbacks.ondragstop();
+}
+ _$jscoverage['ui/uiutils.js'][178]++;
+ doc.addEventListener("mousemove", handleMouseMove, true);
+ _$jscoverage['ui/uiutils.js'][179]++;
+ doc.addEventListener("mouseup", handleMouseUp, true);
+ _$jscoverage['ui/uiutils.js'][180]++;
+ window.addEventListener("mouseup", handleMouseUp, true);
+ _$jscoverage['ui/uiutils.js'][182]++;
+ evt.preventDefault();
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][184]++;
+ var elm = evt.srcElement;
+ _$jscoverage['ui/uiutils.js'][185]++;
+ elm.setCapture();
+ _$jscoverage['ui/uiutils.js'][186]++;
+ function releaseCaptrue() {
+ _$jscoverage['ui/uiutils.js'][187]++;
+ elm.releaseCapture();
+ _$jscoverage['ui/uiutils.js'][188]++;
+ elm.detachEvent("onmousemove", handleMouseMove);
+ _$jscoverage['ui/uiutils.js'][189]++;
+ elm.detachEvent("onmouseup", releaseCaptrue);
+ _$jscoverage['ui/uiutils.js'][190]++;
+ elm.detachEvent("onlosecaptrue", releaseCaptrue);
+ _$jscoverage['ui/uiutils.js'][191]++;
+ callbacks.ondragstop();
+}
+ _$jscoverage['ui/uiutils.js'][193]++;
+ elm.attachEvent("onmousemove", handleMouseMove);
+ _$jscoverage['ui/uiutils.js'][194]++;
+ elm.attachEvent("onmouseup", releaseCaptrue);
+ _$jscoverage['ui/uiutils.js'][195]++;
+ elm.attachEvent("onlosecaptrue", releaseCaptrue);
+ _$jscoverage['ui/uiutils.js'][196]++;
+ evt.returnValue = false;
+ }
+ _$jscoverage['ui/uiutils.js'][198]++;
+ callbacks.ondragstart();
+}), getFixedLayer: (function () {
+ _$jscoverage['ui/uiutils.js'][201]++;
+ var layer = document.getElementById("edui_fixedlayer");
+ _$jscoverage['ui/uiutils.js'][202]++;
+ if ((layer == null)) {
+ _$jscoverage['ui/uiutils.js'][203]++;
+ layer = document.createElement("div");
+ _$jscoverage['ui/uiutils.js'][204]++;
+ layer.id = "edui_fixedlayer";
+ _$jscoverage['ui/uiutils.js'][205]++;
+ document.body.appendChild(layer);
+ _$jscoverage['ui/uiutils.js'][206]++;
+ if ((browser.ie && (browser.version <= 8))) {
+ _$jscoverage['ui/uiutils.js'][207]++;
+ layer.style.position = "absolute";
+ _$jscoverage['ui/uiutils.js'][208]++;
+ bindFixedLayer();
+ _$jscoverage['ui/uiutils.js'][209]++;
+ setTimeout(updateFixedOffset);
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][211]++;
+ layer.style.position = "fixed";
+ }
+ _$jscoverage['ui/uiutils.js'][213]++;
+ layer.style.left = "0";
+ _$jscoverage['ui/uiutils.js'][214]++;
+ layer.style.top = "0";
+ _$jscoverage['ui/uiutils.js'][215]++;
+ layer.style.width = "0";
+ _$jscoverage['ui/uiutils.js'][216]++;
+ layer.style.height = "0";
+ }
+ _$jscoverage['ui/uiutils.js'][218]++;
+ return layer;
+}), makeUnselectable: (function (element) {
+ _$jscoverage['ui/uiutils.js'][221]++;
+ if ((browser.opera || (browser.ie && (browser.version < 9)))) {
+ _$jscoverage['ui/uiutils.js'][222]++;
+ element.unselectable = "on";
+ _$jscoverage['ui/uiutils.js'][223]++;
+ if (element.hasChildNodes()) {
+ _$jscoverage['ui/uiutils.js'][224]++;
+ for (var i = 0; (i < element.childNodes.length); (i++)) {
+ _$jscoverage['ui/uiutils.js'][225]++;
+ if ((element.childNodes[i].nodeType == 1)) {
+ _$jscoverage['ui/uiutils.js'][226]++;
+ uiUtils.makeUnselectable(element.childNodes[i]);
+ }
+}
+ }
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][231]++;
+ if ((element.style.MozUserSelect !== undefined)) {
+ _$jscoverage['ui/uiutils.js'][232]++;
+ element.style.MozUserSelect = "none";
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][233]++;
+ if ((element.style.WebkitUserSelect !== undefined)) {
+ _$jscoverage['ui/uiutils.js'][234]++;
+ element.style.WebkitUserSelect = "none";
+ }
+ else {
+ _$jscoverage['ui/uiutils.js'][235]++;
+ if ((element.style.KhtmlUserSelect !== undefined)) {
+ _$jscoverage['ui/uiutils.js'][236]++;
+ element.style.KhtmlUserSelect = "none";
+ }
+ }
+ }
+ }
+})});
+ _$jscoverage['ui/uiutils.js'][241]++;
+ function updateFixedOffset() {
+ _$jscoverage['ui/uiutils.js'][242]++;
+ var layer = document.getElementById("edui_fixedlayer");
+ _$jscoverage['ui/uiutils.js'][243]++;
+ uiUtils.setViewportOffset(layer, {left: 0, top: 0});
+}
+ _$jscoverage['ui/uiutils.js'][253]++;
+ function bindFixedLayer(adjOffset) {
+ _$jscoverage['ui/uiutils.js'][254]++;
+ domUtils.on(window, "scroll", updateFixedOffset);
+ _$jscoverage['ui/uiutils.js'][255]++;
+ domUtils.on(window, "resize", baidu.editor.utils.defer(updateFixedOffset, 0, true));
+}
+})();
diff --git a/_test/plugins/table.cmds.js b/_test/plugins/table.cmds.js
index c532ee0a7..aca0c18e0 100644
--- a/_test/plugins/table.cmds.js
+++ b/_test/plugins/table.cmds.js
@@ -79,6 +79,7 @@ test('trace 3985 向下合并-拆分成行', function () {
});
test('完全拆分单元格', function () {
+ if (ua.browser.ie&&ua.browser.ie >8)return;//todo ie9,10改range bug trace 单元格不能框选
var editor = te.obj[0];
var range = te.obj[1];
editor.setContent('
');
diff --git a/_test/testDesign/Internationalization.xmind b/_test/testDesign/Internationalization.xmind
deleted file mode 100644
index c9944ed83..000000000
Binary files a/_test/testDesign/Internationalization.xmind and /dev/null differ
diff --git a/_test/testDesign/Range.mm b/_test/testDesign/Range.mm
deleted file mode 100644
index a2320126e..000000000
--- a/_test/testDesign/Range.mm
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/_test/testDesign/attachment.xmind b/_test/testDesign/attachment.xmind
deleted file mode 100644
index b47c9aa05..000000000
Binary files a/_test/testDesign/attachment.xmind and /dev/null differ
diff --git a/_test/testDesign/autotypeset.xmind b/_test/testDesign/autotypeset.xmind
deleted file mode 100644
index 1af893d1b..000000000
Binary files a/_test/testDesign/autotypeset.xmind and /dev/null differ
diff --git a/_test/testDesign/config.xmind b/_test/testDesign/config.xmind
deleted file mode 100644
index b171b5cec..000000000
Binary files a/_test/testDesign/config.xmind and /dev/null differ
diff --git a/_test/testDesign/core.xmind b/_test/testDesign/core.xmind
deleted file mode 100644
index 9be7cc13a..000000000
Binary files a/_test/testDesign/core.xmind and /dev/null differ
diff --git a/_test/testDesign/domUtils.xmind b/_test/testDesign/domUtils.xmind
deleted file mode 100644
index 38cdd2b7e..000000000
Binary files a/_test/testDesign/domUtils.xmind and /dev/null differ
diff --git a/_test/testDesign/image revelant.xmind b/_test/testDesign/image revelant.xmind
deleted file mode 100644
index d7f0b23e6..000000000
Binary files a/_test/testDesign/image revelant.xmind and /dev/null differ
diff --git a/_test/testDesign/interlacetable.xmind b/_test/testDesign/interlacetable.xmind
deleted file mode 100644
index 483c0612a..000000000
Binary files a/_test/testDesign/interlacetable.xmind and /dev/null differ
diff --git a/_test/testDesign/lineheight.xmind b/_test/testDesign/lineheight.xmind
deleted file mode 100644
index b52636013..000000000
Binary files a/_test/testDesign/lineheight.xmind and /dev/null differ
diff --git a/_test/testDesign/regression testing.xmind b/_test/testDesign/regression testing.xmind
deleted file mode 100644
index a6e5dfcd1..000000000
Binary files a/_test/testDesign/regression testing.xmind and /dev/null differ
diff --git a/_test/testDesign/shortcutkeys.mm b/_test/testDesign/shortcutkeys.mm
deleted file mode 100644
index f891903e3..000000000
--- a/_test/testDesign/shortcutkeys.mm
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/_test/testDesign/sorttable.xmind b/_test/testDesign/sorttable.xmind
deleted file mode 100644
index e6489fa2b..000000000
Binary files a/_test/testDesign/sorttable.xmind and /dev/null differ
diff --git a/_test/testDesign/table drag.xmind b/_test/testDesign/table drag.xmind
deleted file mode 100644
index f0d1df469..000000000
Binary files a/_test/testDesign/table drag.xmind and /dev/null differ
diff --git a/_test/testDesign/template.xmind b/_test/testDesign/template.xmind
deleted file mode 100644
index 01ec53b3a..000000000
Binary files a/_test/testDesign/template.xmind and /dev/null differ
diff --git a/_test/testDesign/test case.xmind b/_test/testDesign/test case.xmind
deleted file mode 100644
index c1d14ed91..000000000
Binary files a/_test/testDesign/test case.xmind and /dev/null differ
diff --git a/_test/testDesign/test design.xmind b/_test/testDesign/test design.xmind
deleted file mode 100644
index 009d4186b..000000000
Binary files a/_test/testDesign/test design.xmind and /dev/null differ
diff --git a/_test/testDesign/wordimage.xmind b/_test/testDesign/wordimage.xmind
deleted file mode 100644
index 1c201e2e7..000000000
Binary files a/_test/testDesign/wordimage.xmind and /dev/null differ
diff --git a/_test/testDesign/wordpress integrate.xmind b/_test/testDesign/wordpress integrate.xmind
deleted file mode 100644
index 167ae8134..000000000
Binary files a/_test/testDesign/wordpress integrate.xmind and /dev/null differ
diff --git a/asp/Uploader.Class.asp b/asp/Uploader.Class.asp
index 42d773a01..5d65ce102 100644
--- a/asp/Uploader.Class.asp
+++ b/asp/Uploader.Class.asp
@@ -104,8 +104,53 @@ Class Uploader
DoUpload stream, filename
End Function
+ Private Function RegExpTest(patrn, str)
+ Dim regEx, Match, Matches
+ Set regEx = New RegExp
+ regEx.Pattern = patrn
+ regEx.IgnoreCase = False
+ regEx.Global = True
+ Set Matches = regEx.Execute(str)
+ For Each Match in Matches
+ RetStr = RetStr & Match.value &" "
+ RetStr = RetStr & vbCRLF
+ Next
+ RegExpTest = RetStr
+ End Function
+
+ Private Function IpToNumber( ip )
+ arr=split(ip,".")
+ IpToNumber=256*256*256*clng(arr(0))+256*256*clng(arr(1))+256*clng(arr(2))+clng(arr(3))
+ End Function
+
+ Private Function IsPrivateIp( url )
+ Dim ip
+ ip = RegExpTest("\d+\.\d+\.\d+\.\d*", url)
+
+ If ip = "" Then
+ If RegExpTest("([\w-]+\.)+[\w-]+", url) <> "" Then
+ IsPrivateIp = False:Exit Function
+ End If
+ IsPrivateIp = True:Exit Function
+ End If
+
+ If instr(ip,"127.")=1 Then
+ IsPrivateIp = true:Exit Function
+ End If
+ ABegin = IpToNumber("10.0.0.0"):AEnd = IpToNumber("10.255.255.255")
+ BBegin = IpToNumber("172.16.0.0"):BEnd = IpToNumber("172.31.255.255")
+ CBegin = IpToNumber("192.168.0.0"):CEnd = IpToNumber("192.168.255.255")
+ IpNum = IpToNumber(ip)
+ IsPrivateIp = (ABegin <= IpNum and IpNum <= AEnd) or (BBegin <= IpNum and IpNum <= BEnd) or (CBegin <= IpNum and IpNum <= CEnd)
+ End Function
+
Public Function UploadRemote( url )
Dim stream, filename
+
+ If IsPrivateIp(url) Then
+ rsState = "Failed":Exit Function
+ End If
+
filename = Right( url, Len(url) - InStrRev(url, "/") )
Set stream = CrawlImage( url )
diff --git a/dialogs/anchor/anchor.html b/dialogs/anchor/anchor.html
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/attachment.css b/dialogs/attachment/attachment.css
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/attachment.html b/dialogs/attachment/attachment.html
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_chm.gif b/dialogs/attachment/fileTypeImages/icon_chm.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_default.png b/dialogs/attachment/fileTypeImages/icon_default.png
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_doc.gif b/dialogs/attachment/fileTypeImages/icon_doc.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_exe.gif b/dialogs/attachment/fileTypeImages/icon_exe.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_mp3.gif b/dialogs/attachment/fileTypeImages/icon_mp3.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_mv.gif b/dialogs/attachment/fileTypeImages/icon_mv.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_pdf.gif b/dialogs/attachment/fileTypeImages/icon_pdf.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_ppt.gif b/dialogs/attachment/fileTypeImages/icon_ppt.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_psd.gif b/dialogs/attachment/fileTypeImages/icon_psd.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_rar.gif b/dialogs/attachment/fileTypeImages/icon_rar.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_txt.gif b/dialogs/attachment/fileTypeImages/icon_txt.gif
old mode 100755
new mode 100644
diff --git a/dialogs/attachment/fileTypeImages/icon_xls.gif b/dialogs/attachment/fileTypeImages/icon_xls.gif
old mode 100755
new mode 100644
diff --git a/dialogs/background/background.css b/dialogs/background/background.css
old mode 100755
new mode 100644
diff --git a/dialogs/background/background.html b/dialogs/background/background.html
old mode 100755
new mode 100644
diff --git a/dialogs/background/background.js b/dialogs/background/background.js
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/emotion.css b/dialogs/emotion/emotion.css
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/emotion.html b/dialogs/emotion/emotion.html
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/emotion.js b/dialogs/emotion/emotion.js
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/0.gif b/dialogs/emotion/images/0.gif
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/bface.gif b/dialogs/emotion/images/bface.gif
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/cface.gif b/dialogs/emotion/images/cface.gif
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/fface.gif b/dialogs/emotion/images/fface.gif
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/jxface2.gif b/dialogs/emotion/images/jxface2.gif
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/neweditor-tab-bg.png b/dialogs/emotion/images/neweditor-tab-bg.png
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/tface.gif b/dialogs/emotion/images/tface.gif
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/wface.gif b/dialogs/emotion/images/wface.gif
old mode 100755
new mode 100644
diff --git a/dialogs/emotion/images/yface.gif b/dialogs/emotion/images/yface.gif
old mode 100755
new mode 100644
diff --git a/dialogs/gmap/gmap.html b/dialogs/gmap/gmap.html
old mode 100755
new mode 100644
diff --git a/dialogs/help/help.css b/dialogs/help/help.css
old mode 100755
new mode 100644
diff --git a/dialogs/help/help.html b/dialogs/help/help.html
old mode 100755
new mode 100644
diff --git a/dialogs/help/help.js b/dialogs/help/help.js
old mode 100755
new mode 100644
diff --git a/dialogs/image/image.css b/dialogs/image/image.css
old mode 100755
new mode 100644
diff --git a/dialogs/image/image.html b/dialogs/image/image.html
old mode 100755
new mode 100644
diff --git a/dialogs/image/image.js b/dialogs/image/image.js
old mode 100755
new mode 100644
index 6a0146925..d35c75ebb
--- a/dialogs/image/image.js
+++ b/dialogs/image/image.js
@@ -247,14 +247,17 @@
},
setPreview: function(){
var url = $G('url').value,
- ow = $G('width').value,
- oh = $G('height').value,
- border = $G('border').value,
+ ow = parseInt($G('width').value, 10) || 0,
+ oh = parseInt($G('height').value, 10) || 0,
+ border = parseInt($G('border').value, 10) || 0,
title = $G('title').value,
preview = $G('preview'),
width,
height;
+ url = utils.unhtmlForUrl(url);
+ title = utils.unhtml(title);
+
width = ((!ow || !oh) ? preview.offsetWidth:Math.min(ow, preview.offsetWidth));
width = width+(border*2) > preview.offsetWidth ? width:(preview.offsetWidth - (border*2));
height = (!ow || !oh) ? '':width*oh/ow;
diff --git a/dialogs/insertframe/insertframe.html b/dialogs/insertframe/insertframe.html
old mode 100755
new mode 100644
diff --git a/dialogs/internal.js b/dialogs/internal.js
old mode 100755
new mode 100644
diff --git a/dialogs/link/link.html b/dialogs/link/link.html
old mode 100755
new mode 100644
diff --git a/dialogs/map/map.html b/dialogs/map/map.html
old mode 100755
new mode 100644
diff --git a/dialogs/music/music.css b/dialogs/music/music.css
old mode 100755
new mode 100644
diff --git a/dialogs/music/music.html b/dialogs/music/music.html
old mode 100755
new mode 100644
diff --git a/dialogs/music/music.js b/dialogs/music/music.js
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/addimg.png b/dialogs/scrawl/images/addimg.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/brush.png b/dialogs/scrawl/images/brush.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/delimg.png b/dialogs/scrawl/images/delimg.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/delimgH.png b/dialogs/scrawl/images/delimgH.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/empty.png b/dialogs/scrawl/images/empty.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/emptyH.png b/dialogs/scrawl/images/emptyH.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/eraser.png b/dialogs/scrawl/images/eraser.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/redo.png b/dialogs/scrawl/images/redo.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/redoH.png b/dialogs/scrawl/images/redoH.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/scale.png b/dialogs/scrawl/images/scale.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/scaleH.png b/dialogs/scrawl/images/scaleH.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/size.png b/dialogs/scrawl/images/size.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/undo.png b/dialogs/scrawl/images/undo.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/images/undoH.png b/dialogs/scrawl/images/undoH.png
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/scrawl.css b/dialogs/scrawl/scrawl.css
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/scrawl.html b/dialogs/scrawl/scrawl.html
old mode 100755
new mode 100644
diff --git a/dialogs/scrawl/scrawl.js b/dialogs/scrawl/scrawl.js
old mode 100755
new mode 100644
diff --git a/dialogs/searchreplace/searchreplace.html b/dialogs/searchreplace/searchreplace.html
old mode 100755
new mode 100644
diff --git a/dialogs/searchreplace/searchreplace.js b/dialogs/searchreplace/searchreplace.js
old mode 100755
new mode 100644
diff --git a/dialogs/snapscreen/snapscreen.html b/dialogs/snapscreen/snapscreen.html
old mode 100755
new mode 100644
diff --git a/dialogs/spechars/spechars.html b/dialogs/spechars/spechars.html
old mode 100755
new mode 100644
diff --git a/dialogs/spechars/spechars.js b/dialogs/spechars/spechars.js
old mode 100755
new mode 100644
diff --git a/dialogs/template/config.js b/dialogs/template/config.js
old mode 100755
new mode 100644
diff --git a/dialogs/template/images/bg.gif b/dialogs/template/images/bg.gif
old mode 100755
new mode 100644
diff --git a/dialogs/template/images/pre0.png b/dialogs/template/images/pre0.png
old mode 100755
new mode 100644
diff --git a/dialogs/template/images/pre1.png b/dialogs/template/images/pre1.png
old mode 100755
new mode 100644
diff --git a/dialogs/template/images/pre2.png b/dialogs/template/images/pre2.png
old mode 100755
new mode 100644
diff --git a/dialogs/template/images/pre3.png b/dialogs/template/images/pre3.png
old mode 100755
new mode 100644
diff --git a/dialogs/template/images/pre4.png b/dialogs/template/images/pre4.png
old mode 100755
new mode 100644
diff --git a/dialogs/template/template.css b/dialogs/template/template.css
old mode 100755
new mode 100644
diff --git a/dialogs/template/template.html b/dialogs/template/template.html
old mode 100755
new mode 100644
diff --git a/dialogs/template/template.js b/dialogs/template/template.js
old mode 100755
new mode 100644
diff --git a/dialogs/video/images/center_focus.jpg b/dialogs/video/images/center_focus.jpg
old mode 100755
new mode 100644
diff --git a/dialogs/video/images/left_focus.jpg b/dialogs/video/images/left_focus.jpg
old mode 100755
new mode 100644
diff --git a/dialogs/video/images/none_focus.jpg b/dialogs/video/images/none_focus.jpg
old mode 100755
new mode 100644
diff --git a/dialogs/video/images/right_focus.jpg b/dialogs/video/images/right_focus.jpg
old mode 100755
new mode 100644
diff --git a/dialogs/video/video.css b/dialogs/video/video.css
old mode 100755
new mode 100644
diff --git a/dialogs/video/video.html b/dialogs/video/video.html
old mode 100755
new mode 100644
diff --git a/dialogs/video/video.js b/dialogs/video/video.js
old mode 100755
new mode 100644
index 58553e3c5..4b63fac17
--- a/dialogs/video/video.js
+++ b/dialogs/video/video.js
@@ -270,6 +270,8 @@
var conUrl = convert_url(url);
+ conUrl = utils.unhtmlForUrl(conUrl);
+
$G("preview").innerHTML = ''+lang.urlError+'
'+
' "未知错误",
"ERROR_DEAD_LINK" => "链接不可用",
"ERROR_HTTP_LINK" => "链接不是http链接",
- "ERROR_HTTP_CONTENTTYPE" => "链接contentType不正确"
+ "ERROR_HTTP_CONTENTTYPE" => "链接contentType不正确",
+ "INVALID_URL" => "非法 URL",
+ "INVALID_IP" => "非法 IP"
);
/**
@@ -178,15 +180,36 @@ private function saveRemote()
$this->stateInfo = $this->getStateInfo("ERROR_HTTP_LINK");
return;
}
+
+ preg_match('/(^https*:\/\/[^:\/]+)/', $imgUrl, $matches);
+ $host_with_protocol = count($matches) > 1 ? $matches[1] : '';
+
+ // 判断是否是合法 url
+ if (!filter_var($host_with_protocol, FILTER_VALIDATE_URL)) {
+ $this->stateInfo = $this->getStateInfo("INVALID_URL");
+ return;
+ }
+
+ preg_match('/^https*:\/\/(.+)/', $host_with_protocol, $matches);
+ $host_without_protocol = count($matches) > 1 ? $matches[1] : '';
+
+ // 此时提取出来的可能是 ip 也有可能是域名,先获取 ip
+ $ip = gethostbyname($host_without_protocol);
+ // 判断是否是私有 ip
+ if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)) {
+ $this->stateInfo = $this->getStateInfo("INVALID_IP");
+ return;
+ }
+
//获取请求头并检测死链
- $heads = get_headers($imgUrl);
+ $heads = get_headers($imgUrl, 1);
if (!(stristr($heads[0], "200") && stristr($heads[0], "OK"))) {
$this->stateInfo = $this->getStateInfo("ERROR_DEAD_LINK");
return;
}
//格式验证(扩展名验证和Content-Type验证)
$fileType = strtolower(strrchr($imgUrl, '.'));
- if (!in_array($fileType, $this->config['allowFiles']) || stristr($heads['Content-Type'], "image")) {
+ if (!in_array($fileType, $this->config['allowFiles']) || !isset($heads['Content-Type']) || !stristr($heads['Content-Type'], "image")) {
$this->stateInfo = $this->getStateInfo("ERROR_HTTP_CONTENTTYPE");
return;
}
diff --git a/themes/default/_css/autotypesetpicker.css b/themes/default/_css/autotypesetpicker.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/button.css b/themes/default/_css/button.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/buttonicon.css b/themes/default/_css/buttonicon.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/colorbutton.css b/themes/default/_css/colorbutton.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/colorpicker.css b/themes/default/_css/colorpicker.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/combox.css b/themes/default/_css/combox.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/contextmenu.css b/themes/default/_css/contextmenu.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/dialog.css b/themes/default/_css/dialog.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/editor.css b/themes/default/_css/editor.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/menu.css b/themes/default/_css/menu.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/menubutton.css b/themes/default/_css/menubutton.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/multiMenu.css b/themes/default/_css/multiMenu.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/paragraphpicker.css b/themes/default/_css/paragraphpicker.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/popup.css b/themes/default/_css/popup.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/separtor.css b/themes/default/_css/separtor.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/splitbutton.css b/themes/default/_css/splitbutton.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/tablepicker.css b/themes/default/_css/tablepicker.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/toolbar.css b/themes/default/_css/toolbar.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/ueditor.css b/themes/default/_css/ueditor.css
old mode 100755
new mode 100644
diff --git a/themes/default/_css/uibase.css b/themes/default/_css/uibase.css
old mode 100755
new mode 100644
diff --git a/themes/default/dialogbase.css b/themes/default/dialogbase.css
old mode 100755
new mode 100644
diff --git a/themes/default/images/anchor.gif b/themes/default/images/anchor.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/arrow.png b/themes/default/images/arrow.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/button-bg.gif b/themes/default/images/button-bg.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/cancelbutton.gif b/themes/default/images/cancelbutton.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/cursor_h.gif b/themes/default/images/cursor_h.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/cursor_v.gif b/themes/default/images/cursor_v.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/dialog-title-bg.png b/themes/default/images/dialog-title-bg.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/filescan.png b/themes/default/images/filescan.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/highlighted.gif b/themes/default/images/highlighted.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/icons-all.gif b/themes/default/images/icons-all.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/icons.gif b/themes/default/images/icons.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/icons.png b/themes/default/images/icons.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/lock.gif b/themes/default/images/lock.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/neweditor-tab-bg.png b/themes/default/images/neweditor-tab-bg.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/pagebreak.gif b/themes/default/images/pagebreak.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/scale.png b/themes/default/images/scale.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/spacer.gif b/themes/default/images/spacer.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/sparator_v.png b/themes/default/images/sparator_v.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/toolbar_bg.png b/themes/default/images/toolbar_bg.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/unhighlighted.gif b/themes/default/images/unhighlighted.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/upload.png b/themes/default/images/upload.png
old mode 100755
new mode 100644
diff --git a/themes/default/images/videologo.gif b/themes/default/images/videologo.gif
old mode 100755
new mode 100644
diff --git a/themes/default/images/word.gif b/themes/default/images/word.gif
old mode 100755
new mode 100644
diff --git a/themes/iframe.css b/themes/iframe.css
old mode 100755
new mode 100644
diff --git a/third-party/SyntaxHighlighter/shCoreDefault.css b/third-party/SyntaxHighlighter/shCoreDefault.css
old mode 100755
new mode 100644
diff --git a/third-party/codemirror/codemirror.css b/third-party/codemirror/codemirror.css
old mode 100755
new mode 100644
diff --git a/third-party/codemirror/codemirror.js b/third-party/codemirror/codemirror.js
old mode 100755
new mode 100644
diff --git a/third-party/snapscreen/UEditorSnapscreen.exe b/third-party/snapscreen/UEditorSnapscreen.exe
old mode 100755
new mode 100644
diff --git a/third-party/video-js/video-js.swf b/third-party/video-js/video-js.swf
old mode 100644
new mode 100755
index eef460add..9cf537a53
Binary files a/third-party/video-js/video-js.swf and b/third-party/video-js/video-js.swf differ
diff --git a/third-party/xss.min.js b/third-party/xss.min.js
new file mode 100644
index 000000000..48d788078
--- /dev/null
+++ b/third-party/xss.min.js
@@ -0,0 +1 @@
+(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o/g;var REGEXP_QUOTE=/"/g;var REGEXP_QUOTE_2=/"/g;var REGEXP_ATTR_VALUE_1=/([a-zA-Z0-9]*);?/gim;var REGEXP_ATTR_VALUE_COLON=/:?/gim;var REGEXP_ATTR_VALUE_NEWLINE=/&newline;?/gim;var REGEXP_DEFAULT_ON_TAG_ATTR_3=/\/\*|\*\//gm;var REGEXP_DEFAULT_ON_TAG_ATTR_4=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi;var REGEXP_DEFAULT_ON_TAG_ATTR_5=/^[\s"'`]*(d\s*a\s*t\s*a\s*)\:/gi;var REGEXP_DEFAULT_ON_TAG_ATTR_6=/^[\s"'`]*(d\s*a\s*t\s*a\s*)\:\s*image\//gi;var REGEXP_DEFAULT_ON_TAG_ATTR_7=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi;var REGEXP_DEFAULT_ON_TAG_ATTR_8=/u\s*r\s*l\s*\(.*/gi;function escapeQuote(str){return str.replace(REGEXP_QUOTE,""")}function unescapeQuote(str){return str.replace(REGEXP_QUOTE_2,'"')}function escapeHtmlEntities(str){return str.replace(REGEXP_ATTR_VALUE_1,function replaceUnicode(str,code){return code[0]==="x"||code[0]==="X"?String.fromCharCode(parseInt(code.substr(1),16)):String.fromCharCode(parseInt(code,10))})}function escapeDangerHtml5Entities(str){return str.replace(REGEXP_ATTR_VALUE_COLON,":").replace(REGEXP_ATTR_VALUE_NEWLINE," ")}function clearNonPrintableCharacter(str){var str2="";for(var i=0,len=str.length;i/g;function stripBlankChar(html){var chars=html.split("");chars=chars.filter(function(char){var c=char.charCodeAt(0);if(c===127)return false;if(c<=31){if(c===10||c===13)return true;return false}return true});return chars.join("")}exports.whiteList=getDefaultWhiteList();exports.getDefaultWhiteList=getDefaultWhiteList;exports.onTag=onTag;exports.onIgnoreTag=onIgnoreTag;exports.onTagAttr=onTagAttr;exports.onIgnoreTagAttr=onIgnoreTagAttr;exports.safeAttrValue=safeAttrValue;exports.escapeHtml=escapeHtml;exports.escapeQuote=escapeQuote;exports.unescapeQuote=unescapeQuote;exports.escapeHtmlEntities=escapeHtmlEntities;exports.escapeDangerHtml5Entities=escapeDangerHtml5Entities;exports.clearNonPrintableCharacter=clearNonPrintableCharacter;exports.friendlyAttrValue=friendlyAttrValue;exports.escapeAttrValue=escapeAttrValue;exports.onIgnoreTagStripAll=onIgnoreTagStripAll;exports.StripTagBody=StripTagBody;exports.stripCommentTag=stripCommentTag;exports.stripBlankChar=stripBlankChar;exports.cssFilter=defaultCSSFilter},{"./util":4,cssfilter:8}],2:[function(require,module,exports){var DEFAULT=require("./default");var parser=require("./parser");var FilterXSS=require("./xss");function filterXSS(html,options){var xss=new FilterXSS(options);return xss.process(html)}exports=module.exports=filterXSS;exports.FilterXSS=FilterXSS;for(var i in DEFAULT)exports[i]=DEFAULT[i];for(var i in parser)exports[i]=parser[i];if(typeof window!=="undefined"){window.filterXSS=module.exports}},{"./default":1,"./parser":3,"./xss":5}],3:[function(require,module,exports){var _=require("./util");function getTagName(html){var i=html.indexOf(" ");if(i===-1){var tagName=html.slice(1,-1)}else{var tagName=html.slice(1,i+1)}tagName=_.trim(tagName).toLowerCase();if(tagName.slice(0,1)==="/")tagName=tagName.slice(1);if(tagName.slice(-1)==="/")tagName=tagName.slice(0,-1);return tagName}function isClosing(html){return html.slice(0,2)===""}function parseTag(html,onTag,escapeHtml){"user strict";var rethtml="";var lastPos=0;var tagStart=false;var quoteStart=false;var currentPos=0;var len=html.length;var currentHtml="";var currentTagName="";for(currentPos=0;currentPos"){rethtml+=escapeHtml(html.slice(lastPos,tagStart));currentHtml=html.slice(tagStart,currentPos+1);currentTagName=getTagName(currentHtml);rethtml+=onTag(tagStart,rethtml.length,currentTagName,currentHtml,isClosing(currentHtml));lastPos=currentPos+1;tagStart=false;continue}if((c==='"'||c==="'")&&html.charAt(currentPos-1)==="="){quoteStart=c;continue}}else{if(c===quoteStart){quoteStart=false;continue}}}}if(lastPos0;i--){var c=str[i];if(c===" ")continue;if(c==="=")return i;return-1}}function isQuoteWrapString(text){if(text[0]==='"'&&text[text.length-1]==='"'||text[0]==="'"&&text[text.length-1]==="'"){return true}else{return false}}function stripQuoteWrap(text){if(isQuoteWrapString(text)){return text.substr(1,text.length-2)}else{return text}}exports.parseTag=parseTag;exports.parseAttr=parseAttr},{"./util":4}],4:[function(require,module,exports){module.exports={indexOf:function(arr,item){var i,j;if(Array.prototype.indexOf){return arr.indexOf(item)}for(i=0,j=arr.length;i"}var attrs=getAttrs(html);var whiteAttrList=whiteList[tag];var attrsHtml=parseAttr(attrs.html,function(name,value){var isWhiteAttr=_.indexOf(whiteAttrList,name)!==-1;var ret=onTagAttr(tag,name,value,isWhiteAttr);if(!isNull(ret))return ret;if(isWhiteAttr){value=safeAttrValue(tag,name,value,cssFilter);if(value){return name+'="'+value+'"'}else{return name}}else{var ret=onIgnoreTagAttr(tag,name,value,isWhiteAttr);if(!isNull(ret))return ret;return}});var html="<"+tag;if(attrsHtml)html+=" "+attrsHtml;if(attrs.closing)html+=" /";html+=">";return html}else{var ret=onIgnoreTag(tag,html,info);if(!isNull(ret))return ret;return escapeHtml(html)}},escapeHtml);if(stripIgnoreTagBody){retHtml=stripIgnoreTagBody.remove(retHtml)}return retHtml};module.exports=FilterXSS},{"./default":1,"./parser":3,"./util":4,cssfilter:8}],6:[function(require,module,exports){var DEFAULT=require("./default");var parseStyle=require("./parser");var _=require("./util");function isNull(obj){return obj===undefined||obj===null}function FilterCSS(options){options=options||{};options.whiteList=options.whiteList||DEFAULT.whiteList;options.onAttr=options.onAttr||DEFAULT.onAttr;options.onIgnoreAttr=options.onIgnoreAttr||DEFAULT.onIgnoreAttr;this.options=options}FilterCSS.prototype.process=function(css){css=css||"";css=css.toString();if(!css)return"";var me=this;var options=me.options;var whiteList=options.whiteList;var onAttr=options.onAttr;var onIgnoreAttr=options.onIgnoreAttr;var retCSS=parseStyle(css,function(sourcePosition,position,name,value,source){var check=whiteList[name];var isWhite=false;if(check===true)isWhite=check;else if(typeof check==="function")isWhite=check(value);else if(check instanceof RegExp)isWhite=check.test(value);if(isWhite!==true)isWhite=false;var opts={position:position,sourcePosition:sourcePosition,source:source,isWhite:isWhite};if(isWhite){var ret=onAttr(name,value,opts);if(isNull(ret)){return name+":"+value}else{return ret}}else{var ret=onIgnoreAttr(name,value,opts);if(!isNull(ret)){return ret}}});return retCSS};module.exports=FilterCSS},{"./default":7,"./parser":9,"./util":10}],7:[function(require,module,exports){function getDefaultWhiteList(){var whiteList={};whiteList["align-content"]=false;whiteList["align-items"]=false;whiteList["align-self"]=false;whiteList["alignment-adjust"]=false;whiteList["alignment-baseline"]=false;whiteList["all"]=false;whiteList["anchor-point"]=false;whiteList["animation"]=false;whiteList["animation-delay"]=false;whiteList["animation-direction"]=false;whiteList["animation-duration"]=false;whiteList["animation-fill-mode"]=false;whiteList["animation-iteration-count"]=false;whiteList["animation-name"]=false;whiteList["animation-play-state"]=false;whiteList["animation-timing-function"]=false;whiteList["azimuth"]=false;whiteList["backface-visibility"]=false;whiteList["background"]=true;whiteList["background-attachment"]=true;whiteList["background-clip"]=true;whiteList["background-color"]=true;whiteList["background-image"]=true;whiteList["background-origin"]=true;whiteList["background-position"]=true;whiteList["background-repeat"]=true;whiteList["background-size"]=true;whiteList["baseline-shift"]=false;whiteList["binding"]=false;whiteList["bleed"]=false;whiteList["bookmark-label"]=false;whiteList["bookmark-level"]=false;whiteList["bookmark-state"]=false;whiteList["border"]=true;whiteList["border-bottom"]=true;whiteList["border-bottom-color"]=true;whiteList["border-bottom-left-radius"]=true;whiteList["border-bottom-right-radius"]=true;whiteList["border-bottom-style"]=true;whiteList["border-bottom-width"]=true;whiteList["border-collapse"]=true;whiteList["border-color"]=true;whiteList["border-image"]=true;whiteList["border-image-outset"]=true;whiteList["border-image-repeat"]=true;whiteList["border-image-slice"]=true;whiteList["border-image-source"]=true;whiteList["border-image-width"]=true;whiteList["border-left"]=true;whiteList["border-left-color"]=true;whiteList["border-left-style"]=true;whiteList["border-left-width"]=true;whiteList["border-radius"]=true;whiteList["border-right"]=true;whiteList["border-right-color"]=true;whiteList["border-right-style"]=true;whiteList["border-right-width"]=true;whiteList["border-spacing"]=true;whiteList["border-style"]=true;whiteList["border-top"]=true;whiteList["border-top-color"]=true;whiteList["border-top-left-radius"]=true;whiteList["border-top-right-radius"]=true;whiteList["border-top-style"]=true;whiteList["border-top-width"]=true;whiteList["border-width"]=true;whiteList["bottom"]=false;whiteList["box-decoration-break"]=true;whiteList["box-shadow"]=true;whiteList["box-sizing"]=true;whiteList["box-snap"]=true;whiteList["box-suppress"]=true;whiteList["break-after"]=true;whiteList["break-before"]=true;whiteList["break-inside"]=true;whiteList["caption-side"]=false;whiteList["chains"]=false;whiteList["clear"]=true;whiteList["clip"]=false;whiteList["clip-path"]=false;whiteList["clip-rule"]=false;whiteList["color"]=true;whiteList["color-interpolation-filters"]=true;whiteList["column-count"]=false;whiteList["column-fill"]=false;whiteList["column-gap"]=false;whiteList["column-rule"]=false;whiteList["column-rule-color"]=false;whiteList["column-rule-style"]=false;whiteList["column-rule-width"]=false;whiteList["column-span"]=false;whiteList["column-width"]=false;whiteList["columns"]=false;whiteList["contain"]=false;whiteList["content"]=false;whiteList["counter-increment"]=false;whiteList["counter-reset"]=false;whiteList["counter-set"]=false;whiteList["crop"]=false;whiteList["cue"]=false;whiteList["cue-after"]=false;whiteList["cue-before"]=false;whiteList["cursor"]=false;whiteList["direction"]=false;whiteList["display"]=true;whiteList["display-inside"]=true;whiteList["display-list"]=true;whiteList["display-outside"]=true;whiteList["dominant-baseline"]=false;whiteList["elevation"]=false;whiteList["empty-cells"]=false;whiteList["filter"]=false;whiteList["flex"]=false;whiteList["flex-basis"]=false;whiteList["flex-direction"]=false;whiteList["flex-flow"]=false;whiteList["flex-grow"]=false;whiteList["flex-shrink"]=false;whiteList["flex-wrap"]=false;whiteList["float"]=false;whiteList["float-offset"]=false;whiteList["flood-color"]=false;whiteList["flood-opacity"]=false;whiteList["flow-from"]=false;whiteList["flow-into"]=false;whiteList["font"]=true;whiteList["font-family"]=true;whiteList["font-feature-settings"]=true;whiteList["font-kerning"]=true;whiteList["font-language-override"]=true;whiteList["font-size"]=true;whiteList["font-size-adjust"]=true;whiteList["font-stretch"]=true;whiteList["font-style"]=true;whiteList["font-synthesis"]=true;whiteList["font-variant"]=true;whiteList["font-variant-alternates"]=true;whiteList["font-variant-caps"]=true;whiteList["font-variant-east-asian"]=true;whiteList["font-variant-ligatures"]=true;whiteList["font-variant-numeric"]=true;whiteList["font-variant-position"]=true;whiteList["font-weight"]=true;whiteList["grid"]=false;whiteList["grid-area"]=false;whiteList["grid-auto-columns"]=false;whiteList["grid-auto-flow"]=false;whiteList["grid-auto-rows"]=false;whiteList["grid-column"]=false;whiteList["grid-column-end"]=false;whiteList["grid-column-start"]=false;whiteList["grid-row"]=false;whiteList["grid-row-end"]=false;whiteList["grid-row-start"]=false;whiteList["grid-template"]=false;whiteList["grid-template-areas"]=false;whiteList["grid-template-columns"]=false;whiteList["grid-template-rows"]=false;whiteList["hanging-punctuation"]=false;whiteList["height"]=true;whiteList["hyphens"]=false;whiteList["icon"]=false;whiteList["image-orientation"]=false;whiteList["image-resolution"]=false;whiteList["ime-mode"]=false;whiteList["initial-letters"]=false;whiteList["inline-box-align"]=false;whiteList["justify-content"]=false;whiteList["justify-items"]=false;whiteList["justify-self"]=false;whiteList["left"]=false;whiteList["letter-spacing"]=true;whiteList["lighting-color"]=true;whiteList["line-box-contain"]=false;whiteList["line-break"]=false;whiteList["line-grid"]=false;whiteList["line-height"]=false;whiteList["line-snap"]=false;whiteList["line-stacking"]=false;whiteList["line-stacking-ruby"]=false;whiteList["line-stacking-shift"]=false;whiteList["line-stacking-strategy"]=false;whiteList["list-style"]=true;whiteList["list-style-image"]=true;whiteList["list-style-position"]=true;whiteList["list-style-type"]=true;whiteList["margin"]=true;whiteList["margin-bottom"]=true;whiteList["margin-left"]=true;whiteList["margin-right"]=true;whiteList["margin-top"]=true;whiteList["marker-offset"]=false;whiteList["marker-side"]=false;whiteList["marks"]=false;whiteList["mask"]=false;whiteList["mask-box"]=false;whiteList["mask-box-outset"]=false;whiteList["mask-box-repeat"]=false;whiteList["mask-box-slice"]=false;whiteList["mask-box-source"]=false;whiteList["mask-box-width"]=false;whiteList["mask-clip"]=false;whiteList["mask-image"]=false;whiteList["mask-origin"]=false;whiteList["mask-position"]=false;whiteList["mask-repeat"]=false;whiteList["mask-size"]=false;whiteList["mask-source-type"]=false;whiteList["mask-type"]=false;whiteList["max-height"]=true;whiteList["max-lines"]=false;whiteList["max-width"]=true;whiteList["min-height"]=true;whiteList["min-width"]=true;whiteList["move-to"]=false;whiteList["nav-down"]=false;whiteList["nav-index"]=false;whiteList["nav-left"]=false;whiteList["nav-right"]=false;whiteList["nav-up"]=false;whiteList["object-fit"]=false;whiteList["object-position"]=false;whiteList["opacity"]=false;whiteList["order"]=false;whiteList["orphans"]=false;whiteList["outline"]=false;whiteList["outline-color"]=false;whiteList["outline-offset"]=false;whiteList["outline-style"]=false;whiteList["outline-width"]=false;whiteList["overflow"]=false;whiteList["overflow-wrap"]=false;whiteList["overflow-x"]=false;whiteList["overflow-y"]=false;whiteList["padding"]=true;whiteList["padding-bottom"]=true;whiteList["padding-left"]=true;whiteList["padding-right"]=true;whiteList["padding-top"]=true;whiteList["page"]=false;whiteList["page-break-after"]=false;whiteList["page-break-before"]=false;whiteList["page-break-inside"]=false;whiteList["page-policy"]=false;whiteList["pause"]=false;whiteList["pause-after"]=false;whiteList["pause-before"]=false;whiteList["perspective"]=false;whiteList["perspective-origin"]=false;whiteList["pitch"]=false;whiteList["pitch-range"]=false;whiteList["play-during"]=false;whiteList["position"]=false;whiteList["presentation-level"]=false;whiteList["quotes"]=false;whiteList["region-fragment"]=false;whiteList["resize"]=false;whiteList["rest"]=false;whiteList["rest-after"]=false;whiteList["rest-before"]=false;whiteList["richness"]=false;whiteList["right"]=false;whiteList["rotation"]=false;whiteList["rotation-point"]=false;whiteList["ruby-align"]=false;whiteList["ruby-merge"]=false;whiteList["ruby-position"]=false;whiteList["shape-image-threshold"]=false;whiteList["shape-outside"]=false;whiteList["shape-margin"]=false;whiteList["size"]=false;whiteList["speak"]=false;whiteList["speak-as"]=false;whiteList["speak-header"]=false;whiteList["speak-numeral"]=false;whiteList["speak-punctuation"]=false;whiteList["speech-rate"]=false;whiteList["stress"]=false;whiteList["string-set"]=false;whiteList["tab-size"]=false;whiteList["table-layout"]=false;whiteList["text-align"]=true;whiteList["text-align-last"]=true;whiteList["text-combine-upright"]=true;whiteList["text-decoration"]=true;whiteList["text-decoration-color"]=true;whiteList["text-decoration-line"]=true;whiteList["text-decoration-skip"]=true;whiteList["text-decoration-style"]=true;whiteList["text-emphasis"]=true;whiteList["text-emphasis-color"]=true;whiteList["text-emphasis-position"]=true;whiteList["text-emphasis-style"]=true;whiteList["text-height"]=true;whiteList["text-indent"]=true;whiteList["text-justify"]=true;whiteList["text-orientation"]=true;whiteList["text-overflow"]=true;whiteList["text-shadow"]=true;whiteList["text-space-collapse"]=true;whiteList["text-transform"]=true;whiteList["text-underline-position"]=true;whiteList["text-wrap"]=true;whiteList["top"]=false;whiteList["transform"]=false;whiteList["transform-origin"]=false;whiteList["transform-style"]=false;whiteList["transition"]=false;whiteList["transition-delay"]=false;whiteList["transition-duration"]=false;whiteList["transition-property"]=false;whiteList["transition-timing-function"]=false;whiteList["unicode-bidi"]=false;whiteList["vertical-align"]=false;whiteList["visibility"]=false;whiteList["voice-balance"]=false;whiteList["voice-duration"]=false;whiteList["voice-family"]=false;whiteList["voice-pitch"]=false;whiteList["voice-range"]=false;whiteList["voice-rate"]=false;whiteList["voice-stress"]=false;whiteList["voice-volume"]=false;whiteList["volume"]=false;whiteList["white-space"]=false;whiteList["widows"]=false;whiteList["width"]=true;whiteList["will-change"]=false;whiteList["word-break"]=true;whiteList["word-spacing"]=true;whiteList["word-wrap"]=true;whiteList["wrap-flow"]=false;whiteList["wrap-through"]=false;whiteList["writing-mode"]=false;whiteList["z-index"]=false;return whiteList}function onAttr(name,value,options){}function onIgnoreAttr(name,value,options){}exports.whiteList=getDefaultWhiteList();exports.getDefaultWhiteList=getDefaultWhiteList;exports.onAttr=onAttr;exports.onIgnoreAttr=onIgnoreAttr},{}],8:[function(require,module,exports){var DEFAULT=require("./default");var FilterCSS=require("./css");function filterCSS(html,options){var xss=new FilterCSS(options);return xss.process(html)}exports=module.exports=filterCSS;exports.FilterCSS=FilterCSS;for(var i in DEFAULT)exports[i]=DEFAULT[i];if(typeof window!=="undefined"){window.filterCSS=module.exports}},{"./css":6,"./default":7}],9:[function(require,module,exports){var _=require("./util");function parseStyle(css,onAttr){css=_.trimRight(css);if(css[css.length-1]!==";")css+=";";var cssLength=css.length;var isParenthesisOpen=false;var lastPos=0;var i=0;var retCSS="";function addNewAttr(){if(!isParenthesisOpen){var source=_.trim(css.slice(lastPos,i));var j=source.indexOf(":");if(j!==-1){var name=_.trim(source.slice(0,j));var value=_.trim(source.slice(j+1));if(name){var ret=onAttr(lastPos,retCSS.length,name,value,source);if(ret)retCSS+=ret+"; "}}}lastPos=i+1}for(;i你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存!
-
- //tab
- //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位
- //,tabSize:4
- //,tabNode:' '
-
- //removeFormat
- //清除格式时可以删除的标签和属性
- //removeForamtTags标签
- //,removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var'
- //removeFormatAttributes属性
- //,removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign'
-
- //undo
- //可以最多回退的次数,默认20
- //,maxUndoCount:20
- //当输入的字符数超过该值时,保存一次现场
- //,maxInputCount:1
-
- //autoHeightEnabled
- // 是否自动长高,默认true
- //,autoHeightEnabled:true
-
- //scaleEnabled
- //是否可以拉伸长高,默认true(当开启时,自动长高失效)
- //,scaleEnabled:false
- //,minFrameWidth:800 //编辑器拖动时最小宽度,默认800
- //,minFrameHeight:220 //编辑器拖动时最小高度,默认220
-
- //autoFloatEnabled
- //是否保持toolbar的位置不动,默认true
- //,autoFloatEnabled:true
- //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面
- //,topOffset:30
- //编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效)
- //,toolbarTopOffset:400
-
- //pageBreakTag
- //分页标识符,默认是_ueditor_page_break_tag_
- //,pageBreakTag:'_ueditor_page_break_tag_'
-
- //autotypeset
- //自动排版参数
- //,autotypeset: {
- // mergeEmptyline: true, //合并空行
- // removeClass: true, //去掉冗余的class
- // removeEmptyline: false, //去掉空行
- // textAlign:"left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版
- // imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版
- // pasteFilter: false, //根据规则过滤没事粘贴进来的内容
- // clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号
- // clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体
- // removeEmptyNode: false, // 去掉空节点
- // //可以去掉的标签
- // removeTagNames: {标签名字:1},
- // indent: false, // 行首缩进
- // indentValue : '2em', //行首缩进的大小
- // bdc2sb: false,
- // tobdc: false
- //}
-
- //tableDragable
- //表格是否可以拖拽
- //,tableDragable: true
-
- //,disabledTableInTable:true //禁止表格嵌套
-
- //sourceEditor
- //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror
- //注意默认codemirror只能在ie8+和非ie中使用
- //,sourceEditor:"codemirror"
- //如果sourceEditor是codemirror,还用配置一下两个参数
- //codeMirrorJsUrl js加载的路径,默认是 URL + "third-party/codemirror/codemirror.js"
- //,codeMirrorJsUrl:URL + "third-party/codemirror/codemirror.js"
- //codeMirrorCssUrl css加载的路径,默认是 URL + "third-party/codemirror/codemirror.css"
- //,codeMirrorCssUrl:URL + "third-party/codemirror/codemirror.css"
- //编辑器初始化完成后是否进入源码模式,默认为否。
- //,sourceEditorFirst:false
-
- //iframeUrlMap
- //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径
- //,iframeUrlMap:{
- // 'anchor':'~/dialogs/anchor/anchor.html',
- //}
-
- //webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html
- //, webAppKey: ""
- };
-
- function getUEBasePath(docUrl, confUrl) {
-
- return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath());
-
- }
-
- function getConfigFilePath() {
-
- var configPath = document.getElementsByTagName('script');
-
- return configPath[ configPath.length - 1 ].src;
-
- }
-
- function getBasePath(docUrl, confUrl) {
-
- var basePath = confUrl;
-
-
- if (/^(\/|\\\\)/.test(confUrl)) {
-
- basePath = /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, '');
-
- } else if (!/^[a-z]+:/i.test(confUrl)) {
-
- docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\\\/]+$/, '');
-
- basePath = docUrl + "" + confUrl;
-
- }
-
- return optimizationPath(basePath);
-
- }
-
- function optimizationPath(path) {
-
- var protocol = /^[a-z]+:\/\//.exec(path)[ 0 ],
- tmp = null,
- res = [];
-
- path = path.replace(protocol, "").split("?")[0].split("#")[0];
-
- path = path.replace(/\\/g, '/').split(/\//);
-
- path[ path.length - 1 ] = "";
-
- while (path.length) {
-
- if (( tmp = path.shift() ) === "..") {
- res.pop();
- } else if (tmp !== ".") {
- res.push(tmp);
- }
-
- }
-
- return protocol + res.join("/");
-
- }
-
- window.UE = {
- getUEBasePath: getUEBasePath
- };
-
-})();
+/**
+ * ueditor完整配置项
+ * 可以在这里配置整个编辑器的特性
+ */
+/**************************提示********************************
+ * 所有被注释的配置项均为UEditor默认值。
+ * 修改默认配置请首先确保已经完全明确该参数的真实用途。
+ * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。
+ * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。
+ **************************提示********************************/
+
+(function () {
+
+ /**
+ * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。
+ * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配置。
+ * "相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。
+ * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。
+ * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。
+ * window.UEDITOR_HOME_URL = "/xxxx/xxxx/";
+ */
+ var URL = window.UEDITOR_HOME_URL || getUEBasePath();
+
+ /**
+ * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
+ */
+ window.UEDITOR_CONFIG = {
+
+ //为编辑器实例添加一个路径,这个不能被注释
+ UEDITOR_HOME_URL: URL
+
+ // 服务器统一请求接口路径
+ , serverUrl: URL + "php/controller.php"
+
+ //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义
+ , toolbars: [[
+ 'fullscreen', 'source', '|', 'undo', 'redo', '|',
+ 'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',
+ 'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
+ 'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',
+ 'directionalityltr', 'directionalityrtl', 'indent', '|',
+ 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',
+ 'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',
+ 'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|',
+ 'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|',
+ 'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',
+ 'print', 'preview', 'searchreplace', 'drafts', 'help'
+ ]]
+ //当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准
+ //,labelMap:{
+ // 'anchor':'', 'undo':''
+ //}
+
+ //语言配置项,默认是zh-cn。有需要的话也可以使用如下这样的方式来自动多语言切换,当然,前提条件是lang文件夹下存在对应的语言文件:
+ //lang值也可以通过自动获取 (navigator.language||navigator.browserLanguage ||navigator.userLanguage).toLowerCase()
+ //,lang:"zh-cn"
+ //,langPath:URL +"lang/"
+
+ //主题配置项,默认是default。有需要的话也可以使用如下这样的方式来自动多主题切换,当然,前提条件是themes文件夹下存在对应的主题文件:
+ //现有如下皮肤:default
+ //,theme:'default'
+ //,themePath:URL +"themes/"
+
+ //,zIndex : 900 //编辑器层级的基数,默认是900
+
+ //针对getAllHtml方法,会在对应的head标签中增加该编码设置。
+ //,charset:"utf-8"
+
+ //若实例化编辑器的页面手动修改的domain,此处需要设置为true
+ //,customDomain:false
+
+ //常用配置项目
+ //,isShow : true //默认显示编辑器
+
+ //,textarea:'editorValue' // 提交表单时,服务器获取编辑器提交内容的所用的参数,多实例时可以给容器name属性,会将name给定的值最为每个实例的键值,不用每次实例化的时候都设置这个值
+
+ //,initialContent:'欢迎使用ueditor!' //初始化编辑器的内容,也可以通过textarea/script给值,看官网例子
+
+ //,autoClearinitialContent:true //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了
+
+ //,focus:false //初始化时,是否让编辑器获得焦点true或false
+
+ //如果自定义,最好给p标签如下的行高,要不输入中文时,会有跳动感
+ //,initialStyle:'p{line-height:1em}'//编辑器层级的基数,可以用来改变字体等
+
+ //,iframeCssUrl: URL + '/themes/iframe.css' //给编辑区域的iframe引入一个css文件
+
+ //indentValue
+ //首行缩进距离,默认是2em
+ //,indentValue:'2em'
+
+ //,initialFrameWidth:1000 //初始化编辑器宽度,默认1000
+ //,initialFrameHeight:320 //初始化编辑器高度,默认320
+
+ //,readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false
+
+ //,autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况)
+
+ //启用自动保存
+ //,enableAutoSave: true
+ //自动保存间隔时间, 单位ms
+ //,saveInterval: 500
+
+ //,fullscreen : false //是否开启初始化时即全屏,默认关闭
+
+ //,imagePopup:true //图片操作的浮层开关,默认打开
+
+ //,autoSyncData:true //自动同步编辑器要提交的数据
+ //,emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹
+
+ //粘贴只保留标签,去除标签所有属性
+ //,retainOnlyLabelPasted: false
+
+ //,pasteplain:false //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴
+ //纯文本粘贴模式下的过滤规则
+ //'filterTxtRules' : function(){
+ // function transP(node){
+ // node.tagName = 'p';
+ // node.setStyle();
+ // }
+ // return {
+ // //直接删除及其字节点内容
+ // '-' : 'script style object iframe embed input select',
+ // 'p': {$:{}},
+ // 'br':{$:{}},
+ // 'div':{'$':{}},
+ // 'li':{'$':{}},
+ // 'caption':transP,
+ // 'th':transP,
+ // 'tr':transP,
+ // 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP,
+ // 'td':function(node){
+ // //没有内容的td直接删掉
+ // var txt = !!node.innerText();
+ // if(txt){
+ // node.parentNode.insertAfter(UE.uNode.createText(' '),node);
+ // }
+ // node.parentNode.removeChild(node,node.innerText())
+ // }
+ // }
+ //}()
+
+ //,allHtmlEnabled:false //提交到后台的数据是否包含整个html字符串
+
+ //insertorderedlist
+ //有序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准
+ //,'insertorderedlist':{
+ // //自定的样式
+ // 'num':'1,2,3...',
+ // 'num1':'1),2),3)...',
+ // 'num2':'(1),(2),(3)...',
+ // 'cn':'一,二,三....',
+ // 'cn1':'一),二),三)....',
+ // 'cn2':'(一),(二),(三)....',
+ // //系统自带
+ // 'decimal' : '' , //'1,2,3...'
+ // 'lower-alpha' : '' , // 'a,b,c...'
+ // 'lower-roman' : '' , //'i,ii,iii...'
+ // 'upper-alpha' : '' , lang //'A,B,C'
+ // 'upper-roman' : '' //'I,II,III...'
+ //}
+
+ //insertunorderedlist
+ //无序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准
+ //,insertunorderedlist : { //自定的样式
+ // 'dash' :'— 破折号', //-破折号
+ // 'dot':' 。 小圆圈', //系统自带
+ // 'circle' : '', // '○ 小圆圈'
+ // 'disc' : '', // '● 小圆点'
+ // 'square' : '' //'■ 小方块'
+ //}
+ //,listDefaultPaddingLeft : '30'//默认的左边缩进的基数倍
+ //,listiconpath : 'http://bs.baidu.com/listicon/'//自定义标号的路径
+ //,maxListLevel : 3 //限制可以tab的级数, 设置-1为不限制
+
+ //,autoTransWordToList:false //禁止word中粘贴进来的列表自动变成列表标签
+
+ //fontfamily
+ //字体设置 label留空支持多语言自动切换,若配置,则以配置值为准
+ //,'fontfamily':[
+ // { label:'',name:'songti',val:'宋体,SimSun'},
+ // { label:'',name:'kaiti',val:'楷体,楷体_GB2312, SimKai'},
+ // { label:'',name:'yahei',val:'微软雅黑,Microsoft YaHei'},
+ // { label:'',name:'heiti',val:'黑体, SimHei'},
+ // { label:'',name:'lishu',val:'隶书, SimLi'},
+ // { label:'',name:'andaleMono',val:'andale mono'},
+ // { label:'',name:'arial',val:'arial, helvetica,sans-serif'},
+ // { label:'',name:'arialBlack',val:'arial black,avant garde'},
+ // { label:'',name:'comicSansMs',val:'comic sans ms'},
+ // { label:'',name:'impact',val:'impact,chicago'},
+ // { label:'',name:'timesNewRoman',val:'times new roman'}
+ //]
+
+ //fontsize
+ //字号
+ //,'fontsize':[10, 11, 12, 14, 16, 18, 20, 24, 36]
+
+ //paragraph
+ //段落格式 值留空时支持多语言自动识别,若配置,则以配置值为准
+ //,'paragraph':{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''}
+
+ //rowspacingtop
+ //段间距 值和显示的名字相同
+ //,'rowspacingtop':['5', '10', '15', '20', '25']
+
+ //rowspacingBottom
+ //段间距 值和显示的名字相同
+ //,'rowspacingbottom':['5', '10', '15', '20', '25']
+
+ //lineheight
+ //行内间距 值和显示的名字相同
+ //,'lineheight':['1', '1.5','1.75','2', '3', '4', '5']
+
+ //customstyle
+ //自定义样式,不支持国际化,此处配置值即可最后显示值
+ //block的元素是依据设置段落的逻辑设置的,inline的元素依据BIU的逻辑设置
+ //尽量使用一些常用的标签
+ //参数说明
+ //tag 使用的标签名字
+ //label 显示的名字也是用来标识不同类型的标识符,注意这个值每个要不同,
+ //style 添加的样式
+ //每一个对象就是一个自定义的样式
+ //,'customstyle':[
+ // {tag:'h1', name:'tc', label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'},
+ // {tag:'h1', name:'tl',label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;margin:0 0 10px 0;'},
+ // {tag:'span',name:'im', label:'', style:'font-style:italic;font-weight:bold'},
+ // {tag:'span',name:'hi', label:'', style:'font-style:italic;font-weight:bold;color:rgb(51, 153, 204)'}
+ //]
+
+ //打开右键菜单功能
+ //,enableContextMenu: true
+ //右键菜单的内容,可以参考plugins/contextmenu.js里边的默认菜单的例子,label留空支持国际化,否则以此配置为准
+ //,contextMenu:[
+ // {
+ // label:'', //显示的名称
+ // cmdName:'selectall',//执行的command命令,当点击这个右键菜单时
+ // //exec可选,有了exec就会在点击时执行这个function,优先级高于cmdName
+ // exec:function () {
+ // //this是当前编辑器的实例
+ // //this.ui._dialogs['inserttableDialog'].open();
+ // }
+ // }
+ //]
+
+ //快捷菜单
+ //,shortcutMenu:["fontfamily", "fontsize", "bold", "italic", "underline", "forecolor", "backcolor", "insertorderedlist", "insertunorderedlist"]
+
+ //elementPathEnabled
+ //是否启用元素路径,默认是显示
+ //,elementPathEnabled : true
+
+ //wordCount
+ //,wordCount:true //是否开启字数统计
+ //,maximumWords:10000 //允许的最大字符数
+ //字数统计提示,{#count}代表当前字数,{#leave}代表还可以输入多少字符数,留空支持多语言自动切换,否则按此配置显示
+ //,wordCountMsg:'' //当前已输入 {#count} 个字符,您还可以输入{#leave} 个字符
+ //超出字数限制提示 留空支持多语言自动切换,否则按此配置显示
+ //,wordOverFlowMsg:'' //你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存!
+
+ //tab
+ //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位
+ //,tabSize:4
+ //,tabNode:' '
+
+ //removeFormat
+ //清除格式时可以删除的标签和属性
+ //removeForamtTags标签
+ //,removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var'
+ //removeFormatAttributes属性
+ //,removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign'
+
+ //undo
+ //可以最多回退的次数,默认20
+ //,maxUndoCount:20
+ //当输入的字符数超过该值时,保存一次现场
+ //,maxInputCount:1
+
+ //autoHeightEnabled
+ // 是否自动长高,默认true
+ //,autoHeightEnabled:true
+
+ //scaleEnabled
+ //是否可以拉伸长高,默认true(当开启时,自动长高失效)
+ //,scaleEnabled:false
+ //,minFrameWidth:800 //编辑器拖动时最小宽度,默认800
+ //,minFrameHeight:220 //编辑器拖动时最小高度,默认220
+
+ //autoFloatEnabled
+ //是否保持toolbar的位置不动,默认true
+ //,autoFloatEnabled:true
+ //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面
+ //,topOffset:30
+ //编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效)
+ //,toolbarTopOffset:400
+
+ //设置远程图片是否抓取到本地保存
+ //,catchRemoteImageEnable: true //设置是否抓取远程图片
+
+ //pageBreakTag
+ //分页标识符,默认是_ueditor_page_break_tag_
+ //,pageBreakTag:'_ueditor_page_break_tag_'
+
+ //autotypeset
+ //自动排版参数
+ //,autotypeset: {
+ // mergeEmptyline: true, //合并空行
+ // removeClass: true, //去掉冗余的class
+ // removeEmptyline: false, //去掉空行
+ // textAlign:"left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版
+ // imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版
+ // pasteFilter: false, //根据规则过滤没事粘贴进来的内容
+ // clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号
+ // clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体
+ // removeEmptyNode: false, // 去掉空节点
+ // //可以去掉的标签
+ // removeTagNames: {标签名字:1},
+ // indent: false, // 行首缩进
+ // indentValue : '2em', //行首缩进的大小
+ // bdc2sb: false,
+ // tobdc: false
+ //}
+
+ //tableDragable
+ //表格是否可以拖拽
+ //,tableDragable: true
+
+
+
+ //sourceEditor
+ //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror
+ //注意默认codemirror只能在ie8+和非ie中使用
+ //,sourceEditor:"codemirror"
+ //如果sourceEditor是codemirror,还用配置一下两个参数
+ //codeMirrorJsUrl js加载的路径,默认是 URL + "third-party/codemirror/codemirror.js"
+ //,codeMirrorJsUrl:URL + "third-party/codemirror/codemirror.js"
+ //codeMirrorCssUrl css加载的路径,默认是 URL + "third-party/codemirror/codemirror.css"
+ //,codeMirrorCssUrl:URL + "third-party/codemirror/codemirror.css"
+ //编辑器初始化完成后是否进入源码模式,默认为否。
+ //,sourceEditorFirst:false
+
+ //iframeUrlMap
+ //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径
+ //,iframeUrlMap:{
+ // 'anchor':'~/dialogs/anchor/anchor.html',
+ //}
+
+ //allowLinkProtocol 允许的链接地址,有这些前缀的链接地址不会自动添加http
+ //, allowLinkProtocols: ['http:', 'https:', '#', '/', 'ftp:', 'mailto:', 'tel:', 'git:', 'svn:']
+
+ //webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html
+ //, webAppKey: ""
+
+ //默认过滤规则相关配置项目
+ //,disabledTableInTable:true //禁止表格嵌套
+ //,allowDivTransToP:true //允许进入编辑器的div标签自动变成p标签
+ //,rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式
+
+ // xss 过滤是否开启,inserthtml等操作
+ ,xssFilterRules: true
+ //input xss过滤
+ ,inputXssFilter: true
+ //output xss过滤
+ ,outputXssFilter: true
+ // xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js
+ ,whiteList: {
+ a: ['target', 'href', 'title', 'class', 'style'],
+ abbr: ['title', 'class', 'style'],
+ address: ['class', 'style'],
+ area: ['shape', 'coords', 'href', 'alt'],
+ article: [],
+ aside: [],
+ audio: ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'],
+ b: ['class', 'style'],
+ bdi: ['dir'],
+ bdo: ['dir'],
+ big: [],
+ blockquote: ['cite', 'class', 'style'],
+ br: [],
+ caption: ['class', 'style'],
+ center: [],
+ cite: [],
+ code: ['class', 'style'],
+ col: ['align', 'valign', 'span', 'width', 'class', 'style'],
+ colgroup: ['align', 'valign', 'span', 'width', 'class', 'style'],
+ dd: ['class', 'style'],
+ del: ['datetime'],
+ details: ['open'],
+ div: ['class', 'style'],
+ dl: ['class', 'style'],
+ dt: ['class', 'style'],
+ em: ['class', 'style'],
+ font: ['color', 'size', 'face'],
+ footer: [],
+ h1: ['class', 'style'],
+ h2: ['class', 'style'],
+ h3: ['class', 'style'],
+ h4: ['class', 'style'],
+ h5: ['class', 'style'],
+ h6: ['class', 'style'],
+ header: [],
+ hr: [],
+ i: ['class', 'style'],
+ img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'],
+ ins: ['datetime'],
+ li: ['class', 'style'],
+ mark: [],
+ nav: [],
+ ol: ['class', 'style'],
+ p: ['class', 'style'],
+ pre: ['class', 'style'],
+ s: [],
+ section:[],
+ small: [],
+ span: ['class', 'style'],
+ sub: ['class', 'style'],
+ sup: ['class', 'style'],
+ strong: ['class', 'style'],
+ table: ['width', 'border', 'align', 'valign', 'class', 'style'],
+ tbody: ['align', 'valign', 'class', 'style'],
+ td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],
+ tfoot: ['align', 'valign', 'class', 'style'],
+ th: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],
+ thead: ['align', 'valign', 'class', 'style'],
+ tr: ['rowspan', 'align', 'valign', 'class', 'style'],
+ tt: [],
+ u: [],
+ ul: ['class', 'style'],
+ video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style']
+ }
+ };
+
+ function getUEBasePath(docUrl, confUrl) {
+
+ return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath());
+
+ }
+
+ function getConfigFilePath() {
+
+ var configPath = document.getElementsByTagName('script');
+
+ return configPath[ configPath.length - 1 ].src;
+
+ }
+
+ function getBasePath(docUrl, confUrl) {
+
+ var basePath = confUrl;
+
+
+ if (/^(\/|\\\\)/.test(confUrl)) {
+
+ basePath = /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, '');
+
+ } else if (!/^[a-z]+:/i.test(confUrl)) {
+
+ docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\\\/]+$/, '');
+
+ basePath = docUrl + "" + confUrl;
+
+ }
+
+ return optimizationPath(basePath);
+
+ }
+
+ function optimizationPath(path) {
+
+ var protocol = /^[a-z]+:\/\//.exec(path)[ 0 ],
+ tmp = null,
+ res = [];
+
+ path = path.replace(protocol, "").split("?")[0].split("#")[0];
+
+ path = path.replace(/\\/g, '/').split(/\//);
+
+ path[ path.length - 1 ] = "";
+
+ while (path.length) {
+
+ if (( tmp = path.shift() ) === "..") {
+ res.pop();
+ } else if (tmp !== ".") {
+ res.push(tmp);
+ }
+
+ }
+
+ return protocol + res.join("/");
+
+ }
+
+ window.UE = {
+ getUEBasePath: getUEBasePath
+ };
+
+})();