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

User:Nardog/SymmetricalChanges.js

In today's world, User:Nardog/SymmetricalChanges.js is a topic that has gained more and more relevance in society. With the passage of time, the importance of User:Nardog/SymmetricalChanges.js has become evidently crucial in different areas, from the personal to the professional level. More and more people are interested in learning about User:Nardog/SymmetricalChanges.js and how it impacts their lives. That is why in this article we will explore in detail everything related to User:Nardog/SymmetricalChanges.js, from its origins to its influence today. In addition, we will analyze its role in different contexts and how we can adapt to the changes that User:Nardog/SymmetricalChanges.js presents. Get ready to embark on a journey of discovery about User:Nardog/SymmetricalChanges.js and its impact on our society!
$(function symmetricalChanges() {
	if (!document.getElementById('p-tb')) return;
	let callback = $diff => {
		let $rows = $diff
			.find('.diff-deletedline:not(.diff-empty) ~ .diff-addedline:not(.diff-empty)')
			.parent();
		if (!$rows.length) return;
		$rows.addClass('symmetricalchange');
		$rows.prev().has('.diff-context').addClass('symmetricalchange-context')
			.prev().has('.diff-context').addClass('symmetricalchange-context');
		$rows.next().has('.diff-context').addClass('symmetricalchange-context')
			.next().has('.diff-context').addClass('symmetricalchange-context');
		if (document.getElementById('t-symmetricalchanges')) return;
		mw.loader.using('mediawiki.util', () => {
			mw.util.addPortletLink('p-tb', '#', 'Toggle symmetrical changes', 't-symmetricalchanges').firstElementChild.addEventListener('click', e => {
				e.preventDefault();
				document.body.classList.toggle('symmetricalchanges-enabled');
			});
		});
	};
	mw.hook('wikipage.diff').add(callback);
	mw.hook('ve.activationComplete').add(() => {
		let setDiffAndReview = ve.ui.MWSaveDialog.prototype.setDiffAndReview;
		ve.ui.MWSaveDialog.prototype.setDiffAndReview = function (promise) {
			setDiffAndReview.apply(this, arguments);
			promise.then(() => {
				callback(this.$reviewWikitextDiff);
			});
		};
	});
});