<!DOCTYPE html> <html> <head> <title>Yjs Prosemirror Example</title> <link rel=stylesheet href="https://prosemirror.net/css/editor.css"> <style> placeholder { display: inline; border: 1px solid #ccc; color: #ccc; } placeholder:after { content: "☁"; font-size: 200%; line-height: 0.1; font-weight: bold; } .ProseMirror img { max-width: 100px } .ProseMirror-yjs-cursor { position: absolute; border-left: black; border-left-style: solid; border-left-width: 2px; border-color: orange; height: 1em; } .ProseMirror-yjs-cursor > div { position: relative; top: -1.05em; font-size: 13px; background-color: rgb(250, 129, 0); font-family: serif; font-style: normal; font-weight: normal; line-height: normal; user-select: none; color: white; padding-left: 2px; padding-right: 2px; } </style> </head> <body> <p>This example shows how to bind a YXmlFragment type to a <a href="http://prosemirror.net">Prosemirror</a> editor.</p> <p>The content of this editor is shared with every client who visits this domain.</p> <div class="code-html"> <div id="editor" style="margin-bottom: 23px"></div> <div style="display: none" id="content"></div> </div> <script class="code-js" src="./build/prosemirror.js"> import * as Y from 'yjs' import { WebsocketProvider } from '../provider/websocket.js' import { prosemirrorPlugin, cursorPlugin } from '../bindings/prosemirror' import { EditorState } from 'prosemirror-state' import { EditorView } from 'prosemirror-view' import { DOMParser } from 'prosemirror-model' import { schema } from 'prosemirror-schema-basic' import { exampleSetup } from 'prosemirror-example-setup' const provider = new WebsocketProvider('wss://api.yjs.website') const ydocument = provider.get('prosemirror') const type = ydocument.define('prosemirror', Y.XmlFragment) const prosemirrorView = new EditorView(document.querySelector('#editor'), { state: EditorState.create({ doc: DOMParser.fromSchema(schema).parse(document.querySelector('#content')), plugins: exampleSetup({schema}).concat([prosemirrorPlugin(type), cursorPlugin]) }) }) window.example = { provider, ydocument, type, prosemirrorView } </script> </body> </html>