diff --git a/src/main.js b/src/main.js index d1bbdbc..c868bf2 100644 --- a/src/main.js +++ b/src/main.js @@ -27,6 +27,7 @@ function start() { }, onModeChange: (m) => { store.setMode(m); + prefs.mode = m; applyMode(); }, onPosChange: (pos) => store.setPos(pos), @@ -85,9 +86,15 @@ function start() { render(); // watch DOM for attribute changes + let pending = false; const observer = new MutationObserver(() => { - const a = currentAttribute(); - if (a && (a.attr !== lastAttr || a.current !== lastSnapshot?.current)) render(); + if (pending) return; + pending = true; + requestAnimationFrame(() => { + pending = false; + const a = currentAttribute(); + if (a && (a.attr !== lastAttr || a.current !== lastSnapshot?.current)) render(); + }); }); observer.observe(document.body, { childList: true, subtree: true, characterData: true });