function getFlattenAction()

in frontend/src/js/components/viewer/CommentHighlighter.tsx [9:32]


function getFlattenAction(target: Highlight, highlights: Highlight[]): FlattenAction {
    let startCharacter = target.range.startCharacter;
    let endCharacter = target.range.endCharacter;

    for(const highlight of highlights) {
        if(highlight !== target && highlight.type === 'comment') {
            const startsInside = target.range.startCharacter >= highlight.range.startCharacter
                && target.range.startCharacter <= highlight.range.endCharacter;

            const endsInside = target.range.endCharacter >= highlight.range.startCharacter
                && target.range.endCharacter <= highlight.range.endCharacter;

            if(startsInside && endsInside) {
                return { type: 'delete' };
            } else if(startsInside) {
                startCharacter = highlight.range.endCharacter;
            } else if(endsInside) {
                endCharacter = highlight.range.startCharacter;
            }
        }
    }

    return { type: 'truncate', range: { startCharacter, endCharacter } };
}