nextSibling: getNextValidSibling()

in src/model/transaction/removeRangeFromContentState.js [213:240]


          nextSibling: getNextValidSibling(block, blocks, originalBlockMap),
          prevSibling: getPrevValidSibling(block, blocks, originalBlockMap),
        }),
      );
    });

    // update next delimiters all the way to a root delimiter
    getNextDelimitersBlockKeys(endBlock, originalBlockMap).forEach(
      delimiterKey =>
        transformBlock(delimiterKey, blocks, block =>
          block.merge({
            nextSibling: getNextValidSibling(block, blocks, originalBlockMap),
            prevSibling: getPrevValidSibling(block, blocks, originalBlockMap),
          }),
        ),
    );

    // if parent (startBlock) was deleted
    if (
      blockMap.get(startBlock.getKey()) == null &&
      blockMap.get(endBlock.getKey()) != null &&
      endBlock.getParentKey() === startBlock.getKey() &&
      endBlock.getPrevSiblingKey() == null
    ) {
      const prevSiblingKey = startBlock.getPrevSiblingKey();
      // endBlock becomes next sibling of parent's prevSibling
      transformBlock(endBlock.getKey(), blocks, block =>
        block.merge({