forked from Gitlink/forgeplus-react
44 lines
1.6 KiB
Plaintext
44 lines
1.6 KiB
Plaintext
|
|
/**
|
||
|
|
* 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 keyCommandBackspaceToStartOfLine
|
||
|
|
* @format
|
||
|
|
* @flow
|
||
|
|
*/
|
||
|
|
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
var EditorState = require('./EditorState');
|
||
|
|
|
||
|
|
var expandRangeToStartOfLine = require('./expandRangeToStartOfLine');
|
||
|
|
var getDraftEditorSelectionWithNodes = require('./getDraftEditorSelectionWithNodes');
|
||
|
|
var moveSelectionBackward = require('./moveSelectionBackward');
|
||
|
|
var removeTextWithStrategy = require('./removeTextWithStrategy');
|
||
|
|
|
||
|
|
function keyCommandBackspaceToStartOfLine(editorState: EditorState): EditorState {
|
||
|
|
var afterRemoval = removeTextWithStrategy(editorState, strategyState => {
|
||
|
|
const selection = strategyState.getSelection();
|
||
|
|
if (selection.isCollapsed() && selection.getAnchorOffset() === 0) {
|
||
|
|
return moveSelectionBackward(strategyState, 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
var domSelection = global.getSelection();
|
||
|
|
var range = domSelection.getRangeAt(0);
|
||
|
|
range = expandRangeToStartOfLine(range);
|
||
|
|
|
||
|
|
return getDraftEditorSelectionWithNodes(strategyState, null, range.endContainer, range.endOffset, range.startContainer, range.startOffset).selectionState;
|
||
|
|
}, 'backward');
|
||
|
|
|
||
|
|
if (afterRemoval === editorState.getCurrentContent()) {
|
||
|
|
return editorState;
|
||
|
|
}
|
||
|
|
|
||
|
|
return EditorState.push(editorState, afterRemoval, 'remove-range');
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = keyCommandBackspaceToStartOfLine;
|