Canner / slate-md-editor
- пятница, 20 апреля 2018 г. в 00:17:55
JavaScript
📃 A markdown editor, that allows you to edit live.
A markdown editor, that allows you to edit live.
DEMO: https://canner.github.io/slate-md-editor/
There is two ways to use, you could use it as a complete markdown editor or use as a slate plugin in your editor.
npm install slate-md-editor
Render the complete markdown editor
import Editor from 'slate-md-editor';
const MdEditor = Editor(options);
<MdEditor
value={value}
onChange={this.onChange}
/>
Pass your customized settings here.
slate-md-editor
build on top of various slate plugins, [xxxxOption]
will pass it's settings directly to corresponding plugins.
// default settings
{
markdownOption: {
blocks: BLOCKS, // https://github.com/GitbookIO/markup-it/blob/master/src/constants/blocks.js
marks: MARKS, // https://github.com/GitbookIO/markup-it/blob/master/src/constants/marks.js
inlines: INLINES, // https://github.com/GitbookIO/markup-it/blob/master/src/constants/inlines.js
},
prismOption: {
// https://github.com/GitbookIO/slate-prism
onlyIn: node => node.type === 'code_block',
getSyntax: node => node.data.get('syntax')
},
codeOption: {
// https://github.com/GitbookIO/slate-edit-code
onlyIn: node => node.type === 'code_block'
},
blockquoteOption: {
// https://github.com/GitbookIO/slate-edit-blockquote
},
listOption: {
// https://github.com/GitbookIO/slate-edit-list
types: ['ordered_list', 'unordered_list'],
typeItem: 'list_item',
typeDefault: 'paragraph'
}
}
Value
(Change) => void
import {MarkdownPlugin} from 'slate-md-editor';
const plugins = [
MarkdownPlugin(options)
]
<Editor
value={value}
onChange={this.onChange}
plugins={plugins}
/>
MarkdownPlugin
also use many other plugins as dependencies, and allows you to pass their customized settings.
Additionally, blocks, marks, inlines default types are the same as Markup-it.
// Default settings
{
blocks: BLOCKS, // https://github.com/GitbookIO/markup-it/blob/master/src/constants/blocks.js
marks: MARKS, // https://github.com/GitbookIO/markup-it/blob/master/src/constants/marks.js
inlines: INLINES, // https://github.com/GitbookIO/markup-it/blob/master/src/constants/inlines.js
codeOption: {
// https://github.com/GitbookIO/slate-edit-code
onlyIn: node => node.type === BLOCKS.CODE
},
blockquoteOption: {
// https://github.com/GitbookIO/slate-edit-blockquote
},
listOption: {
// https://github.com/GitbookIO/slate-edit-list
}
}
If you want to change a type, you could set that specific key type alone, without all types.
For example, you want to change BOLD
default type to bold_type
. Just pass object as below
{
marks: {BOLD: 'bold_type'}
}
This will replace default BOLD
setting to your new setting.
In editor enter:
>[space]Blockquote
In editor enter:
[space * 4]Code block
In editor enter:
[` * 3][space] Code block
Use specific language:
[` * 3][lang][space] Code block
for example:
const wow = test()
In editor enter:
[# * 1~6][space] Header
Example
# h1
## h2
### h3
#### h4
##### h5
###### h6
In editor enter:
**strong**[space]
or
__strong__[space]
In editor enter:
_italic_[space]
or
*italic*[space]
In editor enter:
___[strong + italic]___[space]
or
***[strong + italic]***[space]
In editor enter:
~[strikethrough]~[space]
In editor enter:
***
or
---
In editor enter:
[example](http://example.com "Optional title")[space]
In editor enter:
[space]
In editor enter:
*[space]
or
+[space]
or
-[space]
In editor enter:
1.[space]