Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Mermaid | 57,882 | 505 | 317 | 2 days ago | 140 | September 13, 2022 | 863 | mit | JavaScript | |
Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown | ||||||||||
Marktext | 39,687 | 21 days ago | 1 | January 17, 2022 | 1,033 | mit | JavaScript | |||
📝A simple and elegant markdown editor, available for Linux, macOS and Windows. | ||||||||||
Stackedit | 20,361 | 2 | 1 | 18 hours ago | 67 | March 29, 2021 | 667 | apache-2.0 | JavaScript | |
In-browser Markdown editor | ||||||||||
Affine | 16,396 | 17 hours ago | 221 | mpl-2.0 | TypeScript | |||||
There can be more than Notion and Miro. AFFiNE is a next-gen knowledge base that brings planning, sorting and creating all together. Privacy first, open-source, customizable and ready to use. | ||||||||||
Tui.editor | 15,971 | 266 | 147 | 5 days ago | 38 | December 12, 2019 | 485 | mit | TypeScript | |
🍞📝 Markdown WYSIWYG Editor. GFM Standard + Chart & UML Extensible. | ||||||||||
Editor.md | 12,952 | 35 | 8 | 12 days ago | 1 | June 27, 2015 | 555 | mit | JavaScript | |
The open source embeddable online markdown editor (component). | ||||||||||
Leanote | 11,169 | 3 months ago | 516 | other | JavaScript | |||||
Not Just A Notepad! (golang + mongodb) http://leanote.org | ||||||||||
Vnote | 10,226 | 20 days ago | 568 | lgpl-3.0 | C++ | |||||
A pleasant note-taking platform. | ||||||||||
Tinacms | 8,816 | 5 | 61 | 2 days ago | 105 | September 21, 2022 | 82 | other | TypeScript | |
The Markdown CMS | ||||||||||
Simplemde Markdown Editor | 8,728 | 1,516 | 201 | 2 years ago | 13 | June 14, 2016 | 278 | mit | JavaScript | |
A simple, beautiful, and embeddable JavaScript Markdown editor. Delightful editing for beginners and experts alike. Features built-in autosaving and spell checking. |
remark plugin to transform remark syntax tree (mdast) to Slate document tree, and vice versa. Made for WYSIWYG markdown editor.
remark is popular markdown parser/serializer which data structure can be converted to what used in rehype, retext and so on. Slate is fully customizable rich text editor built on React. Connect both 2 worlds should be great...
This plugin supports slate 0.50+. The data structure is described here. And also support ~0.47.9 currently, but I don't know in the future.
All nodes in mdast syntax tree are supported, including nodes created with...
math
and inlineMath
from remark-math.And also have experimental support for custom AST.
https://inokawa.github.io/remark-slate-transformer/
npm install remark-slate-transformer
remark-slate-transformer | unified |
---|---|
>=0.7.0 | >=10.1.0 |
>=0.5.0 <0.7.0 | >=10.0.0 |
<0.5.0 | <10.0.0 |
import { unified } from "unified";
import markdown from "remark-parse";
import { remarkToSlate } from "remark-slate-transformer";
const processor = unified().use(markdown).use(remarkToSlate);
const text = "# hello world";
const value = processor.processSync(text).result;
console.log(value);
import { Value } from "slate";
import { unified } from "unified";
import markdown from "remark-parse";
import { remarkToSlateLegacy } from "remark-slate-transformer";
const processor = unified().use(markdown).use(remarkToSlateLegacy);
const text = "# hello world";
const value = Value.fromJSON(processor.processSync(text).result);
console.log(value);
import { unified } from "unified";
import stringify from "remark-stringify";
import { slateToRemark } from "remark-slate-transformer";
const processor = unified().use(slateToRemark).use(stringify);
const value = ...; // value passed to slate editor
const ast = processor.runSync({
type: "root",
children: value,
});
const text = processor.stringify(ast);
console.log(text);
import { unified } from "unified";
import stringify from "remark-stringify";
import { slateToRemarkLegacy } from "remark-slate-transformer";
const processor = unified().use(slateToRemarkLegacy).use(stringify);
const value = ...; // value passed to slate editor
const ast = processor.runSync({
type: "root",
children: value.toJSON().document.nodes,
});
const text = processor.stringify(ast);
console.log(text);
import { unified } from "unified";
import markdown from "remark-parse";
import stringify from "remark-stringify";
import { remarkToSlate, slateToRemark } from "remark-slate-transformer";
const text = "# hello world";
const r2s = unified()
.use(markdown)
.use(remarkToSlate, {
// If you use TypeScript, install `@types/mdast` for autocomplete.
overrides: {
// This overrides `type: "heading"` builder of remarkToSlate
heading: (node, next) => ({
type: "head",
dep: node.depth,
// You have to call next if the node have children
children: next(node.children),
}),
// Unknown type from community plugins can be handled
foo: (node, next) => ({ type: "foo", value: node.bar }),
},
});
const value = r2s.processSync(text).result;
console.log(value);
const s2r = unified()
.use(slateToRemark, {
overrides: {
head: (node, next) => ({
type: "heading",
depth: node.dep,
children: next(node.children),
}),
foo: (node, next) => ({ type: "foo", bar: node.value }),
},
})
.use(stringify);
const ast = s2r.runSync({
type: "root",
children: value,
});
const text = s2r.stringify(ast);
console.log(text);
Transformer utilities mdastToSlate
and slateToMdast
are also exported for more fine-tuned control.
All contributions are welcome. If you find a problem, feel free to create an issue or a PR.
npm install
.