All files / roosterjs-content-model-dom/lib/domToModel/processors blockProcessor.ts

100% Statements 19/19
100% Branches 10/10
100% Functions 2/2
100% Lines 19/19

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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 521x 1x 1x 1x             1x         1x           427x 427x   427x   427x   427x   427x 1708x 186x       427x 423x             423x   423x     427x    
import { addBlock } from '../../modelApi/common/addBlock';
import { ContextStyles } from './formatContainerProcessor';
import { createParagraph } from '../../modelApi/creators/createParagraph';
import { parseFormat } from '../utils/parseFormat';
import type {
    ContentModelBlockGroup,
    ContentModelSegmentFormat,
    DomToModelContext,
} from 'roosterjs-content-model-types';
 
const SegmentDecoratorTags = ['A', 'CODE'];
 
/**
 * @internal
 */
export function blockProcessor(
    group: ContentModelBlockGroup,
    element: HTMLElement,
    context: DomToModelContext,
    segmentFormat?: ContentModelSegmentFormat
) {
    const decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;
    const isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;
 
    parseFormat(element, context.formatParsers.block, context.blockFormat, context);
 
    const blockFormat = { ...context.blockFormat };
 
    parseFormat(element, context.formatParsers.container, blockFormat, context);
 
    ContextStyles.forEach(style => {
        if (blockFormat[style]) {
            context.blockFormat[style] = blockFormat[style];
        }
    });
 
    if (!isSegmentDecorator) {
        const paragraph = createParagraph(
            false /*isImplicit*/,
            blockFormat,
            segmentFormat,
            decorator
        );
 
        context.paragraphMap?.assignMarkerToModel(element, paragraph);
 
        addBlock(group, paragraph);
    }
 
    context.elementProcessors.child(group, element, context);
}