// Native editor interoperability: Yjs must see typed content/marks and the // native engine must subsequently incorporate this browser-owned delta. import * as Y from 'yjs' import assert from 'node:assert/strict' import { readFileSync, writeFileSync } from 'node:fs' const doc = new Y.Doc() Y.applyUpdate(doc, readFileSync(process.argv[2])) const root = doc.getXmlFragment('prosemirror') assert.equal(root.length, 1) const paragraph = root.get(0) assert.equal(paragraph.nodeName, 'paragraph') const text = paragraph.get(0) assert.equal(text.toString().replace(/<[^>]+>/g, ''), 'Native 😀 text') const emoji = text.toDelta().find(run => run.insert === '😀') assert.deepEqual(emoji.attributes.strong, {}) assert.deepEqual(emoji.attributes.size_18, {}) const vector = Y.encodeStateVector(doc) text.insert(0, 'browser ') writeFileSync(process.argv[3], Y.encodeStateAsUpdate(doc, vector))