
@gravity-ui/markdown-editor ·

Markdown wysiwyg and markup editor
MarkdownEditor is a powerful tool for working with Markdown, which combines WYSIWYG and Markup modes. This means that you can create and edit content in a convenient visual mode, as well as have full control over the markup.
🔧 Main features
- Support for the basic Markdown and YFM syntax.
- Extensibility through the use of ProseMirror and CodeMirror engines.
- The ability to work in WYSIWYG and Markup modes for maximum flexibility.
Install
npm install @gravity-ui/markdown-editor
Required dependencies
Please note that to start using the package, your project must also have the following installed: @diplodoc/transform, react, react-dom, @gravity-ui/uikit, @gravity-ui/components and some others. Check out the peerDependencies section of package.json for accurate information.
Getting started
The markdown editor is supplied as a React hook to create an instance of editor and a component for rendering the view.
To set up styling and theme see UIKit docs.
import React from 'react';
import {useMarkdownEditor, MarkdownEditorView} from '@gravity-ui/markdown-editor';
function Editor({onSubmit}) {
const editor = useMarkdownEditor({allowHTML: false});
React.useEffect(() => {
function submitHandler() {
const value = editor.getValue();
onSubmit(value);
}
editor.on('submit', submitHandler);
return () => {
editor.off('submit', submitHandler);
};
}, [onSubmit]);
return <MarkdownEditorView stickyToolbar autofocus editor={editor} />;
}
Read more:
Development
-
Install Nodejs environment, version is specified in .nvmrc file. We recommend using NVM or a similar tool.
-
Install pnpm, version is specified in package.json in "packageManager" property.
You can use Corepack, or just install via npm: run npm deps:global --force.
-
Install dependencies: pnpm i
-
Run storybook dev-server: pnpm start
i18n
To set up internationalization, you just need to use the configure:
import {configure} from '@gravity-ui/markdown-editor';
configure({
lang: 'ru',
});
Don't forget to call configure() from UIKit and other UI libraries.
Contributing