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 | 1x 1x 1x 1277x 1x 1x 1x 1x 1276x 1277x 1277x 1277x 1277x 1277x 7x | import { ensureParagraph } from '../../modelApi/common/ensureParagraph'; import { stackFormat } from '../utils/stackFormat'; import type { ContentModelBlockGroup, ContentModelText, DomToModelContext, ElementProcessor, } from 'roosterjs-content-model-types'; /** * @internal */ export const textProcessor: ElementProcessor<Text> = ( group: ContentModelBlockGroup, textNode: Text, context: DomToModelContext ) => { if (context.formatParsers.text.length > 0) { stackFormat(context, { segment: 'shallowClone' }, () => { context.formatParsers.text.forEach(parser => { parser(context.segmentFormat, textNode, context); internalTextProcessor(group, textNode, context); }); }); } else { internalTextProcessor(group, textNode, context); } }; function internalTextProcessor( group: ContentModelBlockGroup, textNode: Text, context: DomToModelContext ) { const paragraph = ensureParagraph(group, context.blockFormat); const segmentCount = paragraph.segments.length; context.elementProcessors.textWithSelection(group, textNode, context); const newSegments = paragraph.segments.slice(segmentCount); context.domIndexer?.onSegment( textNode, paragraph, newSegments.filter((x): x is ContentModelText => x?.segmentType == 'Text') ); } |