EPUB resize debounce working perfectly

This commit is contained in:
Richard Roberson 2025-02-21 12:01:52 -07:00
parent 868bb88988
commit 99868f29b2
3 changed files with 12 additions and 8 deletions

View file

@ -79,17 +79,17 @@ export function EPUBViewer({ className = '' }: EPUBViewerProps) {
}, [extractPageText]);
const checkResize = useCallback(() => {
if (isResizing && bookRef.current?.isOpen && rendition.current && isEPUBSetOnce.current) {
if (isResizing && dimensions && bookRef.current?.isOpen && rendition.current && isEPUBSetOnce.current) {
pause();
// Only extract text when we have dimensions, ensuring the resize is complete
if (dimensions) extractPageText(bookRef.current, rendition.current, true);
extractPageText(bookRef.current, rendition.current, true);
setIsResizing(false);
return true;
} else {
return false;
}
}, [isResizing, dimensions, pause, extractPageText]);
}, [isResizing, setIsResizing, dimensions, pause, extractPageText]);
// Check for isResizing to pause TTS and re-extract text
useEffect(() => {

View file

@ -195,7 +195,7 @@ export function TTSProvider({ children }: { children: ReactNode }) {
setSentences([]);
setCurrDocPage(location);
}, [abortAudio, isPlaying]);
}, [abortAudio]);
/**
* Moves to the next or previous sentence

View file

@ -10,12 +10,16 @@ export function useEPUBResize(containerRef: RefObject<HTMLDivElement | null>) {
const entries = args[0] as ResizeObserverEntry[];
console.log('Debounced resize', entries[0].contentRect);
setDimensions(entries[0].contentRect);
setIsResizing((prev) => {
if (!prev) return true;
return prev;
});
}, 150);
const resizeObserver = new ResizeObserver((entries) => {
if (!isResizing) {
setIsResizing(true);
}
// if (!isResizing) {
// setIsResizing(true);
// }
debouncedResize(entries);
});
@ -51,7 +55,7 @@ export function useEPUBResize(containerRef: RefObject<HTMLDivElement | null>) {
mutationObserver.disconnect();
resizeObserver.disconnect();
};
}, [containerRef]);
}, [containerRef]);
return { isResizing, setIsResizing, dimensions };
}