@live-change/codemirror-frontend
v0.9.209
Published
SSR Vue app for **CodeMirror 6** with a **collaborative editing** demo wired to `@live-change/codemirror-service`.
Readme
@live-change/codemirror-frontend
SSR Vue app for CodeMirror 6 with a collaborative editing demo wired to @live-change/codemirror-service.
What is implemented
- Demo route (
/):CodeEditor.vue— form fields fortargetType,target, documenttype, CMlanguage, sync status, version; embedsEditor.vue. - Collaborative editor (
Editor.vue): CodeMirrorcollab,sendableUpdates/receiveUpdates,getSyncedVersion; loads document viaRemoteAuthority; pushes edits tocodemirror.edit; applies remote updates from the steps stream. - Transport (
front/src/codemirror/RemoteAuthority.js):api.get(['codemirror','document', …]),createDocumentIfNotExists,inboxReaderon['codemirror','steps', …],codemirror.editfor outgoing updates; resync hooks on reconnect. - Public exports (
index.js):CodeEditor,Editor,RemoteAuthority,locales.
Run locally
From this package directory (use project Node version, e.g. via fnm):
- Dev:
yarn devoryarn ssrDev(seepackage.jsonscripts). - Build:
yarn build(client + SSR + server bundle steps as defined in scripts). - E2E (Playwright +
@live-change/e2e-test):yarn e2e; timing report:yarn e2e:time; headed browser:yarn e2e:headedorSHOW_BROWSER=1 yarn e2e; single file:yarn e2e:file e2e/codemirror.test.ts.
Copy .env.example to .env if the stack expects env vars for API/SSR (see repo conventions).
Configuration
Server-side service wiring lives in server/services.config.js. The codemirror service entry must declare documentTypes keys that match the document type you pass from the UI (e.g. markdown, code).
Embedding in another app
Import named exports from @live-change/codemirror-frontend or reuse Editor / RemoteAuthority with your own layout and access control.
Related package
- Backend persistence and collab merge:
@live-change/codemirror-service.
