27 lines
634 B
TypeScript
27 lines
634 B
TypeScript
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;
|
|
}
|