JSFiddle - React, Tailwind, and code Playground

Code indent

by Dave

HTML

<pre id="out"></pre>

JavaScript

var str = '<div id="a">zzz<span class="b"><span>Hello</span></span><input type="text"><p><b>b <i>italic</i></b></p>zzz</div>';

$('#out').text(process(str));

function process(str) {
    
    var div = document.createElement('div');
    div.innerHTML = str.trim();
    
    return format(div, 0).innerHTML;
}

function format(node, level) {
    
    var indentBefore = new Array(level++ + 1).join('  '),
        indentAfter  = new Array(level - 1).join('  '),
        textNode;
    
    for (var i = 0; i < node.children.length; i++) {
        
        textNode = document.createTextNode('\n' + indentBefore);
        node.insertBefore(textNode, node.children[i]);
        
        format(node.children[i], level);
        
        if (node.lastElementChild == node.children[i]) {
            textNode = document.createTextNode('\n' + indentAfter);
            node.appendChild(textNode);
        }
    }
    
    return node;
}