in src/model/transaction/removeEntitiesAtEdges.js [106:132]
function removeForBlock(
contentState: ContentState,
block: BlockNodeRecord,
offset: number,
): BlockNodeRecord {
let chars = block.getCharacterList();
const charBefore = offset > 0 ? chars.get(offset - 1) : undefined;
const charAfter = offset < chars.count() ? chars.get(offset) : undefined;
const entityBeforeCursor = charBefore ? charBefore.getEntity() : undefined;
const entityAfterCursor = charAfter ? charAfter.getEntity() : undefined;
if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {
const entity = contentState.getEntity(entityAfterCursor);
if (entity.getMutability() !== 'MUTABLE') {
let {start, end} = getRemovalRange(chars, entityAfterCursor, offset);
let current;
while (start < end) {
current = chars.get(start);
chars = chars.set(start, CharacterMetadata.applyEntity(current, null));
start++;
}
return block.set('characterList', chars);
}
}
return block;
}