23 lines
536 B
JavaScript
23 lines
536 B
JavaScript
// hooks/useTerminalSize.js
|
|
|
|
import { useState, useEffect } from 'react';
|
|
import { useStdout } from 'ink';
|
|
|
|
export function useTerminalSize() {
|
|
const { stdout } = useStdout();
|
|
const [size, setSize] = useState({ width: stdout.columns, height: stdout.rows });
|
|
|
|
useEffect(() => {
|
|
if (!stdout) return;
|
|
function onResize() {
|
|
setSize({ width: stdout.columns, height: stdout.rows });
|
|
}
|
|
stdout.on('resize', onResize);
|
|
return () => {
|
|
stdout.off('resize', onResize);
|
|
};
|
|
}, [stdout]);
|
|
|
|
return size;
|
|
}
|