in backend/new.js [1564:1595]
function documentPatch(docState) {
for (let col of docState.blocks[0].columns) col.decoder.reset()
let propState = {}, docOp = null, blockIndex = 0
let patches = {_root: {objectId: '_root', type: 'map', props: {}}}
let lastObjActor = null, lastObjCtr = null, objectId = '_root', elemVisible = false, listIndex = 0
while (true) {
({ docOp, blockIndex } = readNextDocOp(docState, blockIndex))
if (docOp === null) break
if (docOp[objActorIdx] !== lastObjActor || docOp[objCtrIdx] !== lastObjCtr) {
objectId = `${docOp[objCtrIdx]}@${docState.actorIds[docOp[objActorIdx]]}`
lastObjActor = docOp[objActorIdx]
lastObjCtr = docOp[objCtrIdx]
propState = {}
listIndex = 0
elemVisible = false
}
if (docOp[insertIdx] && elemVisible) {
elemVisible = false
listIndex++
}
if (docOp[succNumIdx] === 0) elemVisible = true
if (docOp[idCtrIdx] > docState.maxOp) docState.maxOp = docOp[idCtrIdx]
for (let i = 0; i < docOp[succNumIdx]; i++) {
if (docOp[succCtrIdx][i] > docState.maxOp) docState.maxOp = docOp[succCtrIdx][i]
}
updatePatchProperty(patches, null, objectId, docOp, docState, propState, listIndex, docOp[succNumIdx])
}
return patches._root
}