@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
JavaScript
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;