<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="lt">
	<id>https://wiki.mcslime.lt/index.php?action=history&amp;feed=atom&amp;title=Naudotojas%3AM0dii%2Fcommon.js</id>
	<title>Naudotojas:M0dii/common.js - Versijų istorija</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mcslime.lt/index.php?action=history&amp;feed=atom&amp;title=Naudotojas%3AM0dii%2Fcommon.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.mcslime.lt/index.php?title=Naudotojas:M0dii/common.js&amp;action=history"/>
	<updated>2026-04-09T08:12:01Z</updated>
	<subtitle>Šio puslapio versijų istorija projekte</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.mcslime.lt/index.php?title=Naudotojas:M0dii/common.js&amp;diff=970&amp;oldid=prev</id>
		<title>M0dii: Naujas puslapis: /**  * Scripts placed here are loaded for all skins on the desktop view  *   * Global scripts which should be loaded on both desktop and mobile should go in  * MediaWiki:Gadget-site.js  * Mobile-only scripts should go in MediaWiki:Minerva.js  */  ( function() { &#039;use strict&#039;;  /* Variables for interface text used throughout the script, for ease of translating */ var i18n = { 	// File upload 	defaultLicense: &#039;License&#039;, 	more_results: &#039;And $1 other open issues.&#039;, 	no_r...</title>
		<link rel="alternate" type="text/html" href="https://wiki.mcslime.lt/index.php?title=Naudotojas:M0dii/common.js&amp;diff=970&amp;oldid=prev"/>
		<updated>2025-04-12T19:30:18Z</updated>

		<summary type="html">&lt;p&gt;Naujas puslapis: &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;*  * Scripts placed here are loaded for all skins on the desktop view  *   * Global scripts which should be loaded on both desktop and mobile should go in  * &lt;a href=&quot;/w/MediaWiki:Gadget-site.js&quot; title=&quot;MediaWiki:Gadget-site.js&quot;&gt;MediaWiki:Gadget-site.js&lt;/a&gt;  * Mobile-only scripts should go in &lt;a href=&quot;/w/MediaWiki:Minerva.js&quot; title=&quot;MediaWiki:Minerva.js&quot;&gt;MediaWiki:Minerva.js&lt;/a&gt;: &lt;/span&gt;  ( function() { &amp;#039;use strict&amp;#039;;  &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Variables for interface text used throughout the script, for ease of translating: &lt;/span&gt; var i18n = { 	// File upload 	defaultLicense: &amp;#039;License&amp;#039;, 	more_results: &amp;#039;And $1 other open issues.&amp;#039;, 	no_r...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Naujas puslapis&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * Scripts placed here are loaded for all skins on the desktop view&lt;br /&gt;
 * &lt;br /&gt;
 * Global scripts which should be loaded on both desktop and mobile should go in&lt;br /&gt;
 * [[MediaWiki:Gadget-site.js]]&lt;br /&gt;
 * Mobile-only scripts should go in [[MediaWiki:Minerva.js]]&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function() {&lt;br /&gt;
&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
/* Variables for interface text used throughout the script, for ease of translating */&lt;br /&gt;
var i18n = {&lt;br /&gt;
	// File upload&lt;br /&gt;
	defaultLicense: &amp;#039;License&amp;#039;,&lt;br /&gt;
	more_results: &amp;#039;And $1 other open issues.&amp;#039;,&lt;br /&gt;
	no_results: &amp;#039;No open issues found.&amp;#039;,&lt;br /&gt;
	projects: {&lt;br /&gt;
		bds: &amp;#039;Bedrock Dedicated Server&amp;#039;,&lt;br /&gt;
		mc: &amp;#039;Java Edition&amp;#039;,&lt;br /&gt;
		mcd: &amp;#039;Minecraft Dungeons&amp;#039;,&lt;br /&gt;
		mcl: &amp;#039;Launcher&amp;#039;,&lt;br /&gt;
		mclg: &amp;#039;Minecraft Legends&amp;#039;,&lt;br /&gt;
		mcpe: &amp;#039;Bedrock Edition&amp;#039;,&lt;br /&gt;
		realms: &amp;#039;Realms&amp;#039;,&lt;br /&gt;
		web: &amp;#039;Mojang Web Services&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Instead of cluttering up the global scope with&lt;br /&gt;
 * variables, they should instead be set as a&lt;br /&gt;
 * property of this global variable&lt;br /&gt;
 *&lt;br /&gt;
 * E.g: Instead of&lt;br /&gt;
 *   myVar = &amp;#039;blah&amp;#039;;&lt;br /&gt;
 * use&lt;br /&gt;
 *   mcw.myVar = &amp;#039;blah&amp;#039;;&lt;br /&gt;
 */&lt;br /&gt;
var mcw = window.mcw = {};&lt;br /&gt;
&lt;br /&gt;
/* Fires when DOM is ready */&lt;br /&gt;
$( function() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Pause animations on mouseover of a designated container (.animated-container and .mcui)&lt;br /&gt;
 *&lt;br /&gt;
 * This is so people have a chance to look at the image and click on pages they want to view.&lt;br /&gt;
 */&lt;br /&gt;
$( &amp;#039;#mw-content-text&amp;#039; ).on( &amp;#039;mouseenter mouseleave&amp;#039;, &amp;#039;.animated-container, .mcui&amp;#039;, function( e ) {&lt;br /&gt;
	$( this ).find( &amp;#039;.animated&amp;#039; ).toggleClass( &amp;#039;animated-paused&amp;#039;, e.type === &amp;#039;mouseenter&amp;#039; );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Fix edit summary prompt for undo&lt;br /&gt;
 *&lt;br /&gt;
 * Fixes the fact that the undo function combined with the &amp;quot;no edit summary prompter&amp;quot;&lt;br /&gt;
 * causes problems if leaving the edit summary unchanged.&lt;br /&gt;
 * Added by [[wikipedia:User:Deskana]], code by [[wikipedia:User:Tra]].&lt;br /&gt;
 * See https://bugzilla.wikimedia.org/show_bug.cgi?id=8912&lt;br /&gt;
 */&lt;br /&gt;
if ( document.location.search.indexOf( &amp;quot;undo=&amp;quot; ) !== -1 &amp;amp;&amp;amp; document.getElementsByName( &amp;#039;wpAutoSummary&amp;#039; )[0] ) {&lt;br /&gt;
	document.getElementsByName( &amp;#039;wpAutoSummary&amp;#039; )[0].value=&amp;#039;1&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Make simple search suggestions box separately styled&lt;br /&gt;
 */&lt;br /&gt;
mw.loader.using( &amp;#039;mediawiki.searchSuggest&amp;#039;, function() {&lt;br /&gt;
	setTimeout( function() {&lt;br /&gt;
		$( &amp;#039;.suggestions:first&amp;#039; ).addClass( &amp;#039;searchbar&amp;#039; );&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Set unlicensed as the default license on file pages&lt;br /&gt;
 *&lt;br /&gt;
 * That way the file will be categorised so someone can find a license for the file&lt;br /&gt;
 */&lt;br /&gt;
if ( mw.config.get( &amp;#039;wgCanonicalSpecialPageName&amp;#039; ) === &amp;#039;Upload&amp;#039; ) {&lt;br /&gt;
	var $license = $( &amp;#039;#wpLicense&amp;#039; );&lt;br /&gt;
	if ( $license.length ) {&lt;br /&gt;
		if ( !$license.val() ) {&lt;br /&gt;
			$license.val( i18n.defaultLicense );&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		mw.loader.using( &amp;#039;mediawiki.special.upload&amp;#039;, function() {&lt;br /&gt;
			setTimeout( function() {&lt;br /&gt;
				$license.change();&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Creates minecraft style tooltips&lt;br /&gt;
 *&lt;br /&gt;
 * Replaces normal tooltips. Supports minecraft [[formatting codes]] (except k), and a description with line breaks (/).&lt;br /&gt;
 */&lt;br /&gt;
( function() {&lt;br /&gt;
	var escapeChars = { &amp;#039;\\&amp;amp;&amp;#039;: &amp;#039;&amp;amp;#38;&amp;#039;, &amp;#039;&amp;lt;&amp;#039;: &amp;#039;&amp;amp;#60;&amp;#039;, &amp;#039;&amp;gt;&amp;#039;: &amp;#039;&amp;amp;#62;&amp;#039; };&lt;br /&gt;
	var escape = function( text ) {&lt;br /&gt;
		// &amp;quot;\&amp;quot; must be escaped first&lt;br /&gt;
		return text.replace( /\\\\/g, &amp;#039;&amp;amp;#92;&amp;#039; )&lt;br /&gt;
			.replace( /\\&amp;amp;|[&amp;lt;&amp;gt;]/g, function( char ) { return escapeChars[char]; } );&lt;br /&gt;
	};&lt;br /&gt;
	var $tooltip = $();&lt;br /&gt;
	var $win = $( window ), winWidth, winHeight, width, height;&lt;br /&gt;
	&lt;br /&gt;
	$( &amp;#039;#mw-content-text&amp;#039; ).on( {&lt;br /&gt;
		&amp;#039;mouseenter.minetip&amp;#039;: function( e ) {&lt;br /&gt;
			$tooltip.remove();&lt;br /&gt;
			&lt;br /&gt;
			var $elem = $( this ), title = $elem.attr( &amp;#039;data-minetip-title&amp;#039; );&lt;br /&gt;
			if ( title === undefined ) {&lt;br /&gt;
				title = $elem.attr( &amp;#039;title&amp;#039; );&lt;br /&gt;
				if ( title !== undefined ) {&lt;br /&gt;
					title = $.trim( title.replace( /&amp;amp;/g, &amp;#039;\\&amp;amp;&amp;#039; ) );&lt;br /&gt;
					$elem.attr( &amp;#039;data-minetip-title&amp;#039;, title );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// No title or title only contains formatting codes&lt;br /&gt;
			if ( title === undefined || title !== &amp;#039;&amp;#039; &amp;amp;&amp;amp; title.replace( /&amp;amp;([0-9a-jl-qs-vyzr]|#[0-9a-fA-F]{6}|\$[0-9a-fA-F]{3})/g, &amp;#039;&amp;#039; ) === &amp;#039;&amp;#039; ) {&lt;br /&gt;
				// Find deepest child title&lt;br /&gt;
				var childElem = $elem[0], childTitle;&lt;br /&gt;
				do {&lt;br /&gt;
					if ( childElem.hasAttribute( &amp;#039;title&amp;#039; ) ) {&lt;br /&gt;
						childTitle = childElem.title;&lt;br /&gt;
					}&lt;br /&gt;
					childElem = childElem.firstChild;&lt;br /&gt;
				} while( childElem &amp;amp;&amp;amp; childElem.nodeType === 1 );&lt;br /&gt;
				if ( childTitle === undefined ) {&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				// Append child title as title may contain formatting codes&lt;br /&gt;
				if ( !title ) {&lt;br /&gt;
					title = &amp;#039;&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
				title += $.trim( childTitle.replace( /&amp;amp;/g, &amp;#039;\\&amp;amp;&amp;#039; ) );&lt;br /&gt;
				&lt;br /&gt;
				// Set the retrieved title as data for future use&lt;br /&gt;
				$elem.attr( &amp;#039;data-minetip-title&amp;#039;, title );&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if ( !$elem.data( &amp;#039;minetip-ready&amp;#039; ) ) {&lt;br /&gt;
				// Remove title attributes so the native tooltip doesn&amp;#039;t get in the way&lt;br /&gt;
				$elem.find( &amp;#039;[title]&amp;#039; ).addBack().removeAttr( &amp;#039;title&amp;#039; );&lt;br /&gt;
				$elem.data( &amp;#039;minetip-ready&amp;#039;, true );&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if ( title === &amp;#039;&amp;#039; ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			var content = &amp;#039;&amp;lt;span class=&amp;quot;minetip-title&amp;quot;&amp;gt;&amp;#039; + escape( title ) + &amp;#039;&amp;amp;r&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
			&lt;br /&gt;
			var description = $.trim( $elem.attr( &amp;#039;data-minetip-text&amp;#039; ) );&lt;br /&gt;
			if ( description ) {&lt;br /&gt;
				// Apply normal escaping plus &amp;quot;/&amp;quot;&lt;br /&gt;
				description = escape( description ).replace( /\\\//g, &amp;#039;&amp;amp;#47;&amp;#039; );&lt;br /&gt;
				content += &amp;#039;&amp;lt;span class=&amp;quot;minetip-description&amp;quot;&amp;gt;&amp;#039; + description.replace( /\//g, &amp;#039;&amp;lt;br&amp;gt;&amp;#039; ) + &amp;#039;&amp;amp;r&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Add classes for minecraft formatting codes&lt;br /&gt;
			while ( content.search( /&amp;amp;(?:[0-9a-jl-qs-vyz]|#[0-9a-fA-F]{6}|\$[0-9a-fA-F]{3})/ ) &amp;gt; -1 ) {&lt;br /&gt;
				content = content.replace( /&amp;amp;([0-9a-jl-qs-vyz])(.*?)(&amp;amp;r|$)/g, &amp;#039;&amp;lt;span class=&amp;quot;format-$1&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&amp;amp;r&amp;#039; );&lt;br /&gt;
				content = content.replace( /&amp;amp;(?:#([0-9a-fA-F]{6})|\$([0-9a-fA-F]{3}))(.*?)(&amp;amp;r|$)/g, &amp;#039;&amp;lt;span class=&amp;quot;format-custom&amp;quot; style=&amp;quot;color: #$1$2;&amp;quot;&amp;gt;$3&amp;lt;/span&amp;gt;&amp;amp;r&amp;#039; );&lt;br /&gt;
			}&lt;br /&gt;
			// Remove reset formatting&lt;br /&gt;
			content = content.replace( /&amp;amp;r/g, &amp;#039;&amp;#039; );&lt;br /&gt;
			&lt;br /&gt;
			$tooltip = $( &amp;#039;&amp;lt;div id=&amp;quot;minetip-tooltip&amp;quot;&amp;gt;&amp;#039; );&lt;br /&gt;
			$tooltip.html( content ).appendTo( &amp;#039;body&amp;#039; );&lt;br /&gt;
			&lt;br /&gt;
			// Cache current window and tooltip size&lt;br /&gt;
			winWidth = $win.width();&lt;br /&gt;
			winHeight = $win.height();&lt;br /&gt;
			width = $tooltip.outerWidth( true );&lt;br /&gt;
			height = $tooltip.outerHeight( true );&lt;br /&gt;
			&lt;br /&gt;
			// Trigger a mouse movement to position the tooltip&lt;br /&gt;
			$elem.trigger( &amp;#039;mousemove&amp;#039;, e );&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;mousemove.minetip&amp;#039;: function( e, trigger ) {&lt;br /&gt;
			if ( !$tooltip.length ) {&lt;br /&gt;
				$( this ).trigger( &amp;#039;mouseenter&amp;#039; );&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Get event data from remote trigger&lt;br /&gt;
			e = trigger || e;&lt;br /&gt;
			&lt;br /&gt;
			// Get mouse position and add default offsets&lt;br /&gt;
			var top = e.clientY - 34;&lt;br /&gt;
			var left = e.clientX + 14;&lt;br /&gt;
			&lt;br /&gt;
			// If going off the right of the screen, go to the left of the cursor&lt;br /&gt;
			if ( left + width &amp;gt; winWidth ) {&lt;br /&gt;
				left -= width + 36;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// If now going off to the left of the screen, resort to going above the cursor&lt;br /&gt;
			if ( left &amp;lt; 0 ) {&lt;br /&gt;
				left = 0;&lt;br /&gt;
				top -= height - 22;&lt;br /&gt;
				&lt;br /&gt;
				// Go below the cursor if too high&lt;br /&gt;
				if ( top &amp;lt; 0 ) {&lt;br /&gt;
					top += height + 47;&lt;br /&gt;
				}&lt;br /&gt;
			// Don&amp;#039;t go off the top of the screen&lt;br /&gt;
			} else if ( top &amp;lt; 0 ) {&lt;br /&gt;
				top = 0;&lt;br /&gt;
			// Don&amp;#039;t go off the bottom of the screen&lt;br /&gt;
			} else if ( top + height &amp;gt; winHeight ) {&lt;br /&gt;
				top = winHeight - height;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Apply the positions&lt;br /&gt;
			$tooltip.css( { top: top, left: left } );&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;mouseleave.minetip&amp;#039;: function() {&lt;br /&gt;
			if ( !$tooltip.length ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			$tooltip.remove();&lt;br /&gt;
			$tooltip = $();&lt;br /&gt;
		}&lt;br /&gt;
	}, &amp;#039;.minetip, .invslot-item&amp;#039; );&lt;br /&gt;
}() );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* [[Template:Issue list]] */&lt;br /&gt;
mw.hook( &amp;#039;wikipage.content&amp;#039; ).add( function( $content ) {&lt;br /&gt;
	$content.find(&amp;#039;.issue-list&amp;#039;).each( function() {&lt;br /&gt;
		let issueList = $(this);&lt;br /&gt;
		let apiRequests = [];&lt;br /&gt;
		for (let project in this.dataset) {&lt;br /&gt;
			let url = new URL(&amp;#039;https://tools.minecraft.wiki/jigsaw/mojira&amp;#039;);&lt;br /&gt;
			url.searchParams.set(&amp;#039;project&amp;#039;, project.toUpperCase());&lt;br /&gt;
			url.searchParams.set(&amp;#039;jql&amp;#039;, this.dataset[project]);&lt;br /&gt;
			delete this.dataset[project];&lt;br /&gt;
			let apiRequest = $.ajax( url.href );&lt;br /&gt;
			apiRequests.push( apiRequest.then( function( search ) {&lt;br /&gt;
				if ( search.errors ) return Promise.reject(search.errorMessages);&lt;br /&gt;
				let issueList = $(&amp;#039;&amp;lt;ul&amp;gt;&amp;#039;);&lt;br /&gt;
				if ( search.issues.length ) {&lt;br /&gt;
					issueList.append( search.issues.map( function( issue ) {&lt;br /&gt;
						let issueLink = $(&amp;#039;&amp;lt;a class=&amp;quot;extiw&amp;quot;&amp;gt;&amp;#039;).attr(&amp;#039;href&amp;#039;, &amp;#039;https://bugs.mojang.com/browse/&amp;#039; + issue.key).attr(&amp;#039;title&amp;#039;, &amp;#039;mojira:&amp;#039; + issue.key).text(issue.key);&lt;br /&gt;
						return $(&amp;#039;&amp;lt;li&amp;gt;&amp;#039;).text(&amp;#039; – &amp;#039; + ( issue.fields.resolution ? &amp;#039;[&amp;#039; + issue.fields.resolution.name + &amp;#039;] &amp;#039; : &amp;#039;&amp;#039; ) + issue.fields.summary).prepend(issueLink);&lt;br /&gt;
					} ) );	&lt;br /&gt;
					if ( search.total &amp;gt; search.issues.length ) $(&amp;#039;&amp;lt;li&amp;gt;&amp;#039;).text( mw.format(i18n.more_results, search.total - search.issues.length) ).appendTo( issueList );&lt;br /&gt;
				}&lt;br /&gt;
				else $(&amp;#039;&amp;lt;li&amp;gt;&amp;#039;).text( i18n.no_results ).appendTo( issueList );&lt;br /&gt;
				return { project, list: issueList };&lt;br /&gt;
			} ) );&lt;br /&gt;
		}&lt;br /&gt;
		if ( apiRequests.length ) Promise.allSettled( apiRequests ).then( function( results ) {&lt;br /&gt;
			results.filter( result =&amp;gt; result.status === &amp;#039;rejected&amp;#039; ).forEach( result =&amp;gt; console.warn(&amp;#039;Mojira:&amp;#039;, result.reason) );&lt;br /&gt;
			if ( results.length === 1 ) {&lt;br /&gt;
				if ( results[0].status === &amp;#039;fulfilled&amp;#039; ) issueList.append( results[0].value.list );&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			issueList.append(&lt;br /&gt;
				results.filter( result =&amp;gt; result.status === &amp;#039;fulfilled&amp;#039; ).map( result =&amp;gt; result.value ).flatMap( function( result ) {&lt;br /&gt;
					return [&lt;br /&gt;
						$(&amp;#039;&amp;lt;p&amp;gt;&amp;#039;).append( $(&amp;#039;&amp;lt;b&amp;gt;&amp;#039;).text( i18n.projects[result.project] || result.project.toUpperCase() ) ),&lt;br /&gt;
						result.list&lt;br /&gt;
					];&lt;br /&gt;
				} )&lt;br /&gt;
			);&lt;br /&gt;
		} );&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
// Dismissible alert&lt;br /&gt;
mw.hook(&amp;#039;wikipage.content&amp;#039;).add(($content) =&amp;gt; {&lt;br /&gt;
	$content.find(&amp;#039;.dismissible-alert&amp;#039;).each((_, /** @type {HTMLTimeElement} */ element) =&amp;gt; {&lt;br /&gt;
		if (!element.dataset.alertid) return;&lt;br /&gt;
		if (!localStorage.getItem(`dismissed-alert-${element.dataset.alertid}`)) {&lt;br /&gt;
			element.style.display = &amp;#039;&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// dismiss button&lt;br /&gt;
		element.querySelector(&amp;#039;.dismissible-alert-dismiss&amp;#039;).addEventListener(&amp;#039;click&amp;#039;, () =&amp;gt; {&lt;br /&gt;
			localStorage.setItem(`dismissed-alert-${element.dataset.alertid}`, true);&lt;br /&gt;
			element.style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Avoid redirecting for links in categories&lt;br /&gt;
$( &amp;#039;.ns-14 .redirect-in-category .mw-redirect&amp;#039; ).each(function(){&lt;br /&gt;
    this.href += ( this.href.includes(&amp;#039;?&amp;#039;) ? &amp;#039;&amp;amp;&amp;#039; : &amp;#039;?&amp;#039; ) + &amp;#039;redirect=no&amp;#039;;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Main page random fact&lt;br /&gt;
const button = document.querySelector(&amp;#039;#mp-dyk-button&amp;#039;);&lt;br /&gt;
const dykTransitionDurationMs = 200;&lt;br /&gt;
if (button) {&lt;br /&gt;
	button.addEventListener(&amp;#039;click&amp;#039;, () =&amp;gt; {&lt;br /&gt;
		$(&amp;#039;#mp-dyk-fact&amp;#039;).css(&amp;#039;height&amp;#039;, $(&amp;#039;#mp-dyk-fact &amp;gt; *&amp;#039;).height() + &amp;#039;px&amp;#039;).addClass(&amp;#039;loading&amp;#039;);&lt;br /&gt;
		new mw.Api().parse(`{{DidYouKnow|count=3|random=1|type=${button.dataset.dykType}}}`, {&lt;br /&gt;
			prop: &amp;#039;text&amp;#039;,&lt;br /&gt;
			disablelimitreport: 1,&lt;br /&gt;
			requestid: &amp;#039;mp-dyk&amp;#039;&lt;br /&gt;
		}).then((content) =&amp;gt; {&lt;br /&gt;
			setTimeout(() =&amp;gt; {&lt;br /&gt;
		        $(&amp;#039;#mp-dyk-fact&amp;#039;).html(content);&lt;br /&gt;
				$(&amp;#039;#mp-dyk-fact&amp;#039;).css(&amp;#039;height&amp;#039;, $(&amp;#039;#mp-dyk-fact &amp;gt; *&amp;#039;).height() + &amp;#039;px&amp;#039;);&lt;br /&gt;
				setTimeout(() =&amp;gt; $(&amp;#039;#mp-dyk-fact&amp;#039;).removeClass(&amp;#039;loading&amp;#039;), dykTransitionDurationMs);&lt;br /&gt;
			}, dykTransitionDurationMs);&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const portal = document.querySelector(&amp;#039;.mp-portal-wrapper&amp;#039;);&lt;br /&gt;
if (portal) {&lt;br /&gt;
	const thisPage = portal.querySelector(&amp;#039;.mp-portal-active&amp;#039;);&lt;br /&gt;
	portal.addEventListener(&amp;#039;click&amp;#039;, (event) =&amp;gt; {&lt;br /&gt;
		if (event.target.tagName !== &amp;#039;A&amp;#039;) return;&lt;br /&gt;
		const isNewTab = event.ctrlKey || event.metaKey;&lt;br /&gt;
		if (isNewTab) return;&lt;br /&gt;
		&lt;br /&gt;
		thisPage.classList.remove(&amp;#039;mp-portal-active&amp;#039;);&lt;br /&gt;
		event.target.closest(&amp;#039;.mp-portal&amp;#039;).classList.add(&amp;#039;mp-portal-active&amp;#039;);&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	document.addEventListener(&amp;#039;visibilitychange&amp;#039;, () =&amp;gt; {&lt;br /&gt;
	    if (document.visibilityState === &amp;#039;visible&amp;#039;) {&lt;br /&gt;
	    	portal.querySelector(&amp;#039;.mp-portal-active&amp;#039;).classList.remove(&amp;#039;mp-portal-active&amp;#039;);&lt;br /&gt;
	        thisPage.classList.add(&amp;#039;mp-portal-active&amp;#039;);&lt;br /&gt;
	    }&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const logoLinks = [&lt;br /&gt;
	document.querySelector(&amp;quot;a.mw-wiki-logo, header .branding-box a&amp;quot;),&lt;br /&gt;
	document.querySelector(&amp;#039;a.toggle-list-item__anchor[href=&amp;quot;/&amp;quot;]&amp;#039;)&lt;br /&gt;
].filter(l =&amp;gt; l);&lt;br /&gt;
if (logoLinks.length !== 0) {&lt;br /&gt;
	const namespace = mw.config.get(&amp;quot;wgNamespaceNumber&amp;quot;) - mw.config.get(&amp;quot;wgNamespaceNumber&amp;quot;) % 2;&lt;br /&gt;
	let link = {&lt;br /&gt;
		10000: &amp;#039;/w/Dungeons:Wiki&amp;#039;,&lt;br /&gt;
		10002: &amp;#039;/w/Earth:Wiki&amp;#039;,&lt;br /&gt;
		10004: &amp;#039;/w/Story_Mode:Wiki&amp;#039;,&lt;br /&gt;
		10006: &amp;#039;/w/Legends:Wiki&amp;#039;,&lt;br /&gt;
		10012: &amp;#039;/w/Movie:Wiki&amp;#039;,&lt;br /&gt;
	}[namespace];&lt;br /&gt;
	&lt;br /&gt;
	if (link) {&lt;br /&gt;
		for (const logoLink of logoLinks) {&lt;br /&gt;
			logoLink.href = link;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
} );&lt;br /&gt;
/* End DOM ready */&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>M0dii</name></author>
	</entry>
</feed>