Почему не работает скрипт на tampermonkey?

Если честно, я готова сойти с ума от безумия. Однажды сделала быстренько скрипт на tampermonkey чтобы при вставке текста на сайт, автоматически вставлялись пробелы между абзацами, но сегодня он почему-то тупо перестал работать. В редактор то все вставляется с пробелами, но стоит опубликовать пост, как все пробелы слетают. Умоляю, помогите, подскажите или исправьте! Пожалуйста, очень прошу.

(function() {
    'use strict';

    const STATE = {
        isProcessing: false,
        initialized: false
    };

    const AlignmentDetector = {
        patterns: {
            center: /center|middle/i,
            right: /right/i,
            left: /left/i
        },

        fromElement(element) {
            if (element.style?.textAlign) {
                return element.style.textAlign;
            }

            if (element.hasAttribute('align')) {
                return element.getAttribute('align');
            }

            for (const [alignment, pattern] of Object.entries(this.patterns)) {
                if ([...element.classList].some(cls => pattern.test(cls))) {
                    return alignment;
                }
            }

            let parent = element.parentElement;
            while (parent) {
                if (parent.tagName.toLowerCase() === 'center') {
                    return 'center';
                }
                if (parent.style?.textAlign) {
                    return parent.style.textAlign;
                }
                if (parent.hasAttribute('align')) {
                    return parent.getAttribute('align');
                }
                parent = parent.parentElement;
            }

            return '';
        }
    };

    const HTMLProcessor = {
        createEmptyLine() {
            const line = document.createElement('p');
            line.innerHTML = '<br>';
            return line;
        },

        processHTML(html) {
            const container = document.createElement('div');
            container.innerHTML = html.replace(/<(meta|link|style|script)[^>]>[\s\S]?<\/\1>|<(meta|link)\s[^>]*\/>/g, '');

            const blocks = container.querySelectorAll('p, div, h1, h2, h3, h4, h5, h6, blockquote, center');
            const result = document.createElement('div');

            blocks.forEach((block, index) => {
                const content = block.innerHTML.trim();
                if (!content || ['<br>', '&nbsp;'].includes(content)) return;

                const paragraph = document.createElement('p');
                paragraph.innerHTML = content;

                const alignment = AlignmentDetector.fromElement(block);
                if (alignment) {
                    paragraph.style.textAlign = alignment;
                    paragraph.setAttribute('data-alignment', alignment);
                }

                result.appendChild(paragraph);

                if (index < blocks.length - 1) {
                    result.appendChild(this.createEmptyLine());
                    result.appendChild(this.createEmptyLine());
                }
            });

            return result.innerHTML;
        },

        processPlainText(text) {
            return text
                .split('\n')
                .filter(line => line.trim())
                .map(line => `<p>${line}</p>`)
                .join('<p><br></p><p><br></p>');
        }
    };

    function handlePaste(e) {
        if (STATE.isProcessing) return;

        try {
            STATE.isProcessing = true;
            e.preventDefault();
            e.stopPropagation();

            const clipboardData = e.clipboardData || window.clipboardData;
            const pastedHTML = clipboardData.getData('text/html');
            const content = pastedHTML
                ? HTMLProcessor.processHTML(pastedHTML)
                : HTMLProcessor.processPlainText(clipboardData.getData('text'));

            document.execCommand('insertHTML', false, content);

            setTimeout(() => {
                const editor = document.querySelector('[contenteditable="true"]');
                if (editor && !editor.innerHTML.includes('<p><br></p><p><br></p>')) {
                    editor.innerHTML = HTMLProcessor.processHTML(editor.innerHTML);
                }
            }, 100);
        } catch (error) {
            console.error('Ошибка форматирования:', error);
        } finally {
            requestAnimationFrame(() => {
                STATE.isProcessing = false;
            });
        }
    }

    function initializeFormatter() {
        const editor = document.querySelector('[contenteditable="true"]');
        if (editor && !STATE.initialized) {
            editor.addEventListener('paste', handlePaste, { capture: true });
            STATE.initialized = true;
            console.log('Форматтер текста инициализирован');
        }
    }

    const observer = new MutationObserver(() => {
        if (!STATE.initialized) {
            initializeFormatter();
        }
    });

    window.addEventListener('load', () => {
        setTimeout(initializeFormatter, 1500);
        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    });
})();

Ответы (0 шт):