<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://armsofgod.wiki.spellsandguns.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://armsofgod.wiki.spellsandguns.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://armsofgod.wiki.spellsandguns.com/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-07-08T00:32:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://armsofgod.wiki.spellsandguns.com/index.php?title=MediaWiki:Common.js&amp;diff=2114&amp;oldid=prev</id>
		<title>Ta1ha: bot: Expand all / Collapse all controls for Help catalogues</title>
		<link rel="alternate" type="text/html" href="https://armsofgod.wiki.spellsandguns.com/index.php?title=MediaWiki:Common.js&amp;diff=2114&amp;oldid=prev"/>
		<updated>2026-06-10T16:21:32Z</updated>

		<summary type="html">&lt;p&gt;bot: Expand all / Collapse all controls for Help catalogues&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:21, 10 June 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/* WM-BLOCK-BEGIN armsofgod-interactive */&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * MediaWiki:Common.js — baseline JS.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * MediaWiki:Common.js — baseline JS.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l158&quot;&gt;Line 158:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 157:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *    common with the active chips of that group. Groups AND together;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *    common with the active chips of that group. Groups AND together;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *    chips within a group OR together. Reset clears everything.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *    chips within a group OR together. Reset clears everything.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; *&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; * 3. Catalogue expand/collapse-all: .wm-expand-all / .wm-collapse-all&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; *    buttons inside a .wm-catalogue wrapper (Help:Wiki Editing module /&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; *    template / data-schema catalogues) expand or collapse every&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; *    jquery.makeCollapsible table inside THAT wrapper only.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * ES5 only, jQuery + mw provided by MediaWiki. Dark styling lives in&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * ES5 only, jQuery + mw provided by MediaWiki. Dark styling lives in&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * MediaWiki:Common.css (.wm-tipbox / .wm-chip / .wm-row-hidden).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * MediaWiki:Common.css (.wm-tipbox / .wm-chip / .wm-row-hidden &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; * .wm-catalogue-controls&lt;/ins&gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;( function ( $ ) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;( function ( $ ) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l168&quot;&gt;Line 168:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 173:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		initTipPopups();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		initTipPopups();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		initFilterChips();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		initFilterChips();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		initCatalogueControls();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	} );&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	} );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l381&quot;&gt;Line 381:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 387:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	/* ------------------------------- catalogue expand/collapse all ---- */&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	function initCatalogueControls() {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		$( document ).on( &#039;click&#039;, &#039;.wm-expand-all, .wm-collapse-all&#039;, function ( e ) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			e.preventDefault();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			var expand = $( this ).hasClass( &#039;wm-expand-all&#039; );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			var $scope = $( this ).closest( &#039;.wm-catalogue&#039; );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			if ( !$scope.length ) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;				return;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			// makeCollapsible ships with core page rendering, but wait for&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			// the module anyway so the data API is guaranteed initialized.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			mw.loader.using( &#039;jquery.makeCollapsible&#039; ).then( function () {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;				$scope.find( &#039;.mw-collapsible&#039; ).each( function () {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					var $el = $( this );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					var api = $el.data( &#039;mw-collapsible&#039; );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					if ( api &amp;amp;&amp;amp; api.expand &amp;amp;&amp;amp; api.collapse ) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;						if ( expand ) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;							api.expand();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;						} else {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;							api.collapse();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;						}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;						return;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					// Fallback: synthetic toggle click, but only when the&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					// current collapsed state mismatches the target so it&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					// never flips a table the wrong way.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					var collapsed = $el.hasClass( &#039;mw-collapsed&#039; );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					if ( collapsed === expand ) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;						$el.find( &#039;.mw-collapsible-toggle&#039; ).first().trigger( &#039;click&#039; );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;				} );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			} );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		} );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}( jQuery ) );&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}( jQuery ) );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/* WM-BLOCK-END armsofgod-interactive */&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key armsofgodwiki:diff:1.41:old-1851:rev-2114:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Ta1ha</name></author>
	</entry>
	<entry>
		<id>https://armsofgod.wiki.spellsandguns.com/index.php?title=MediaWiki:Common.js&amp;diff=1851&amp;oldid=prev</id>
		<title>Ta1ha: bot: hover-infobox tooltips + comparison filter chips (+ library tab/collapsible init)</title>
		<link rel="alternate" type="text/html" href="https://armsofgod.wiki.spellsandguns.com/index.php?title=MediaWiki:Common.js&amp;diff=1851&amp;oldid=prev"/>
		<updated>2026-06-10T06:07:55Z</updated>

		<summary type="html">&lt;p&gt;bot: hover-infobox tooltips + comparison filter chips (+ library tab/collapsible init)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* WM-BLOCK-BEGIN armsofgod-interactive */&lt;br /&gt;
/*&lt;br /&gt;
 * MediaWiki:Common.js — baseline JS.&lt;br /&gt;
 *&lt;br /&gt;
 * Ships unchanged across all games. No substitution slots — this file is fully&lt;br /&gt;
 * generic. Per-game customizations layer on top by editing&lt;br /&gt;
 * MediaWiki:Common.js/&amp;lt;gameslug&amp;gt;.js on the live wiki (manually, not pipeline-managed).&lt;br /&gt;
 *&lt;br /&gt;
 * SCOPE DISCIPLINE (mirrors MediaWiki:Common.css):&lt;br /&gt;
 *   - Tab init for .wm-tabs (forward-looking — Phase 12 catalogue #1 variant-rarity&lt;br /&gt;
 *     tabbed infoboxes will emit elements with these data attributes)&lt;br /&gt;
 *   - Collapsible-section toggle for .wm-collapsible (alternative to MediaWiki&amp;#039;s&lt;br /&gt;
 *     built-in mw-collapsible when we want consistent class names)&lt;br /&gt;
 *   - NO business logic, NO third-party libs, NO modal/popup chrome&lt;br /&gt;
 *&lt;br /&gt;
 * Graceful degradation: every interactive piece must be functional WITHOUT JS&lt;br /&gt;
 * (server-rendered content is what readers see; JS adds interactivity, never&lt;br /&gt;
 * gates the content).&lt;br /&gt;
 *&lt;br /&gt;
 * ES5 only — MediaWiki:Common.js runs without transpilation.&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;
	$( document ).ready( function () {&lt;br /&gt;
		initTabs();&lt;br /&gt;
		initCollapsibles();&lt;br /&gt;
		initCarousels();&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Tabbed-panel init. Activates any container with:&lt;br /&gt;
	 *&lt;br /&gt;
	 *   &amp;lt;div class=&amp;quot;wm-tabs&amp;quot; data-wm-tabs&amp;gt;&lt;br /&gt;
	 *     &amp;lt;div class=&amp;quot;wm-tabs__buttons&amp;quot; data-wm-tabs-btns&amp;gt;&lt;br /&gt;
	 *       &amp;lt;div class=&amp;quot;wm-tabs__button&amp;quot; data-wm-tabs-btn=&amp;quot;1&amp;quot;&amp;gt;I&amp;lt;/div&amp;gt;&lt;br /&gt;
	 *       &amp;lt;div class=&amp;quot;wm-tabs__button&amp;quot; data-wm-tabs-btn=&amp;quot;2&amp;quot;&amp;gt;II&amp;lt;/div&amp;gt;&lt;br /&gt;
	 *     &amp;lt;/div&amp;gt;&lt;br /&gt;
	 *     &amp;lt;div class=&amp;quot;wm-tabs__panels&amp;quot; data-wm-tabs-panels&amp;gt;&lt;br /&gt;
	 *       &amp;lt;div class=&amp;quot;wm-tabs__panel&amp;quot; data-wm-tabs-panel=&amp;quot;1&amp;quot;&amp;gt;…&amp;lt;/div&amp;gt;&lt;br /&gt;
	 *       &amp;lt;div class=&amp;quot;wm-tabs__panel wm-tabs__panel--hidden&amp;quot; data-wm-tabs-panel=&amp;quot;2&amp;quot;&amp;gt;…&amp;lt;/div&amp;gt;&lt;br /&gt;
	 *     &amp;lt;/div&amp;gt;&lt;br /&gt;
	 *   &amp;lt;/div&amp;gt;&lt;br /&gt;
	 *&lt;br /&gt;
	 * Click on a button hides every panel except the matching one. First panel&lt;br /&gt;
	 * is visible by default (server-rendered); JS only swaps on click.&lt;br /&gt;
	 *&lt;br /&gt;
	 * If JS is off, the first panel shows and others stay hidden — readers&lt;br /&gt;
	 * see SOMETHING (the most common variant), just not the tabs.&lt;br /&gt;
	 */&lt;br /&gt;
	function initTabs() {&lt;br /&gt;
		var $containers = $( &amp;#039;[data-wm-tabs]&amp;#039; );&lt;br /&gt;
		if ( !$containers.length ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		$containers.each( function () {&lt;br /&gt;
			var $container = $( this );&lt;br /&gt;
			var $btns = $container.find( &amp;#039;[data-wm-tabs-btn]&amp;#039; );&lt;br /&gt;
			var $panels = $container.find( &amp;#039;[data-wm-tabs-panel]&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
			$btns.on( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
				var key = $( this ).attr( &amp;#039;data-wm-tabs-btn&amp;#039; );&lt;br /&gt;
				$btns.removeClass( &amp;#039;wm-tabs__button--active&amp;#039; );&lt;br /&gt;
				$( this ).addClass( &amp;#039;wm-tabs__button--active&amp;#039; );&lt;br /&gt;
				$panels.addClass( &amp;#039;wm-tabs__panel--hidden&amp;#039; );&lt;br /&gt;
				$panels.filter( &amp;#039;[data-wm-tabs-panel=&amp;quot;&amp;#039; + key + &amp;#039;&amp;quot;]&amp;#039; )&lt;br /&gt;
					.removeClass( &amp;#039;wm-tabs__panel--hidden&amp;#039; );&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Collapsible-section toggle. Activates any element with:&lt;br /&gt;
	 *&lt;br /&gt;
	 *   &amp;lt;div class=&amp;quot;wm-collapsible&amp;quot; data-wm-collapsible&amp;gt;&lt;br /&gt;
	 *     &amp;lt;div class=&amp;quot;wm-collapsible__header&amp;quot; data-wm-collapsible-toggle&amp;gt;Section header (click to collapse)&amp;lt;/div&amp;gt;&lt;br /&gt;
	 *     &amp;lt;div class=&amp;quot;wm-collapsible__body&amp;quot;&amp;gt;…&amp;lt;/div&amp;gt;&lt;br /&gt;
	 *   &amp;lt;/div&amp;gt;&lt;br /&gt;
	 *&lt;br /&gt;
	 * Click on the header toggles a `wm-collapsible--collapsed` class on the&lt;br /&gt;
	 * container. CSS in MediaWiki:Common.css handles the show/hide via&lt;br /&gt;
	 * `.wm-collapsible--collapsed .wm-collapsible__body { display: none; }`.&lt;br /&gt;
	 *&lt;br /&gt;
	 * If JS is off, sections stay expanded (the readable default).&lt;br /&gt;
	 *&lt;br /&gt;
	 * MediaWiki ships a built-in `mw-collapsible` that does similar work; this&lt;br /&gt;
	 * exists for the cases where we want a consistent wm-* class namespace&lt;br /&gt;
	 * across our templates (so MediaWiki:Common.css selectors stay simple).&lt;br /&gt;
	 */&lt;br /&gt;
	function initCollapsibles() {&lt;br /&gt;
		$( &amp;#039;[data-wm-collapsible-toggle]&amp;#039; ).on( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
			$( this ).closest( &amp;#039;[data-wm-collapsible]&amp;#039; )&lt;br /&gt;
				.toggleClass( &amp;#039;wm-collapsible--collapsed&amp;#039; );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Carousel init. Paired with Widget:Carousel emitting.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Indexing convention: data-* attributes are 0-indexed (DOM convention);&lt;br /&gt;
	 * aria-labels are 1-indexed (&amp;quot;Slide 1&amp;quot;, &amp;quot;Slide 2&amp;quot; — human convention).&lt;br /&gt;
	 * Don&amp;#039;t &amp;quot;fix&amp;quot; this — matches WAI-ARIA carousel patterns.&lt;br /&gt;
	 *&lt;br /&gt;
	 *&lt;br /&gt;
	 *   &amp;lt;div class=&amp;quot;wm-carousel&amp;quot; data-wm-carousel&amp;gt;&lt;br /&gt;
	 *     &amp;lt;div data-wm-carousel-slides&amp;gt;&lt;br /&gt;
	 *       &amp;lt;div data-wm-carousel-slide=&amp;quot;0&amp;quot; class=&amp;quot;wm-carousel__slide--active&amp;quot;&amp;gt;…&amp;lt;/div&amp;gt;&lt;br /&gt;
	 *       &amp;lt;div data-wm-carousel-slide=&amp;quot;1&amp;quot;&amp;gt;…&amp;lt;/div&amp;gt;&lt;br /&gt;
	 *     &amp;lt;/div&amp;gt;&lt;br /&gt;
	 *     &amp;lt;div data-wm-carousel-btns&amp;gt;&lt;br /&gt;
	 *       &amp;lt;button data-wm-carousel-btn=&amp;quot;0&amp;quot; class=&amp;quot;wm-carousel__btn--active&amp;quot;&amp;gt;…&amp;lt;/button&amp;gt;&lt;br /&gt;
	 *       &amp;lt;button data-wm-carousel-btn=&amp;quot;1&amp;quot;&amp;gt;…&amp;lt;/button&amp;gt;&lt;br /&gt;
	 *     &amp;lt;/div&amp;gt;&lt;br /&gt;
	 *   &amp;lt;/div&amp;gt;&lt;br /&gt;
	 *&lt;br /&gt;
	 * Click a button → opacity-fade the matching slide in, others out. First&lt;br /&gt;
	 * slide is server-rendered visible (opacity:1); JS-off readers see only that.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Active-state CSS lives in MediaWiki:Common.css. JS toggles class names +&lt;br /&gt;
	 * inline opacity (the inline rule is for graceful degradation when CSS&lt;br /&gt;
	 * hasn&amp;#039;t loaded yet).&lt;br /&gt;
	 */&lt;br /&gt;
	function initCarousels() {&lt;br /&gt;
		$( &amp;#039;[data-wm-carousel]&amp;#039; ).each( function () {&lt;br /&gt;
			var $car = $( this );&lt;br /&gt;
			var $slides = $car.find( &amp;#039;[data-wm-carousel-slide]&amp;#039; );&lt;br /&gt;
			var $btns = $car.find( &amp;#039;[data-wm-carousel-btn]&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
			$btns.on( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
				var idx = $( this ).attr( &amp;#039;data-wm-carousel-btn&amp;#039; );&lt;br /&gt;
				$btns.removeClass( &amp;#039;wm-carousel__btn--active&amp;#039; ).css( &amp;#039;background&amp;#039;, &amp;#039;transparent&amp;#039; );&lt;br /&gt;
				$( this ).addClass( &amp;#039;wm-carousel__btn--active&amp;#039; ).css( &amp;#039;background&amp;#039;, &amp;#039;#888&amp;#039; );&lt;br /&gt;
				$slides.removeClass( &amp;#039;wm-carousel__slide--active&amp;#039; ).css( &amp;#039;opacity&amp;#039;, &amp;#039;0&amp;#039; );&lt;br /&gt;
				$slides.filter( &amp;#039;[data-wm-carousel-slide=&amp;quot;&amp;#039; + idx + &amp;#039;&amp;quot;]&amp;#039; )&lt;br /&gt;
					.addClass( &amp;#039;wm-carousel__slide--active&amp;#039; ).css( &amp;#039;opacity&amp;#039;, &amp;#039;1&amp;#039; );&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
}( jQuery ) );&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Arms of God — per-game interactivity block (appended after the generic&lt;br /&gt;
 * library block by 5-build-pages/code/emit_pages.py::emit_css_js).&lt;br /&gt;
 *&lt;br /&gt;
 * 1. Hover-infobox tooltips: any element with class=&amp;quot;wm-tip&amp;quot;&lt;br /&gt;
 *    data-tip-title=&amp;quot;&amp;lt;page&amp;gt;&amp;quot; (emitted by Module:Iconbox, Module:CrossRef,&lt;br /&gt;
 *    Module:Index, Module:LinkGrid, Module:StatIndex and the comparison&lt;br /&gt;
 *    datasets) shows the target page&amp;#039;s infobox in a dark floating popup on&lt;br /&gt;
 *    hover. The infobox HTML is fetched once per title via api.php&lt;br /&gt;
 *    action=parse and cached for the page view. No JS / touch-only device /&lt;br /&gt;
 *    page without an infobox -&amp;gt; plain link, no popup.&lt;br /&gt;
 *&lt;br /&gt;
 * 2. Comparison filter chips: .wm-filterbar bars (shipped display:none so&lt;br /&gt;
 *    no-JS readers never see inert controls) are revealed; clicking a&lt;br /&gt;
 *    .wm-chip toggles it and hides table rows whose data-&amp;lt;group&amp;gt; attribute&lt;br /&gt;
 *    (data-element / data-class / data-tier / data-type) has no value in&lt;br /&gt;
 *    common with the active chips of that group. Groups AND together;&lt;br /&gt;
 *    chips within a group OR together. Reset clears everything.&lt;br /&gt;
 *&lt;br /&gt;
 * ES5 only, jQuery + mw provided by MediaWiki. Dark styling lives in&lt;br /&gt;
 * MediaWiki:Common.css (.wm-tipbox / .wm-chip / .wm-row-hidden).&lt;br /&gt;
 */&lt;br /&gt;
( function ( $ ) {&lt;br /&gt;
	&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	$( document ).ready( function () {&lt;br /&gt;
		initTipPopups();&lt;br /&gt;
		initFilterChips();&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
	/* ---------------------------------------------- hover tooltips ---- */&lt;br /&gt;
&lt;br /&gt;
	function initTipPopups() {&lt;br /&gt;
		// Hover-driven feature: skip entirely on touch-only devices.&lt;br /&gt;
		if ( window.matchMedia &amp;amp;&amp;amp; window.matchMedia( &amp;#039;(hover: none)&amp;#039; ).matches ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var cache = {};   // title -&amp;gt; html string, or false (= no popup)&lt;br /&gt;
		var timer = null;&lt;br /&gt;
		var $box = null;&lt;br /&gt;
		var current = null;&lt;br /&gt;
&lt;br /&gt;
		function apiUrl() {&lt;br /&gt;
			return mw.config.get( &amp;#039;wgScriptPath&amp;#039; ) + &amp;#039;/api.php&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		function ensureBox() {&lt;br /&gt;
			if ( !$box ) {&lt;br /&gt;
				$box = $( &amp;#039;&amp;lt;div&amp;gt;&amp;#039; ).addClass( &amp;#039;wm-tipbox&amp;#039; )&lt;br /&gt;
					.css( {&lt;br /&gt;
						position: &amp;#039;absolute&amp;#039;,&lt;br /&gt;
						zIndex: 1000,&lt;br /&gt;
						maxWidth: &amp;#039;360px&amp;#039;,&lt;br /&gt;
						background: &amp;#039;#1c1d22&amp;#039;,&lt;br /&gt;
						color: &amp;#039;#e6e6e6&amp;#039;,&lt;br /&gt;
						border: &amp;#039;1px solid #3a3c44&amp;#039;,&lt;br /&gt;
						borderRadius: &amp;#039;5px&amp;#039;,&lt;br /&gt;
						boxShadow: &amp;#039;0 6px 18px rgba(0,0,0,0.65)&amp;#039;,&lt;br /&gt;
						padding: &amp;#039;6px&amp;#039;,&lt;br /&gt;
						fontSize: &amp;#039;0.9em&amp;#039;,&lt;br /&gt;
						pointerEvents: &amp;#039;none&amp;#039;,&lt;br /&gt;
						display: &amp;#039;none&amp;#039;&lt;br /&gt;
					} )&lt;br /&gt;
					.appendTo( document.body );&lt;br /&gt;
			}&lt;br /&gt;
			return $box;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		function position( $b, x, y ) {&lt;br /&gt;
			var w = $b.outerWidth() || 360;&lt;br /&gt;
			var winRight = $( window ).scrollLeft() + $( window ).width();&lt;br /&gt;
			var left = ( x + 18 + w &amp;gt; winRight ) ? Math.max( 4, x - w - 12 ) : x + 18;&lt;br /&gt;
			$b.css( { left: left + &amp;#039;px&amp;#039;, top: ( y + 14 ) + &amp;#039;px&amp;#039; } );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		function extract( html ) {&lt;br /&gt;
			var $root = $( &amp;#039;&amp;lt;div&amp;gt;&amp;#039; ).html( html );&lt;br /&gt;
			var $ib = $root.find( &amp;#039;.infobox&amp;#039; ).first();&lt;br /&gt;
			if ( $ib.length ) {&lt;br /&gt;
				// neutralise the on-page float/width inline styles&lt;br /&gt;
				$ib.css( { float: &amp;#039;none&amp;#039;, width: &amp;#039;auto&amp;#039;, maxWidth: &amp;#039;340px&amp;#039;, margin: 0 } );&lt;br /&gt;
				return $( &amp;#039;&amp;lt;div&amp;gt;&amp;#039; ).append( $ib ).html();&lt;br /&gt;
			}&lt;br /&gt;
			var $p = $root.find( &amp;#039;p&amp;#039; ).filter( function () {&lt;br /&gt;
				return $.trim( $( this ).text() ).length &amp;gt; 0;&lt;br /&gt;
			} ).first();&lt;br /&gt;
			if ( $p.length ) {&lt;br /&gt;
				var text = $.trim( $p.text() );&lt;br /&gt;
				if ( text.length &amp;gt; 320 ) {&lt;br /&gt;
					text = text.slice( 0, 317 ) + &amp;#039;…&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
				return $( &amp;#039;&amp;lt;div&amp;gt;&amp;#039; ).text( text ).html();&lt;br /&gt;
			}&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		function show( title, x, y ) {&lt;br /&gt;
			if ( cache[ title ] === false ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			if ( typeof cache[ title ] === &amp;#039;string&amp;#039; ) {&lt;br /&gt;
				var $b = ensureBox();&lt;br /&gt;
				$b.html( cache[ title ] ).show();&lt;br /&gt;
				position( $b, x, y );&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			$.getJSON( apiUrl(), {&lt;br /&gt;
				action: &amp;#039;parse&amp;#039;,&lt;br /&gt;
				page: title,&lt;br /&gt;
				prop: &amp;#039;text&amp;#039;,&lt;br /&gt;
				redirects: 1,&lt;br /&gt;
				disablelimitreport: 1,&lt;br /&gt;
				formatversion: 2,&lt;br /&gt;
				format: &amp;#039;json&amp;#039;&lt;br /&gt;
			} ).done( function ( data ) {&lt;br /&gt;
				var html = data &amp;amp;&amp;amp; data.parse &amp;amp;&amp;amp; data.parse.text;&lt;br /&gt;
				cache[ title ] = html ? extract( html ) : false;&lt;br /&gt;
				// only show if the cursor is still on the same link&lt;br /&gt;
				if ( current === title &amp;amp;&amp;amp; cache[ title ] ) {&lt;br /&gt;
					var $b = ensureBox();&lt;br /&gt;
					$b.html( cache[ title ] ).show();&lt;br /&gt;
					position( $b, x, y );&lt;br /&gt;
				}&lt;br /&gt;
			} ).fail( function () {&lt;br /&gt;
				cache[ title ] = false;&lt;br /&gt;
			} );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		function hide() {&lt;br /&gt;
			current = null;&lt;br /&gt;
			if ( timer ) {&lt;br /&gt;
				clearTimeout( timer );&lt;br /&gt;
				timer = null;&lt;br /&gt;
			}&lt;br /&gt;
			if ( $box ) {&lt;br /&gt;
				$box.hide();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$( document ).on( &amp;#039;mouseenter&amp;#039;, &amp;#039;.wm-tip&amp;#039;, function ( e ) {&lt;br /&gt;
			// no popups for links rendered inside a popup&lt;br /&gt;
			if ( $( this ).closest( &amp;#039;.wm-tipbox&amp;#039; ).length ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var title = $( this ).attr( &amp;#039;data-tip-title&amp;#039; );&lt;br /&gt;
			if ( !title ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var x = e.pageX, y = e.pageY;&lt;br /&gt;
			current = title;&lt;br /&gt;
			if ( timer ) {&lt;br /&gt;
				clearTimeout( timer );&lt;br /&gt;
			}&lt;br /&gt;
			timer = setTimeout( function () {&lt;br /&gt;
				if ( current === title ) {&lt;br /&gt;
					show( title, x, y );&lt;br /&gt;
				}&lt;br /&gt;
			}, 160 );&lt;br /&gt;
		} ).on( &amp;#039;mouseleave&amp;#039;, &amp;#039;.wm-tip&amp;#039;, hide );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ---------------------------------------------- filter chips ------ */&lt;br /&gt;
&lt;br /&gt;
	function initFilterChips() {&lt;br /&gt;
		var $bars = $( &amp;#039;.wm-filterbar&amp;#039; );&lt;br /&gt;
		if ( !$bars.length ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var GROUPS = [ &amp;#039;element&amp;#039;, &amp;#039;class&amp;#039;, &amp;#039;tier&amp;#039;, &amp;#039;type&amp;#039; ];&lt;br /&gt;
&lt;br /&gt;
		function rowSelector() {&lt;br /&gt;
			var sel = [];&lt;br /&gt;
			for ( var i = 0; i &amp;lt; GROUPS.length; i++ ) {&lt;br /&gt;
				sel.push( &amp;#039;tr[data-&amp;#039; + GROUPS[ i ] + &amp;#039;]&amp;#039; );&lt;br /&gt;
			}&lt;br /&gt;
			return sel.join( &amp;#039;,&amp;#039; );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		function apply() {&lt;br /&gt;
			var active = {};&lt;br /&gt;
			$( &amp;#039;.wm-chip-on&amp;#039; ).each( function () {&lt;br /&gt;
				var g = $( this ).attr( &amp;#039;data-group&amp;#039; );&lt;br /&gt;
				var v = $( this ).attr( &amp;#039;data-val&amp;#039; );&lt;br /&gt;
				if ( !g || !v ) {&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
				( active[ g ] = active[ g ] || [] ).push( v );&lt;br /&gt;
			} );&lt;br /&gt;
			$( rowSelector() ).each( function () {&lt;br /&gt;
				var row = this;&lt;br /&gt;
				var hidden = false;&lt;br /&gt;
				for ( var g in active ) {&lt;br /&gt;
					var rv = row.getAttribute( &amp;#039;data-&amp;#039; + g );&lt;br /&gt;
					if ( rv === null ) {&lt;br /&gt;
						continue; // row not classified on this axis&lt;br /&gt;
					}&lt;br /&gt;
					var tokens = rv.split( &amp;#039; &amp;#039; );&lt;br /&gt;
					var hit = false;&lt;br /&gt;
					for ( var i = 0; i &amp;lt; tokens.length &amp;amp;&amp;amp; !hit; i++ ) {&lt;br /&gt;
						for ( var j = 0; j &amp;lt; active[ g ].length &amp;amp;&amp;amp; !hit; j++ ) {&lt;br /&gt;
							if ( tokens[ i ] === active[ g ][ j ] ) {&lt;br /&gt;
								hit = true;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					if ( !hit ) {&lt;br /&gt;
						hidden = true;&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				$( row ).toggleClass( &amp;#039;wm-row-hidden&amp;#039;, hidden )&lt;br /&gt;
					.css( &amp;#039;display&amp;#039;, hidden ? &amp;#039;none&amp;#039; : &amp;#039;&amp;#039; );&lt;br /&gt;
			} );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$bars.show(); // bars ship display:none; only JS users see them&lt;br /&gt;
&lt;br /&gt;
		$( document ).on( &amp;#039;click&amp;#039;, &amp;#039;.wm-filterbar .wm-chip&amp;#039;, function () {&lt;br /&gt;
			var $chip = $( this );&lt;br /&gt;
			if ( $chip.hasClass( &amp;#039;wm-chip-clear&amp;#039; ) ) {&lt;br /&gt;
				$chip.closest( &amp;#039;.wm-filterbar&amp;#039; ).find( &amp;#039;.wm-chip-on&amp;#039; )&lt;br /&gt;
					.removeClass( &amp;#039;wm-chip-on&amp;#039; )&lt;br /&gt;
					.each( restyleChip );&lt;br /&gt;
				apply();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			$chip.toggleClass( &amp;#039;wm-chip-on&amp;#039; );&lt;br /&gt;
			restyleChip.call( this );&lt;br /&gt;
			apply();&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		// Inline-style fallback so the active state is visible even if the&lt;br /&gt;
		// site CSS is stale (every shipped surface styles inline-first).&lt;br /&gt;
		function restyleChip() {&lt;br /&gt;
			var $chip = $( this );&lt;br /&gt;
			if ( $chip.hasClass( &amp;#039;wm-chip-on&amp;#039; ) ) {&lt;br /&gt;
				$chip.css( { background: &amp;#039;#f1e9d2&amp;#039;, color: &amp;#039;#111&amp;#039;, fontWeight: &amp;#039;bold&amp;#039; } );&lt;br /&gt;
			} else {&lt;br /&gt;
				$chip.css( { background: &amp;#039;&amp;#039;, color: &amp;#039;&amp;#039;, fontWeight: &amp;#039;&amp;#039; } );&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}( jQuery ) );&lt;br /&gt;
/* WM-BLOCK-END armsofgod-interactive */&lt;/div&gt;</summary>
		<author><name>Ta1ha</name></author>
	</entry>
</feed>