Simplify VE inspector code by extending new MWLiveExtensionInspector
All live preview logic has been moved to ve.ui.MWLiveExtensionInspector so so this can be simplified down to just static configuration. Depends on I708c4cb012be in VE-MW. Change-Id: I24b4788e97411eec18161709ca5d47c87d3f64da
This commit is contained in:
parent
f2d546555c
commit
c12523f908
|
@ -1,7 +1,7 @@
|
||||||
/*!
|
/*!
|
||||||
* VisualEditor UserInterface MWMathInspector class.
|
* VisualEditor UserInterface MWMathInspector class.
|
||||||
*
|
*
|
||||||
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
|
* @copyright 2011-2014 VisualEditor Team and others; see AUTHORS.txt
|
||||||
* @license The MIT License (MIT); see LICENSE.txt
|
* @license The MIT License (MIT); see LICENSE.txt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -11,21 +11,19 @@
|
||||||
* MediaWiki math inspector.
|
* MediaWiki math inspector.
|
||||||
*
|
*
|
||||||
* @class
|
* @class
|
||||||
* @extends ve.ui.MWExtensionInspector
|
* @extends ve.ui.MWLiveExtensionInspector
|
||||||
*
|
*
|
||||||
* @constructor
|
* @constructor
|
||||||
* @param {Object} [config] Configuration options
|
* @param {Object} [config] Configuration options
|
||||||
*/
|
*/
|
||||||
ve.ui.MWMathInspector = function VeUiMWMathInspector( config ) {
|
ve.ui.MWMathInspector = function VeUiMWMathInspector( config ) {
|
||||||
// Parent constructor
|
// Parent constructor
|
||||||
ve.ui.MWExtensionInspector.call( this, config );
|
ve.ui.MWLiveExtensionInspector.call( this, config );
|
||||||
|
|
||||||
this.onChangeHandler = ve.debounce( ve.bind( this.updatePreview, this ), 250 );
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Inheritance */
|
/* Inheritance */
|
||||||
|
|
||||||
OO.inheritClass( ve.ui.MWMathInspector, ve.ui.MWExtensionInspector );
|
OO.inheritClass( ve.ui.MWMathInspector, ve.ui.MWLiveExtensionInspector );
|
||||||
|
|
||||||
/* Static properties */
|
/* Static properties */
|
||||||
|
|
||||||
|
@ -35,86 +33,9 @@ ve.ui.MWMathInspector.static.icon = 'math';
|
||||||
|
|
||||||
ve.ui.MWMathInspector.static.title = OO.ui.deferMsg( 'math-visualeditor-mwmathinspector-title' );
|
ve.ui.MWMathInspector.static.title = OO.ui.deferMsg( 'math-visualeditor-mwmathinspector-title' );
|
||||||
|
|
||||||
ve.ui.MWMathInspector.static.nodeView = ve.ce.MWMathNode;
|
|
||||||
|
|
||||||
ve.ui.MWMathInspector.static.nodeModel = ve.dm.MWMathNode;
|
ve.ui.MWMathInspector.static.nodeModel = ve.dm.MWMathNode;
|
||||||
|
|
||||||
/* Methods */
|
ve.ui.MWMathInspector.static.dir = 'ltr';
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the math node rendering to reflect the content entered into the inspector.
|
|
||||||
*/
|
|
||||||
ve.ui.MWMathInspector.prototype.updatePreview = function () {
|
|
||||||
var mwData = ve.copy( this.node.getAttribute( 'mw' ) ),
|
|
||||||
newsrc = this.input.getValue();
|
|
||||||
|
|
||||||
mwData.body.extsrc = newsrc;
|
|
||||||
|
|
||||||
if ( this.visible ) {
|
|
||||||
this.getFragment().changeAttributes( { 'mw': mwData } );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritdoc
|
|
||||||
*/
|
|
||||||
ve.ui.MWMathInspector.prototype.setup = function ( data ) {
|
|
||||||
// Parent method
|
|
||||||
ve.ui.MWExtensionInspector.prototype.setup.call( this, data );
|
|
||||||
|
|
||||||
this.getFragment().getSurface().pushStaging();
|
|
||||||
|
|
||||||
var mwData;
|
|
||||||
|
|
||||||
this.node = this.getFragment().getSelectedNode();
|
|
||||||
if ( !this.node || !( this.node instanceof ve.dm.MWMathNode ) ) {
|
|
||||||
// Create a dummy node, needed for live preview
|
|
||||||
mwData = {
|
|
||||||
'name': 'math',
|
|
||||||
'attrs': {},
|
|
||||||
'body': {
|
|
||||||
'extsrc': ''
|
|
||||||
}
|
|
||||||
};
|
|
||||||
this.getFragment().collapseRangeToEnd().insertContent( [
|
|
||||||
{
|
|
||||||
'type': 'mwMath',
|
|
||||||
'attributes': {
|
|
||||||
'mw': mwData
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ 'type': '/mwMath' }
|
|
||||||
] );
|
|
||||||
this.node = this.getFragment().getSelectedNode();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.input.on( 'change', this.onChangeHandler );
|
|
||||||
|
|
||||||
// Override directionality settings, inspector's input
|
|
||||||
// should always be LTR:
|
|
||||||
this.input.setRTL( false );
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritdoc
|
|
||||||
*/
|
|
||||||
ve.ui.MWMathInspector.prototype.teardown = function ( data ) {
|
|
||||||
var newsrc = this.input.getValue(),
|
|
||||||
surfaceModel = this.getFragment().getSurface();
|
|
||||||
|
|
||||||
this.input.off( 'change', this.onChangeHandler );
|
|
||||||
|
|
||||||
this.getFragment().getSurface().applyStaging();
|
|
||||||
|
|
||||||
if ( newsrc === '' ) {
|
|
||||||
// The user tried to empty the node, remove it
|
|
||||||
surfaceModel.change( ve.dm.Transaction.newFromRemoval(
|
|
||||||
surfaceModel.getDocument(), this.node.getOuterRange()
|
|
||||||
) );
|
|
||||||
}
|
|
||||||
// Grandparent method; we're overriding the parent behavior with applyStaging
|
|
||||||
ve.ui.Inspector.prototype.teardown.call( this, data );
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Registration */
|
/* Registration */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue