Examples of what ProseMirror can do, and how to do it Basics Setting up a minimal rich text editor using the example configuration. Dinos in the document Defining a custom document node type and adding it to a schema. Friendly Markdown Allow users to switch between a Markdown and WYSIWYM editing interface. Tooltip Using a plugin view to implement a dynamic tooltip that hovers over the editor selection. Image upload Handling asynchronous editing actions robustly by creating a placeholder during uploads. Schema from scratch Writing custom document schemas for a few different document styles, without using a base schema. Writing your own menu Building a custom editor menu bar. Foldable nodes Using node views and decorations to implement collapsible nodes. More advanced examples Embedded code editor Representing code blocks using a code editor component inside a ProseMirror instance. Linter An editor that scans the document for common errors and assists the user in correcting them. Editing footnotes Implementing footnotes as inline nodes with content, and wiring up a separate editor for a sub-document. Track changes Keeping a history of changes to the document, allowing the user to inspect and revert individual ones. Collaborative editing A more or less solid collaborative editor, with support for shared annotations.