diff --git a/src/transforms/apply-operation.js b/src/transforms/apply-operation.js index a459b8301..48aa1afe8 100644 --- a/src/transforms/apply-operation.js +++ b/src/transforms/apply-operation.js @@ -1,5 +1,6 @@ import Debug from 'debug' +import warning from '../utils/warning' /** * Debug. @@ -338,6 +339,16 @@ function setNode(state, operation) { const { path, properties } = operation let { document } = state let node = document.assertPath(path) + + // Deprecate using setNode for updating children, or keys + if (properties.nodes && properties.nodes != node.nodes) { + warning('Updating Node.nodes through setNode is not allowed. Use appropriate insertion and removal functions.') + delete properties.nodes + } else if (properties.key && properties.key != node.key) { + warning('Updating Node.key through setNode is not allowed. You should not have to update keys yourself.') + delete properties.key + } + node = node.merge(properties) document = document.updateDescendant(node) state = state.merge({ document })