debounce mathjax rendering via cooldown instead

This commit is contained in:
llama 2025-07-05 19:49:12 +08:00
parent 64691a812e
commit 74242f45a4
No known key found for this signature in database
GPG key ID: 0B7543854B9413C3

View file

@ -38,7 +38,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import { pageTheme } from "$lib/sveltelib/theme"; import { pageTheme } from "$lib/sveltelib/theme";
import { convertMathjax, unescapeSomeEntities } from "./mathjax"; import { convertMathjax, unescapeSomeEntities } from "./mathjax";
import { ChangeTimer } from "./change-timer"; import { CooldownTimer } from "./cooldown-timer";
export let mathjax: string; export let mathjax: string;
export let block: boolean; export let block: boolean;
@ -46,25 +46,23 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
let converted: string, title: string; let converted: string, title: string;
const debouncedMathjax = writable(mathjax); const debouncer = new CooldownTimer(500);
const debouncer = new ChangeTimer();
$: debouncer.schedule(() => debouncedMathjax.set(mathjax), 500);
$: { $: debouncer.schedule(() => {
const cache = getCache($pageTheme.isDark, fontSize); const cache = getCache($pageTheme.isDark, fontSize);
const entry = cache.get($debouncedMathjax); const entry = cache.get(mathjax);
if (entry) { if (entry) {
[converted, title] = entry; [converted, title] = entry;
} else { } else {
const entry = convertMathjax( const entry = convertMathjax(
unescapeSomeEntities($debouncedMathjax), unescapeSomeEntities(mathjax),
$pageTheme.isDark, $pageTheme.isDark,
fontSize, fontSize,
); );
[converted, title] = entry; [converted, title] = entry;
cache.set($debouncedMathjax, entry); cache.set(mathjax, entry);
} }
} });
$: empty = title === "MathJax"; $: empty = title === "MathJax";
$: encoded = encodeURIComponent(converted); $: encoded = encodeURIComponent(converted);