From 8586e684a6206970c5e2fe9b2d192495e2557c76 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Sat, 6 Sep 2025 20:36:55 -0700 Subject: [PATCH] Fix init issue --- src/renderer/core/layout/dom/canvasRectCache.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/renderer/core/layout/dom/canvasRectCache.ts b/src/renderer/core/layout/dom/canvasRectCache.ts index 7cbb5576d..ac30fc52a 100644 --- a/src/renderer/core/layout/dom/canvasRectCache.ts +++ b/src/renderer/core/layout/dom/canvasRectCache.ts @@ -61,5 +61,18 @@ export function getCanvasRect(): Rect { export function getCanvasClientOrigin() { ensureContainer() - return { left: x.value || 0, top: y.value || 0 } + const el = containerRef.value + // VueUse refs can be 0 on first read right after binding + // if the element was assigned in the same tick. In that case, + // synchronously read from getBoundingClientRect as a fallback + // to avoid returning a zero offset during initialization. + const lx = x.value || 0 + const ly = y.value || 0 + // Also check width/height to distinguish a legitimate (0,0) + // from an unmeasured state (all zeros) + if (el && lx === 0 && ly === 0 && width.value === 0 && height.value === 0) { + const rect = el.getBoundingClientRect() + return { left: rect.left, top: rect.top } + } + return { left: lx, top: ly } }