Guides
Import + one field. No extension assembly. Side channels only — no new node types (M1=16 full).
import { Editor } from 'markloom/view'
import 'markloom/view/theme.css'
new Editor(el, doc, {
search: true, // ⌘/Ctrl+F find & replace
versions: true, // ⌘⇧S named snapshots
suggest: { // ⌘⇧G track changes
author: () => ({ id: 'u1', name: 'Alice' }),
},
collab: {
url: 'wss://…',
room: 'team-doc',
token: 'optional-secret', // when worker COLLAB_TOKEN is set
},
})
search: true → bar + shortcutsed.find(q), ed.replaceAllText(q, r), ed.openSearch()findText / replaceAll from markloomversions: true — snapshots above undo (deep clone doc)ed.versions.save(name?) · restore(id) · list()suggest: true — insert stamp + backspace mark-delete while trackinged.suggest.setTracking(true) · accept(id) · reject(id)import { docToDocx, docToDocxAsync, docxToDoc } from 'markloom/io'
const bytes = docToDocx(ed.doc) // data: images embedded
const bytes2 = await docToDocxAsync(ed.doc) // fetch remote images
const back = docxToDoc(await file.arrayBuffer())
Separate entry — not in the default editor bundle. Details: repo io.md.