mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-12-05 03:08:37 +00:00
e3659d4846
Change-Id: Ia05b27f7c71c33580ffd0718e3bbc673dd8b3d63
78 lines
1.7 KiB
JavaScript
78 lines
1.7 KiB
JavaScript
/*!
|
|
* VisualEditor ContentEditable MWHeadingNode class.
|
|
*
|
|
* @copyright See AUTHORS.txt
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
*/
|
|
|
|
/**
|
|
* ContentEditable MW heading node.
|
|
*
|
|
* @class
|
|
* @extends ve.ce.HeadingNode
|
|
* @constructor
|
|
* @param {ve.dm.MWHeadingNode} model Model to observe
|
|
* @param {Object} [config] Configuration options
|
|
*/
|
|
ve.ce.MWHeadingNode = function VeCeMWHeadingNode() {
|
|
// Parent constructor
|
|
ve.ce.MWHeadingNode.super.apply( this, arguments );
|
|
|
|
// Events
|
|
this.model.connect( this, { update: 'onUpdate' } );
|
|
};
|
|
|
|
/* Inheritance */
|
|
|
|
OO.inheritClass( ve.ce.MWHeadingNode, ve.ce.HeadingNode );
|
|
|
|
/* Static Properties */
|
|
|
|
ve.ce.MWHeadingNode.static.name = 'mwHeading';
|
|
|
|
/* Methods */
|
|
|
|
ve.ce.MWHeadingNode.prototype.onSetup = function () {
|
|
// Parent method
|
|
ve.ce.MWHeadingNode.super.prototype.onSetup.call( this );
|
|
|
|
// Make reference to the surface
|
|
this.surface = this.root && this.root.getSurface().getSurface();
|
|
this.rebuildToc();
|
|
};
|
|
|
|
ve.ce.MWHeadingNode.prototype.onTeardown = function () {
|
|
// Parent method
|
|
ve.ce.MWHeadingNode.super.prototype.onTeardown.call( this );
|
|
|
|
this.rebuildToc();
|
|
};
|
|
|
|
ve.ce.MWHeadingNode.prototype.onUpdate = function () {
|
|
var surface = this.surface,
|
|
node = this;
|
|
|
|
// Parent method
|
|
ve.ce.MWHeadingNode.super.prototype.onUpdate.call( this );
|
|
|
|
if ( surface && surface.mwTocWidget ) {
|
|
surface.getModel().getDocument().once( 'transact', () => {
|
|
surface.mwTocWidget.updateNode( node );
|
|
} );
|
|
}
|
|
};
|
|
|
|
ve.ce.MWHeadingNode.prototype.rebuildToc = function () {
|
|
var surface = this.surface;
|
|
|
|
if ( surface && surface.mwTocWidget ) {
|
|
surface.getModel().getDocument().once( 'transact', () => {
|
|
surface.mwTocWidget.rebuild();
|
|
} );
|
|
}
|
|
};
|
|
|
|
/* Registration */
|
|
|
|
ve.ce.nodeFactory.register( ve.ce.MWHeadingNode );
|