function removeForBlock()

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;
}