feat(renderer): preview store with 300ms debounced source

This commit is contained in:
2026-06-05 13:04:39 +05:30
parent 5ad582ec3e
commit 559d09cad9
2 changed files with 48 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
import { create } from 'zustand';
interface PreviewState {
source: string;
scrollRatio: number;
setSource: (s: string) => void;
setScrollRatio: (r: number) => void;
}
const DEBOUNCE_MS = 300;
let timer: ReturnType<typeof setTimeout> | null = null;
let pending: string = '';
export const usePreviewStore = create<PreviewState>((set) => ({
source: '',
scrollRatio: 0,
setSource: (s) => {
pending = s;
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
set({ source: pending });
}, DEBOUNCE_MS);
},
setScrollRatio: (r) => set({ scrollRatio: r }),
}));