| /** | |
| * @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; | |
| } | |