<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Streamline.js</id>
	<title>MediaWiki:Gadget-Streamline.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Streamline.js"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:Gadget-Streamline.js&amp;action=history"/>
	<updated>2026-04-10T23:24:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=MediaWiki:Gadget-Streamline.js&amp;diff=475031&amp;oldid=prev</id>
		<title>Sware: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:Gadget-Streamline.js&amp;diff=475031&amp;oldid=prev"/>
		<updated>2025-11-04T17:52:29Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:52, 4 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=MediaWiki:Gadget-Streamline.js&amp;diff=475030&amp;oldid=prev</id>
		<title>wikt&gt;Surjection at 12:49, 29 October 2025</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:Gadget-Streamline.js&amp;diff=475030&amp;oldid=prev"/>
		<updated>2025-10-29T12:49:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;quot;use strict&amp;quot;;&lt;br /&gt;
// {{documentation}}&lt;br /&gt;
// &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/*jshint strict:true, undef:true, latedef:true, esversion:6 */&lt;br /&gt;
/* global mw, createNavToggle */ &lt;br /&gt;
&lt;br /&gt;
const STREAMLINE_SYMBOL = &amp;quot;⌰&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// [[MediaWiki:Gadget-WiktGadgetPrefs.js]]&lt;br /&gt;
const preferences = mw.wiktGadgetPrefs.get(&lt;br /&gt;
	&amp;quot;streamline&amp;quot;,&lt;br /&gt;
	{&lt;br /&gt;
		label: {&lt;br /&gt;
			en: &amp;quot;Streamline&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		collapseElements: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;strenum&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;aboveDefinitions&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Elements to collapse&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;choices&amp;quot;: [&lt;br /&gt;
				&amp;quot;aboveDefinitions&amp;quot;,&lt;br /&gt;
				&amp;quot;allExceptNotes&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;choiceLabels&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: {&lt;br /&gt;
					&amp;quot;aboveDefinitions&amp;quot;: &amp;quot;Sections before definitions&amp;quot;,&lt;br /&gt;
					&amp;quot;allExceptNotes&amp;quot;: &amp;quot;Sections before and after definitions&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		runInReconstructions: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: true,&lt;br /&gt;
			&amp;quot;label&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Apply also to reconstruction pages&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function makeNavFrame(heading, editLinks, toggleCat, contents) {&lt;br /&gt;
	// now make a collapsible box&lt;br /&gt;
	const navHead = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
	navHead.className = &amp;quot;NavHead&amp;quot;;&lt;br /&gt;
	navHead.style.cursor = &amp;quot;pointer&amp;quot;;&lt;br /&gt;
	navHead.style.fontSize = &amp;quot;1.1em&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	const navContent = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
	navContent.className = &amp;quot;NavContent boxcontent streamline-boxcontent&amp;quot;;&lt;br /&gt;
	navContent.style.textAlign = &amp;quot;left&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	const navFrame = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
	navFrame.className = &amp;quot;NavFrame NavFrame-streamline&amp;quot;;&lt;br /&gt;
	if (toggleCat)&lt;br /&gt;
		navFrame.setAttribute(&amp;quot;data-toggle-category&amp;quot;, toggleCat);&lt;br /&gt;
	navFrame.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	navFrame.append(navHead, navContent);&lt;br /&gt;
	navHead.append(`${STREAMLINE_SYMBOL} ${heading}`);&lt;br /&gt;
	&lt;br /&gt;
	try {&lt;br /&gt;
		if (createNavToggle) createNavToggle(navFrame);&lt;br /&gt;
	} catch (e) { }&lt;br /&gt;
	&lt;br /&gt;
	if (editLinks) {&lt;br /&gt;
		navContent.append(editLinks);&lt;br /&gt;
		editLinks.style.float = &amp;quot;right&amp;quot;;&lt;br /&gt;
		// try displaying the edit links next to the show button&lt;br /&gt;
		editLinks.style.marginTop = &amp;quot;-1.5em&amp;quot;;&lt;br /&gt;
		editLinks.style.marginRight = &amp;quot;8ch&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	navContent.append(...contents);&lt;br /&gt;
	&lt;br /&gt;
	return navFrame;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isNavFrameOpen(frame) {&lt;br /&gt;
	const content = frame.querySelector(&amp;quot;.NavContent&amp;quot;);&lt;br /&gt;
	if (!content) return false;&lt;br /&gt;
	const computedStyle = window.getComputedStyle(content);&lt;br /&gt;
	if (!computedStyle) return false;&lt;br /&gt;
	return computedStyle.display !== &amp;quot;none&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function openNavFrame(frame) {&lt;br /&gt;
	if (!isNavFrameOpen(frame)) {&lt;br /&gt;
		const navHead = frame.querySelector(&amp;quot;.NavHead&amp;quot;);&lt;br /&gt;
		if (navHead)&lt;br /&gt;
			navHead.click();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function anchorInUrl(anchor) {&lt;br /&gt;
	if (window.location.hash) {&lt;br /&gt;
		return window.location.hash.replace(/^#/, &amp;quot;&amp;quot;) === anchor;&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasElementClass(element, className) {&lt;br /&gt;
	return element.classList.contains(className);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function shouldEndCollapsible(element) {&lt;br /&gt;
	return element.matches(&amp;quot;h1, h2, h3, h4, h5, h6, hr&amp;quot;)				// end on heading or horizontal line&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;NavFrame-streamline&amp;quot;)	 			// no nested streamline navboxes&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;mw-heading&amp;quot;)		 				// Parsoid&lt;br /&gt;
		; 	// this is on its own line so that it&amp;#039;s easier to add new rules&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function shouldExcludeFromCollapsible(element) {&lt;br /&gt;
	return hasElementClass(element, &amp;quot;thumb&amp;quot;)					 		// images&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;sister-project&amp;quot;)					// sister project box&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;kanji-table&amp;quot;)				 		// ja-kanjitab&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;floatright&amp;quot;)				 		// various tables&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;template-anchor&amp;quot;)					// anchor&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;t-thumbs-outer&amp;quot;)					// thumbs&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;interproject-box&amp;quot;)					// interwiki boxes&lt;br /&gt;
		|| element.getAttribute(&amp;quot;typeof&amp;quot;) === &amp;quot;mw:File/Thumb&amp;quot;			// new floating image boxes&lt;br /&gt;
		|| hasElementClass(element, &amp;quot;mw-halign-right&amp;quot;)					// mw-halign-right, by new floating image boxes&lt;br /&gt;
		|| element.getAttribute(&amp;quot;align&amp;quot;) === &amp;quot;right&amp;quot;					// anything that (explicitly) aligns&lt;br /&gt;
		|| element.style.float === &amp;quot;right&amp;quot;								// anything that (explicitly) floats&lt;br /&gt;
		; 	// this is on its own line so that it&amp;#039;s easier to add new rules&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function shouldCollapseForTheSakeOf(element) {&lt;br /&gt;
	if (element.nodeType === 1) {&lt;br /&gt;
		// don&amp;#039;t collapse for the sake of senseid or etymid alone&lt;br /&gt;
		if (element.matches(&amp;quot;.senseid, .etymid&amp;quot;))&lt;br /&gt;
			return false;&lt;br /&gt;
		if (element.matches(&amp;quot;p, div, span&amp;quot;))&lt;br /&gt;
			return Array.prototype.some.call(element.childNodes, shouldCollapseForTheSakeOf);&lt;br /&gt;
		return element.tagName !== &amp;quot;BR&amp;quot;;&lt;br /&gt;
	} else if (element.nodeType === 3) {&lt;br /&gt;
		return !!element.textContent.trim(); // only if not entirely whitespace&lt;br /&gt;
	} else {&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getHeadingQuery(onlyL3) {&lt;br /&gt;
	return (onlyL3 ? [&amp;quot;h2&amp;quot;, &amp;quot;h3&amp;quot;] : [&amp;quot;h2&amp;quot;, &amp;quot;h3&amp;quot;, &amp;quot;h4&amp;quot;, &amp;quot;h5&amp;quot;])&lt;br /&gt;
			.map(heading =&amp;gt; `#mw-content-text ${heading}`)&lt;br /&gt;
			.join(&amp;quot;, &amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const navFramesById = {};&lt;br /&gt;
&lt;br /&gt;
function collapseHeadingInNavbox(headingCandidate, heading, toggleCat,&lt;br /&gt;
								 headingMatcher, addEditLinks) {&lt;br /&gt;
	let headingId;&lt;br /&gt;
&lt;br /&gt;
	const hl = headingCandidate.querySelector(&amp;quot;.mw-headline&amp;quot;);&lt;br /&gt;
	if (hl &amp;amp;&amp;amp; headingMatcher(hl.textContent))&lt;br /&gt;
		headingId = hl.id;&lt;br /&gt;
&lt;br /&gt;
	// Parsoid&lt;br /&gt;
	if (hasElementClass(headingCandidate.parentElement, &amp;quot;mw-heading&amp;quot;) &amp;amp;&amp;amp;&lt;br /&gt;
				headingMatcher(headingCandidate.textContent)) {&lt;br /&gt;
		headingId = headingCandidate.id;&lt;br /&gt;
		headingCandidate = headingCandidate.parentElement;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (!headingId) return [undefined, undefined];&lt;br /&gt;
&lt;br /&gt;
	// pick all elements until next heading&lt;br /&gt;
	const contents = [];&lt;br /&gt;
	let nx = headingCandidate.nextElementSibling;&lt;br /&gt;
	let collapse = false;&lt;br /&gt;
	while (nx) {&lt;br /&gt;
		if (shouldEndCollapsible(nx))&lt;br /&gt;
			break;&lt;br /&gt;
		if (!shouldExcludeFromCollapsible(nx)) {&lt;br /&gt;
			contents.push(nx);&lt;br /&gt;
			collapse = collapse || shouldCollapseForTheSakeOf(nx);&lt;br /&gt;
		}&lt;br /&gt;
		nx = nx.nextElementSibling;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (!collapse) return [undefined, undefined];&lt;br /&gt;
		&lt;br /&gt;
	const navFrame = makeNavFrame(heading, &lt;br /&gt;
		addEditLinks ? headingCandidate.querySelector(&amp;quot;.mw-editsection&amp;quot;) : null,&lt;br /&gt;
		toggleCat, contents);&lt;br /&gt;
	navFrame.id = headingId;&lt;br /&gt;
	navFramesById[navFrame.id] = navFrame;&lt;br /&gt;
	return [navFrame, headingCandidate];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeSingleCollapsible(heading, toggleCat, onlyL3) {&lt;br /&gt;
	document.querySelectorAll(getHeadingQuery(onlyL3)).forEach((e) =&amp;gt; {&lt;br /&gt;
		const [navFrame, headingElement] = collapseHeadingInNavbox(e,&lt;br /&gt;
				heading, toggleCat,&lt;br /&gt;
				(headingText) =&amp;gt; headingText === heading, true);&lt;br /&gt;
		if (navFrame)&lt;br /&gt;
			headingElement.parentNode.replaceChild(navFrame, headingElement);&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeNumberedCollapsible(heading, toggleCat) {&lt;br /&gt;
	const re = new RegExp(&amp;quot;^&amp;quot; + heading + &amp;quot; \\d+(?:\.\\d+)?$&amp;quot;);&lt;br /&gt;
	document.querySelectorAll(getHeadingQuery(false)).forEach((e) =&amp;gt; {&lt;br /&gt;
		const [navFrame, headingElement] = collapseHeadingInNavbox(e,&lt;br /&gt;
				heading, toggleCat,&lt;br /&gt;
				(headingText) =&amp;gt; headingText.match(re), false);&lt;br /&gt;
		if (navFrame)&lt;br /&gt;
			headingElement.parentNode.insertBefore(navFrame,&lt;br /&gt;
					headingElement.nextElementSibling);&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function moveAnagrams() {&lt;br /&gt;
	// move the Anagrams box above Further reading and References&lt;br /&gt;
	document.querySelectorAll(&amp;quot;.NavFrame[data-toggle-category=\&amp;quot;anagrams\&amp;quot;]&amp;quot;).forEach((e) =&amp;gt; {&lt;br /&gt;
		let p = e.previousElementSibling;&lt;br /&gt;
		while (p) {&lt;br /&gt;
			if (p.tagName === &amp;quot;H2&amp;quot;) {&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if (p.tagName === &amp;quot;H3&amp;quot;) {&lt;br /&gt;
				const hl = p.querySelector(&amp;quot;.mw-headline&amp;quot;);&lt;br /&gt;
				if (hl &amp;amp;&amp;amp; (hl.textContent === &amp;quot;Further reading&amp;quot; || hl.textContent === &amp;quot;References&amp;quot;)) {&lt;br /&gt;
					e.parentElement.insertBefore(e, p);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			p = p.previousElementSibling;&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function addGaps() {&lt;br /&gt;
	// add gaps before streamline navboxes if preceded by certain elements&lt;br /&gt;
	document.querySelectorAll(&amp;quot;.NavFrame-streamline&amp;quot;).forEach((sl) =&amp;gt; {&lt;br /&gt;
		const prev = sl.previousElementSibling;&lt;br /&gt;
		const next = sl.nextElementSibling;&lt;br /&gt;
		let tn;&lt;br /&gt;
		if (prev) {&lt;br /&gt;
			tn = prev.tagName;&lt;br /&gt;
			if (tn === &amp;quot;OL&amp;quot; || tn === &amp;quot;UL&amp;quot;) {&lt;br /&gt;
				sl.style.marginTop = &amp;quot;1em&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if (next) {&lt;br /&gt;
			tn = next.tagName;&lt;br /&gt;
			if (tn === &amp;quot;HR&amp;quot;) {&lt;br /&gt;
				sl.style.marginBottom = &amp;quot;1em&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function defaultStreamline() {&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Alternative forms&amp;quot;, &amp;quot;alternative forms&amp;quot;, true);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Alternative reconstructions&amp;quot;, &amp;quot;alternative reconstructions&amp;quot;, true);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Etymology&amp;quot;, &amp;quot;etymology&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Glyph origin&amp;quot;, &amp;quot;etymology&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Description&amp;quot;, &amp;quot;description&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Pronunciation&amp;quot;, &amp;quot;pronunciations&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Production&amp;quot;, &amp;quot;productions&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	makeNumberedCollapsible(&amp;quot;Etymology&amp;quot;, &amp;quot;etymology&amp;quot;);&lt;br /&gt;
	makeNumberedCollapsible(&amp;quot;Pronunciation&amp;quot;, &amp;quot;pronunciations&amp;quot;);&lt;br /&gt;
	makeNumberedCollapsible(&amp;quot;Production&amp;quot;, &amp;quot;productions&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	addGaps();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function superStreamline() {&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Alternative forms&amp;quot;, &amp;quot;alternative forms&amp;quot;, false);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Alternative reconstructions&amp;quot;, &amp;quot;alternative reconstructions&amp;quot;, false);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Inflection&amp;quot;, &amp;quot;inflection&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Declension&amp;quot;, &amp;quot;inflection&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Conjugation&amp;quot;, &amp;quot;inflection&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Mutation&amp;quot;, &amp;quot;mutation&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Synonyms&amp;quot;, &amp;quot;synonyms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Antonyms&amp;quot;, &amp;quot;antonyms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Hypernyms&amp;quot;, &amp;quot;hypernyms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Hyponyms&amp;quot;, &amp;quot;hyponyms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Meronyms&amp;quot;, &amp;quot;meronyms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Holonyms&amp;quot;, &amp;quot;holonyms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Troponyms&amp;quot;, &amp;quot;troponyms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Coordinate terms&amp;quot;, &amp;quot;coordinate terms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Derived terms&amp;quot;, &amp;quot;derived terms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Compounds&amp;quot;, &amp;quot;derived terms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Related terms&amp;quot;, &amp;quot;related terms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Collocations&amp;quot;, &amp;quot;collocations&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Descendants&amp;quot;, &amp;quot;descendants&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Trivia&amp;quot;, &amp;quot;trivia&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;See also&amp;quot;, &amp;quot;related terms&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;References&amp;quot;, &amp;quot;references&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Further reading&amp;quot;, &amp;quot;further reading&amp;quot;);&lt;br /&gt;
	makeSingleCollapsible(&amp;quot;Anagrams&amp;quot;, &amp;quot;anagrams&amp;quot;);&lt;br /&gt;
	moveAnagrams();&lt;br /&gt;
	&lt;br /&gt;
	addGaps();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function openNavFrameForElementWithId(targetId) {&lt;br /&gt;
	const navFrameTarget = navFramesById[targetId];&lt;br /&gt;
	if (navFrameTarget)&lt;br /&gt;
		openNavFrame(navFrameTarget);&lt;br /&gt;
&lt;br /&gt;
	// if what we targeted is inside a navframe, open it too&lt;br /&gt;
	const targetElement = document.getElementById(targetId);&lt;br /&gt;
	if (targetElement &amp;amp;&amp;amp; targetElement.closest) {&lt;br /&gt;
		const navFrameContainingTarget = targetElement.closest(&amp;quot;.NavFrame-streamline&amp;quot;);&lt;br /&gt;
		if (navFrameContainingTarget)&lt;br /&gt;
			openNavFrame(navFrameContainingTarget);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const { collapseElements, runInReconstructions } = preferences;&lt;br /&gt;
&lt;br /&gt;
// only run in content namespaces.&lt;br /&gt;
// this must also run on 4 in [[MediaWiki:Gadgets-definition]] so that [[WT:GPREFS]] works.&lt;br /&gt;
if (mw.config.get(&amp;quot;wgNamespaceNumber&amp;quot;) === 0 || (runInReconstructions &amp;amp;&amp;amp; mw.config.get(&amp;quot;wgNamespaceNumber&amp;quot;) === 118)) {&lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(() =&amp;gt; {&lt;br /&gt;
		try {&lt;br /&gt;
			defaultStreamline();&lt;br /&gt;
			if (collapseElements !== &amp;quot;aboveDefinitions&amp;quot;)&lt;br /&gt;
				superStreamline();&lt;br /&gt;
&lt;br /&gt;
			// refocus URL target in case the page layout changed, which it probably did&lt;br /&gt;
			// also open a navframe if targeted&lt;br /&gt;
			window.requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
				if (window.location.hash &amp;amp;&amp;amp; window.location.hash.match(/^#/)) {&lt;br /&gt;
					const targetId = window.location.hash.replace(/^#/, &amp;quot;&amp;quot;);&lt;br /&gt;
					const targetElement = document.getElementById(targetId);&lt;br /&gt;
					if (targetElement)&lt;br /&gt;
						targetElement.scrollIntoView();&lt;br /&gt;
					openNavFrameForElementWithId(targetId);&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
			// open a navframe if an internal link targets a section&lt;br /&gt;
			window.addEventListener(&amp;quot;hashchange&amp;quot;, () =&amp;gt; {&lt;br /&gt;
				if (window.location.hash) {&lt;br /&gt;
					const targetId = window.location.hash.replace(/^#/, &amp;quot;&amp;quot;);&lt;br /&gt;
					openNavFrameForElementWithId(targetId);&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
		} catch (e) {&lt;br /&gt;
			console.error(e);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>wikt&gt;Surjection</name></author>
	</entry>
</feed>