Brian Hung
Projects
Write
Text editor built on ProseMirror.
Building an editor from extensions
schema
plugins
nodeViews
state
extensions
Node(), Mark(), Extension() or a Plugin
schemaFromExtensions
NodeSpecs, MarkSpecs, attrs
defaultPlugins
inputRules, keymaps, plugins
NodeViews, MarkViews
custom DOM per node type
EditorState.create
schema, doc, plugins
Editor
extends EditorView
Input rules run first, then each extension's keymap, then ProseMirror's baseKeymap.
Editing a selection with AI
a doc
prompt
markdown reply
a doc
toMarkdown
fromMarkdown
state.selection
content() as a doc
MarkdownSerializer
selection to markdown
/api/chat
an LLM via streamText
Extension packages
heading, bold, link, …
MarkdownParser
markdown-it, fromMarkdown
Replace selection
or insert below it
Each package describes its own markdown; the demo combines them into one serializer and one parser.