Dynamic RTL/LTR Direction

Dynamically set text direction for Deepseek chat elements based on content

目前为 2025-01-16 提交的版本。查看 最新版本

// ==UserScript==
// @name          Dynamic RTL/LTR Direction
// @namespace     http://tampermonkey.net/
// @version       v1.0
// @description   Dynamically set text direction for Deepseek chat elements based on content
// @author        Reda Elsayed
// @match         https://chat.deepseek.com/
// @match         https://chat.deepseek.com/*
// @match         https://chat.deepseek.com/*/chat/*/*
// @icon          https://www.deepseek.com/path/to/icon.png
// @grant         none
// ==/UserScript==

(function () {
    'use strict';

    const targetClass = "dad65929";

    function isRTL(text) {
        // Check if the text contains RTL characters (Arabic, Hebrew, etc.)
        const rtlPattern = /[\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC]/;
        return rtlPattern.test(text);
    }

    function updateDirection() {
        const elements = document.getElementsByClassName(targetClass);
        Array.from(elements).forEach(element => {
            const textContent = element.textContent.trim();
            if (textContent.length > 0) {
                element.style.direction = isRTL(textContent) ? "rtl" : "ltr";
            }
        });
    }

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

    const observer = new MutationObserver(updateDirection);

    // Apply direction on load if elements are already present
    if (document.getElementsByClassName(targetClass).length > 0) {
        updateDirection();
    }

    startObserving();
})();