Greasy Fork is available in English.
Changes dir attribute of page's div elements to 'auto' and forcing text aligning styles on selectable blocks
当前为
// ==UserScript==
// @name Notion.so RTL support for written text
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Changes dir attribute of page's div elements to 'auto' and forcing text aligning styles on selectable blocks
// @author OrenK
// @include https://www.notion.so/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var GM_addStyle =
function(css) {
var style = document.getElementById("GM_addStyleBy8626") || (function() {
var style = document.createElement('style');
style.type = 'text/css';
style.id = "GM_addStyleBy8626";
document.head.appendChild(style);
return style;
})();
var sheet = style.sheet;
sheet.insertRule(css, (sheet.rules || sheet.cssRules || []).length);
};
GM_addStyle(".notion-selectable * { text-align: start !important; unicode-bidi: plaintext;}");
GM_addStyle(".notion-selectable.notion-to_do-block > div > div:nth-of-type(2) { margin-right: 4px !important; }");
var observing = false;
var hasClass = function(element, className) {
return (' ' + element.className + ' ').indexOf(' ' + className + ' ') > -1;
};
var notionPageCallback = function(mutations, observer) {
for (var i = 0; i < mutations.length; i++) {
for (var j = 0; j < mutations[i].addedNodes.length; j++) {
var addedNode = mutations[i].addedNodes[j];
if (addedNode.nodeType === Node.ELEMENT_NODE) {
if (addedNode.tagName === 'DIV' && hasClass(addedNode, 'notion-selectable')) {
addedNode.setAttribute('dir', 'auto');
}
var divChildren = addedNode.getElementsByClassName('notion-selectable');
for (var y = 0; y < divChildren.length; y++) {
divChildren[y].setAttribute('dir', 'auto');
}
}
}
}
};
var documentCallback = function(mutations, observer) {
var notionPage = document.getElementsByClassName('notion-page-content');
if (notionPage.length !== 0 && !observing) {
var divElements = notionPage[0].getElementsByClassName('notion-selectable');
for (var i = 0; i < divElements.length; i++) {
divElements[i].setAttribute('dir', 'auto');
}
notionPageObserver.observe(notionPage[0], { subtree: true, childList: true });
observing = true;
}
if (notionPage.length === 0 && observing) {
notionPageObserver.disconnect();
observing = false;
}
};
var notionPageObserver = new MutationObserver(notionPageCallback);
var documentObserver = new MutationObserver(documentCallback);
documentObserver.observe(document, {
subtree: true,
childList: true
});
})();