import React, { ComponentProps } from "react"; import { twMerge } from "tailwind-merge"; import MarkdownEditorPreviewComponent from "./MarkdownEditorPreviewComponent"; import MarkdownEditorComponent from "./MarkdownEditorComponent"; import MarkdownEditorSelectorButtons from "./MarkdownEditorSelectorButtons"; import Row from "../../layout/Row"; import Stack from "../../layout/Stack"; import AceEditor from "../../editors/AceEditor"; type Props = { value?: string; setValue?: React.Dispatch>; defaultSideBySide?: boolean; changeHandler?: (content: string) => void; editorProps?: ComponentProps; maxHeight?: string; }; export default function MarkdownEditor({ value: existingValue, setValue: setExistingValue, defaultSideBySide, changeHandler, editorProps, maxHeight: existingMaxHeight, }: Props) { const [value, setValue] = React.useState(existingValue || ``); const [sideBySide, setSideBySide] = React.useState( defaultSideBySide || false ); const [preview, setPreview] = React.useState(false); const maxHeight = existingMaxHeight || "600px"; React.useEffect(() => { setExistingValue?.(value); changeHandler?.(value); }, [value]); return ( {sideBySide ? ( ) : ( {preview ? ( ) : ( )} )} ); }