diff options
Diffstat (limited to 'packages/cli/src/ui/hooks/useTerminalSize.ts')
| -rw-r--r-- | packages/cli/src/ui/hooks/useTerminalSize.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/packages/cli/src/ui/hooks/useTerminalSize.ts b/packages/cli/src/ui/hooks/useTerminalSize.ts new file mode 100644 index 00000000..f043a118 --- /dev/null +++ b/packages/cli/src/ui/hooks/useTerminalSize.ts @@ -0,0 +1,32 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import { useEffect, useState } from 'react'; + +const TERMINAL_PADDING_X = 8; + +export function useTerminalSize(): { columns: number; rows: number } { + const [size, setSize] = useState({ + columns: (process.stdout.columns || 60) - TERMINAL_PADDING_X, + rows: process.stdout.rows || 20, + }); + + useEffect(() => { + function updateSize() { + setSize({ + columns: (process.stdout.columns || 60) - TERMINAL_PADDING_X, + rows: process.stdout.rows || 20, + }); + } + + process.stdout.on('resize', updateSize); + return () => { + process.stdout.off('resize', updateSize); + }; + }, []); + + return size; +} |
