diff --git a/apps/ai-game-creator-shell/src/styles.css b/apps/ai-game-creator-shell/src/styles.css
index 9ed191020..f375a7c05 100644
--- a/apps/ai-game-creator-shell/src/styles.css
+++ b/apps/ai-game-creator-shell/src/styles.css
@@ -5163,6 +5163,10 @@ iframe.preview-frame {
pointer-events: none;
}
+.game-resource-book-scene.is-measuring {
+ opacity: 0;
+}
+
.game-resource-book-scene::before {
position: absolute;
z-index: 0;
diff --git a/apps/ai-game-creator-shell/src/view/project-development/index.tsx b/apps/ai-game-creator-shell/src/view/project-development/index.tsx
index 0561b306d..ab85929d9 100644
--- a/apps/ai-game-creator-shell/src/view/project-development/index.tsx
+++ b/apps/ai-game-creator-shell/src/view/project-development/index.tsx
@@ -1014,7 +1014,7 @@ function ResourceBookScene({
return (
{visibleCategoryOrder.map((category) => {
const rect = overviewRects.get(category);
@@ -1891,7 +1891,8 @@ export default function ProjectDevelopmentView({
measureResourceBookOverview();
const manager = resourceBookManagerRef.current;
if (!manager || typeof ResizeObserver === 'undefined') {
- return undefined;
+ const frame = window.requestAnimationFrame(measureResourceBookOverview);
+ return () => window.cancelAnimationFrame(frame);
}
const observer = new ResizeObserver(measureResourceBookOverview);
observer.observe(manager);
@@ -1899,11 +1900,13 @@ export default function ProjectDevelopmentView({
observer.observe(element),
);
window.addEventListener('resize', measureResourceBookOverview);
+ const frame = window.requestAnimationFrame(measureResourceBookOverview);
return () => {
observer.disconnect();
+ window.cancelAnimationFrame(frame);
window.removeEventListener('resize', measureResourceBookOverview);
};
- }, [measureResourceBookOverview, resourceBookView]);
+ }, [measureResourceBookOverview, resourceBookView, canvasResources.length]);
const viewedResourceCategory =
mode === 'resources' ? activePageCategory : null;
useEffect(() => {