UNPKG

@hhoangphuoc/escape-room-cli

Version:

A CLI for playing AI-generated escape room games. Install globally with: npm install -g @hhoangphuoc/escape-room-cli

66 lines (65 loc) 3.64 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { Box, Text } from 'ink'; import { HelpResponseComponent, LookResponseComponent, InspectResponseComponent, GuessResponseComponent, PasswordResponseComponent, HintResponseComponent, NewGameResponseComponent, LeaderboardResponseComponent, AuthResponseComponent, ErrorResponseComponent, SuccessResponseComponent, InfoResponseComponent, GenericResponseComponent } from './ResponseComponents.js'; const renderResponseComponent = (item) => { if (!item.data || !item.responseType) return null; try { switch (item.responseType) { case 'help': return _jsx(HelpResponseComponent, { response: item.data }); case 'look': return _jsx(LookResponseComponent, { response: item.data }); case 'inspect': return _jsx(InspectResponseComponent, { response: item.data }); case 'guess': return _jsx(GuessResponseComponent, { response: item.data }); case 'password': return _jsx(PasswordResponseComponent, { response: item.data }); case 'hint': return _jsx(HintResponseComponent, { response: item.data }); case 'newgame': return _jsx(NewGameResponseComponent, { response: item.data }); case 'leaderboard': return _jsx(LeaderboardResponseComponent, { response: item.data }); case 'auth': return _jsx(AuthResponseComponent, { response: item.data }); default: return null; } } catch (error) { return null; } }; const CommandHistory = ({ history, showHistory, useComponents = true }) => { const renderHistoryHeader = () => { if (!showHistory) return null; return (_jsx(Box, { marginBottom: 1, padding: 1, children: _jsx(Text, { color: "magenta", bold: true, children: "Command History" }) })); }; return (_jsxs(Box, { flexDirection: "column", children: [renderHistoryHeader(), history.map((item, index) => { if (item.type === 'command') { return (_jsxs(Box, { marginY: 1, paddingX: 1, children: [_jsx(Text, { color: "yellow", children: "\u276F " }), _jsx(Text, { bold: true, color: "yellow", children: item.text || '' })] }, index)); } if (useComponents && item.responseType && item.data) { const component = renderResponseComponent(item); if (component) { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: component }, index)); } } if (item.type === 'error') { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: _jsx(ErrorResponseComponent, { message: item.text }) }, index)); } else if (item.type === 'success') { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: _jsx(SuccessResponseComponent, { message: item.text }) }, index)); } else if (item.type === 'info') { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: _jsx(InfoResponseComponent, { message: item.text }) }, index)); } else { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: _jsx(GenericResponseComponent, { message: item.text }) }, index)); } })] })); }; export default CommandHistory;