<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://spacestories.club/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AScmcCatalog.js</id>
	<title>MediaWiki:ScmcCatalog.js - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://spacestories.club/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AScmcCatalog.js"/>
	<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;action=history"/>
	<updated>2026-06-15T22:16:43Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25893&amp;oldid=prev</id>
		<title>Defer в 14:23, 15 июня 2026</title>
		<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25893&amp;oldid=prev"/>
		<updated>2026-06-15T14:23:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;amp;diff=25893&amp;amp;oldid=25890&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Defer</name></author>
	</entry>
	<entry>
		<id>https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25890&amp;oldid=prev</id>
		<title>Defer в 14:12, 15 июня 2026</title>
		<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25890&amp;oldid=prev"/>
		<updated>2026-06-15T14:12:30Z</updated>

		<summary type="html">&lt;p&gt;&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;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 16:12, 15 июня 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-l802&quot;&gt;Строка 802:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 802:&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;                     data.note,&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;                     data.note,&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;                     noteText,&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;                     noteText,&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;                    data.scan === &#039;stop&#039; ? &#039;scan off stop сканер не сканировать&#039; : &#039;&#039;,&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;                     &amp;#039;уровень &amp;#039; + level,&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;                     &amp;#039;уровень &amp;#039; + level,&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;                     &amp;#039;ур &amp;#039; + level,&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;                     &amp;#039;ур &amp;#039; + level,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Defer</name></author>
	</entry>
	<entry>
		<id>https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25887&amp;oldid=prev</id>
		<title>Defer в 14:03, 15 июня 2026</title>
		<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25887&amp;oldid=prev"/>
		<updated>2026-06-15T14:03:45Z</updated>

		<summary type="html">&lt;p&gt;&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;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 16:03, 15 июня 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-l828&quot;&gt;Строка 828:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 828:&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;             counter.textContent = &amp;#039;Показано: &amp;#039; + visible + &amp;#039; из &amp;#039; + rowElements.length;&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;             counter.textContent = &amp;#039;Показано: &amp;#039; + visible + &amp;#039; из &amp;#039; + rowElements.length;&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;        ready(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 guide = document.querySelector(&#039;.scmc-renata-guide&#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 (!guide) 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;        var toggle = guide.querySelector(&#039;.scmc-renata-guide-toggle&#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 (!toggle) 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;        function switchGuide() {&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 isOpen = guide.getAttribute(&#039;data-open&#039;) === &#039;true&#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;            guide.setAttribute(&#039;data-open&#039;, isOpen ? &#039;false&#039; : &#039;true&#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;        toggle.addEventListener(&#039;click&#039;, switchGuide);&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;        toggle.addEventListener(&#039;keydown&#039;, function (event) {&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 (event.key === &#039;Enter&#039; || event.key === &#039; &#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;                event.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;                switchGuide();&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;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;/table&gt;</summary>
		<author><name>Defer</name></author>
	</entry>
	<entry>
		<id>https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25813&amp;oldid=prev</id>
		<title>Defer в 09:02, 15 июня 2026</title>
		<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25813&amp;oldid=prev"/>
		<updated>2026-06-15T09:02:35Z</updated>

		<summary type="html">&lt;p&gt;&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;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 11:02, 15 июня 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-l60&quot;&gt;Строка 60:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 60:&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;     function sanitizeClassName(className) {&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 sanitizeClassName(className) {&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;var level = getLevelClass(className);&lt;/del&gt;&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;         &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;return &lt;/ins&gt;&#039;scmc-catalog-row &#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+ getLevelClass&lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;className&lt;/ins&gt;);&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;        var hasRowClass = false;&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; 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;/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; 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;        String(className || &#039;&#039;)&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; 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;            .split(/\s+/)&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; 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;            .forEach(function (item) {&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; 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;                if (item === &lt;/del&gt;&#039;scmc-catalog-row&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;) {&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; 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;                    hasRowClass = true;&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; 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;                }&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; 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;            });&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; 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;/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; 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;        return &lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hasRowClass ? &#039;scmc-catalog-row &#039; : &#039;scmc-catalog-row &#039;&lt;/del&gt;) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+ level&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;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-l284&quot;&gt;Строка 284:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 273:&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;             var sectionButton = event.target.closest(&amp;#039;.scmc-catalog-section-btn&amp;#039;);&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;             var sectionButton = event.target.closest(&amp;#039;.scmc-catalog-section-btn&amp;#039;);&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;             var levelButton = event.target.closest(&amp;#039;.scmc-catalog-level-btn&amp;#039;);&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;             var levelButton = event.target.closest(&amp;#039;.scmc-catalog-level-btn&amp;#039;);&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;            var expandButton = event.target.closest(&#039;.scmc-catalog-expand&#039;);&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; 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;&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; 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;            if (expandButton &amp;amp;&amp;amp; catalog.contains(expandButton)) {&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; 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;                event.preventDefault();&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; 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;                event.stopPropagation();&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; 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;&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; 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;                var expandRow = expandButton.closest(&#039;.scmc-catalog-row&#039;);&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; 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;                var isOpen = expandRow.classList.toggle(&#039;is-open&#039;);&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; 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;&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; 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;                expandButton.setAttribute(&#039;aria-expanded&#039;, isOpen ? &#039;true&#039; : &#039;false&#039;);&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; 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;                expandButton.title = isOpen ? &#039;Скрыть действия&#039; : &#039;Показать действия&#039;;&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; 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;                return;&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; 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;            }&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;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;             if (statusButton &amp;amp;&amp;amp; catalog.contains(statusButton)) {&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;             if (statusButton &amp;amp;&amp;amp; catalog.contains(statusButton)) {&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-l430&quot;&gt;Строка 430:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 406:&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;                 var position = makeButton(&amp;#039;scmc-catalog-index&amp;#039;, String(index + 1), &amp;#039;Изменить место&amp;#039;);&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;                 var position = makeButton(&amp;#039;scmc-catalog-index&amp;#039;, String(index + 1), &amp;#039;Изменить место&amp;#039;);&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;&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; 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;                var expandButton = makeButton(&#039;scmc-catalog-expand&#039;, &#039;›&#039;, &#039;Показать действия&#039;);&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; 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;                expandButton.setAttribute(&#039;aria-expanded&#039;, &#039;false&#039;);&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;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;                 position.addEventListener(&amp;#039;click&amp;#039;, 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;                 position.addEventListener(&amp;#039;click&amp;#039;, 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-l472&quot;&gt;Строка 472:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 445:&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;                 var actions = document.createElement(&amp;#039;div&amp;#039;);&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;                 var actions = document.createElement(&amp;#039;div&amp;#039;);&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;                 actions.className = &amp;#039;scmc-catalog-actions&amp;#039;;&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;                 actions.className = &amp;#039;scmc-catalog-actions&amp;#039;;&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;&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; 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;                var statusButton = makeButton(&#039;scmc-catalog-status&#039;, statusMap[status].emoji, statusMap[status].label);&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; 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;                statusButton.setAttribute(&#039;data-status&#039;, status);&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; 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;&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; 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;                var sectionButton = makeButton(&#039;scmc-catalog-section-btn&#039;, data.section || &#039;Без раздела&#039;, &#039;Изменить раздел&#039;);&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; 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;&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; 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;                var levelButton = makeButton(&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; 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;                    &#039;scmc-catalog-level-btn&#039;,&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; 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;                    &#039;Ур. &#039; + getLevelNumber(data.className),&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; 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;                    &#039;Изменить уровень&#039;&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; 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;                );&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;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;                 var noteButton = makeButton(&amp;#039;scmc-catalog-btn scmc-catalog-note-btn&amp;#039;, &amp;#039;✎&amp;#039;, &amp;#039;Изменить заметку&amp;#039;);&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;                 var noteButton = makeButton(&amp;#039;scmc-catalog-btn scmc-catalog-note-btn&amp;#039;, &amp;#039;✎&amp;#039;, &amp;#039;Изменить заметку&amp;#039;);&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-l495&quot;&gt;Строка 495:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 457:&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;                     }, &amp;#039;Обновление заметки страницы: &amp;#039; + (currentData.title || currentData.page));&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;                     }, &amp;#039;Обновление заметки страницы: &amp;#039; + (currentData.title || currentData.page));&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;                var levelButton = makeButton(&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;                    &#039;scmc-catalog-level-btn&#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;                    &#039;Ур. &#039; + getLevelNumber(data.className),&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;                    &#039;Изменить уровень&#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;                var sectionButton = makeButton(&#039;scmc-catalog-section-btn&#039;, data.section || &#039;Без раздела&#039;, &#039;Изменить раздел&#039;);&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;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;                 var scanToggle = makeButton(&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;                 var scanToggle = makeButton(&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-l512&quot;&gt;Строка 512:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 482:&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; 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;                 actions.appendChild(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;statusButton&lt;/del&gt;);&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                var statusButton = makeButton(&#039;scmc-catalog-status&#039;, statusMap[status].emoji, statusMap[status].label);&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;                statusButton.setAttribute(&#039;data-status&#039;, status);&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;/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;                actions.appendChild(noteButton);&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;                 actions.appendChild(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;levelButton&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;                 actions.appendChild(sectionButton);&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;                 actions.appendChild(sectionButton);&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;                actions.appendChild(levelButton);&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; 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;                actions.appendChild(noteButton);&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;                 actions.appendChild(scanToggle);&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;                 actions.appendChild(scanToggle);&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;                actions.appendChild(statusButton);&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;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;                 row.appendChild(position);&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;                 row.appendChild(position);&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;                row.appendChild(expandButton);&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;                 row.appendChild(main);&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;                 row.appendChild(main);&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;                 row.appendChild(actions);&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;                 row.appendChild(actions);&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-l632&quot;&gt;Строка 632:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 604:&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;             var status = normalizeStatus(data.status);&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;             var status = normalizeStatus(data.status);&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;             var scan = clean(data.scan);&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;             var scan = clean(data.scan);&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;            var wasOpen = row.classList.contains(&#039;is-open&#039;);&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;             var wasHidden = row.classList.contains(&amp;#039;scmc-catalog-hidden&amp;#039;);&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;             var wasHidden = row.classList.contains(&amp;#039;scmc-catalog-hidden&amp;#039;);&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;             var noteText;&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;             var noteText;&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;             row.className = className;&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;             row.className = className;&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;            row.classList.toggle(&#039;is-open&#039;, wasOpen);&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;             row.classList.toggle(&amp;#039;scmc-catalog-hidden&amp;#039;, wasHidden);&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;             row.classList.toggle(&amp;#039;scmc-catalog-hidden&amp;#039;, wasHidden);&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-l705&quot;&gt;Строка 705:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 675:&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;                 statusButton.title = statusMap[status].label;&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;                 statusButton.title = statusMap[status].label;&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;                 statusButton.setAttribute(&amp;#039;data-status&amp;#039;, status);&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;                 statusButton.setAttribute(&amp;#039;data-status&amp;#039;, status);&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;            }&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; 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;&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; 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;            var expandButton = row.querySelector(&#039;.scmc-catalog-expand&#039;);&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; 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;            if (expandButton) {&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; 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;                expandButton.setAttribute(&#039;aria-expanded&#039;, wasOpen ? &#039;true&#039; : &#039;false&#039;);&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; 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;                expandButton.title = wasOpen ? &#039;Скрыть действия&#039; : &#039;Показать действия&#039;;&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;         }&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;/table&gt;</summary>
		<author><name>Defer</name></author>
	</entry>
	<entry>
		<id>https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25806&amp;oldid=prev</id>
		<title>Defer в 08:57, 15 июня 2026</title>
		<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25806&amp;oldid=prev"/>
		<updated>2026-06-15T08:57:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;amp;diff=25806&amp;amp;oldid=25802&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Defer</name></author>
	</entry>
	<entry>
		<id>https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25802&amp;oldid=prev</id>
		<title>Defer в 08:48, 15 июня 2026</title>
		<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25802&amp;oldid=prev"/>
		<updated>2026-06-15T08:48:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;amp;diff=25802&amp;amp;oldid=25795&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Defer</name></author>
	</entry>
	<entry>
		<id>https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25795&amp;oldid=prev</id>
		<title>Defer в 08:36, 15 июня 2026</title>
		<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25795&amp;oldid=prev"/>
		<updated>2026-06-15T08:36:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;amp;diff=25795&amp;amp;oldid=25759&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Defer</name></author>
	</entry>
	<entry>
		<id>https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25759&amp;oldid=prev</id>
		<title>Defer: Новая страница: «(function () {     if (typeof mw === &#039;undefined&#039; || !window.document) return;      var statusMap = {         green: { emoji: &#039;🟢&#039;, label: &#039;Готово&#039;, words: [&#039;готово&#039;, &#039;готов&#039;] },         yellow: { emoji: &#039;🟡&#039;, label: &#039;Нужно обновить&#039;, words: [&#039;нужно обновить&#039;, &#039;обновить&#039;, &#039;устарело&#039;] },         red: { emoji: &#039;🔴&#039;, label: &#039;Нет страницы&#039;, words: [&#039;нет страницы&#039;, &#039;нет&#039;, &#039;п...»</title>
		<link rel="alternate" type="text/html" href="https://spacestories.club/index.php?title=MediaWiki:ScmcCatalog.js&amp;diff=25759&amp;oldid=prev"/>
		<updated>2026-06-15T08:09:23Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «(function () {     if (typeof mw === &amp;#039;undefined&amp;#039; || !window.document) return;      var statusMap = {         green: { emoji: &amp;#039;🟢&amp;#039;, label: &amp;#039;Готово&amp;#039;, words: [&amp;#039;готово&amp;#039;, &amp;#039;готов&amp;#039;] },         yellow: { emoji: &amp;#039;🟡&amp;#039;, label: &amp;#039;Нужно обновить&amp;#039;, words: [&amp;#039;нужно обновить&amp;#039;, &amp;#039;обновить&amp;#039;, &amp;#039;устарело&amp;#039;] },         red: { emoji: &amp;#039;🔴&amp;#039;, label: &amp;#039;Нет страницы&amp;#039;, words: [&amp;#039;нет страницы&amp;#039;, &amp;#039;нет&amp;#039;, &amp;#039;п...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;(function () {&lt;br /&gt;
    if (typeof mw === &amp;#039;undefined&amp;#039; || !window.document) return;&lt;br /&gt;
&lt;br /&gt;
    var statusMap = {&lt;br /&gt;
        green: { emoji: &amp;#039;🟢&amp;#039;, label: &amp;#039;Готово&amp;#039;, words: [&amp;#039;готово&amp;#039;, &amp;#039;готов&amp;#039;] },&lt;br /&gt;
        yellow: { emoji: &amp;#039;🟡&amp;#039;, label: &amp;#039;Нужно обновить&amp;#039;, words: [&amp;#039;нужно обновить&amp;#039;, &amp;#039;обновить&amp;#039;, &amp;#039;устарело&amp;#039;] },&lt;br /&gt;
        red: { emoji: &amp;#039;🔴&amp;#039;, label: &amp;#039;Нет страницы&amp;#039;, words: [&amp;#039;нет страницы&amp;#039;, &amp;#039;нет&amp;#039;, &amp;#039;пусто&amp;#039;] },&lt;br /&gt;
        blue: { emoji: &amp;#039;🔵&amp;#039;, label: &amp;#039;Заморожено&amp;#039;, words: [&amp;#039;заморожено&amp;#039;, &amp;#039;заморожен&amp;#039;] }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function ready(fn) {&lt;br /&gt;
        if (document.readyState === &amp;#039;complete&amp;#039; || document.readyState === &amp;#039;interactive&amp;#039;) {&lt;br /&gt;
            fn();&lt;br /&gt;
        } else {&lt;br /&gt;
            document.addEventListener(&amp;#039;DOMContentLoaded&amp;#039;, fn);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function clean(text) {&lt;br /&gt;
        return String(text || &amp;#039;&amp;#039;).replace(/\s+/g, &amp;#039; &amp;#039;).trim();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function key(text) {&lt;br /&gt;
        return clean(text).replace(/_/g, &amp;#039; &amp;#039;).toLowerCase();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function encodeAttr(value) {&lt;br /&gt;
        return String(value || &amp;#039;&amp;#039;)&lt;br /&gt;
            .replace(/&amp;amp;/g, &amp;#039;&amp;amp;amp;&amp;#039;)&lt;br /&gt;
            .replace(/&amp;quot;/g, &amp;#039;&amp;amp;quot;&amp;#039;)&lt;br /&gt;
            .replace(/&amp;lt;/g, &amp;#039;&amp;amp;lt;&amp;#039;)&lt;br /&gt;
            .replace(/&amp;gt;/g, &amp;#039;&amp;amp;gt;&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function decodeAttr(value) {&lt;br /&gt;
        var textarea = document.createElement(&amp;#039;textarea&amp;#039;);&lt;br /&gt;
        textarea.innerHTML = String(value || &amp;#039;&amp;#039;);&lt;br /&gt;
        return textarea.value;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function attrFromTag(tag, name) {&lt;br /&gt;
        var re = new RegExp(name + &amp;#039;\\s*=\\s*([&amp;quot;\\\&amp;#039;])(.*?)\\1&amp;#039;, &amp;#039;i&amp;#039;);&lt;br /&gt;
        var match = tag.match(re);&lt;br /&gt;
        return match ? decodeAttr(match[2]) : &amp;#039;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function normalizeStatus(status) {&lt;br /&gt;
        return statusMap[status] ? status : &amp;#039;blue&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getLevelClass(className) {&lt;br /&gt;
        var match = String(className || &amp;#039;&amp;#039;).match(/\bscmc-level-[1-5]\b/);&lt;br /&gt;
        return match ? match[0] : &amp;#039;scmc-level-1&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function buildFallbackLink(page, title) {&lt;br /&gt;
        if (/^https?:\/\//i.test(page)) {&lt;br /&gt;
            return &amp;#039;[&amp;#039; + page + &amp;#039; &amp;#039; + title + &amp;#039;]&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return &amp;#039;[[&amp;#039; + page + &amp;#039;|&amp;#039; + title + &amp;#039;]]&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function makeButton(className, text, title) {&lt;br /&gt;
        var button = document.createElement(&amp;#039;button&amp;#039;);&lt;br /&gt;
        button.type = &amp;#039;button&amp;#039;;&lt;br /&gt;
        button.className = className;&lt;br /&gt;
        button.textContent = text;&lt;br /&gt;
        if (title) button.title = title;&lt;br /&gt;
        return button;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function closeMenus() {&lt;br /&gt;
        var statusMenu = document.querySelector(&amp;#039;.scmc-status-menu&amp;#039;);&lt;br /&gt;
        var sectionMenu = document.querySelector(&amp;#039;.scmc-section-menu&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        if (statusMenu) statusMenu.remove();&lt;br /&gt;
        if (sectionMenu) sectionMenu.remove();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function placeMenu(menu, rect) {&lt;br /&gt;
        document.body.appendChild(menu);&lt;br /&gt;
&lt;br /&gt;
        var left = Math.min(rect.left, window.innerWidth - menu.offsetWidth - 12);&lt;br /&gt;
        var top = Math.min(rect.bottom + 8, window.innerHeight - menu.offsetHeight - 12);&lt;br /&gt;
&lt;br /&gt;
        menu.style.left = Math.max(12, left) + &amp;#039;px&amp;#039;;&lt;br /&gt;
        menu.style.top = Math.max(12, top) + &amp;#039;px&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getSource() {&lt;br /&gt;
        var api = new mw.Api();&lt;br /&gt;
        var currentPage = mw.config.get(&amp;#039;wgPageName&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        return api.get({&lt;br /&gt;
            action: &amp;#039;query&amp;#039;,&lt;br /&gt;
            prop: &amp;#039;revisions&amp;#039;,&lt;br /&gt;
            titles: currentPage,&lt;br /&gt;
            rvprop: &amp;#039;content&amp;#039;,&lt;br /&gt;
            rvslots: &amp;#039;main&amp;#039;,&lt;br /&gt;
            formatversion: 2&lt;br /&gt;
        }).then(function (data) {&lt;br /&gt;
            var pageData = data.query &amp;amp;&amp;amp; data.query.pages ? data.query.pages[0] : null;&lt;br /&gt;
            var rev = pageData &amp;amp;&amp;amp; pageData.revisions ? pageData.revisions[0] : null;&lt;br /&gt;
&lt;br /&gt;
            if (rev &amp;amp;&amp;amp; rev.slots &amp;amp;&amp;amp; rev.slots.main &amp;amp;&amp;amp; typeof rev.slots.main.content === &amp;#039;string&amp;#039;) {&lt;br /&gt;
                return rev.slots.main.content;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if (rev &amp;amp;&amp;amp; typeof rev.content === &amp;#039;string&amp;#039;) {&lt;br /&gt;
                return rev.content;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            throw new Error(&amp;#039;Не удалось прочитать код страницы.&amp;#039;);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function saveSource(text, summary) {&lt;br /&gt;
        var api = new mw.Api();&lt;br /&gt;
&lt;br /&gt;
        return api.postWithToken(&amp;#039;csrf&amp;#039;, {&lt;br /&gt;
            action: &amp;#039;edit&amp;#039;,&lt;br /&gt;
            title: mw.config.get(&amp;#039;wgPageName&amp;#039;),&lt;br /&gt;
            text: text,&lt;br /&gt;
            summary: summary || &amp;#039;Обновление каталога Marine Corps&amp;#039;,&lt;br /&gt;
            minor: true,&lt;br /&gt;
            formatversion: 2&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getRowsFromSource(source) {&lt;br /&gt;
        var result = [];&lt;br /&gt;
        var re = /&amp;lt;div\b[^&amp;gt;]*\bscmc-catalog-row\b[^&amp;gt;]*&amp;gt;[\s\S]*?&amp;lt;\/div&amp;gt;/gi;&lt;br /&gt;
        var match;&lt;br /&gt;
&lt;br /&gt;
        while ((match = re.exec(source)) !== null) {&lt;br /&gt;
            var full = match[0];&lt;br /&gt;
            var open = full.match(/^&amp;lt;div\b[^&amp;gt;]*&amp;gt;/i);&lt;br /&gt;
            if (!open) continue;&lt;br /&gt;
&lt;br /&gt;
            var tag = open[0];&lt;br /&gt;
&lt;br /&gt;
            var data = {&lt;br /&gt;
                className: attrFromTag(tag, &amp;#039;class&amp;#039;) || &amp;#039;scmc-catalog-row scmc-level-1&amp;#039;,&lt;br /&gt;
                section: clean(attrFromTag(tag, &amp;#039;data-section&amp;#039;)),&lt;br /&gt;
                page: clean(attrFromTag(tag, &amp;#039;data-page&amp;#039;)),&lt;br /&gt;
                title: clean(attrFromTag(tag, &amp;#039;data-title&amp;#039;)),&lt;br /&gt;
                scan: clean(attrFromTag(tag, &amp;#039;data-scan&amp;#039;)),&lt;br /&gt;
                status: normalizeStatus(clean(attrFromTag(tag, &amp;#039;data-status&amp;#039;))),&lt;br /&gt;
                note: clean(attrFromTag(tag, &amp;#039;data-note&amp;#039;))&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            if (!data.page) continue;&lt;br /&gt;
            if (!data.title) data.title = data.page;&lt;br /&gt;
&lt;br /&gt;
            result.push({&lt;br /&gt;
                start: match.index,&lt;br /&gt;
                end: match.index + full.length,&lt;br /&gt;
                full: full,&lt;br /&gt;
                data: data&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function findSourceRow(sourceRows, targetData) {&lt;br /&gt;
        var matches = sourceRows.filter(function (item) {&lt;br /&gt;
            return key(item.data.page) === key(targetData.page) &amp;amp;&amp;amp;&lt;br /&gt;
                key(item.data.section) === key(targetData.section) &amp;amp;&amp;amp;&lt;br /&gt;
                key(item.data.title) === key(targetData.title);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        if (!matches.length) {&lt;br /&gt;
            throw new Error(&amp;#039;Не нашёл строку: &amp;#039; + (targetData.title || targetData.page));&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (matches.length &amp;gt; 1) {&lt;br /&gt;
            throw new Error(&amp;#039;Нашлось несколько одинаковых строк: &amp;#039; + (targetData.title || targetData.page) + &amp;#039;. Лучше поправить вручную.&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return matches[0];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function buildRowLine(data) {&lt;br /&gt;
        var className = clean(data.className || &amp;#039;scmc-catalog-row scmc-level-1&amp;#039;);&lt;br /&gt;
        var level = getLevelClass(className);&lt;br /&gt;
&lt;br /&gt;
        if (className.indexOf(&amp;#039;scmc-catalog-row&amp;#039;) === -1) {&lt;br /&gt;
            className = &amp;#039;scmc-catalog-row &amp;#039; + level;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var section = clean(data.section);&lt;br /&gt;
        var page = clean(data.page);&lt;br /&gt;
        var title = clean(data.title || data.page);&lt;br /&gt;
        var scan = clean(data.scan);&lt;br /&gt;
        var status = normalizeStatus(data.status);&lt;br /&gt;
        var note = clean(data.note);&lt;br /&gt;
&lt;br /&gt;
        var out = &amp;#039;&amp;lt;div class=&amp;quot;&amp;#039; + encodeAttr(className) + &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
        out += &amp;#039; data-section=&amp;quot;&amp;#039; + encodeAttr(section) + &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
        out += &amp;#039; data-page=&amp;quot;&amp;#039; + encodeAttr(page) + &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
        out += &amp;#039; data-title=&amp;quot;&amp;#039; + encodeAttr(title) + &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
        if (scan) {&lt;br /&gt;
            out += &amp;#039; data-scan=&amp;quot;&amp;#039; + encodeAttr(scan) + &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        out += &amp;#039; data-status=&amp;quot;&amp;#039; + encodeAttr(status) + &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
        if (note) {&lt;br /&gt;
            out += &amp;#039; data-note=&amp;quot;&amp;#039; + encodeAttr(note) + &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        out += &amp;#039;&amp;gt;&amp;#039; + buildFallbackLink(page, title) + &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
        return out;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ready(function () {&lt;br /&gt;
        var catalog = document.querySelector(&amp;#039;.scmc-catalog&amp;#039;);&lt;br /&gt;
        if (!catalog) return;&lt;br /&gt;
&lt;br /&gt;
        var tools = catalog.querySelector(&amp;#039;.scmc-catalog-tools&amp;#039;);&lt;br /&gt;
        var rowElements = Array.prototype.slice.call(catalog.querySelectorAll(&amp;#039;.scmc-catalog-row&amp;#039;));&lt;br /&gt;
        if (!tools || !rowElements.length) return;&lt;br /&gt;
&lt;br /&gt;
        var activeFilter = &amp;#039;all&amp;#039;;&lt;br /&gt;
        var search;&lt;br /&gt;
        var filters;&lt;br /&gt;
        var counter;&lt;br /&gt;
&lt;br /&gt;
        buildTools(tools);&lt;br /&gt;
        enhanceRows(rowElements);&lt;br /&gt;
&lt;br /&gt;
        search = tools.querySelector(&amp;#039;.scmc-catalog-search&amp;#039;);&lt;br /&gt;
        filters = Array.prototype.slice.call(tools.querySelectorAll(&amp;#039;.scmc-catalog-filter&amp;#039;));&lt;br /&gt;
        counter = tools.querySelector(&amp;#039;.scmc-catalog-counter&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        update();&lt;br /&gt;
&lt;br /&gt;
        search.addEventListener(&amp;#039;input&amp;#039;, update);&lt;br /&gt;
&lt;br /&gt;
        filters.forEach(function (button) {&lt;br /&gt;
            button.addEventListener(&amp;#039;click&amp;#039;, function () {&lt;br /&gt;
                activeFilter = button.getAttribute(&amp;#039;data-filter&amp;#039;) || &amp;#039;all&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
                filters.forEach(function (other) {&lt;br /&gt;
                    other.classList.toggle(&amp;#039;is-active&amp;#039;, other === button);&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                update();&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        document.addEventListener(&amp;#039;click&amp;#039;, function (event) {&lt;br /&gt;
            var statusButton = event.target.closest(&amp;#039;.scmc-catalog-status&amp;#039;);&lt;br /&gt;
            var sectionButton = event.target.closest(&amp;#039;.scmc-catalog-section-btn&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
            if (statusButton &amp;amp;&amp;amp; catalog.contains(statusButton)) {&lt;br /&gt;
                event.preventDefault();&lt;br /&gt;
                event.stopPropagation();&lt;br /&gt;
                openStatusMenu(statusButton);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if (sectionButton &amp;amp;&amp;amp; catalog.contains(sectionButton)) {&lt;br /&gt;
                event.preventDefault();&lt;br /&gt;
                event.stopPropagation();&lt;br /&gt;
                openSectionMenu(sectionButton);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if (!event.target.closest(&amp;#039;.scmc-status-menu&amp;#039;) &amp;amp;&amp;amp; !event.target.closest(&amp;#039;.scmc-section-menu&amp;#039;)) {&lt;br /&gt;
                closeMenus();&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        function buildTools(target) {&lt;br /&gt;
            target.innerHTML = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            var input = document.createElement(&amp;#039;input&amp;#039;);&lt;br /&gt;
            input.className = &amp;#039;scmc-catalog-search&amp;#039;;&lt;br /&gt;
            input.type = &amp;#039;search&amp;#039;;&lt;br /&gt;
            input.placeholder = &amp;#039;Поиск по названию, странице, разделу, статусу или заметке...&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            var filtersWrap = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
            filtersWrap.className = &amp;#039;scmc-catalog-filters&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            [&lt;br /&gt;
                [&amp;#039;all&amp;#039;, &amp;#039;Все&amp;#039;],&lt;br /&gt;
                [&amp;#039;green&amp;#039;, &amp;#039;🟢 Готово&amp;#039;],&lt;br /&gt;
                [&amp;#039;yellow&amp;#039;, &amp;#039;🟡 Нужно обновить&amp;#039;],&lt;br /&gt;
                [&amp;#039;red&amp;#039;, &amp;#039;🔴 Нет страницы&amp;#039;],&lt;br /&gt;
                [&amp;#039;blue&amp;#039;, &amp;#039;🔵 Заморожено&amp;#039;],&lt;br /&gt;
                [&amp;#039;problem&amp;#039;, &amp;#039;Проблемные&amp;#039;],&lt;br /&gt;
                [&amp;#039;stop&amp;#039;, &amp;#039;Из основного проекта&amp;#039;],&lt;br /&gt;
                [&amp;#039;note&amp;#039;, &amp;#039;С заметками&amp;#039;]&lt;br /&gt;
            ].forEach(function (item, index) {&lt;br /&gt;
                var button = document.createElement(&amp;#039;button&amp;#039;);&lt;br /&gt;
                button.type = &amp;#039;button&amp;#039;;&lt;br /&gt;
                button.className = &amp;#039;scmc-catalog-filter&amp;#039; + (index === 0 ? &amp;#039; is-active&amp;#039; : &amp;#039;&amp;#039;);&lt;br /&gt;
                button.setAttribute(&amp;#039;data-filter&amp;#039;, item[0]);&lt;br /&gt;
                button.textContent = item[1];&lt;br /&gt;
                filtersWrap.appendChild(button);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            var count = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
            count.className = &amp;#039;scmc-catalog-counter&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            target.appendChild(input);&lt;br /&gt;
            target.appendChild(filtersWrap);&lt;br /&gt;
            target.appendChild(count);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function getRowData(row) {&lt;br /&gt;
            return {&lt;br /&gt;
                className: row.getAttribute(&amp;#039;class&amp;#039;) || &amp;#039;scmc-catalog-row scmc-level-1&amp;#039;,&lt;br /&gt;
                section: clean(row.getAttribute(&amp;#039;data-section&amp;#039;)),&lt;br /&gt;
                page: clean(row.getAttribute(&amp;#039;data-page&amp;#039;)),&lt;br /&gt;
                title: clean(row.getAttribute(&amp;#039;data-title&amp;#039;) || row.textContent),&lt;br /&gt;
                scan: clean(row.getAttribute(&amp;#039;data-scan&amp;#039;)),&lt;br /&gt;
                status: normalizeStatus(clean(row.getAttribute(&amp;#039;data-status&amp;#039;))),&lt;br /&gt;
                note: clean(row.getAttribute(&amp;#039;data-note&amp;#039;))&lt;br /&gt;
            };&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function visibleNote(data) {&lt;br /&gt;
            var parts = [];&lt;br /&gt;
&lt;br /&gt;
            if (data.scan === &amp;#039;stop&amp;#039;) {&lt;br /&gt;
                parts.push(&amp;#039;Из основного проекта.&amp;#039;);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if (data.note) {&lt;br /&gt;
                parts.push(data.note);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return parts.join(&amp;#039; &amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function getSections() {&lt;br /&gt;
            var map = {};&lt;br /&gt;
&lt;br /&gt;
            rowElements.forEach(function (row) {&lt;br /&gt;
                var section = clean(row.getAttribute(&amp;#039;data-section&amp;#039;));&lt;br /&gt;
                if (section) map[section] = true;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            return Object.keys(map).sort(function (a, b) {&lt;br /&gt;
                return a.localeCompare(b, &amp;#039;ru&amp;#039;);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function enhanceRows(rows) {&lt;br /&gt;
            rows.forEach(function (row, index) {&lt;br /&gt;
                if (row.getAttribute(&amp;#039;data-scmc-enhanced&amp;#039;) === &amp;#039;true&amp;#039;) return;&lt;br /&gt;
&lt;br /&gt;
                var data = getRowData(row);&lt;br /&gt;
                var status = normalizeStatus(data.status);&lt;br /&gt;
                var isStop = data.scan === &amp;#039;stop&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
                row.setAttribute(&amp;#039;data-status&amp;#039;, status);&lt;br /&gt;
                if (isStop) row.setAttribute(&amp;#039;data-scan&amp;#039;, &amp;#039;stop&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
                row.setAttribute(&amp;#039;data-scmc-enhanced&amp;#039;, &amp;#039;true&amp;#039;);&lt;br /&gt;
                row.innerHTML = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
                var position = makeButton(&amp;#039;scmc-catalog-index&amp;#039;, String(index + 1), &amp;#039;Изменить место&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
                position.addEventListener(&amp;#039;click&amp;#039;, function () {&lt;br /&gt;
                    var answer = prompt(&amp;#039;На какое место переместить страницу? Сейчас: &amp;#039; + (index + 1) + &amp;#039;. Всего: &amp;#039; + rows.length + &amp;#039;.&amp;#039;, String(index + 1));&lt;br /&gt;
                    if (answer === null) return;&lt;br /&gt;
&lt;br /&gt;
                    var target = parseInt(answer, 10);&lt;br /&gt;
                    if (!target || target &amp;lt; 1 || target &amp;gt; rows.length) {&lt;br /&gt;
                        alert(&amp;#039;Нужно число от 1 до &amp;#039; + rows.length + &amp;#039;.&amp;#039;);&lt;br /&gt;
                        return;&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    moveRow(data, target);&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                var main = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
                main.className = &amp;#039;scmc-catalog-main&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
                var titleWrap = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
                titleWrap.className = &amp;#039;scmc-catalog-title&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
                var link = document.createElement(&amp;#039;a&amp;#039;);&lt;br /&gt;
                link.href = /^https?:\/\//i.test(data.page) ? data.page : mw.util.getUrl(data.page);&lt;br /&gt;
                link.textContent = data.title || data.page;&lt;br /&gt;
                titleWrap.appendChild(link);&lt;br /&gt;
&lt;br /&gt;
                if (data.page &amp;amp;&amp;amp; data.page !== data.title) {&lt;br /&gt;
                    var pageHint = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
                    pageHint.className = &amp;#039;scmc-catalog-page&amp;#039;;&lt;br /&gt;
                    pageHint.textContent = data.page;&lt;br /&gt;
                    titleWrap.appendChild(pageHint);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                main.appendChild(titleWrap);&lt;br /&gt;
&lt;br /&gt;
                var noteText = visibleNote(data);&lt;br /&gt;
                if (noteText) {&lt;br /&gt;
                    var note = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
                    note.className = &amp;#039;scmc-catalog-note&amp;#039;;&lt;br /&gt;
                    note.textContent = noteText;&lt;br /&gt;
                    main.appendChild(note);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                var actions = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
                actions.className = &amp;#039;scmc-catalog-actions&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
                var noteButton = makeButton(&amp;#039;scmc-catalog-btn scmc-catalog-note-btn&amp;#039;, &amp;#039;✎&amp;#039;, &amp;#039;Изменить заметку&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
                noteButton.addEventListener(&amp;#039;click&amp;#039;, function () {&lt;br /&gt;
                    var answer = prompt(&amp;#039;Заметка для страницы &amp;quot;&amp;#039; + (data.title || data.page) + &amp;#039;&amp;quot;. Пустое поле удалит data-note.&amp;#039;, data.note || &amp;#039;&amp;#039;);&lt;br /&gt;
                    if (answer === null) return;&lt;br /&gt;
&lt;br /&gt;
                    saveRowChange(data, function (sourceData) {&lt;br /&gt;
                        sourceData.note = clean(answer);&lt;br /&gt;
                    }, &amp;#039;Обновление заметки страницы: &amp;#039; + (data.title || data.page));&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                var scanToggle = makeButton(&lt;br /&gt;
                    &amp;#039;scmc-catalog-btn scmc-scan-toggle&amp;#039;,&lt;br /&gt;
                    &amp;#039;&amp;#039;,&lt;br /&gt;
                    isStop ? &amp;#039;Из основного проекта. Нажми, чтобы убрать stop.&amp;#039; : &amp;#039;Нажми, чтобы добавить stop.&amp;#039;&lt;br /&gt;
                );&lt;br /&gt;
&lt;br /&gt;
                scanToggle.setAttribute(&amp;#039;data-active&amp;#039;, isStop ? &amp;#039;true&amp;#039; : &amp;#039;false&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
                scanToggle.addEventListener(&amp;#039;click&amp;#039;, function () {&lt;br /&gt;
                    saveRowChange(data, function (sourceData) {&lt;br /&gt;
                        sourceData.scan = sourceData.scan === &amp;#039;stop&amp;#039; ? &amp;#039;&amp;#039; : &amp;#039;stop&amp;#039;;&lt;br /&gt;
                    }, &amp;#039;Изменение режима сканирования страницы: &amp;#039; + (data.title || data.page));&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                var sectionButton = makeButton(&amp;#039;scmc-catalog-section-btn&amp;#039;, data.section || &amp;#039;Без раздела&amp;#039;, &amp;#039;Изменить раздел&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
                var statusButton = makeButton(&amp;#039;scmc-catalog-status&amp;#039;, statusMap[status].emoji, statusMap[status].label);&lt;br /&gt;
                statusButton.setAttribute(&amp;#039;data-status&amp;#039;, status);&lt;br /&gt;
&lt;br /&gt;
                actions.appendChild(noteButton);&lt;br /&gt;
                actions.appendChild(scanToggle);&lt;br /&gt;
                actions.appendChild(sectionButton);&lt;br /&gt;
                actions.appendChild(statusButton);&lt;br /&gt;
&lt;br /&gt;
                row.appendChild(position);&lt;br /&gt;
                row.appendChild(main);&lt;br /&gt;
                row.appendChild(actions);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function openStatusMenu(button) {&lt;br /&gt;
            closeMenus();&lt;br /&gt;
&lt;br /&gt;
            var row = button.closest(&amp;#039;.scmc-catalog-row&amp;#039;);&lt;br /&gt;
            if (!row) return;&lt;br /&gt;
&lt;br /&gt;
            var data = getRowData(row);&lt;br /&gt;
            var rect = button.getBoundingClientRect();&lt;br /&gt;
            var menu = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
            menu.className = &amp;#039;scmc-status-menu&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            Object.keys(statusMap).forEach(function (status) {&lt;br /&gt;
                var option = document.createElement(&amp;#039;button&amp;#039;);&lt;br /&gt;
                option.type = &amp;#039;button&amp;#039;;&lt;br /&gt;
                option.textContent = statusMap[status].emoji + &amp;#039; &amp;#039; + statusMap[status].label;&lt;br /&gt;
&lt;br /&gt;
                option.addEventListener(&amp;#039;click&amp;#039;, function (event) {&lt;br /&gt;
                    event.preventDefault();&lt;br /&gt;
                    event.stopPropagation();&lt;br /&gt;
                    menu.remove();&lt;br /&gt;
&lt;br /&gt;
                    if (status === data.status) return;&lt;br /&gt;
&lt;br /&gt;
                    saveRowChange(data, function (sourceData) {&lt;br /&gt;
                        sourceData.status = status;&lt;br /&gt;
                    }, &amp;#039;Обновление статуса страницы: &amp;#039; + (data.title || data.page));&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                menu.appendChild(option);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            placeMenu(menu, rect);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function openSectionMenu(button) {&lt;br /&gt;
            closeMenus();&lt;br /&gt;
&lt;br /&gt;
            var row = button.closest(&amp;#039;.scmc-catalog-row&amp;#039;);&lt;br /&gt;
            if (!row) return;&lt;br /&gt;
&lt;br /&gt;
            var data = getRowData(row);&lt;br /&gt;
            var rect = button.getBoundingClientRect();&lt;br /&gt;
            var menu = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
            menu.className = &amp;#039;scmc-section-menu&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            getSections().forEach(function (section) {&lt;br /&gt;
                var option = document.createElement(&amp;#039;button&amp;#039;);&lt;br /&gt;
                option.type = &amp;#039;button&amp;#039;;&lt;br /&gt;
                option.textContent = section;&lt;br /&gt;
&lt;br /&gt;
                option.addEventListener(&amp;#039;click&amp;#039;, function (event) {&lt;br /&gt;
                    event.preventDefault();&lt;br /&gt;
                    event.stopPropagation();&lt;br /&gt;
                    menu.remove();&lt;br /&gt;
&lt;br /&gt;
                    if (section === data.section) return;&lt;br /&gt;
&lt;br /&gt;
                    saveRowChange(data, function (sourceData) {&lt;br /&gt;
                        sourceData.section = section;&lt;br /&gt;
                    }, &amp;#039;Изменение раздела страницы: &amp;#039; + (data.title || data.page));&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                menu.appendChild(option);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            placeMenu(menu, rect);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function saveRowChange(targetData, updater, summary) {&lt;br /&gt;
            setSaving(true);&lt;br /&gt;
&lt;br /&gt;
            getSource()&lt;br /&gt;
                .then(function (source) {&lt;br /&gt;
                    var sourceRows = getRowsFromSource(source);&lt;br /&gt;
                    var target = findSourceRow(sourceRows, targetData);&lt;br /&gt;
                    var changed = Object.assign({}, target.data);&lt;br /&gt;
&lt;br /&gt;
                    updater(changed);&lt;br /&gt;
&lt;br /&gt;
                    var newLine = buildRowLine(changed);&lt;br /&gt;
                    var newText = source.slice(0, target.start) + newLine + source.slice(target.end);&lt;br /&gt;
&lt;br /&gt;
                    return saveSource(newText, summary);&lt;br /&gt;
                })&lt;br /&gt;
                .then(function () {&lt;br /&gt;
                    location.reload();&lt;br /&gt;
                })&lt;br /&gt;
                .catch(function (error) {&lt;br /&gt;
                    setSaving(false);&lt;br /&gt;
                    alert(error.message || &amp;#039;Не удалось сохранить изменение. Проверьте вход в аккаунт и права редактора.&amp;#039;);&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function moveRow(targetData, targetPosition) {&lt;br /&gt;
            setSaving(true);&lt;br /&gt;
&lt;br /&gt;
            getSource()&lt;br /&gt;
                .then(function (source) {&lt;br /&gt;
                    var sourceRows = getRowsFromSource(source);&lt;br /&gt;
                    var target = findSourceRow(sourceRows, targetData);&lt;br /&gt;
                    var oldIndex = sourceRows.indexOf(target);&lt;br /&gt;
                    var newIndex = Math.max(0, Math.min(sourceRows.length - 1, targetPosition - 1));&lt;br /&gt;
&lt;br /&gt;
                    if (oldIndex === newIndex) {&lt;br /&gt;
                        setSaving(false);&lt;br /&gt;
                        return null;&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    var lines = sourceRows.map(function (item) {&lt;br /&gt;
                        return item.full;&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    var moved = lines.splice(oldIndex, 1)[0];&lt;br /&gt;
                    lines.splice(newIndex, 0, moved);&lt;br /&gt;
&lt;br /&gt;
                    var first = sourceRows[0];&lt;br /&gt;
                    var last = sourceRows[sourceRows.length - 1];&lt;br /&gt;
                    var newText = source.slice(0, first.start) + lines.join(&amp;#039;\n&amp;#039;) + source.slice(last.end);&lt;br /&gt;
&lt;br /&gt;
                    return saveSource(newText, &amp;#039;Изменение порядка страниц в каталоге Marine Corps&amp;#039;);&lt;br /&gt;
                })&lt;br /&gt;
                .then(function (result) {&lt;br /&gt;
                    if (result !== null) location.reload();&lt;br /&gt;
                })&lt;br /&gt;
                .catch(function (error) {&lt;br /&gt;
                    setSaving(false);&lt;br /&gt;
                    alert(error.message || &amp;#039;Не удалось изменить место строки.&amp;#039;);&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function setSaving(state) {&lt;br /&gt;
            catalog.classList.toggle(&amp;#039;scmc-status-saving&amp;#039;, !!state);&lt;br /&gt;
&lt;br /&gt;
            Array.prototype.forEach.call(catalog.querySelectorAll(&amp;#039;button&amp;#039;), function (button) {&lt;br /&gt;
                button.disabled = !!state;&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function update() {&lt;br /&gt;
            var query = clean(search.value).toLowerCase();&lt;br /&gt;
            var words = query ? query.split(/\s+/).filter(Boolean) : [];&lt;br /&gt;
            var visible = 0;&lt;br /&gt;
&lt;br /&gt;
            rowElements.forEach(function (row) {&lt;br /&gt;
                var data = getRowData(row);&lt;br /&gt;
                var status = normalizeStatus(data.status);&lt;br /&gt;
                var noteText = visibleNote(data);&lt;br /&gt;
                var statusWords = statusMap[status] ? statusMap[status].words.join(&amp;#039; &amp;#039;) : &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
                var text = [&lt;br /&gt;
                    data.title,&lt;br /&gt;
                    data.page,&lt;br /&gt;
                    data.section,&lt;br /&gt;
                    data.note,&lt;br /&gt;
                    noteText,&lt;br /&gt;
                    data.scan === &amp;#039;stop&amp;#039; ? &amp;#039;из основного проекта stop основной&amp;#039; : &amp;#039;&amp;#039;,&lt;br /&gt;
                    status,&lt;br /&gt;
                    statusWords&lt;br /&gt;
                ].join(&amp;#039; &amp;#039;).toLowerCase();&lt;br /&gt;
&lt;br /&gt;
                var filterOk =&lt;br /&gt;
                    activeFilter === &amp;#039;all&amp;#039; ||&lt;br /&gt;
                    activeFilter === status ||&lt;br /&gt;
                    (activeFilter === &amp;#039;problem&amp;#039; &amp;amp;&amp;amp; status !== &amp;#039;green&amp;#039;) ||&lt;br /&gt;
                    (activeFilter === &amp;#039;stop&amp;#039; &amp;amp;&amp;amp; data.scan === &amp;#039;stop&amp;#039;) ||&lt;br /&gt;
                    (activeFilter === &amp;#039;note&amp;#039; &amp;amp;&amp;amp; !!data.note);&lt;br /&gt;
&lt;br /&gt;
                var textOk = words.every(function (word) {&lt;br /&gt;
                    return text.indexOf(word) !== -1;&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                var show = filterOk &amp;amp;&amp;amp; textOk;&lt;br /&gt;
                row.classList.toggle(&amp;#039;scmc-catalog-hidden&amp;#039;, !show);&lt;br /&gt;
&lt;br /&gt;
                if (show) visible++;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            counter.textContent = &amp;#039;Показано: &amp;#039; + visible + &amp;#039; из &amp;#039; + rowElements.length;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Defer</name></author>
	</entry>
</feed>