askme-cli
Version:
askme-cli MCP server that collects user's next plan or confirmation through terminal window
76 lines • 2.79 kB
JavaScript
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
import { Box } from 'ink';
import { SimpleMarkdownParser } from '../../shared/utils/markdownParser.js';
/**
* Check if spacing should be added for element
*/
const shouldAddSpacing = (element, elements, index) => {
// Last element doesn't need spacing
if (index === elements.length - 1) {
return false;
}
// Headers always need spacing after them
if (element.type === 'header') {
return true;
}
// If next element is header, current element needs spacing
const nextElement = elements[index + 1];
if (nextElement && nextElement.type === 'header') {
return true;
}
// List items don't need extra spacing between them, but list groups need spacing after
if (element.type === 'list') {
const nextElement = elements[index + 1];
return nextElement && nextElement.type !== 'list';
}
return false;
};
/**
* Get spacing size for element
*/
const getSpacing = (element) => {
switch (element.type) {
case 'header':
// Level 1 headers get larger spacing, other headers get medium spacing
return element.level === 1 ? 1 : 1;
case 'list':
// Spacing after list groups
return 1;
case 'text':
// Spacing after normal text
return 1;
default:
return 1;
}
};
/**
* Simple Markdown component
* Supports: headers, bold, italic, code, lists
*/
export const SimpleMarkdown = ({ children, enabled = true }) => {
if (!enabled || !children) {
// If markdown is disabled or no content, return plain text
return _jsx(_Fragment, { children: children });
}
try {
// Parse markdown
const elements = SimpleMarkdownParser.parse(children);
// Render elements with appropriate spacing
return (_jsx(Box, { flexDirection: "column", children: elements.map((element, index) => {
const renderedElement = SimpleMarkdownParser.renderElement(element, index);
// Add spacing for different types of elements
const needsSpacing = shouldAddSpacing(element, elements, index);
if (needsSpacing) {
return (_jsx(Box, { marginBottom: getSpacing(element), children: renderedElement }, `wrapper-${index}`));
}
return renderedElement;
}) }));
}
catch (error) {
// Fallback to plain text when parsing fails
console.warn('Markdown parsing failed, falling back to plain text display:', error);
return _jsx(_Fragment, { children: children });
}
};
export default SimpleMarkdown;
//# sourceMappingURL=SimpleMarkdown.js.map