diff --git a/src/ui.tsx b/src/ui.tsx index e8270f2..b9ecd48 100644 --- a/src/ui.tsx +++ b/src/ui.tsx @@ -42,21 +42,6 @@ function Plugin () { maxHeight: 800 }) - // Обновляем цифры размера ТОЛЬКО после окончания drag'а (отпускание кнопки). - // К моменту pointerup Figma уже применила новый размер окна. - useEffect(function () { - const handlePointerUp = function () { - setCurrentWindowSize({ - width: window.innerWidth, - height: window.innerHeight - }) - } - window.addEventListener('pointerup', handlePointerUp) - return function () { - window.removeEventListener('pointerup', handlePointerUp) - } - }, []) - // Слушаем ответ от main с актуальными x/y (canvas-space) и размерами окна useEffect(function () { const off = on('WINDOW_INFO', function (info: { @@ -71,6 +56,32 @@ function Plugin () { return function () { off() } }, []) + // Запрашиваем свежие данные об окне у main (после любого действия/старта). + function refreshInfo () { + emit('GET_WINDOW_INFO') + } + + // Обновляем цифры размера и инфо ТОЛЬКО после окончания drag'а (отпускание кнопки). + // К моменту pointerup Figma уже применила новый размер окна. + useEffect(function () { + const handlePointerUp = function () { + setCurrentWindowSize({ + width: window.innerWidth, + height: window.innerHeight + }) + refreshInfo() + } + window.addEventListener('pointerup', handlePointerUp) + return function () { + window.removeEventListener('pointerup', handlePointerUp) + } + }, []) + + // Первичное заполнение инфо при старте плагина. + useEffect(function () { + refreshInfo() + }, []) + function toggleWindowSize () { const isMaximized = currentWindowSize.width >= MAX_WINDOW_SIZE.width && @@ -78,10 +89,7 @@ function Plugin () { const next = isMaximized ? { ...MIN_WINDOW_SIZE } : { ...MAX_WINDOW_SIZE } setCurrentWindowSize(next) emit('RESIZE_WINDOW', next) - } - - function requestWindowInfo () { - emit('GET_WINDOW_INFO') + refreshInfo() } function dockWindow (position: 'left' | 'right' | 'center') { @@ -90,6 +98,7 @@ function Plugin () { width: currentWindowSize.width, height: currentWindowSize.height }) + refreshInfo() } const isMaximized = @@ -112,7 +121,6 @@ function Plugin () { -