nice-ui
Version:
React design system, components, and utilities
34 lines (33 loc) • 1.71 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const MarkdownBlock_1 = require("../../util/MarkdownBlock");
const react_embed_1 = require("react-embed");
const context_1 = require("../../context");
const rootDepth_1 = require("../../util/rootDepth");
const MarkdownFullWidthBlock_1 = require("../../util/MarkdownFullWidthBlock");
const { useContext, useMemo, useEffect } = React;
const renderReactEmbedWrap = (children) => {
return (React.createElement("div", { style: {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
width: '100%',
} }, children));
};
const UrlBlock = ({ idx, url = '', renderVoid }) => {
const { ast, props, expandBlock } = useContext(context_1.context);
const isExpandable = useMemo(() => (props.isExpandable ? props.isExpandable(url) : false), [props.isExpandable, url]);
useEffect(() => {
if (!isExpandable)
return;
const depth = (0, rootDepth_1.default)(ast, idx);
if (depth > 3)
return;
expandBlock(idx, url);
}, [idx, url, isExpandable]);
const element = isExpandable ? (React.createElement(MarkdownBlock_1.default, { idx: idx }, props.LoadingBlock ? React.createElement(props.LoadingBlock, { idx: idx }) : React.createElement("div", null))) : (React.createElement(MarkdownBlock_1.default, { idx: idx },
React.createElement(react_embed_1.default, { url: url, renderWrap: renderReactEmbedWrap, renderVoid: renderVoid })));
return props.isFullWidth ? React.createElement(MarkdownFullWidthBlock_1.default, null, element) : element;
};
exports.default = UrlBlock;