All files / helpers insert-tag.ts

100% Statements 8/8
100% Branches 2/2
100% Functions 1/1
100% Lines 8/8

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      2x 5x 5x 5x 5x   5x               5x 5x    
import { EditorView } from '@codemirror/view';
import { InsertTagCommand } from '@drevo-web/shared';
 
export function insertTagInView(view: EditorView, command: InsertTagCommand): boolean {
    const { state } = view;
    const { from, to } = state.selection.main;
    const selectedText = from === to ? command.sampleText : state.doc.sliceString(from, to);
    const taggedText = `${command.tagOpen}${selectedText}${command.tagClose}`;
 
    view.dispatch({
        changes: { from, to, insert: taggedText },
        selection: {
            anchor: from + command.tagOpen.length,
            head: from + command.tagOpen.length + selectedText.length,
        },
    });
 
    view.focus();
    return true;
}