Live demos · v0.2.0
The real editor, live.
There are no screenshots here. Every demo loads the same writer.min.js that you will put on your page — and it works offline, without a server.
Playground
One editor, five modes, zero rebuilds.
Change mode, theme and chrome. Open the panels. Every keystroke updates the live IR and the event log — without losing the cursor.
Media manager
The component, outside the editor.
<writer-media-manager> knows nothing about Markdown. You give it a provider and it can browse, upload, rename, duplicate and delete — returning entries ready to insert.
Seeded provider: /brand, /docs and uploads as data URLs. All offline.
Commands API
Every button is an exec(id).
The editor has no “hidden” controls. Everything is a command with an ID — and the same IDs work from the toolbar, shortcuts or your code.
Plugins
Rich Markdown, structured IR.
Callouts, footnotes, task lists, TOC, math, marks, attributes and figures — all become nodes in the IR, not HTML lost in the round-trip.
An error is better than a lie.
Many libraries return HTML with a .pdfextension. Writer refuses: it needs a real PDF engine or print HTML.
try {
const pdf = await WriterRender(markdown).asPDF();
// pdf is real PDF bytes
} catch (error) {
if (error.code === 'NO_PDF_ENGINE') {
// Options: register an engine, use
// the print HTML, or send the Markdown to
// the PHP / Python SDK that has Dompdf / ReportLab.
}
}
Live test
No PDF engine is registered on this page. Press the button to see the real error — not a substitute.
NO_PDF_ENGINE is a feature, not a bug.Ready for your own document.
Read the API reference or open the render-only lab for the formats.