@uiw/react-codemirror
Version:
CodeMirror component for React.
83 lines (80 loc) • 2.28 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
var _excluded = ["className", "value", "selection", "extensions", "onChange", "onUpdate", "autoFocus", "theme", "height", "minHeight", "maxHeight", "width", "minWidth", "maxWidth", "basicSetup", "placeholder", "indentWithTab", "editable", "root"];
import React, { useEffect, useRef, useImperativeHandle } from 'react';
import { useCodeMirror } from './useCodeMirror';
import { jsx as _jsx } from "react/jsx-runtime";
export * from '@codemirror/view';
export * from '@codemirror/basic-setup';
export * from '@codemirror/state';
export * from './useCodeMirror';
var ReactCodeMirror = /*#__PURE__*/React.forwardRef((props, ref) => {
var {
className,
value = '',
selection,
extensions = [],
onChange,
onUpdate,
autoFocus,
theme = 'light',
height,
minHeight,
maxHeight,
width,
minWidth,
maxWidth,
basicSetup,
placeholder,
indentWithTab,
editable,
root
} = props,
other = _objectWithoutPropertiesLoose(props, _excluded);
var editor = useRef(null);
var {
state,
view,
container,
setContainer
} = useCodeMirror({
container: editor.current,
root,
value,
autoFocus,
theme,
height,
minHeight,
maxHeight,
width,
minWidth,
maxWidth,
basicSetup,
placeholder,
indentWithTab,
editable,
selection,
onChange,
onUpdate,
extensions
});
useImperativeHandle(ref, () => ({
editor: container,
state,
view
}), [container, state, view]);
useEffect(() => {
setContainer(editor.current); // eslint-disable-next-line react-hooks/exhaustive-deps
}, []); // check type of value
if (typeof value !== 'string') {
throw new Error("value must be typeof string but got " + typeof value);
}
var defaultClassNames = typeof theme === 'string' ? "cm-theme-" + theme : 'cm-theme';
return /*#__PURE__*/_jsx("div", _extends({
ref: editor,
className: "" + defaultClassNames + (className ? " " + className : '')
}, other));
});
ReactCodeMirror.displayName = 'CodeMirror';
export default ReactCodeMirror;
//# sourceMappingURL=index.js.map