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 52 53 54 55 56 57 58 59 | 1x 1x 1x 1x 1x 1x 56x 56x 56x 56x 56x 15x 15x 5x 5x 5x 15x | import { moveChildNodes } from 'roosterjs-content-model-dom';
import {
AllowedTags,
createSanitizedElement,
DisallowedTags,
} from '../command/createModelFromHtml/sanitizeElement';
import type {
DomToModelOptionForSanitizing,
ElementProcessor,
ValueSanitizer,
} from 'roosterjs-content-model-types';
/**
* @internal Export for test only
*/
export const removeDisplayFlex: ValueSanitizer = value => {
return value == 'flex' ? null : value;
};
const DefaultStyleSanitizers: Readonly<Record<string, ValueSanitizer>> = {
position: false,
display: removeDisplayFlex,
};
/**
* @internal
*/
export function createPasteGeneralProcessor(
options: DomToModelOptionForSanitizing
): ElementProcessor<HTMLElement> {
const allowedTags = AllowedTags.concat(options.additionalAllowedTags);
const disallowedTags = DisallowedTags.concat(options.additionalDisallowedTags);
const styleSanitizers = Object.assign({}, DefaultStyleSanitizers, options.styleSanitizers);
const attrSanitizers = options.attributeSanitizers;
return (group, element, context) => {
const tag = element.tagName.toLowerCase();
const processor: ElementProcessor<HTMLElement> | undefined =
allowedTags.indexOf(tag) >= 0
? (group, element, context) => {
const sanitizedElement = createSanitizedElement(
element.ownerDocument,
element.tagName,
element.attributes,
styleSanitizers,
attrSanitizers
);
moveChildNodes(sanitizedElement, element);
context.defaultElementProcessors['*']?.(group, sanitizedElement, context);
}
: disallowedTags.indexOf(tag) >= 0
? undefined // Ignore those disallowed tags
: context.defaultElementProcessors.span; // For other unknown tags, treat them as SPAN
processor?.(group, element, context);
};
}
|