%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/VisualEditor/lib/ve/src/dm/ |
| Current File : //www/varak.net/wiki.varak.net/extensions/VisualEditor/lib/ve/src/dm/ve.dm.Selection.js |
/*!
* VisualEditor Selection class.
*
* @copyright 2011-2016 VisualEditor Team and others; see http://ve.mit-license.org
*/
/**
* @class
* @abstract
* @constructor
* @param {ve.dm.Document} doc Document
*/
ve.dm.Selection = function VeDmSelection( doc ) {
this.documentModel = doc;
};
/* Inheritance */
OO.initClass( ve.dm.Selection );
/* Static Properties */
ve.dm.Selection.static.type = null;
/* Static Methods */
/**
* Create a new selection from a JSON serialization
*
* @param {ve.dm.Document} doc Document to create the selection on
* @param {string|Object} json JSON serialization or hash object
* @return {ve.dm.Selection} New selection
* @throws {Error} Unknown selection type
*/
ve.dm.Selection.static.newFromJSON = function ( doc, json ) {
var hash = typeof json === 'string' ? JSON.parse( json ) : json,
constructor = ve.dm.selectionFactory.lookup( hash.type );
if ( !constructor ) {
throw new Error( 'Unknown selection type ' + hash.name );
}
return constructor.static.newFromHash( doc, hash );
};
/**
* Create a new selection from a hash object
*
* @abstract
* @method
* @param {ve.dm.Document} doc Document to create the selection on
* @param {Object} hash Hash object
* @return {ve.dm.Selection} New selection
*/
ve.dm.Selection.static.newFromHash = null;
/* Methods */
/**
* Get a JSON serialization of this selection
*
* @abstract
* @method
* @return {Object} Object for JSON serialization
*/
ve.dm.Selection.prototype.toJSON = null;
/**
* Get a textual description of this selection, for debugging purposes
*
* @abstract
* @method
* @return {string} Textual description
*/
ve.dm.Selection.prototype.getDescription = null;
/**
* Create a copy of this selection
*
* @abstract
* @method
* @return {ve.dm.Selection} Cloned selection
*/
ve.dm.Selection.prototype.clone = null;
/**
* Get a new selection at the start point of this one
*
* @abstract
* @method
* @return {ve.dm.Selection} Collapsed selection
*/
ve.dm.Selection.prototype.collapseToStart = null;
/**
* Get a new selection at the end point of this one
*
* @abstract
* @method
* @return {ve.dm.Selection} Collapsed selection
*/
ve.dm.Selection.prototype.collapseToEnd = null;
/**
* Get a new selection at the 'from' point of this one
*
* @abstract
* @method
* @return {ve.dm.Selection} Collapsed selection
*/
ve.dm.Selection.prototype.collapseToFrom = null;
/**
* Get a new selection at the 'to' point of this one
*
* @abstract
* @method
* @return {ve.dm.Selection} Collapsed selection
*/
ve.dm.Selection.prototype.collapseToTo = null;
/**
* Check if a selection is collapsed
*
* @abstract
* @method
* @return {boolean} Selection is collapsed
*/
ve.dm.Selection.prototype.isCollapsed = null;
/**
* Apply translations from a transaction
*
* @abstract
* @method
* @param {ve.dm.Transaction} tx Transaction
* @param {boolean} [excludeInsertion] Do not grow to cover insertions at boundaries
* @return {ve.dm.Selection} A new translated selection
*/
ve.dm.Selection.prototype.translateByTransaction = null;
/**
* Apply translations from a set of transactions
*
* @param {ve.dm.Transaction[]} txs Transactions
* @param {boolean} [excludeInsertion] Do not grow to cover insertions at boundaries
* @return {ve.dm.Selection} A new translated selection
*/
ve.dm.Selection.prototype.translateByTransactions = function ( txs, excludeInsertion ) {
var i, l, selection = this;
for ( i = 0, l = txs.length; i < l; i++ ) {
selection = selection.translateByTransaction( txs[ i ], excludeInsertion );
}
return selection;
};
/**
* Check if this selection is null
*
* @return {boolean} The selection is null
*/
ve.dm.Selection.prototype.isNull = function () {
return false;
};
/**
* Get the content ranges for this selection
*
* @abstract
* @method
* @return {ve.Range[]} Ranges
*/
ve.dm.Selection.prototype.getRanges = null;
/**
* Get the covering linear range for this selection
*
* @abstract
* @method
* @return {ve.Range|null} Covering range, if not null
*/
ve.dm.Selection.prototype.getCoveringRange = null;
/**
* Get the document model this selection applies to
*
* @return {ve.dm.Document} Document model
*/
ve.dm.Selection.prototype.getDocument = function () {
return this.documentModel;
};
/**
* Get the name of the selection type
*
* @return {string} Selection type name
*/
ve.dm.Selection.prototype.getName = function () {
return this.constructor.static.name;
};
/**
* Check if two selections are equal
*
* @abstract
* @method
* @param {ve.dm.Selection} other Other selection
* @return {boolean} Selections are equal
*/
ve.dm.Selection.prototype.equals = null;
/* Factory */
ve.dm.selectionFactory = new OO.Factory();