All files / roosterjs-content-model-plugins/lib/paste/utils chainSanitizerCallback.ts

36.36% Statements 4/11
25% Branches 3/12
33.33% Functions 1/3
36.36% Lines 4/11

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                  1x           180x     180x 180x                                    
import type { ValueSanitizer } from 'roosterjs-content-model-types';
 
/**
 * @internal
 * Chain all callback for an style sanitizer
 * @param map The source callback map
 * @param name Name of the property to chain
 * @param newCallback A new callback to process the given name on the given map.
 */
export function chainSanitizerCallback(
    map: Record<string, ValueSanitizer>,
    name: string,
    newCallback: ValueSanitizer
) {
    const finalCb =
        typeof newCallback == 'function'
            ? newCallback
            : (value: string) => (newCallback ? value : null);
    Eif (!map[name]) {
        map[name] = finalCb;
    } else {
        const originalCallback = map[name];
        map[name] = (value: string, tagName: string) => {
            const og =
                typeof originalCallback == 'function'
                    ? originalCallback(value, tagName)
                    : originalCallback
                    ? value
                    : false;
            if (!og) {
                return null;
            } else {
                return finalCb(og, tagName);
            }
        };
    }
}