JSFiddle - React, Tailwind, and code Playground

HTML

<textarea>
    a
    
    b
    
    c
</textarea>

CSS

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

JavaScript

$("textarea").keydown(function(e){
    if(e.keyCode == 13){
        var cursorPos = this.selectionStart;
        var curentLine = this.value.substr(0, this.selectionStart).split("\n").pop();
        var indent = curentLine.match(/^\s*/)[0];
        var value = this.value;
        var textBefore = value.substring(0,  cursorPos );
        var textAfter  = value.substring( cursorPos, value.length );

        this.value = textBefore + "\n" + indent + textAfter;
        console.log(textBefore);
        e.preventDefault();
        setCaretPosition(this, cursorPos + indent.length + 1); // +1 is for the \n
    }
});

function setCaretPosition(ctrl, pos)
{

    if(ctrl.setSelectionRange)
    {
        ctrl.focus();
        ctrl.setSelectionRange(pos,pos);
    }
    else if (ctrl.createTextRange) {
        var range = ctrl.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
    }
}