/**
 * @type {videojs.Plugin}
 * @private
 */
const Plugin = videojs.getPlugin( 'plugin' );
/** Ensure the button is registered and loaded */
require( './mw-info-button.js' );

/**
 * Add an {@link InfoButton} to the interface of the player.
 *
 * When the button is clicked, take the user to the MediaWiki file
 * description page of the media item.
 * It relies on the data-mwtitle attribute on the media element to
 * find the page.
 *
 * @extends videojs.Plugin
 */
class InfoButtonPlugin extends Plugin {
	/**
	 * @param {videojs.Player} player
	 * @param {Object} [options] configuration for the plugin
	 */
	constructor( player, options ) {
		super( player, options );

		player.ready( () => {
			const title = player.options().mwTitle;

			if ( !title ) {
				return;
			}

			// We do not need the info button on a File page, unless it's the embedding mode
			// we are already at the destination of the button
			if ( player.options().iframe || mw.config.get( 'wgTitle' ) !== title.getMainText() ) {
				player.controlBar.infoButton = player.controlBar.addChild(
					'InfoButton',
					{ link: title.getUrl() }
				);
			}
		} );
	}
}

// register the plugin
videojs.registerPlugin( 'infoButton', InfoButtonPlugin );

module.exports = InfoButtonPlugin;