UNPKG

nice-ui

Version:

React design system, components, and utilities

37 lines (36 loc) 1.56 kB
"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;