@portabletext/editor
Version:
Portable Text Editor made in React
39 lines (35 loc) • 853 B
text/typescript
import type {PortableTextBlock} from '@sanity/types'
import type {EditorSelection} from '..'
import type {BlockOffset} from '../types/block-offset'
import {blockOffsetToSelectionPoint} from './util.block-offset-to-selection-point'
/**
* @public
*/
export function blockOffsetsToSelection({
value,
offsets,
backward,
}: {
value: Array<PortableTextBlock>
offsets: {anchor: BlockOffset; focus: BlockOffset}
backward?: boolean
}): EditorSelection {
const anchor = blockOffsetToSelectionPoint({
value,
blockOffset: offsets.anchor,
direction: backward ? 'backward' : 'forward',
})
const focus = blockOffsetToSelectionPoint({
value,
blockOffset: offsets.focus,
direction: backward ? 'forward' : 'backward',
})
if (!anchor || !focus) {
return null
}
return {
anchor,
focus,
backward,
}
}