var
	TABS_SELECTOR = '.vector-menu-tabs',
	LIST_ITEM_JS_SELECTOR = '.mw-list-item-js',
	NO_ICON_CLASS = 'vector-tab-noicon';

/**
 * T320691: Add a `.vector-tab-noicon` class to any tabbed menu item that is
 * added by a gadget so that the menu item has the correct padding and margin.
 *
 * @param {HTMLElement} item
 */
function addNoIconClass( item ) {
	item.classList.add( NO_ICON_CLASS );
}

function init() {
	// Feature detect whether the `.closest` api is supported. If not, return early.
	if ( !document.body.closest ) {
		return;
	}

	// Enhance previously added items.
	Array.prototype.forEach.call(
		document.querySelectorAll( TABS_SELECTOR + ' ' + LIST_ITEM_JS_SELECTOR ),
		addNoIconClass
	);

	mw.hook( 'util.addPortletLink' ).add(
		/**
		 * @param {HTMLElement} item
		 */
		function ( item ) {
			// Check if this menu item belongs to a tabs menu.
			if ( item.closest( TABS_SELECTOR ) ) {
				addNoIconClass( item );
			}
		} );
}

module.exports = init;