Загрузка данных


// ==UserScript==
// @name         Кнопка "скрыть тред" увеличение и в конец ряда
// @namespace    http://tampermonkey.net
// @version      2.5
// @description  Увеличение с жирным черным крестом
// @match        *://*.2ch.org/*
// @match        *://*.2ch.hk/*
// @match        *://*.m2ch.hk/*
// @match        *://*.2ch.life/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    // 1. Внедряем CSS-стили для кнопки
    const style = document.createElement('style');
    style.textContent = `
        /* Настройка внешнего контейнера SVG кнопки */
        svg.post__btn.post__btn_type_hide.icon.desktop.js-processed-btn {
            display: inline-block !important;
            width: 50px !important;
            height: 50px !important;
            box-sizing: border-box !important;
            margin-left: 10px !important;
            border-radius: 8px !important;

            /* Базовое состояние: приглушенный сине-лиловый пиксельный стиль */
            filter: invert(40%) sepia(20%) saturate(1200%) hue-rotate(220deg) !important;
            image-rendering: pixelated !important;
            image-rendering: crisp-edges !important;

            /* Плавный переход для анимации при наведении (0.2 секунды) */
            transition: filter 0.2s ease-in-out, transform 0.2s ease-in-out !important;
        }

        /* ЭФФЕКТ ПРИ НАВЕДЕНИИ (HOVER) */
        /* Исходное состояние кнопки — добавляем быстрое время отклика */
        svg.post__btn.post__btn_type_hide.icon.desktop.js-processed-btn {
            transition: filter 0.15s ease-in-out, transform 0.15s ease-in-out !important;
        }

        /* Состояние при наведении */
        svg.post__btn.post__btn_type_hide.icon.desktop.js-processed-btn:hover {
            /* Смещаем спектр (hue-rotate) в сторону теплого пастельно-розового оттенка
               и немного увеличиваем яркость (brightness) */
            filter: invert(40%) sepia(20%) saturate(1500%) hue-rotate(310deg) brightness(1.1) !important;

            /* Кнопка слегка и аккуратно увеличивается при наведении */
            transform: scale(1.01) !important;
        }

        /* Настройки пикселизации для внутренних элементов */
        svg.post__btn.post__btn_type_hide.icon.desktop.js-processed-btn * {
            image-rendering: pixelated !important;
            image-rendering: crisp-edges !important;
        }
    `;

    document.head.appendChild(style);

    // 2. Функция поиска и перемещения кнопок
    function modifyButtons() {
        // Ищем SVG-кнопки скрытия, которые мы еще не обрабатывали
        let svgs = document.querySelectorAll('svg.post__btn.post__btn_type_hide.icon.desktop:not(.js-processed-btn)');

        svgs.forEach((svg) => {
            let parentDiv = svg.closest('.post__details');

            if (parentDiv) {
                // Помечаем SVG классом-маркером (CSS применится автоматически)
                svg.classList.add('js-processed-btn');

                // Переносим саму оригинальную SVG кнопку в самый конец родительского div
                // Браузер автоматически заберет её со старого места и вставит в конец
                parentDiv.appendChild(svg);
            }
        });
    }

    modifyButtons();

    // 3. Отслеживание динамической подгрузки постов в треде
    const observer = new MutationObserver(() => {
        if (document.querySelector('svg.post__btn.post__btn_type_hide.icon.desktop:not(.js-processed-btn)')) {
            modifyButtons();
        }
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });
})();