in frontend/context.js [141:172]
getSubpatch(patch, path) {
if (path.length == 0) return patch
let subpatch = patch, object = this.getObject('_root')
for (let pathElem of path) {
let values = this.getValuesDescriptions(path, object, pathElem.key)
if (subpatch.props) {
if (!subpatch.props[pathElem.key]) {
subpatch.props[pathElem.key] = values
}
} else if (subpatch.edits) {
for (const opId of Object.keys(values)) {
subpatch.edits.push({action: 'update', index: pathElem.key, opId, value: values[opId]})
}
}
let nextOpId = null
for (let opId of Object.keys(values)) {
if (values[opId].objectId === pathElem.objectId) {
nextOpId = opId
}
}
if (!nextOpId) {
throw new RangeError(`Cannot find path object with objectId ${pathElem.objectId}`)
}
subpatch = values[nextOpId]
object = this.getPropertyValue(object, pathElem.key, nextOpId)
}
return subpatch
}