/*!
 * VisualEditor UserInterface MWTargetWidget class.
 *
 * @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
 * @license The MIT License (MIT); see LICENSE.txt
 */

/**
 * Creates an ve.ui.MWTargetWidget object.
 *
 * @class
 * @abstract
 * @extends ve.ui.TargetWidget
 *
 * @constructor
 * @param {Object} config
 * @cfg {string[]} [surfaceClasses] Surface classes to apply
 */
ve.ui.MWTargetWidget = function VeUiMWTargetWidget( config ) {
	this.surfaceClasses = ve.copy( config.surfaceClasses ) || [];

	// HACK: T287733
	// This assumes the target widget is being shown outside of vector-body, otherwise this
	// will apply the class a second time and cause problems.
	if ( mw.config.get( 'skin' ) === 'vector' || mw.config.get( 'skin' ) === 'vector-2022' ) {
		this.surfaceClasses.push( 'vector-body' );
	}

	// Parent constructor
	ve.ui.MWTargetWidget.super.apply( this, arguments );

	// Initialization
	this.$element.addClass( 've-ui-mwTargetWidget' );
};

/* Inheritance */

OO.inheritClass( ve.ui.MWTargetWidget, ve.ui.TargetWidget );

/**
 * @inheritdoc
 */
ve.ui.MWTargetWidget.prototype.createTarget = function () {
	return new ve.init.mw.Target( {
		register: false,
		toolbarGroups: this.toolbarGroups,
		modes: this.modes,
		defaultMode: this.defaultMode,
		surfaceClasses: this.surfaceClasses
	} );
};
