@portabletext/editor
Version:
Portable Text Editor made in React
41 lines (34 loc) • 1.14 kB
text/typescript
import type {EditorSelector} from '../editor/editor-selector'
import * as utils from '../utils'
import {getSelectionEndBlock, getSelectionStartBlock} from './selectors'
/**
* @public
*/
export const isSelectingEntireBlocks: EditorSelector<boolean> = (snapshot) => {
if (!snapshot.context.selection) {
return false
}
const startPoint = snapshot.context.selection.backward
? snapshot.context.selection.focus
: snapshot.context.selection.anchor
const endPoint = snapshot.context.selection.backward
? snapshot.context.selection.anchor
: snapshot.context.selection.focus
const startBlock = getSelectionStartBlock(snapshot)
const endBlock = getSelectionEndBlock(snapshot)
if (!startBlock || !endBlock) {
return false
}
const startBlockStartPoint = utils.getBlockStartPoint({
context: snapshot.context,
block: startBlock,
})
const endBlockEndPoint = utils.getBlockEndPoint({
context: snapshot.context,
block: endBlock,
})
return (
utils.isEqualSelectionPoints(startBlockStartPoint, startPoint) &&
utils.isEqualSelectionPoints(endBlockEndPoint, endPoint)
)
}