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 | 1x 1x 2165x 2165x 2165x 2165x 2142x | import { isEntityDelimiter, isEntityElement } from '../../domUtils/entityUtils';
import type {
DomToModelContext,
ElementProcessor,
ElementProcessorMap,
} from 'roosterjs-content-model-types';
/**
* @internal
* @param group
* @param element
* @param context
*/
export const elementProcessor: ElementProcessor<HTMLElement> = (group, element, context) => {
const tagName = element.tagName.toLowerCase() as keyof ElementProcessorMap;
const processor = (tryGetProcessorForEntity(element, context) ||
tryGetProcessorForDelimiter(element, context) ||
context.elementProcessors[tagName] ||
(tagName.indexOf(':') >= 0 && context.elementProcessors.child) ||
context.elementProcessors['*']) as ElementProcessor<Node>;
processor(group, element, context);
};
function tryGetProcessorForEntity(element: HTMLElement, context: DomToModelContext) {
return isEntityElement(element) || element.contentEditable == 'false' // For readonly element, treat as an entity
? context.elementProcessors.entity
: null;
}
function tryGetProcessorForDelimiter(element: HTMLElement, context: DomToModelContext) {
return isEntityDelimiter(element) ? context.elementProcessors.delimiter : null;
}
|