|
- /**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @format
- *
- * @emails oncall+draft_js
- */
- 'use strict';
-
- var warning = require("fbjs/lib/warning");
- /**
- * Given a collapsed selection, move the focus `maxDistance` backward within
- * the selected block. If the selection will go beyond the start of the block,
- * move focus to the end of the previous block, but no further.
- *
- * This function is not Unicode-aware, so surrogate pairs will be treated
- * as having length 2.
- */
-
-
- function moveSelectionBackward(editorState, maxDistance) {
- var selection = editorState.getSelection(); // Should eventually make this an invariant
-
- process.env.NODE_ENV !== "production" ? warning(selection.isCollapsed(), 'moveSelectionBackward should only be called with a collapsed SelectionState') : void 0;
- var content = editorState.getCurrentContent();
- var key = selection.getStartKey();
- var offset = selection.getStartOffset();
- var focusKey = key;
- var focusOffset = 0;
-
- if (maxDistance > offset) {
- var keyBefore = content.getKeyBefore(key);
-
- if (keyBefore == null) {
- focusKey = key;
- } else {
- focusKey = keyBefore;
- var blockBefore = content.getBlockForKey(keyBefore);
- focusOffset = blockBefore.getText().length;
- }
- } else {
- focusOffset = offset - maxDistance;
- }
-
- return selection.merge({
- focusKey: focusKey,
- focusOffset: focusOffset,
- isBackward: true
- });
- }
-
- module.exports = moveSelectionBackward;
|