@@ -381,6 +381,8 @@ export default {
381381
382382 const handleResize = async () => {
383383 if (isRendering .value ) return ;
384+ // Skip render if container is hidden (e.g., inactive Streamlit tab)
385+ if (pdfContainer .value && pdfContainer .value .clientWidth === 0 ) return ;
384386 isRendering .value = true ;
385387 try {
386388 const binaryDataUrl = ` data:application/pdf;base64,${ props .args .binary } ` ;
@@ -464,15 +466,29 @@ export default {
464466
465467 const debouncedHandleResize = debounce (handleResize, 200 );
466468
469+ let lastContainerWidth = 0 ;
470+ const resizeObserver = new ResizeObserver ((entries ) => {
471+ const entry = entries[0 ];
472+ const newWidth = entry .contentRect .width ;
473+ if (lastContainerWidth === 0 && newWidth > 0 ) {
474+ debouncedHandleResize ();
475+ }
476+ lastContainerWidth = newWidth;
477+ });
478+
467479 onMounted (() => {
468480 debouncedHandleResize ();
469481 window .addEventListener (" resize" , debouncedHandleResize);
470482 document .addEventListener (' click' , handleClickOutside);
483+ if (pdfContainer .value ) {
484+ resizeObserver .observe (pdfContainer .value );
485+ }
471486 });
472487
473488 onUnmounted (() => {
474489 window .removeEventListener (" resize" , debouncedHandleResize);
475490 document .removeEventListener (' click' , handleClickOutside);
491+ resizeObserver .disconnect ();
476492 });
477493
478494 return {
0 commit comments