@t1mmen/srtd
Version:
Supabase Repeatable Template Definitions (srtd): 🪄 Live-reloading SQL templates for Supabase DX. Make your database changes reviewable and migrations maintainable! 🚀
38 lines • 1.3 kB
JavaScript
import { Box, Text, useApp, useInput } from 'ink';
import React from 'react';
export default function Quittable(props) {
// Use ref to track if component is mounted
const { exit } = useApp();
const mounted = React.useRef(true);
React.useEffect(() => {
return () => {
mounted.current = false;
};
}, []);
useInput((input, key) => {
if (!mounted.current)
return;
if (input.toLowerCase() === 'q' || (key.ctrl && input === 'c')) {
try {
if (props?.onQuit) {
props.onQuit();
}
// Exit synchronously
exit();
}
catch (error) {
console.error('Failed to exit cleanly:', error);
if (error instanceof Error) {
exit(error);
}
}
}
});
return (React.createElement(Box, { marginY: 1 },
React.createElement(Text, { dimColor: true }, "Press "),
React.createElement(Text, null, "q"),
React.createElement(Text, { dimColor: true }, " or "),
React.createElement(Text, null, "Ctrl+c"),
React.createElement(Text, { dimColor: true }, " to quit")));
}
//# sourceMappingURL=Quittable.js.map