All files / roosterjs-content-model-dom/lib/modelApi/metadata updateTableMetadata.ts

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

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 60 61 62 63 64 65 661x 1x 1x                       1x           1x   1x                                                       1x 20x               1x       50x    
import { getMetadata, updateMetadata } from './updateMetadata';
import { TableBorderFormat } from '../../constants/TableBorderFormat';
import {
    createBooleanDefinition,
    createNumberDefinition,
    createObjectDefinition,
    createStringDefinition,
} from './definitionCreators';
import type {
    ReadonlyContentModelTable,
    ShallowMutableContentModelTable,
    TableMetadataFormat,
} from 'roosterjs-content-model-types';
 
const NullStringDefinition = createStringDefinition(
    false /** isOptional */,
    undefined /** value */,
    true /** allowNull */
);
 
const BooleanDefinition = createBooleanDefinition(false /** isOptional */);
 
const TableFormatDefinition = createObjectDefinition<Required<TableMetadataFormat>>(
    {
        topBorderColor: NullStringDefinition,
        bottomBorderColor: NullStringDefinition,
        verticalBorderColor: NullStringDefinition,
        hasHeaderRow: BooleanDefinition,
        headerRowColor: NullStringDefinition,
        hasFirstColumn: BooleanDefinition,
        hasBandedColumns: BooleanDefinition,
        hasBandedRows: BooleanDefinition,
        bgColorEven: NullStringDefinition,
        bgColorOdd: NullStringDefinition,
        tableBorderFormat: createNumberDefinition(
            false /** isOptional */,
            undefined /* value */,
            TableBorderFormat.Min /* first table border format */,
            TableBorderFormat.Max /* last table border format */
        ),
        verticalAlign: NullStringDefinition,
    },
    false /* isOptional */,
    true /** allowNull */
);
 
/**
 * Get table metadata
 * @param table The table Content Model
 */
export function getTableMetadata(table: ReadonlyContentModelTable): TableMetadataFormat | null {
    return getMetadata(table, TableFormatDefinition);
}
 
/**
 * Update table metadata with a callback
 * @param table The table Content Model
 * @param callback The callback function used for updating metadata
 */
export function updateTableMetadata(
    table: ShallowMutableContentModelTable,
    callback?: (format: TableMetadataFormat | null) => TableMetadataFormat | null
): TableMetadataFormat | null {
    return updateMetadata(table, callback, TableFormatDefinition);
}