mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-29 08:34:54 +00:00
68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
|
/*!
|
||
|
* VisualEditor MWWikitextDataTransferHandlerFactory class.
|
||
|
*
|
||
|
* @copyright 2011-2016 VisualEditor Team and others; see http://ve.mit-license.org
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Drop handler Factory.
|
||
|
*
|
||
|
* @class
|
||
|
* @extends ve.ui.DataTransferHandlerFactory
|
||
|
* @constructor
|
||
|
*/
|
||
|
ve.ui.MWWikitextDataTransferHandlerFactory = function VeUiMwWikitextDataTransferHandlerFactory() {
|
||
|
var name,
|
||
|
factory = this;
|
||
|
|
||
|
// Parent constructor
|
||
|
ve.ui.MWWikitextDataTransferHandlerFactory.super.apply( this, arguments );
|
||
|
|
||
|
for ( name in ve.ui.dataTransferHandlerFactory.registry ) {
|
||
|
this.register( ve.ui.dataTransferHandlerFactory.registry[ name ] );
|
||
|
}
|
||
|
|
||
|
ve.ui.dataTransferHandlerFactory.on( 'register', function ( name, data ) {
|
||
|
factory.register( data );
|
||
|
} );
|
||
|
};
|
||
|
|
||
|
/* Inheritance */
|
||
|
|
||
|
OO.inheritClass( ve.ui.MWWikitextDataTransferHandlerFactory, ve.ui.DataTransferHandlerFactory );
|
||
|
|
||
|
/* Methods */
|
||
|
|
||
|
/**
|
||
|
* @inheritdoc
|
||
|
*/
|
||
|
ve.ui.MWWikitextDataTransferHandlerFactory.prototype.create = function () {
|
||
|
// Parent method
|
||
|
var doc,
|
||
|
handler = ve.ui.MWWikitextDataTransferHandlerFactory.super.prototype.create.apply( this, arguments ),
|
||
|
resolve = handler.resolve.bind( handler );
|
||
|
|
||
|
function isPlain( data ) {
|
||
|
return typeof data === 'string' || ve.dm.LinearData.static.getType( data ) === 'paragraph';
|
||
|
}
|
||
|
|
||
|
handler.resolve = function ( dataOrDoc ) {
|
||
|
if ( typeof dataOrDoc === 'string' || ( Array.isArray( dataOrDoc ) && dataOrDoc.every( isPlain ) ) ) {
|
||
|
resolve( dataOrDoc );
|
||
|
} else {
|
||
|
doc = dataOrDoc instanceof ve.dm.Document ? dataOrDoc : new ve.dm.Document( dataOrDoc );
|
||
|
ve.init.target.getWikitextFragment( doc )
|
||
|
.done( resolve )
|
||
|
.fail( function () {
|
||
|
handler.abort();
|
||
|
} );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return handler;
|
||
|
};
|
||
|
|
||
|
/* Initialization */
|
||
|
|
||
|
ve.ui.wikitextDataTransferHandlerFactory = new ve.ui.MWWikitextDataTransferHandlerFactory();
|