Monaco is the editor that powers VS Code. The y-monaco extension makes it collaborative.
Setup
import*as Y from'yjs'import { WebrtcProvider } from'y-webrtc'import { MonacoBinding } from'y-monaco'constydoc=newY.Doc()constprovider=newWebrtcProvider('monaco', ydoc)consttype=ydoc.getText('monaco')// There are some steps missing to initialize the editor// The editor requires a webpack build-step// See the complete example:// https://github.com/yjs/yjs-demos/blob/master/monaco/monaco.jsconsteditor=monaco.editor.create(document.getElementById('monaco-editor'), { value:'', language:'javascript', theme:'vs-dark' })constmonacoBinding=newMonacoBinding( type,editor.getModel(),newSet([editor]),provider.awareness)
npm i monaco-editor yjs y-monaco
Live Demo
Unfortunately, we can't show a live-code example on this website because the editor requires a build-step that online-IDEs don't support. Maybe you can give it a try? Anyway, we still have a live demo available on a different website (simply open it in two different tabs).
Demo Code
The yjs-demos repository contains several demos. Simply download the repository you are interested in (e.g. the monaco folder) and run npm install && npm start to run the demo.