JSFiddle - React, Tailwind, and code Playground

HTML

<textarea name="contrato" id="contrato" cols="30" rows="10">
1 - Primeira Clausura.   
1.1 - Primeiro paragrafo.
1.2 - Segundo Paragrafo. 
    
2 - Segunda Clausura. 
2.1 - Primeiro paragrafo da segunda clausura.
2.2 - Segundo paragrafo da segunda clausura.

3 - Terceira Clausura. 
3.1 - Terceiro paragrafo da Terceira clausura. 
3.2 - STerceiro paragrafo da Terceira clausura.
</textarea>

CSS

textarea {
    width: 400px;
    height: 400px;
}

JavaScript

var textarea = document.getElementById('contrato');
var clausulas = new RegExp('([0-9\.]+)\\s\\-', 'g');
textarea.addEventListener('keyup', function () {
    var texto = this.value;
    var currentIndex = 0;
    var subIndex = 0;
    this.value = texto.replace(clausulas, function (match) {
        if (match.indexOf('.') == -1) {
            currentIndex++;
            subIndex = 0;
            return currentIndex + ' -';
        }
        subIndex++;
        return [currentIndex, '.', subIndex, ' -'].join('');
    });
});