/*! * VisualEditor user interface MWLatexPage class. * * @copyright 2015 VisualEditor Team and others; see AUTHORS.txt * @license MIT */ /** * Latex dialog symbols page * * @class * @extends OO.ui.PageLayout * * @constructor * @param {string} name Unique symbolic name of page * @param {Object} [config] Configuration options */ ve.ui.MWLatexPage = function VeUiMWLatexPage( name, config ) { // Parent constructor ve.ui.MWLatexPage.super.call( this, name, config ); this.label = config.label; var symbols = config.symbols; var $symbols = $( '
' ).addClass( 've-ui-specialCharacterPage-characters' ); var symbolsNode = $symbols[ 0 ]; // Avoiding jQuery wrappers as advised in ve.ui.SpecialCharacterPage symbols.forEach( function ( symbol ) { if ( !symbol.notWorking && !symbol.duplicate ) { var tex = symbol.tex || symbol.insert; var classes = [ 've-ui-mwLatexPage-symbol' ]; classes.push( 've-ui-mwLatexSymbol-' + tex.replace( /[^\w]/g, function ( c ) { return '_' + c.charCodeAt( 0 ) + '_'; } ) ); if ( symbol.width ) { classes.push( 've-ui-mwLatexPage-symbol-' + symbol.width ); } if ( symbol.contain ) { classes.push( 've-ui-mwLatexPage-symbol-contain' ); } if ( symbol.largeLayout ) { classes.push( 've-ui-mwLatexPage-symbol-largeLayout' ); } var symbolNode = document.createElement( 'div' ); classes.forEach( function ( className ) { // The following classes are used here: // * ve-ui-mwLatexPage-symbol // * ve-ui-mwLatexPage-symbol-wide // * ve-ui-mwLatexPage-symbol-wider // * ve-ui-mwLatexPage-symbol-widest // * ve-ui-mwLatexPage-symbol-contain // * ve-ui-mwLatexPage-symbol-largeLayout symbolNode.classList.add( className ); } ); $.data( symbolNode, 'symbol', symbol ); symbolsNode.appendChild( symbolNode ); } } ); this.$element .addClass( 've-ui-mwLatexPage' ) .append( $( '

' ).text( name ), $symbols ); }; /* Inheritance */ OO.inheritClass( ve.ui.MWLatexPage, OO.ui.PageLayout ); /* Methods */ /** * @inheritdoc */ ve.ui.MWLatexPage.prototype.setupOutlineItem = function ( outlineItem ) { ve.ui.MWLatexPage.super.prototype.setupOutlineItem.call( this, outlineItem ); this.outlineItem.setLabel( this.label ); this.outlineItem.$element.addClass( 've-ui-mwLatexPage-outline' ); };