From 34a3f9ffcb35b55f80bacabd4a5e6dc80ec95be6 Mon Sep 17 00:00:00 2001 From: murashit Date: Wed, 13 May 2026 08:47:56 +0900 Subject: [PATCH] Fix review warnings for dynamic CSS and ANSI regex --- src/panel/app-server-logs.ts | 3 ++- src/view/composer.ts | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/panel/app-server-logs.ts b/src/panel/app-server-logs.ts index e19c96a3..fddb84e0 100644 --- a/src/panel/app-server-logs.ts +++ b/src/panel/app-server-logs.ts @@ -1,6 +1,7 @@ export type ClassifiedAppServerLog = { kind: "plain"; text: string } | { kind: "error"; text: string } | null; -const ANSI_PATTERN = new RegExp("\\u001B\\[[0-?]*[ -/]*[@-~]", "g"); +const ESCAPE_CHARACTER = String.fromCharCode(27); +const ANSI_PATTERN = new RegExp(`${ESCAPE_CHARACTER}\\[[0-?]*[ -/]*[@-~]`, "g"); export function classifyAppServerLog(message: string): ClassifiedAppServerLog { const normalized = stripAnsi(message).trimEnd(); diff --git a/src/view/composer.ts b/src/view/composer.ts index 2886382d..2329736e 100644 --- a/src/view/composer.ts +++ b/src/view/composer.ts @@ -105,14 +105,20 @@ export function syncComposerHeight(composer: HTMLTextAreaElement | null): void { const style = getComputedStyle(composer); const minHeight = parseCssPixels(style.minHeight, 76); const maxHeight = composerMaxHeight(style.maxHeight); - composer.setCssProps({ height: "auto" }); + setCssProps(composer, { height: "auto" }); const nextHeight = Math.min(Math.max(composer.scrollHeight, minHeight), maxHeight); - composer.setCssProps({ + setCssProps(composer, { height: `${nextHeight}px`, "overflow-y": composer.scrollHeight > maxHeight ? "auto" : "hidden", }); } +function setCssProps(element: HTMLElement, props: Record): void { + for (const [key, value] of Object.entries(props)) { + element.style.setProperty(key, value); + } +} + function parseCssPixels(value: string, fallback: number): number { const parsed = Number.parseFloat(value); return Number.isFinite(parsed) ? parsed : fallback;