UNPKG

react-code-view

Version:
62 lines 2.74 kB
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;