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 | 1x 1x 1x 1x 1x 1x 146x 146x 146x 146x 146x 146x 146x 146x 146x | import { createContentModelDocument } from '../creators/createContentModelDocument';
import { createText } from '../creators/createText';
import { ensureParagraph } from './ensureParagraph';
import { createModelToDomContextWithConfig } from '../../modelToDom/context/createModelToDomContext';
import { createDomToModelContextWithConfig } from '../../domToModel/context/createDomToModelContext';
import type {
ContentModelSegmentFormat,
DomToModelContext,
EditorEnvironment,
ModelToDomContext,
} from 'roosterjs-content-model-types';
/**
* Some format values can be changed when apply to DOM, such as font family.
* This function will normalize the format and return the same string after DOM modification.
* @param format The format to be normalized
* @return Normalized format
*/
export function normalizeSegmentFormat(
format: ContentModelSegmentFormat,
environment: EditorEnvironment
): ContentModelSegmentFormat {
const span = document.createElement('span');
const segment = createText('text', format);
const domToModelContext: DomToModelContext = createDomToModelContextWithConfig(
environment.domToModelSettings.calculated
);
const modelToDomContext: ModelToDomContext = createModelToDomContextWithConfig(
environment.modelToDomSettings.calculated
);
const model = createContentModelDocument();
modelToDomContext.modelHandlers.segment(
span.ownerDocument,
span,
segment,
modelToDomContext,
[]
);
domToModelContext.elementProcessors.element(model, span, domToModelContext);
const paragraph = ensureParagraph(model);
return paragraph.segments[0]?.format ?? format;
}
|