@portabletext/editor
Version:
Portable Text Editor made in React
25 lines (20 loc) • 741 B
text/typescript
import type {EditorSelector} from '../editor/editor-selector'
import {getActiveDecorators} from './selector.get-active-decorators'
import {getSelectedSpans} from './selector.get-selected-spans'
import {isSelectionExpanded} from './selector.is-selection-expanded'
/**
* @public
*/
export function isActiveDecorator(decorator: string): EditorSelector<boolean> {
return (snapshot) => {
if (isSelectionExpanded(snapshot)) {
const selectedSpans = getSelectedSpans(snapshot)
return (
selectedSpans.length > 0 &&
selectedSpans.every((span) => span.node.marks?.includes(decorator))
)
}
const activeDecorators = getActiveDecorators(snapshot)
return activeDecorators.includes(decorator)
}
}