import { useCallback } from 'react' import instances from '../instances.js' export type RunExternalProcess = () => Promise export async function withInkSuspended(run: RunExternalProcess): Promise { const ink = instances.get(process.stdout) if (!ink) { await run() return } ink.enterAlternateScreen() try { await run() } finally { ink.exitAlternateScreen() } } export function useExternalProcess(): (run: RunExternalProcess) => Promise { return useCallback((run: RunExternalProcess) => withInkSuspended(run), []) }