All files / roosterjs-content-model-dom/lib/modelApi/selection hasSelectionInBlock.ts

90% Statements 9/10
83.33% Branches 5/6
100% Functions 2/2
88.89% Lines 8/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 281x 1x             1x 85x   74x     6x     3x       2x            
import { hasSelectionInBlockGroup } from './hasSelectionInBlockGroup';
import { hasSelectionInSegment } from './hasSelectionInSegment';
import type { ReadonlyContentModelBlock } from 'roosterjs-content-model-types';
 
/**
 * Check if there is selection within the given block
 * @param block The block to check
 */
export function hasSelectionInBlock(block: ReadonlyContentModelBlock): boolean {
    switch (block.blockType) {
        case 'Paragraph':
            return block.segments.some(hasSelectionInSegment);
 
        case 'Table':
            return block.rows.some(row => row.cells.some(hasSelectionInBlockGroup));
 
        case 'BlockGroup':
            return hasSelectionInBlockGroup(block);
 
        case 'Divider':
        case 'Entity':
            return !!block.isSelected;
 
        default:
            return false;
    }
}