All files / roosterjs-content-model-api/lib/publicApi/segment toggleCode.ts

100% Statements 11/11
75% Branches 6/8
100% Functions 3/3
100% Lines 11/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 331x 1x     1x                   1x 7x   7x       7x 7x 6x   1x       6x      
import { addCode } from 'roosterjs-content-model-dom';
import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';
import type { ContentModelCode, IEditor } from 'roosterjs-content-model-types';
 
const DefaultCode: ContentModelCode = {
    format: {
        fontFamily: 'monospace',
    },
};
 
/**
 * Toggle italic style
 * @param editor The editor to operate on
 */
export function toggleCode(editor: IEditor) {
    editor.focus();
 
    formatSegmentWithContentModel(
        editor,
        'toggleCode',
        (_, isTurningOn, segment) => {
            Eif (segment) {
                if (isTurningOn) {
                    addCode(segment, DefaultCode);
                } else {
                    delete segment.code;
                }
            }
        },
        (_, segment) => !!segment?.code
    );
}