From 4aa82fbefa3c0f07454a7811e6cee644988bc305 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Wed, 9 Sep 2026 12:56:07 +0200 Subject: [PATCH] fix: window size readout now updates during drag - ui.tsx: useWindowResize callback now builds a fresh {width,height} from window.innerWidth/innerHeight instead of the hook's mutated ref object, so Preact re-renders and the size label updates live - toggleWindowSize: spread MIN/MAX constants to new objects (same ref bug) --- src/ui.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ui.tsx b/src/ui.tsx index 23e8a2b..a4c62fe 100644 --- a/src/ui.tsx +++ b/src/ui.tsx @@ -22,9 +22,12 @@ function Plugin () { // Нативный drag-ресайз окна Figma (тянуть за правый нижний угол). // Опции min/max обязательны: без них хук берёт базу из window.innerWidth на момент // маунта (окно ещё не приняло размер от showUI) → первый drag не работает. + // ВАЖНО: хук мутирует и отдаёт ОДИН объект по ссылке, поэтому делаем копию + // (иначе Preact не видит изменений и цифры размера не перерисовываются). useWindowResize(function (windowSize: { width: number; height: number }) { - setCurrentWindowSize(windowSize) - emit('RESIZE_WINDOW', windowSize) + const size = { width: window.innerWidth, height: window.innerHeight } + setCurrentWindowSize(size) + emit('RESIZE_WINDOW', size) }, { minWidth: 320, minHeight: 200, @@ -36,7 +39,7 @@ function Plugin () { const isMaximized = currentWindowSize.width >= MAX_WINDOW_SIZE.width && currentWindowSize.height >= MAX_WINDOW_SIZE.height - const next = isMaximized ? MIN_WINDOW_SIZE : MAX_WINDOW_SIZE + const next = isMaximized ? { ...MIN_WINDOW_SIZE } : { ...MAX_WINDOW_SIZE } setCurrentWindowSize(next) emit('RESIZE_WINDOW', next) }