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

100% Statements 9/9
100% Branches 8/8
100% Functions 1/1
100% Lines 9/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 271x 1x                 1x       238x   238x 9x     238x   238x   238x    
import { createContentModelDocument } from '../modelApi/creators/createContentModelDocument';
import { normalizeContentModel } from '../modelApi/common/normalizeContentModel';
import type { ContentModelDocument, DomToModelContext } from 'roosterjs-content-model-types';
 
/**
 * Create Content Model from DOM tree in this editor
 * @param root Root element of DOM tree to create Content Model from
 * @param context Context object for DOM to Content Model conversion
 * @returns A ContentModelDocument object that contains all the models created from the give root element
 */
export function domToContentModel(
    root: HTMLElement | DocumentFragment,
    context: DomToModelContext
): ContentModelDocument {
    const model = createContentModelDocument(context.defaultFormat);
 
    if (context.selection?.type == 'range' && context.selection.isReverted) {
        model.hasRevertedRangeSelection = true;
    }
 
    context.elementProcessors.child(model, root, context);
 
    normalizeContentModel(model);
 
    return model;
}