@uiw/react-markdown-preview-example
Version:
Preview the markdown files and run the React examples in the documentation.
99 lines (98 loc) • 5.65 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = Markdown;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _reactCodePreviewLayout = _interopRequireDefault(require("react-code-preview-layout"));
var _markdownReactCodePreviewLoader = require("markdown-react-code-preview-loader");
var _reactMarkdownPreview = _interopRequireDefault(require("@uiw/react-markdown-preview"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _rehypeIgnore = _interopRequireDefault(require("rehype-ignore"));
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["components", "data", "node"],
_excluded2 = ["source", "components", "data", "rehypeRewrite"];
var _templateObject;
var Preview = _reactCodePreviewLayout["default"].Preview;
var Code = _reactCodePreviewLayout["default"].Code;
var Toolbar = _reactCodePreviewLayout["default"].Toolbar;
var MarkdownStyle = (0, _styledComponents["default"])(_reactMarkdownPreview["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n margin: 0 auto;\n box-shadow:\n rgb(8 15 41 / 8%) 0.5rem 0.5rem 2rem 0px,\n rgb(8 15 41 / 8%) 0px 0px 1px 0px;\n border: 1px solid var(--color-border-default, #30363d);\n text-align: left;\n max-width: 56rem;\n overflow: auto;\n padding: 2rem;\n border-radius: 0.55rem;\n"])));
var CodePreview = function CodePreview(_ref) {
var components = _ref.components,
data = _ref.data,
node = _ref.node,
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
if (node && node.type === 'element' && node.tagName === 'pre') {
var _child$data, _child$properties, _node$position;
var child = node.children[0];
if (!child) return /*#__PURE__*/(0, _jsxRuntime.jsx)("pre", (0, _objectSpread2["default"])({}, props));
var meta = ((_child$data = child.data) === null || _child$data === void 0 ? void 0 : _child$data.meta) || ((_child$properties = child.properties) === null || _child$properties === void 0 ? void 0 : _child$properties.dataMeta);
if (!(0, _markdownReactCodePreviewLoader.isMeta)(meta)) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)("pre", (0, _objectSpread2["default"])({}, props));
}
var line = node === null || node === void 0 || (_node$position = node.position) === null || _node$position === void 0 ? void 0 : _node$position.start.line;
var metaId = (0, _markdownReactCodePreviewLoader.getMetaId)(meta) || String(line);
var Child = components["".concat(metaId)];
if (metaId && typeof Child === 'function') {
var code = data[metaId].value || '';
var _getURLParameters = (0, _markdownReactCodePreviewLoader.getURLParameters)(meta || ''),
title = _getURLParameters.title,
_getURLParameters$bor = _getURLParameters.boreder,
boreder = _getURLParameters$bor === void 0 ? 1 : _getURLParameters$bor,
_getURLParameters$che = _getURLParameters.checkered,
checkered = _getURLParameters$che === void 0 ? 1 : _getURLParameters$che,
_getURLParameters$cod = _getURLParameters.code,
codeNum = _getURLParameters$cod === void 0 ? 1 : _getURLParameters$cod,
_getURLParameters$too = _getURLParameters.toolbar,
toolbar = _getURLParameters$too === void 0 ? 1 : _getURLParameters$too;
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactCodePreviewLayout["default"], {
bordered: !!Number(boreder),
disableCheckered: !Number(checkered),
style: {
marginBottom: 16
},
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Preview, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Child, {})
}), !!Number(toolbar) && /*#__PURE__*/(0, _jsxRuntime.jsx)(Toolbar, {
text: code,
visibleButton: !!Number(codeNum),
children: title || 'Code Example'
}), !!Number(codeNum) && /*#__PURE__*/(0, _jsxRuntime.jsx)(Code, {
tagName: "pre",
style: {
marginBottom: 0
},
className: props.className,
children: props.children
})]
});
}
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)("code", (0, _objectSpread2["default"])({}, props));
};
function Markdown(props) {
var source = props.source,
components = props.components,
data = props.data,
rehypeRewrite = props.rehypeRewrite,
reset = (0, _objectWithoutProperties2["default"])(props, _excluded2);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(MarkdownStyle, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
disableCopy: true,
rehypePlugins: [_rehypeIgnore["default"]].concat((0, _toConsumableArray2["default"])(reset.rehypePlugins || []))
}, reset), {}, {
source: data.source,
components: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, components), {}, {
pre: function pre(rest) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(CodePreview, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, rest), {}, {
components: data.components,
data: data.data
}));
}
})
}));
}
module.exports = exports.default;