_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

User:Nardog/IPAInput.js

In this article, we are going to address the topic of User:Nardog/IPAInput.js from different perspectives and angles, with the aim of providing a comprehensive and complete view on this topic. We will analyze its impact in different contexts, its evolution over time, as well as the different opinions and positions that exist on the matter. User:Nardog/IPAInput.js is a topic of current relevance that arouses great interest and debate, which is why it is essential to address it in a rigorous and exhaustive manner. Through this article, we aim to offer our readers a detailed and enriching vision of User:Nardog/IPAInput.js, with the aim of contributing to the knowledge and understanding of this particular topic.
mw.loader.using([
	'ext.visualEditor.desktopArticleTarget.init', 'mediawiki.storage'
], function ipaInput() {
	if (!mw.libs.ve.isVisualAvailable &&
		!.includes(mw.config.get('wgAction'))
	) {
		return;
	}
	mw.loader.addStyleTag(`.oo-ui-icon-schwa{background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' version='1.1' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 3v14h4v-2h-2v-10h2v-2zm16 0v2h2v10h-2v2h4v-14zm-6 2c-2.41 0-4.43 1.73-4.9 4h2.08c0.41-1.17 1.5-2 2.82-2 1.67 0 3 1.33 3 3h-8c0 2.75 2.25 5 5 5 2.75 0 5-2.25 5-5 0-2.75-2.25-5-5-5zm-2.59 6.5h5.18c-0.516 0.895-1.47 1.5-2.59 1.5-1.12 0-2.07-0.605-2.59-1.5z'/%3E%3C/svg%3E")}`);
	let clicked;
	let openDialog = () => {
		if (window.ipaInputDialog) {
			window.ipaInputDialog.open();
			return;
		}
		if (clicked) return;
		clicked = true;
		mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Nardog/IPAInput-core.js&action=raw&ctype=text/javascript');
		mw.loader.using([
			'jquery.textSelection', 'oojs-ui-windows', 'oojs-ui-widgets',
			'oojs-ui.styles.icons-interactions', 'oojs-ui.styles.icons-editing-core',
			'oojs-ui.styles.icons-editing-advanced'
		]);
	};
	mw.hook('wikiEditor.toolbarReady').add($textarea => {
		$textarea.wikiEditor('addToToolbar', {
			section: 'main',
			group: 'insert',
			tools: {
				dialog: {
					label: 'IPAInput',
					type: 'button',
					oouiIcon: 'schwa',
					action: { type: 'callback', execute: openDialog }
				}
			}
		});
	});
	mw.hook('ve.loadModules').add(addPlugin => {
		addPlugin(() => {
			ve.ui.IpaInputCommand = function VeUiIpaInputCommand() {
				ve.ui.IpaInputCommand.super.call(this, 'ipaInput');
			};
			OO.inheritClass(ve.ui.IpaInputCommand, ve.ui.Command);
			ve.ui.IpaInputCommand.prototype.execute = () => {
				openDialog();
				return true;
			};
			ve.ui.commandRegistry.register(new ve.ui.IpaInputCommand());
			ve.ui.IpaInputTool = function VeUiIpaInputTool() {
				ve.ui.IpaInputTool.super.apply(this, arguments);
			};
			OO.inheritClass(ve.ui.IpaInputTool, ve.ui.Tool);
			ve.ui.IpaInputTool.static.name = 'ipaInput';
			ve.ui.IpaInputTool.static.group = 'insert';
			ve.ui.IpaInputTool.static.icon = 'schwa';
			ve.ui.IpaInputTool.static.title = 'IPA';
			ve.ui.IpaInputTool.static.commandName = 'ipaInput';
			ve.ui.toolFactory.register(ve.ui.IpaInputTool);
		});
	});
	mw.requestIdleCallback(() => {
		let expiry = mw.storage.get('_EXPIRY_ipainput-cache');
		if (!expiry) return;
		$.get(
			'//en.wikipedia.org/api/rest_v1/page/title/Module%3AIPA%2Fdata'
		).then(response => {
			if (Date.parse(response.items.timestamp) / 1000 > expiry - 604800) {
				mw.storage.remove('ipainput-cache');
			}
		});
	});
});