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('');
});
});