(function () { var domEventObservablesHolder = DomEventUtils.data(domNode); var num = 0; for (var i in domEventObservablesHolder) { expect(util.inArray(i, ["handle", "observables"])) .toBe(true); num++; } expect(num).toBe(2); expect(isFunction(domEventObservablesHolder.handle)).toBe(true); var domEventObservables = domEventObservablesHolder.observables; num = 0; for (i in domEventObservables) { expect(util.inArray(i, ['keydown'])) .toBe(true); num++; } expect(num).toBe(1); var clickEventObserver = domEventObservables.click; expect(clickEventObserver).toBeUndefined(); })();
d.on('drag', function (e) { if (util.inArray('y', direction)) { editor.set('height', height + e.deltaY); } if (util.inArray('x', direction)) { editor.set('width', width + e.deltaX); } editor.fire('resize'); });
it('util.inArray', function () { var a; expect(util.inArray(2, [1, 2, 3, 4, 5])).toBe(true); expect(util.inArray(6, [1, 2, 3, 4, 5])).toBe(false); expect(util.inArray(a, [1, 2, 3, 4, undefined])).toBe(true); expect(util.inArray({}, [1, 2, 3, 4, {}])).toBe(false); });
_onSetHighlightedItem: function(item, e) { _$jscoverage['/toolbar.js'].functionData[10]++; _$jscoverage['/toolbar.js'].lineData[184]++; var id, itemEl, self = this, prevVal = visit25_186_1(e && e.prevVal), children = self.get('children'), el = self.el; _$jscoverage['/toolbar.js'].lineData[190]++; if (visit26_190_1(prevVal && util.inArray(prevVal, children))) { _$jscoverage['/toolbar.js'].lineData[191]++; prevVal.set('highlighted', false, { data: { byPassSetToolbarHighlightedItem: 1}}); } _$jscoverage['/toolbar.js'].lineData[197]++; if (visit27_197_1(item)) { _$jscoverage['/toolbar.js'].lineData[198]++; if (visit28_198_1(el.ownerDocument.activeElement !== el)) { _$jscoverage['/toolbar.js'].lineData[199]++; self.focus(); } _$jscoverage['/toolbar.js'].lineData[201]++; itemEl = item.el; _$jscoverage['/toolbar.js'].lineData[202]++; id = itemEl.id; _$jscoverage['/toolbar.js'].lineData[203]++; if (visit29_203_1(!id)) { _$jscoverage['/toolbar.js'].lineData[204]++; itemEl.id = id = util.guid('ks-toolbar-item'); } _$jscoverage['/toolbar.js'].lineData[206]++; el.setAttribute('aria-activedescendant', id); } else { _$jscoverage['/toolbar.js'].lineData[208]++; el.setAttribute('aria-activedescendant', ''); } },
addTarget: function (anotherTarget) { var self = this, targets = self.getTargets(); if (!util.inArray(anotherTarget, targets)) { targets.push(anotherTarget); } return self; },
_onSetHighlightedItem: function (item, e) { var id, itemEl, self = this, prevVal = e && e.prevVal, children = self.get('children'), el = self.el; // only clear children's status if (prevVal && util.inArray(prevVal, children)) { prevVal.set('highlighted', false, { data: { byPassSetToolbarHighlightedItem: 1 } }); } if (item) { if (el.ownerDocument.activeElement !== el) { self.focus(); } itemEl = item.el; id = itemEl.id; if (!id) { itemEl.id = id = util.guid('ks-toolbar-item'); } el.setAttribute('aria-activedescendant', id); } else { el.setAttribute('aria-activedescendant', ''); } },
function afterHighlightedChange(e) { _$jscoverage['/toolbar.js'].functionData[3]++; _$jscoverage['/toolbar.js'].lineData[52]++; var self = this, expandedItem, children, target = e.target; _$jscoverage['/toolbar.js'].lineData[56]++; if (visit8_56_1(visit9_56_2(self !== target) && (visit10_56_3(target.isMenuItem || target.isButton)))) { _$jscoverage['/toolbar.js'].lineData[58]++; if (visit11_58_1(e.newVal)) { _$jscoverage['/toolbar.js'].lineData[59]++; children = self.get('children'); _$jscoverage['/toolbar.js'].lineData[60]++; if (visit12_60_1((expandedItem = self.get('expandedItem')) && util.inArray(target, children))) { _$jscoverage['/toolbar.js'].lineData[62]++; self.set('expandedItem', target.isMenuButton ? target : null); } _$jscoverage['/toolbar.js'].lineData[64]++; self.set('highlightedItem', target); } else { _$jscoverage['/toolbar.js'].lineData[66]++; if (visit13_66_1(!e.byPassSetToolbarHighlightedItem)) { _$jscoverage['/toolbar.js'].lineData[67]++; self.set('highlightedItem', null); } } } }
handleKeyDownInternal: function (e) { var self = this, updateInputOnDownUp, input, keyCode = e.keyCode, highlightedItem, handledByMenu, menu = self.get('menu'); input = self.get('input'); updateInputOnDownUp = self.get('updateInputOnDownUp'); if (menu.get('visible')) { highlightedItem = menu.get('highlightedItem'); // https://github.com/kissyteam/kissy/issues/371 // combobox: input should be involved in key press sequence // https://github.com/kissyteam/kissy/issues/371 // combobox: input should be involved in key press sequence if (updateInputOnDownUp && highlightedItem) { var menuChildren = menu.get('children'); if (keyCode === KeyCode.DOWN && highlightedItem === getFirstEnabledItem(menuChildren.concat().reverse()) || keyCode === KeyCode.UP && highlightedItem === getFirstEnabledItem(menuChildren)) { self.setCurrentValue(self._savedValue); highlightedItem.set('highlighted', false); return true; } } handledByMenu = menu.handleKeyDownInternal(e); highlightedItem = menu.get('highlightedItem'); // esc // esc if (keyCode === KeyCode.ESC) { self.set('collapsed', true); if (updateInputOnDownUp) { // combobox will change input value // but it does not need to reload data // restore original user's input text self.setCurrentValue(self._savedValue); } return true; } if (updateInputOnDownUp && util.inArray(keyCode, [ KeyCode.DOWN, KeyCode.UP ])) { // update menu's active value to input just for show self.setCurrentValue(highlightedItem.get('textContent')); } // tab // if menu is open and an menuitem is highlighted, see as click/enter // tab // if menu is open and an menuitem is highlighted, see as click/enter if (keyCode === KeyCode.TAB && highlightedItem) { // click highlightedItem highlightedItem.handleClickInternal(e); // only prevent focus change in multiple mode // only prevent focus change in multiple mode if (self.get('multiple')) { return true; } } return handledByMenu; } else if (keyCode === KeyCode.DOWN || keyCode === KeyCode.UP) { // re-fetch, consider multiple input var v = self.getCurrentValue(); if (v !== undefined) { self.sendRequest(v); return true; } } return undefined; },
error: function () { var args = util.makeArray(arguments); if (args[1].indexOf('not call jsonpCallback') !== -1) { } else { expect(util.inArray(args[1], [ "script error", "parser error" ])) .toBe(true); } ret404 = 0; }
(function () { var customEventObservables = eventTarget.getEventListeners(); var num = 0; for (var i in customEventObservables) { expect(util.inArray(i, ['click', 'keydown'])) .to.be(true); num++; } expect(num).to.be(2); var clickObserver = customEventObservables.click; expect(clickObserver.observers.length).to.be(3); })();
(function () { var eventDesc = DomEventUtils.data(domNode); var num = 0; for (var i in eventDesc) { expect(util.inArray(i, ["handle", "observables"])) .toBe(true); num++; } expect(num).toBe(2); expect(isFunction(eventDesc.handle)).toBe(true); var domEventObservables = eventDesc.observables; num = 0; for (i in domEventObservables) { expect(util.inArray(i, ['click', 'keydown'])) .toBe(true); num++; } expect(num).toBe(2); var clickEventObserver = domEventObservables.click; expect(clickEventObserver.observers.length).toBe(3); })();
function setUpConfig(c) { // deep mix,exclude context! var context = c.context; delete c.context; c = util.mix(util.clone(defaultConfig), c, { deep: true }); c.context = context || c; var data, uri, type = c.type, dataType = c.dataType; uri = c.uri = simulatedLocation.resolve(c.url); // see method _getUrlForSend c.uri.setQuery(''); if (!('crossDomain' in c)) { c.crossDomain = !c.uri.isSameOriginAs(simulatedLocation); } type = c.type = type.toUpperCase(); c.hasContent = !rnoContent.test(type); if (c.processData && (data = c.data) && typeof data !== 'string') { // normalize to string c.data = util.param(data, undefined, undefined, c.serializeArray); } // 数据类型处理链,一步步将前面的数据类型转化成最后一个 dataType = c.dataType = util.trim(dataType || '*').split(rspace); if (!('cache' in c) && util.inArray(dataType[0], ['script', 'jsonp'])) { c.cache = false; } if (!c.hasContent) { if (c.data) { uri.query.add(util.unparam(c.data)); } if (c.cache === false) { uri.query.set('_ksTS', (util.now() + '_' + util.guid())); } } return c; }
function setUpConfig(c) { // deep mix,exclude context! var context = c.context; delete c.context; c = util.mix(util.clone(defaultConfig), c, { deep: true }); c.context = context || c; var data, uri, type = c.type, dataType = c.dataType; uri = c.uri = url.parse(url.resolve(locationHref, c.url), true); // see method _getUrlForSend uri.query = {}; if (!('crossDomain' in c)) { c.crossDomain = !(uri.protocol === locationUrl.protocol && uri.host === locationUrl.host); } type = c.type = type.toUpperCase(); c.hasContent = !rnoContent.test(type); if (c.processData && (data = c.data) && typeof data !== 'string') { // normalize to string c.data = querystring.stringify(data, undefined, undefined, c.serializeArray); } // 数据类型处理链,一步步将前面的数据类型转化成最后一个 dataType = c.dataType = util.trim(dataType || '*').split(rspace); if (!('cache' in c) && util.inArray(dataType[0], ['script', 'jsonp'])) { c.cache = false; } if (!c.hasContent) { if (c.data) { util.mix(uri.query, querystring.parse(c.data)); } if (c.cache === false) { uri.query._ksTS = util.now() + '_' + util.guid(); } } return c; }
function jo(value, replacerFunction, propertyList, gap, stack, indent) { if ('@DEBUG@') { if (util.inArray(value, stack)) { throw new TypeError('cyclic json'); } stack[stack.length] = value; } var stepBack = indent; indent += gap; var k, kl, i, p; if (propertyList !== undefined) { k = propertyList; } else { k = util.keys(value); } var partial = []; for (i = 0, kl = k.length; i < kl; i++) { p = k[i]; var strP = str(p, value, replacerFunction, propertyList, gap, stack, indent); if (strP !== undefined) { var member = Quote.quote(p); member += ':'; if (gap) { member += ' '; } member += strP; partial[partial.length] = member; } } var ret; if (!partial.length) { ret = '{}'; } else { if (!gap) { ret = '{' + partial.join(',') + '}'; } else { var separator = ',\n' + indent; var properties = partial.join(separator); ret = '{\n' + indent + properties + '\n' + stepBack + '}'; } } if ('@DEBUG@') { stack.pop(); } return ret; }
function afterHighlightedChange(e) { var self = this, expandedItem, children, target = e.target; if (self !== target && (target.isMenuItem || target.isButton)) { if (e.newVal) { children = self.get('children'); if ((expandedItem = self.get('expandedItem')) && util.inArray(target, children)) { // in case collapse false modify highlightedItem self.set('expandedItem', target.isMenuButton ? target : null); } self.set('highlightedItem', target); } else { if (!e.byPassSetToolbarHighlightedItem) { self.set('highlightedItem', null); } } } }
} : function (selector) { var _els = Dom.query(selector), elem, j, e, i = 0, excludes, style, els; excludes = ['iframe', 'textarea', 'input', 'select']; for (j = _els.length - 1; j >= 0; j--) { elem = _els[j]; style = elem.style; els = elem.getElementsByTagName('*'); elem.setAttribute('unselectable', 'on'); while ((e = els[i++])) { if (!util.inArray(getNodeName(e), excludes)) { e.setAttribute('unselectable', 'on'); } } } },
function ja(value, replacerFunction, propertyList, gap, stack, indent) { if ('@DEBUG@') { if (util.inArray(value, stack)) { throw new TypeError('cyclic json'); } stack[stack.length] = value; } var stepBack = indent; indent += gap; var partial = []; var len = value.length; var index = 0; while (index < len) { var strP = str(String(index), value, replacerFunction, propertyList, gap, stack, indent); if (strP === undefined) { partial[partial.length] = 'null'; } else { partial[partial.length] = strP; } ++index; } var ret; if (!partial.length) { ret = '[]'; } else { if (!gap) { ret = '[' + partial.join(',') + ']'; } else { var separator = '\n,' + indent; var properties = partial.join(separator); ret = '[\n' + indent + properties + '\n' + stepBack + ']'; } } if ('@DEBUG@') { stack.pop(); } return ret; }
$doc.on('mousedown', function (ev) { var control = $(ev.target); if (util.inArray(control.nodeName(), ['img', 'hr', 'input', 'textarea', 'select'])) { self.getSelection().selectElement(control); } });
function enterBlock(editor) { // Get the range for the current selection. var range = getRange(editor); var doc = range.document; var path = new ElementPath(range.startContainer), isStartOfBlock = range.checkStartOfBlock(), isEndOfBlock = range.checkEndOfBlock(), block = path.block; // Exit the list when we're inside an empty list item block. (#5376) if (isStartOfBlock && isEndOfBlock) { // 只有两层? if (block && (block.nodeName() === 'li' || block.parent().nodeName() === 'li')) { if (editor.hasCommand('outdent')) { editor.execCommand('save'); editor.execCommand('outdent'); editor.execCommand('save'); return true; } else { return false; } } } else if (block && block.nodeName() === 'pre') { // Don't split <pre> if we're in the middle of it, add \r or br if (!isEndOfBlock) { // insert '\r' var lineBreak = UA.ieMode < 9 ? $(doc.createTextNode('\r')) : $(doc.createElement('br')); range.insertNode(lineBreak); if (UA.ieMode < 9) { // empty character to force wrap line in ie<9 lineBreak = $(doc.createTextNode('\ufeff')).insertAfter(lineBreak); range.setStartAt(lineBreak, Editor.RangeType.POSITION_AFTER_START); } else { range.setStartAfter(lineBreak); } range.collapse(true); range.select(); if (UA.ieMode < 9) { lineBreak[0].nodeValue = ''; } return; } } // Determine the block element to be used. var blockTag = 'p'; // Split the range. var splitInfo = range.splitBlock(blockTag); if (!splitInfo) { return true; } // Get the current blocks. var previousBlock = splitInfo.previousBlock, nextBlock = splitInfo.nextBlock; isStartOfBlock = splitInfo.wasStartOfBlock; isEndOfBlock = splitInfo.wasEndOfBlock; var node; // If this is a block under a list item, split it as well. (#1647) if (nextBlock) { node = nextBlock.parent(); if (node.nodeName() === 'li') { nextBlock._4eBreakParent(node); nextBlock._4eMove(nextBlock.next(), true); } } else if (previousBlock && (node = previousBlock.parent()) && node.nodeName() === 'li') { previousBlock._4eBreakParent(node); range.moveToElementEditablePosition(previousBlock.next()); previousBlock._4eMove(previousBlock.prev()); } var newBlock; // If we have both the previous and next blocks, it means that the // boundaries were on separated blocks, or none of them where on the // block limits (start/end). if (!isStartOfBlock && !isEndOfBlock) { // If the next block is an <li> with another list tree as the first // child, we'll need to append a filler (<br>/NBSP) or the list item // wouldn't be editable. (#1420) if (nextBlock.nodeName() === 'li' && (node = nextBlock.first(Walker.invisible(true))) && util.inArray(node.nodeName(), ['ul', 'ol'])) { (OLD_IE ? $(doc.createTextNode('\xa0')) : $(doc.createElement('br'))).insertBefore(node); } // Move the selection to the end block. if (nextBlock) { range.moveToElementEditablePosition(nextBlock); } } else { if (previousBlock) { // Do not enter this block if it's a header tag, or we are in // a Shift+Enter (#77). Create a new block element instead // (later in the code). // end of pre, start p if (previousBlock.nodeName() === 'li' || !(headerPreTagRegex.test(previousBlock.nodeName()))) { // Otherwise, duplicate the previous block. newBlock = previousBlock.clone(); } } else if (nextBlock) { newBlock = nextBlock.clone(); } if (!newBlock) { newBlock = $('<' + blockTag + '>', null, doc); } // Recreate the inline elements tree, which was available // before hitting enter, so the same styles will be available in // the new block. var elementPath = splitInfo.elementPath; if (elementPath) { for (var i = 0, len = elementPath.elements.length; i < len; i++) { var element = elementPath.elements[ i ]; if (element.equals(elementPath.block) || element.equals(elementPath.blockLimit)) { break; } //<li><strong>^</strong></li> if (dtd.$removeEmpty[ element.nodeName() ]) { element = element.clone(); newBlock._4eMoveChildren(element); newBlock.append(element); } } } if (!OLD_IE) { newBlock._4eAppendBogus(); } range.insertNode(newBlock); // This is tricky, but to make the new block visible correctly // we must select it. // The previousBlock check has been included because it may be // empty if we have fixed a block-less space (like ENTER into an // empty table cell). if (OLD_IE && isStartOfBlock && (!isEndOfBlock || !previousBlock[0].childNodes.length)) { // Move the selection to the new block. range.moveToElementEditablePosition(isEndOfBlock ? previousBlock : newBlock); range.select(); } // Move the selection to the new block. range.moveToElementEditablePosition(isStartOfBlock && !isEndOfBlock ? nextBlock : newBlock); } if (!OLD_IE) { if (nextBlock) { // If we have split the block, adds a temporary span at the // range position and scroll relatively to it. var tmpNode = $(doc.createElement('span')); // We need some content for Safari. tmpNode.html(' '); range.insertNode(tmpNode); tmpNode.scrollIntoView(undefined, { alignWithTop: false, allowHorizontalScroll: true, onlyScrollIfNeeded: true }); range.deleteContents(); } else { // We may use the above scroll logic for the new block case // too, but it gives some weird result with Opera. newBlock.scrollIntoView(undefined, { alignWithTop: false, allowHorizontalScroll: true, onlyScrollIfNeeded: true }); } } range.select(); return true; }
editor.addContextMenu('table', function (node) { if (util.inArray(Dom.nodeName(node), tableRules)) { return true; } }, {
KISSY.add('kg/editor-plugins/1.1.0/table',["editor","./dialog-loader","./contextmenu","./button","util","ua","dom","node"],function(S ,require, exports, module) {function e(e){function t(e){o.length>0||e[0].nodeType===b.NodeType.ELEMENT_NODE&&C.test(e.nodeName())&&!e.data("selected_cell")&&(e._4eSetMarker(a,"selected_cell",!0,void 0),o.push(e))}for(var n=e.createBookmarks(),r=e.getRanges(),o=[],a={},l=0;l<r.length;l++){var i=r[l];if(i.collapsed){var d=i.getCommonAncestor(),s=d.closest("td",void 0)||d.closest("th",void 0);s&&o.push(s)}else{var c,v=new f(i);for(v.guard=t;c=v.next();){var h=c.parent();h&&C.test(h.nodeName())&&!h.data("selected_cell")&&(h._4eSetMarker(a,"selected_cell",!0,void 0),o.push(h))}}}return u.Utils.clearAllMarkers(a),e.selectBookmarks(n),o}function t(e){for(var t=e.cells,n=0;n<t.length;n++)t[n].innerHTML="",S||p(t[n])._4eAppendBogus(void 0)}function n(e,n){var r=e.getStartElement().parent("tr");if(r){var o=r.clone(!0);o.insertBefore(r),t(n?o[0]:r[0])}}function r(t){var n;if(t instanceof u.Selection){for(var o,a,l,i,d=e(t),s=d.length,c=[],v=0;s>v;v++){l=d[v].parent();var f=l[0].rowIndex;v||(a=f-1),c[f]=l,v===s-1&&(i=f+1)}n=l.parent("table");var h=n[0].rows,m=h.length;for(o=p(m>i&&n[0].rows[i]||a>0&&n[0].rows[a]||n[0].parentNode),v=c.length;v>=0;v--)c[v]&&r(c[v]);return o}return t instanceof p&&(n=t.parent("table"),1===n[0].rows.length?n.remove():t.remove()),0}function o(e,t){var n=e.getStartElement(),r=n.closest("td",void 0)||n.closest("th",void 0);if(r)for(var o=r.parent("table"),a=r[0].cellIndex,l=0;l<o[0].rows.length;l++){var i=o[0].rows[l];if(!(i.cells.length<a+1)){r=p(i.cells[a].cloneNode(void 0)),S||r._4eAppendBogus(void 0);var d=p(i.cells[a]);t?r.insertBefore(d):r.insertAfter(d)}}}function a(e){var t,n,r,o,a=[],l=e[0]&&e[0].parent("table");for(t=0,n=e.length;n>t;t++)a.push(e[t][0].cellIndex);for(a.sort(),t=1,n=a.length;n>t;t++)if(a[t]-a[t-1]>1){r=a[t-1]+1;break}r||(r=a[0]>0?a[0]-1:a[a.length-1]+1);var i=l[0].rows;for(t=0,n=i.length;n>t&&!(o=i[t].cells[r]);t++);return o?p(o):l.prev()}function l(t){var n;if(t instanceof u.Selection){var o=e(t),i=a(o);for(n=o.length-1;n>=0;n--)o[n]&&l(o[n]);return i}if(t instanceof p){var d=t.parent("table");if(!d)return null;var s=t[0].cellIndex;for(n=d[0].rows.length-1;n>=0;n--){var c=p(d[0].rows[n]);s||1!==c[0].cells.length?c[0].cells[s]&&c[0].removeChild(c[0].cells[s]):r(c)}}return null}function i(e,t){var n=new u.Range(e[0].ownerDocument);n.moveToElementEditablePosition(e,t?!0:void 0)||(n.selectNodeContents(e),n.collapse(t?!1:!0)),n.select(!0)}function d(e){var t=e.getSelection(),n=t&&t.getStartElement(),r=n&&n.closest("table",void 0);if(!r)return void 0;var o=n.closest(function(e){var t=b.nodeName(e);return r.contains(e)&&("td"===t||"th"===t)},void 0),a=n.closest(function(e){var t=b.nodeName(e);return r.contains(e)&&"tr"===t},void 0);return{table:r,td:o,tr:a}}function s(e){var t=d(e);return t&&t.td}function c(e){var t=d(e);return t&&t.tr}function v(e){this.config=e||{}}var u=require("editor"),f=u.Walker,h=require("./dialog-loader");require("./contextmenu"),require("./button");var m=require("util"),g=require("ua"),b=require("dom"),p=require("node"),x=["tr","th","td","tbody","table"],C=/^(?:td|th)$/,S=g.ieMode<11,w={"表格属性":d,"删除表格":s,"删除列":s,"删除行":c,"在上方插入行":c,"在下方插入行":c,"在左侧插入列":s,"在右侧插入列":s},N="ke_show_border",k=(6===g.ie?["table.%2,","table.%2 td, table.%2 th,","{","border : #d3d3d3 1px dotted","}"]:[" table.%2,"," table.%2 > tr > td, table.%2 > tr > th,"," table.%2 > tbody > tr > td, table.%2 > tbody > tr > th,"," table.%2 > thead > tr > td, table.%2 > thead > tr > th,"," table.%2 > tfoot > tr > td, table.%2 > tfoot > tr > th","{","border : #d3d3d3 1px dotted","}"]).join(""),A=k.replace(/%2/g,N),E={tags:{table:function(e){var t=e.getAttribute("class"),n=parseInt(e.getAttribute("border"),10);(!n||0>=n)&&e.setAttribute("class",m.trim((t||"")+" "+N))}}},_={tags:{table:function(e){var t,n=e.getAttribute("class");n&&(t=m.trim(n.replace(N,"")),t?e.setAttribute("class",t):e.removeAttribute("class"))}}};m.augment(v,{pluginRenderUI:function(e){e.addCustomStyle(A);var t=e.htmlDataProcessor,a=t&&t.dataFilter,s=t&&t.htmlFilter;a.addRules(E),s.addRules(_);var c=this,v={"表格属性":function(){this.hide();var t=d(e);t&&h.useDialog(e,"table",c.config,{selectedTable:t.table,selectedTd:t.td})},"删除表格":function(){this.hide();var t=e.getSelection(),n=t&&t.getStartElement(),r=n&&n.closest("table",void 0);if(r){e.execCommand("save"),t.selectElement(r);var o=t.getRanges()[0];o.collapse(),t.selectRanges([o]);var a=r.parent();1===a[0].childNodes.length&&"body"!==a.nodeName()&&"td"!==a.nodeName()?a.remove():r.remove(),e.execCommand("save")}},"删除行 ":function(){this.hide(),e.execCommand("save");var t=e.getSelection();i(r(t),void 0),e.execCommand("save")},"删除列 ":function(){this.hide(),e.execCommand("save");var t=e.getSelection(),n=l(t);n&&i(n,!0),e.execCommand("save")},"在上方插入行":function(){this.hide(),e.execCommand("save");var t=e.getSelection();n(t,!0),e.execCommand("save")},"在下方插入行":function(){this.hide(),e.execCommand("save");var t=e.getSelection();n(t,void 0),e.execCommand("save")},"在左侧插入列":function(){this.hide(),e.execCommand("save");var t=e.getSelection();o(t,!0),e.execCommand("save")},"在右侧插入列":function(){this.hide(),e.execCommand("save");var t=e.getSelection();o(t,void 0),e.execCommand("save")}},f=[];m.each(v,function(e,t){f.push({content:t})}),e.addContextMenu("table",function(e){return m.inArray(b.nodeName(e),x)?!0:void 0},{width:"120px",children:f,listeners:{click:function(e){var t=e.target.get("content");v[t]&&v[t].apply(this)},beforeVisibleChange:function(e){if(e.newVal){var t=this,n=t.get("children"),r=t.get("editor");m.each(n,function(e){var n=e.get("content");!w[n]||w[n].call(t,r)?e.set("disabled",!1):e.set("disabled",!0)})}}}}),e.addButton("table",{mode:u.Mode.WYSIWYG_MODE,listeners:{click:function(){h.useDialog(e,"table",c.config,{selectedTable:0,selectedTd:0})}},tooltip:"插入表格"})}}),module.exports=v;});
function jo(value, replacerFunction, propertyList, gap, stack, indent) { _$jscoverage['/json/stringify.js'].functionData[3]++; _$jscoverage['/json/stringify.js'].lineData[57]++; if (visit61_57_1('@DEBUG@')) { _$jscoverage['/json/stringify.js'].lineData[58]++; if (visit62_58_1(util.inArray(value, stack))) { _$jscoverage['/json/stringify.js'].lineData[59]++; throw new TypeError('cyclic json'); } _$jscoverage['/json/stringify.js'].lineData[61]++; stack[stack.length] = value; } _$jscoverage['/json/stringify.js'].lineData[64]++; var stepBack = indent; _$jscoverage['/json/stringify.js'].lineData[65]++; indent += gap; _$jscoverage['/json/stringify.js'].lineData[66]++; var k, kl, i, p; _$jscoverage['/json/stringify.js'].lineData[67]++; if (visit63_67_1(propertyList !== undefined)) { _$jscoverage['/json/stringify.js'].lineData[68]++; k = propertyList; } else { _$jscoverage['/json/stringify.js'].lineData[70]++; k = util.keys(value); } _$jscoverage['/json/stringify.js'].lineData[72]++; var partial = []; _$jscoverage['/json/stringify.js'].lineData[73]++; for (i = 0 , kl = k.length; visit64_73_1(i < kl); i++) { _$jscoverage['/json/stringify.js'].lineData[74]++; p = k[i]; _$jscoverage['/json/stringify.js'].lineData[75]++; var strP = str(p, value, replacerFunction, propertyList, gap, stack, indent); _$jscoverage['/json/stringify.js'].lineData[76]++; if (visit65_76_1(strP !== undefined)) { _$jscoverage['/json/stringify.js'].lineData[77]++; var member = Quote.quote(p); _$jscoverage['/json/stringify.js'].lineData[78]++; member += ':'; _$jscoverage['/json/stringify.js'].lineData[79]++; if (visit66_79_1(gap)) { _$jscoverage['/json/stringify.js'].lineData[80]++; member += ' '; } _$jscoverage['/json/stringify.js'].lineData[82]++; member += strP; _$jscoverage['/json/stringify.js'].lineData[83]++; partial[partial.length] = member; } } _$jscoverage['/json/stringify.js'].lineData[86]++; var ret; _$jscoverage['/json/stringify.js'].lineData[87]++; if (visit67_87_1(!partial.length)) { _$jscoverage['/json/stringify.js'].lineData[88]++; ret = '{}'; } else { _$jscoverage['/json/stringify.js'].lineData[90]++; if (visit68_90_1(!gap)) { _$jscoverage['/json/stringify.js'].lineData[91]++; ret = '{' + partial.join(',') + '}'; } else { _$jscoverage['/json/stringify.js'].lineData[93]++; var separator = ',\n' + indent; _$jscoverage['/json/stringify.js'].lineData[94]++; var properties = partial.join(separator); _$jscoverage['/json/stringify.js'].lineData[95]++; ret = '{\n' + indent + properties + '\n' + stepBack + '}'; } } _$jscoverage['/json/stringify.js'].lineData[98]++; if (visit69_98_1('@DEBUG@')) { _$jscoverage['/json/stringify.js'].lineData[99]++; stack.pop(); } _$jscoverage['/json/stringify.js'].lineData[101]++; return ret; }
$doc.on('mouseup', function (ev) { var control = $(ev.target); if (util.inArray(control.nodeName(), ['input', 'textarea'])) { ev.preventDefault(); } });
$doc.on('click', function (ev) { var control = $(ev.target); if (util.inArray(control.nodeName(), ['input', 'select'])) { ev.preventDefault(); } });
function ja(value, replacerFunction, propertyList, gap, stack, indent) { _$jscoverage['/json/stringify.js'].functionData[4]++; _$jscoverage['/json/stringify.js'].lineData[105]++; if (visit70_105_1('@DEBUG@')) { _$jscoverage['/json/stringify.js'].lineData[106]++; if (visit71_106_1(util.inArray(value, stack))) { _$jscoverage['/json/stringify.js'].lineData[107]++; throw new TypeError('cyclic json'); } _$jscoverage['/json/stringify.js'].lineData[109]++; stack[stack.length] = value; } _$jscoverage['/json/stringify.js'].lineData[111]++; var stepBack = indent; _$jscoverage['/json/stringify.js'].lineData[112]++; indent += gap; _$jscoverage['/json/stringify.js'].lineData[113]++; var partial = []; _$jscoverage['/json/stringify.js'].lineData[114]++; var len = value.length; _$jscoverage['/json/stringify.js'].lineData[115]++; var index = 0; _$jscoverage['/json/stringify.js'].lineData[116]++; while (visit72_116_1(index < len)) { _$jscoverage['/json/stringify.js'].lineData[117]++; var strP = str(String(index), value, replacerFunction, propertyList, gap, stack, indent); _$jscoverage['/json/stringify.js'].lineData[118]++; if (visit73_118_1(strP === undefined)) { _$jscoverage['/json/stringify.js'].lineData[119]++; partial[partial.length] = 'null'; } else { _$jscoverage['/json/stringify.js'].lineData[121]++; partial[partial.length] = strP; } _$jscoverage['/json/stringify.js'].lineData[123]++; ++index; } _$jscoverage['/json/stringify.js'].lineData[125]++; var ret; _$jscoverage['/json/stringify.js'].lineData[126]++; if (visit74_126_1(!partial.length)) { _$jscoverage['/json/stringify.js'].lineData[127]++; ret = '[]'; } else { _$jscoverage['/json/stringify.js'].lineData[129]++; if (visit75_129_1(!gap)) { _$jscoverage['/json/stringify.js'].lineData[130]++; ret = '[' + partial.join(',') + ']'; } else { _$jscoverage['/json/stringify.js'].lineData[132]++; var separator = '\n,' + indent; _$jscoverage['/json/stringify.js'].lineData[133]++; var properties = partial.join(separator); _$jscoverage['/json/stringify.js'].lineData[134]++; ret = '[\n' + indent + properties + '\n' + stepBack + ']'; } } _$jscoverage['/json/stringify.js'].lineData[137]++; if (visit76_137_1('@DEBUG@')) { _$jscoverage['/json/stringify.js'].lineData[138]++; stack.pop(); } _$jscoverage['/json/stringify.js'].lineData[141]++; return ret; }
function enterBlock(editor) { _$jscoverage['/editor/enter-key.js'].functionData[2]++; _$jscoverage['/editor/enter-key.js'].lineData[35]++; var range = getRange(editor); _$jscoverage['/editor/enter-key.js'].lineData[36]++; var doc = range.document; _$jscoverage['/editor/enter-key.js'].lineData[37]++; var path = new ElementPath(range.startContainer), isStartOfBlock = range.checkStartOfBlock(), isEndOfBlock = range.checkEndOfBlock(), block = path.block; _$jscoverage['/editor/enter-key.js'].lineData[42]++; if (visit298_42_1(isStartOfBlock && isEndOfBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[44]++; if (visit299_44_1(block && (visit300_44_2(visit301_44_3(block.nodeName() === 'li') || visit302_44_4(block.parent().nodeName() === 'li'))))) { _$jscoverage['/editor/enter-key.js'].lineData[45]++; if (visit303_45_1(editor.hasCommand('outdent'))) { _$jscoverage['/editor/enter-key.js'].lineData[46]++; editor.execCommand('save'); _$jscoverage['/editor/enter-key.js'].lineData[47]++; editor.execCommand('outdent'); _$jscoverage['/editor/enter-key.js'].lineData[48]++; editor.execCommand('save'); _$jscoverage['/editor/enter-key.js'].lineData[49]++; return true; } else { _$jscoverage['/editor/enter-key.js'].lineData[51]++; return false; } } } else { _$jscoverage['/editor/enter-key.js'].lineData[54]++; if (visit304_54_1(block && visit305_54_2(block.nodeName() === 'pre'))) { _$jscoverage['/editor/enter-key.js'].lineData[56]++; if (visit306_56_1(!isEndOfBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[58]++; var lineBreak = visit307_58_1(UA.ieMode < 9) ? $(doc.createTextNode('\r')) : $(doc.createElement('br')); _$jscoverage['/editor/enter-key.js'].lineData[59]++; range.insertNode(lineBreak); _$jscoverage['/editor/enter-key.js'].lineData[60]++; if (visit308_60_1(UA.ieMode < 9)) { _$jscoverage['/editor/enter-key.js'].lineData[62]++; lineBreak = $(doc.createTextNode('\ufeff')).insertAfter(lineBreak); _$jscoverage['/editor/enter-key.js'].lineData[63]++; range.setStartAt(lineBreak, Editor.RangeType.POSITION_AFTER_START); } else { _$jscoverage['/editor/enter-key.js'].lineData[65]++; range.setStartAfter(lineBreak); } _$jscoverage['/editor/enter-key.js'].lineData[67]++; range.collapse(true); _$jscoverage['/editor/enter-key.js'].lineData[68]++; range.select(); _$jscoverage['/editor/enter-key.js'].lineData[69]++; if (visit309_69_1(UA.ieMode < 9)) { _$jscoverage['/editor/enter-key.js'].lineData[70]++; lineBreak[0].nodeValue = ''; } _$jscoverage['/editor/enter-key.js'].lineData[72]++; return; } } } _$jscoverage['/editor/enter-key.js'].lineData[77]++; var blockTag = 'p'; _$jscoverage['/editor/enter-key.js'].lineData[80]++; var splitInfo = range.splitBlock(blockTag); _$jscoverage['/editor/enter-key.js'].lineData[82]++; if (visit310_82_1(!splitInfo)) { _$jscoverage['/editor/enter-key.js'].lineData[83]++; return true; } _$jscoverage['/editor/enter-key.js'].lineData[87]++; var previousBlock = splitInfo.previousBlock, nextBlock = splitInfo.nextBlock; _$jscoverage['/editor/enter-key.js'].lineData[90]++; isStartOfBlock = splitInfo.wasStartOfBlock; _$jscoverage['/editor/enter-key.js'].lineData[91]++; isEndOfBlock = splitInfo.wasEndOfBlock; _$jscoverage['/editor/enter-key.js'].lineData[93]++; var node; _$jscoverage['/editor/enter-key.js'].lineData[96]++; if (visit311_96_1(nextBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[97]++; node = nextBlock.parent(); _$jscoverage['/editor/enter-key.js'].lineData[98]++; if (visit312_98_1(node.nodeName() === 'li')) { _$jscoverage['/editor/enter-key.js'].lineData[99]++; nextBlock._4eBreakParent(node); _$jscoverage['/editor/enter-key.js'].lineData[100]++; nextBlock._4eMove(nextBlock.next(), true); } } else { _$jscoverage['/editor/enter-key.js'].lineData[102]++; if (visit313_102_1(previousBlock && visit314_102_2((node = previousBlock.parent()) && visit315_102_3(node.nodeName() === 'li')))) { _$jscoverage['/editor/enter-key.js'].lineData[103]++; previousBlock._4eBreakParent(node); _$jscoverage['/editor/enter-key.js'].lineData[104]++; range.moveToElementEditablePosition(previousBlock.next()); _$jscoverage['/editor/enter-key.js'].lineData[105]++; previousBlock._4eMove(previousBlock.prev()); } } _$jscoverage['/editor/enter-key.js'].lineData[108]++; var newBlock; _$jscoverage['/editor/enter-key.js'].lineData[113]++; if (visit316_113_1(!isStartOfBlock && !isEndOfBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[117]++; if (visit317_117_1(visit318_117_2(nextBlock.nodeName() === 'li') && visit319_118_1((node = nextBlock.first(Walker.invisible(true))) && util.inArray(node.nodeName(), ['ul', 'ol'])))) { _$jscoverage['/editor/enter-key.js'].lineData[120]++; (OLD_IE ? new Node(doc.createTextNode('\xa0')) : new Node(doc.createElement('br'))).insertBefore(node); } _$jscoverage['/editor/enter-key.js'].lineData[125]++; if (visit320_125_1(nextBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[126]++; range.moveToElementEditablePosition(nextBlock); } } else { _$jscoverage['/editor/enter-key.js'].lineData[129]++; if (visit321_129_1(previousBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[134]++; if (visit322_134_1(visit323_134_2(previousBlock.nodeName() === 'li') || !(headerPreTagRegex.test(previousBlock.nodeName())))) { _$jscoverage['/editor/enter-key.js'].lineData[136]++; newBlock = previousBlock.clone(); } } else { _$jscoverage['/editor/enter-key.js'].lineData[138]++; if (visit324_138_1(nextBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[139]++; newBlock = nextBlock.clone(); } } _$jscoverage['/editor/enter-key.js'].lineData[142]++; if (visit325_142_1(!newBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[143]++; newBlock = new Node('<' + blockTag + '>', null, doc); } _$jscoverage['/editor/enter-key.js'].lineData[149]++; var elementPath = splitInfo.elementPath; _$jscoverage['/editor/enter-key.js'].lineData[150]++; if (visit326_150_1(elementPath)) { _$jscoverage['/editor/enter-key.js'].lineData[151]++; for (var i = 0, len = elementPath.elements.length; visit327_151_1(i < len); i++) { _$jscoverage['/editor/enter-key.js'].lineData[152]++; var element = elementPath.elements[i]; _$jscoverage['/editor/enter-key.js'].lineData[154]++; if (visit328_154_1(element.equals(elementPath.block) || element.equals(elementPath.blockLimit))) { _$jscoverage['/editor/enter-key.js'].lineData[156]++; break; } _$jscoverage['/editor/enter-key.js'].lineData[159]++; if (visit329_159_1(dtd.$removeEmpty[element.nodeName()])) { _$jscoverage['/editor/enter-key.js'].lineData[160]++; element = element.clone(); _$jscoverage['/editor/enter-key.js'].lineData[161]++; newBlock._4eMoveChildren(element); _$jscoverage['/editor/enter-key.js'].lineData[162]++; newBlock.append(element); } } } _$jscoverage['/editor/enter-key.js'].lineData[167]++; if (visit330_167_1(!OLD_IE)) { _$jscoverage['/editor/enter-key.js'].lineData[168]++; newBlock._4eAppendBogus(); } _$jscoverage['/editor/enter-key.js'].lineData[171]++; range.insertNode(newBlock); _$jscoverage['/editor/enter-key.js'].lineData[178]++; if (visit331_178_1(OLD_IE && visit332_178_2(isStartOfBlock && (visit333_178_3(!isEndOfBlock || !previousBlock[0].childNodes.length))))) { _$jscoverage['/editor/enter-key.js'].lineData[180]++; range.moveToElementEditablePosition(isEndOfBlock ? previousBlock : newBlock); _$jscoverage['/editor/enter-key.js'].lineData[181]++; range.select(); } _$jscoverage['/editor/enter-key.js'].lineData[185]++; range.moveToElementEditablePosition(visit334_185_1(isStartOfBlock && !isEndOfBlock) ? nextBlock : newBlock); } _$jscoverage['/editor/enter-key.js'].lineData[188]++; if (visit335_188_1(!OLD_IE)) { _$jscoverage['/editor/enter-key.js'].lineData[189]++; if (visit336_189_1(nextBlock)) { _$jscoverage['/editor/enter-key.js'].lineData[192]++; var tmpNode = new Node(doc.createElement('span')); _$jscoverage['/editor/enter-key.js'].lineData[195]++; tmpNode.html(' '); _$jscoverage['/editor/enter-key.js'].lineData[197]++; range.insertNode(tmpNode); _$jscoverage['/editor/enter-key.js'].lineData[198]++; tmpNode.scrollIntoView(undefined, { alignWithTop: false, allowHorizontalScroll: true, onlyScrollIfNeeded: true}); _$jscoverage['/editor/enter-key.js'].lineData[203]++; range.deleteContents(); } else { _$jscoverage['/editor/enter-key.js'].lineData[207]++; newBlock.scrollIntoView(undefined, { alignWithTop: false, allowHorizontalScroll: true, onlyScrollIfNeeded: true}); } } _$jscoverage['/editor/enter-key.js'].lineData[214]++; range.select(); _$jscoverage['/editor/enter-key.js'].lineData[215]++; return true; }