All files / roosterjs-content-model-dom/lib/formatHandlers/table tableSpacingFormatHandler.ts

100% Statements 19/19
100% Branches 10/10
100% Functions 2/2
100% Lines 19/19

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 1x 1x         1x   296x 15x   281x 281x 1x       296x 1x       99x 14x 14x 14x 85x 1x 1x 1x        
import type { FormatHandler } from '../FormatHandler';
import type { SpacingFormat } from 'roosterjs-content-model-types';
 
const BorderCollapsed = 'collapse';
const BorderSeparate = 'separate';
const CellPadding = 'cellPadding';
 
/**
 * @internal
 */
export const tableSpacingFormatHandler: FormatHandler<SpacingFormat> = {
    parse: (format, element) => {
        if (element.style.borderCollapse == BorderCollapsed) {
            format.borderCollapse = true;
        } else {
            const cellPadding = element.getAttribute(CellPadding);
            if (cellPadding) {
                format.borderCollapse = true;
            }
        }
 
        if (element.style.borderCollapse == BorderSeparate) {
            format.borderSeparate = true;
        }
    },
    apply: (format, element) => {
        if (format.borderCollapse) {
            element.style.borderCollapse = BorderCollapsed;
            element.style.borderSpacing = '0';
            element.style.boxSizing = 'border-box';
        } else if (format.borderSeparate) {
            element.style.borderCollapse = BorderSeparate;
            element.style.borderSpacing = '0';
            element.style.boxSizing = 'border-box';
        }
    },
};