react-code-view
Version:
Code view for React
67 lines (66 loc) • 3.22 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _react = _interopRequireDefault(require("react"));
var _MarkdownRenderer = _interopRequireDefault(require("./MarkdownRenderer"));
var _parseHTML = _interopRequireDefault(require("./utils/parseHTML"));
var _Renderer = _interopRequireDefault(require("./Renderer"));
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["children", "sourceCode", "dependencies", "editor", "theme", "editable", "transformOptions", "copyButtonAs", "copyButtonProps", "renderToolbar", "onChange", "beforeCompile", "afterCompile", "onOpenEditor", "onCloseEditor", "renderExtraFooter"];
var CodeView = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
var children = props.children,
sourceCode = props.sourceCode,
dependencies = props.dependencies,
_props$editor = props.editor,
editor = _props$editor === void 0 ? {} : _props$editor,
_props$theme = props.theme,
theme = _props$theme === void 0 ? 'light' : _props$theme,
editable = props.editable,
transformOptions = props.transformOptions,
copyButtonAs = props.copyButtonAs,
copyButtonProps = props.copyButtonProps,
renderToolbar = props.renderToolbar,
onChange = props.onChange,
beforeCompile = props.beforeCompile,
afterCompile = props.afterCompile,
onOpenEditor = props.onOpenEditor,
onCloseEditor = props.onCloseEditor,
renderExtraFooter = props.renderExtraFooter,
rest = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
var sourceStr = children !== null && children !== void 0 && children.__esModule ? children["default"] : sourceCode;
var fragments = (0, _parseHTML["default"])(sourceStr);
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _extends2["default"])({
ref: ref
}, rest, {
children: fragments === null || fragments === void 0 ? void 0 : fragments.map(function (fragment) {
if (fragment.type === 'code') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Renderer["default"], {
code: fragment.content,
editable: editable,
theme: theme,
editor: editor,
dependencies: dependencies,
transformOptions: transformOptions,
renderToolbar: renderToolbar,
afterCompile: afterCompile,
onChange: onChange,
onOpenEditor: onOpenEditor,
onCloseEditor: onCloseEditor,
beforeCompile: beforeCompile,
renderExtraFooter: renderExtraFooter,
copyButtonProps: copyButtonProps,
copyButtonAs: copyButtonAs
}, fragment.key);
} else if (fragment.type === 'html') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MarkdownRenderer["default"], {
copyButtonProps: copyButtonProps,
children: fragment.content
}, fragment.key);
}
})
}));
});
var _default = exports["default"] = CodeView;