/** * 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 keyCommandDeleteWord * @format * @flow */ 'use strict'; var DraftRemovableWord = require('./DraftRemovableWord'); var EditorState = require('./EditorState'); var moveSelectionForward = require('./moveSelectionForward'); var removeTextWithStrategy = require('./removeTextWithStrategy'); /** * Delete the word that is right of the cursor, as well as any spaces or * punctuation before the word. */ function keyCommandDeleteWord(editorState: EditorState): EditorState { var afterRemoval = removeTextWithStrategy(editorState, strategyState => { var selection = strategyState.getSelection(); var offset = selection.getStartOffset(); var key = selection.getStartKey(); var content = strategyState.getCurrentContent(); var text = content.getBlockForKey(key).getText().slice(offset); var toRemove = DraftRemovableWord.getForward(text); // If there are no words in front of the cursor, remove the newline. return moveSelectionForward(strategyState, toRemove.length || 1); }, 'forward'); if (afterRemoval === editorState.getCurrentContent()) { return editorState; } return EditorState.push(editorState, afterRemoval, 'remove-range'); } module.exports = keyCommandDeleteWord;