%PDF- %PDF-
Direktori : /www/varak.net/wiki.varak.net/extensions/VisualEditor/lib/ve/src/ui/actions/ |
Current File : /www/varak.net/wiki.varak.net/extensions/VisualEditor/lib/ve/src/ui/actions/ve.ui.FormatAction.js |
/*! * VisualEditor UserInterface FormatAction class. * * @copyright 2011-2016 VisualEditor Team and others; see http://ve.mit-license.org */ /** * Format action. * * @class * @extends ve.ui.Action * * @constructor * @param {ve.ui.Surface} surface Surface to act on */ ve.ui.FormatAction = function VeUiFormatAction() { // Parent constructor ve.ui.FormatAction.super.apply( this, arguments ); }; /* Inheritance */ OO.inheritClass( ve.ui.FormatAction, ve.ui.Action ); /* Static Properties */ ve.ui.FormatAction.static.name = 'format'; /** * List of allowed methods for this action. * * @static * @property */ ve.ui.FormatAction.static.methods = [ 'convert' ]; /* Methods */ /** * Convert the format of content. * * Conversion splits and unwraps all lists and replaces content branch nodes. * * TODO: Refactor functionality into {ve.dm.SurfaceFragment}. * * @param {string} type * @param {Object} attributes * @return {boolean} Action was executed */ ve.ui.FormatAction.prototype.convert = function ( type, attributes ) { var selected, i, length, contentBranch, surfaceModel = this.surface.getModel(), fragment = surfaceModel.getFragment(), fragments = []; if ( !( fragment.getSelection() instanceof ve.dm.LinearSelection ) ) { return; } // We can't have headings or pre's in a list, so if we're trying to convert // things that are in lists to a heading or a pre, split the list selected = fragment.getLeafNodes(); for ( i = 0, length = selected.length; i < length; i++ ) { contentBranch = selected[ i ].node.isContent() ? selected[ i ].node.getParent() : selected[ i ].node; fragments.push( surfaceModel.getLinearFragment( contentBranch.getOuterRange(), true ) ); } for ( i = 0, length = fragments.length; i < length; i++ ) { fragments[ i ].isolateAndUnwrap( type ); } fragment.convertNodes( type, attributes ); this.surface.getView().focus(); return true; }; /* Registration */ ve.ui.actionFactory.register( ve.ui.FormatAction );