/** * notion-enhancer: right to left * (c) 2021 obahareth (https://omar.engineer) * (c) 2021 dragonwocky (https://dragonwocky.me/) * (https://notion-enhancer.github.io/) under the MIT license */ 'use strict'; export default async function ({ web }, db) { const pageContentSelector = ` .notion-page-content > div[data-block-id]:not([dir]):not(.notion-column_list-block):not(.notion-collection_view_page-block), [placeholder="Untitled"]:not([dir]), .notion-column-block > div[data-block-id]:not([dir]), .notion-collection_view-block:not([dir]), .notion-table-view:not([dir]), .notion-board-view:not([dir]), .notion-gallery-view:not([dir])`, listItemSelector = ` div[placeholder="List"]:not([style*="text-align: start"]), div[placeholder="To-do"]:not([style*="text-align: start"]), div[placeholder="Toggle"]:not([style*="text-align: start"])`, inlineEquationSelector = '.notion-text-equation-token .katex-html:not([style*="direction: rtl;"])'; const autoAlignText = () => { document .querySelectorAll(pageContentSelector) .forEach(($block) => $block.setAttribute('dir', 'auto')); document.querySelectorAll(listItemSelector).forEach(($item) => { $item.style['text-align'] = 'start'; }); document.querySelectorAll(inlineEquationSelector).forEach(($equation) => { $equation.style.direction = 'rtl'; $equation.style.display = 'inline-flex'; $equation.style.flexDirection = 'row-reverse'; for (const $symbol of $equation.children) { $symbol.style.direction = 'ltr'; } }); }; web.addDocumentObserver(autoAlignText, [ pageContentSelector, listItemSelector, inlineEquationSelector, ]); await web.whenReady(); autoAlignText(); }