Example #1
0
 append: INSERTION(function(node) {
     var last = _.last(this.contents());
     if(last && last.nodeType === Node.TEXT_NODE && node.nodeType === Node.TEXT_NODE) {
         last.setText(last.getText() + node.getText());
         node.detach();
         return last;
     } else {
         this._$.append(node.nativeNode);
         return node;
     }
 }),
Example #2
0
            doc.transaction(function() {
                var wrapper = params.fragment.startNode.parent().wrapText({
                        _with: {tagName: 'aside', attrs: {'class': 'gap'}},
                        offsetStart: params.fragment.startOffset,
                        offsetEnd: params.fragment.endOffset,
                        textNodeIdx: [params.fragment.startNode.getIndex(), params.fragment.endNode.getIndex()]
                    }),
                    last = _.last(wrapper.contents());

                return doc.createFragment(doc.CaretFragment, {node: last, offset: last.getText().length});
            }, {
Example #3
0
 execute: function(callback, params) {
     var metadata = _.last(params.document[dir+'Stack']).metadata,
         fragment = metadata && metadata.fragment;
     params.document[dir]();
     if(fragment) {
         if(!fragment.isValid()) {
             fragment.restoreFromPaths();
         }
         if(fragment.isValid()) {
             callback(fragment);
         }
     }
     callback();
 },
Example #4
0
 getState: function(params) {
     var allowed = params.document && !!(params.document[dir+'Stack'].length),
         desc = dir === 'undo' ? gettext('Undo') : gettext('Redo'),
         descEmpty = dir === 'undo' ? gettext('There is nothing to undo') : gettext('There is nothing to redo');
     if(allowed) {
         var metadata = _.last(params.document[dir+'Stack']).metadata;
         if(metadata) {
             desc += ': ' + (metadata.description || gettext('unknown operation'));
         }
     }
     return {
         allowed: allowed,
         description: allowed ? desc : descEmpty
     };
 }
Example #5
0
 extractAllItems: function() {
     var contents = this.contents();
     return this.document.extractItems({item1: contents[0], item2: _.last(contents)});
 }