nice-ui
Version:
React design system, components, and utilities
37 lines (36 loc) • 1.56 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const parser_1 = require("./parser");
const Chessboard_1 = require("../../components/chess/Chessboard");
const MarkdownBlock_1 = require("../../util/MarkdownBlock");
const context_1 = require("../../context");
const isFirstLevelBlockElement_1 = require("../../util/isFirstLevelBlockElement");
const FullWidthFenBlock_1 = require("./FullWidthFenBlock");
const { memo, useMemo, useContext } = React;
const FenBlock = memo((props) => {
const { idx, source, renderError } = props;
const state = useContext(context_1.context);
const node = state.ast.nodes[idx];
const parsed = useMemo(() => {
try {
return (0, parser_1.parseExtended)(source);
}
catch (error) {
return null;
}
}, [source]);
if (!parsed) {
return renderError(props, new Error('Could not parse.'));
}
const doCenterAsTopLevelBlock = state.props.isFullWidth && (0, isFirstLevelBlockElement_1.default)(node, state.ast);
if (doCenterAsTopLevelBlock) {
return React.createElement(FullWidthFenBlock_1.default, { idx: idx, layout: parsed });
}
let chessboard = React.createElement(Chessboard_1.default, { ...parsed });
if (state.props.isCompact) {
chessboard = React.createElement("div", { style: { maxWidth: 300, margin: '0 auto' } }, chessboard);
}
return React.createElement(MarkdownBlock_1.default, { idx: idx }, chessboard);
});
exports.default = FenBlock;