From 90a12fb6e0d6f5ec7ba20c3f6a9947231faab607 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Fri, 4 Apr 2025 03:38:46 +0200 Subject: [PATCH] ya --- src/components/BaseModal.vue | 18 ++++++++++------- src/components/PreviewModal.vue | 36 +++++++++++++++++++++++---------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/components/BaseModal.vue b/src/components/BaseModal.vue index d4e3a25..a974bef 100644 --- a/src/components/BaseModal.vue +++ b/src/components/BaseModal.vue @@ -5,8 +5,8 @@
-
- +
+
@@ -19,14 +19,18 @@
- -
- + +
+
+ +
-
- +
+
+ +
diff --git a/src/components/PreviewModal.vue b/src/components/PreviewModal.vue index b3370b6..55b7eed 100644 --- a/src/components/PreviewModal.vue +++ b/src/components/PreviewModal.vue @@ -270,27 +270,27 @@ return; } - // Center the modal in the viewport - const viewportWidth = window.innerWidth; - const viewportHeight = window.innerHeight; - position.value = { - x: (viewportWidth - modalSize.value.width) / 2, - y: (viewportHeight - modalSize.value.height) / 2, - }; - // Reset zoom but keep sprite offset if it exists previewZoom.value = 1; viewportOffset.value = { x: 0, y: 0 }; // Reset modal size to default modalSize.value = { width: 800, height: 600 }; + // Note: Modal positioning is now handled by BaseModal // Reset to first frame currentFrame.value = 0; animation.value.currentFrame = 0; + // Initialize canvas and retry if it fails await initializeCanvas(); + // If canvas is still not initialized, try again after a short delay + if (!animCanvas.value || !store.animation.canvas) { + await new Promise(resolve => setTimeout(resolve, 100)); + await initializeCanvas(); + } + // Set modal open state if not already open if (!store.isModalOpen.value) { store.isModalOpen.value = true; @@ -317,12 +317,19 @@ }; const updateCanvasSize = () => { - if (animCanvas.value && store.cellSize.width && store.cellSize.height) { + if (!animCanvas.value) { + console.warn('PreviewModal: Cannot update canvas size - canvas not found'); + return; + } + + if (store.cellSize.width && store.cellSize.height) { animCanvas.value.width = store.cellSize.width; animCanvas.value.height = store.cellSize.height; // Also update container size updateCanvasContainerSize(); + } else { + console.warn('PreviewModal: Cannot update canvas size - invalid cell dimensions'); } }; @@ -375,6 +382,9 @@ // Modal drag and resize functionality is now handled by BaseModal const initializeCanvas = async () => { + // Wait for the next tick to ensure the canvas element is rendered + await nextTick(); + if (!animCanvas.value) { console.error('PreviewModal: Animation canvas not found'); return; @@ -599,8 +609,12 @@ } }; - onMounted(() => { - initializeCanvas(); + onMounted(async () => { + // Initialize canvas with a slight delay to ensure DOM is ready + await nextTick(); + await initializeCanvas(); + + // Add event listeners window.addEventListener('keydown', handleKeyDown); });