示例#1
0
文件: event.js 项目: Snger/kissy
        (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');
 });
示例#3
0
文件: index.js 项目: Snger/kissy
        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);
        });
示例#4
0
  _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', '');
  }
}, 
示例#5
0
文件: custom.js 项目: jiang-nan/kissy
 addTarget: function (anotherTarget) {
     var self = this, targets = self.getTargets();
     if (!util.inArray(anotherTarget, targets)) {
         targets.push(anotherTarget);
     }
     return self;
 },
示例#6
0
 _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', '');
     }
 },
示例#7
0
 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);
       }
     }
   }
 }
示例#8
0
 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;
 },
示例#9
0
文件: basic.js 项目: 410675629/kissy
                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;
                }
示例#10
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);
        })();
示例#11
0
文件: event.js 项目: Snger/kissy
        (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);
        })();
示例#12
0
文件: base.js 项目: yitusandan/kissy
    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;
    }
示例#13
0
文件: base.js 项目: zvenshy/io
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;
}
示例#14
0
文件: json.js 项目: VinceHu/kissy
 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;
 }
示例#15
0
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);
            }
        }
    }
}
示例#16
0
文件: style.js 项目: Gumpg/kissy
 } : 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');
             }
         }
     }
 },
示例#17
0
文件: json.js 项目: VinceHu/kissy
 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;
 }
示例#18
0
文件: editor.js 项目: Fazich/editor
 $doc.on('mousedown', function (ev) {
     var control = $(ev.target);
     if (util.inArray(control.nodeName(), ['img', 'hr', 'input', 'textarea', 'select'])) {
         self.getSelection().selectElement(control);
     }
 });
示例#19
0
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('&nbsp;');

            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;
     }
 }, {
示例#21
0
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;});
示例#22
0
 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;
 }
示例#23
0
文件: editor.js 项目: Fazich/editor
 $doc.on('mouseup', function (ev) {
     var control = $(ev.target);
     if (util.inArray(control.nodeName(), ['input', 'textarea'])) {
         ev.preventDefault();
     }
 });
示例#24
0
文件: editor.js 项目: Fazich/editor
 $doc.on('click', function (ev) {
     var control = $(ev.target);
     if (util.inArray(control.nodeName(), ['input', 'select'])) {
         ev.preventDefault();
     }
 });
示例#25
0
 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;
 }
示例#26
0
 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('&nbsp;');
       _$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;
 }