From 0aeaf9f831e8eabfc0c73257cb082a4e217b2b72 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Wed, 9 Sep 2026 16:58:31 +0200 Subject: [PATCH] ui: expand targets viewport geometry (maxViewport), drop 2000 probe; no header subtraction --- src/ui.tsx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ui.tsx b/src/ui.tsx index 8eb46fd..0465edd 100644 --- a/src/ui.tsx +++ b/src/ui.tsx @@ -188,16 +188,14 @@ function Plugin () { }, []) function toggleWindowSize () { - // "Развернуть" шлёт заведомо большой запрос (2000×2000) — это "перфоратор" Figma: - // API не отдаёт реальный лимит окна, поэтому просим больше, чем viewport, и Figma - // сама клампнет до доступного (зависит от того, спрятан ли UI Figma). Реальный - // размер потом измеряется через iframe (window.innerWidth/Height) и показывается - // как lastSize / gaps. Свернуть — обратно к минимуму. - const EXPAND_REQUEST = { width: 2000, height: 2000 } + // "Развернуть" целится в геометрию видимого viewport (maxViewport = bounds*zoom, + // без вычетов шапки/рамок). Figma сама клампнет запрос до своего реального лимита + // окна плагина (зависит от того, спрятан ли UI Figma). Реальный размер потом + // измеряется через iframe (window.innerWidth/Height) и показывается как lastSize/gaps. + const max = windowInfo != null ? windowInfo.maxViewport : { width: 1920, height: 1080 } const isMaximized = - currentWindowSize.width >= EXPAND_REQUEST.width && - currentWindowSize.height >= EXPAND_REQUEST.height - const next = isMaximized ? { ...MIN_WINDOW_SIZE } : { ...EXPAND_REQUEST } + currentWindowSize.width >= max.width && currentWindowSize.height >= max.height + const next = isMaximized ? { ...MIN_WINDOW_SIZE } : { ...max } setCurrentWindowSize(next) emit('RESIZE_WINDOW', next) refreshInfo() @@ -214,7 +212,9 @@ function Plugin () { const max = windowInfo != null ? windowInfo.maxViewport : null // "Развернуто" считаем, если окно достигло (или превысило) геометрию viewport - // — при запросе 2000×2000 Figma клампнет, и lastSize будет ≥ maxViewport. + // (maxViewport = bounds*zoom). Figma клампнет запрос до своего лимита, поэтому + // реальный lastSize может быть чуть меньше maxViewport — при достижении потолка + // currentWindowSize будет >= maxViewport и иконка покажет "свернуть". const isMaximized = max != null && currentWindowSize.width >= max.width &&