code.gitea.io/gitea@v1.21.7/web_src/js/modules/dirauto.js (about) 1 import {isDocumentFragmentOrElementNode} from '../utils/dom.js'; 2 3 // for performance considerations, it only uses performant syntax 4 function attachDirAuto(el) { 5 if (el.type !== 'hidden' && 6 el.type !== 'checkbox' && 7 el.type !== 'radio' && 8 el.type !== 'range' && 9 el.type !== 'color') { 10 el.dir = 'auto'; 11 } 12 } 13 14 export function initDirAuto() { 15 const observer = new MutationObserver((mutationList) => { 16 const len = mutationList.length; 17 for (let i = 0; i < len; i++) { 18 const mutation = mutationList[i]; 19 const len = mutation.addedNodes.length; 20 for (let i = 0; i < len; i++) { 21 const addedNode = mutation.addedNodes[i]; 22 if (!isDocumentFragmentOrElementNode(addedNode)) continue; 23 if (addedNode.nodeName === 'INPUT' || addedNode.nodeName === 'TEXTAREA') attachDirAuto(addedNode); 24 const children = addedNode.querySelectorAll('input, textarea'); 25 const len = children.length; 26 for (let childIdx = 0; childIdx < len; childIdx++) { 27 attachDirAuto(children[childIdx]); 28 } 29 } 30 } 31 }); 32 33 const docNodes = document.querySelectorAll('input, textarea'); 34 const len = docNodes.length; 35 for (let i = 0; i < len; i++) { 36 attachDirAuto(docNodes[i]); 37 } 38 39 observer.observe(document, {subtree: true, childList: true}); 40 }