/** * Copyright (c) 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule keyCommandPlainDelete * @format * @flow */ 'use strict'; var EditorState = require('./EditorState'); var UnicodeUtils = require('fbjs/lib/UnicodeUtils'); var moveSelectionForward = require('./moveSelectionForward'); var removeTextWithStrategy = require('./removeTextWithStrategy'); /** * Remove the selected range. If the cursor is collapsed, remove the following * character. This operation is Unicode-aware, so removing a single character * will remove a surrogate pair properly as well. */ function keyCommandPlainDelete(editorState: EditorState): EditorState { var afterRemoval = removeTextWithStrategy(editorState, strategyState => { var selection = strategyState.getSelection(); var content = strategyState.getCurrentContent(); var key = selection.getAnchorKey(); var offset = selection.getAnchorOffset(); var charAhead = content.getBlockForKey(key).getText()[offset]; return moveSelectionForward(strategyState, charAhead ? UnicodeUtils.getUTF16Length(charAhead, 0) : 1); }, 'forward'); if (afterRemoval === editorState.getCurrentContent()) { return editorState; } var selection = editorState.getSelection(); return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'delete-character' : 'remove-range'); } module.exports = keyCommandPlainDelete;