react-code-view
Version:
Code view for React
62 lines • 2.74 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
var _excluded = ["children", "sourceCode", "dependencies", "editor", "theme", "editable", "transformOptions", "copyButtonAs", "copyButtonProps", "renderToolbar", "onChange", "beforeCompile", "afterCompile", "onOpenEditor", "onCloseEditor", "renderExtraFooter"];
import React from 'react';
import MarkdownRenderer from './MarkdownRenderer';
import parseHTML from './utils/parseHTML';
import Renderer from './Renderer';
import { jsx as _jsx } from "react/jsx-runtime";
var CodeView = /*#__PURE__*/React.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 = _objectWithoutPropertiesLoose(props, _excluded);
var sourceStr = children !== null && children !== void 0 && children.__esModule ? children["default"] : sourceCode;
var fragments = parseHTML(sourceStr);
return /*#__PURE__*/_jsx("div", _extends({
ref: ref
}, rest, {
children: fragments === null || fragments === void 0 ? void 0 : fragments.map(function (fragment) {
if (fragment.type === 'code') {
return /*#__PURE__*/_jsx(Renderer, {
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__*/_jsx(MarkdownRenderer, {
copyButtonProps: copyButtonProps,
children: fragment.content
}, fragment.key);
}
})
}));
});
export default CodeView;