forked from Gitlink/forgeplus-react
50 lines
1.2 KiB
Plaintext
50 lines
1.2 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 isSelectionAtLeafStart
|
|
* @format
|
|
* @flow
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
import type EditorState from './EditorState';
|
|
|
|
function isSelectionAtLeafStart(editorState: EditorState): boolean {
|
|
var selection = editorState.getSelection();
|
|
var anchorKey = selection.getAnchorKey();
|
|
var blockTree = editorState.getBlockTree(anchorKey);
|
|
var offset = selection.getStartOffset();
|
|
|
|
var isAtStart = false;
|
|
|
|
blockTree.some(leafSet => {
|
|
if (offset === leafSet.get('start')) {
|
|
isAtStart = true;
|
|
return true;
|
|
}
|
|
|
|
if (offset < leafSet.get('end')) {
|
|
return leafSet.get('leaves').some(leaf => {
|
|
var leafStart = leaf.get('start');
|
|
if (offset === leafStart) {
|
|
isAtStart = true;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
}
|
|
|
|
return false;
|
|
});
|
|
|
|
return isAtStart;
|
|
}
|
|
|
|
module.exports = isSelectionAtLeafStart; |