summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/hooks/useTerminalSize.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/hooks/useTerminalSize.ts')
-rw-r--r--packages/cli/src/ui/hooks/useTerminalSize.ts32
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;
+}