Edit in JSFiddle

(function($, $$) {
    var mirrorEl = $$('.expanding-area .mirror'),
        textEl = $$('.expanding-area .source'),
        timehandle = null,
        
        handler = function() {
            mirrorEl.set('text', textEl.get('value'));
        };
    
    handler();
        
    textEl.addEvent('keyup', function(event) {
        
        clearTimeout(timehandle);
        
        timehandle = handler.delay(200);
    });

})($, $$);
<div class="expanding-wrap">
    <div class="expanding-area">
        <pre class="mirror-wrap"><span class="mirror"></span><br/></pre>
        <textarea class="source" cols="30" rows="10"></textarea>
    </div>
</div>
.expanding-wrap {
    background: #fff;
    width: 350px;
    padding: 4px;
    border: 1px solid #585858;
}

.expanding-area {
    position: relative;
    min-height: 50px;
}

.expanding-area .source,
.expanding-area .mirror-wrap {                
    white-space: pre-wrap;
    word-wrap: break-word;
    
    background: transparent;
    
    line-height: 1.5;
    font:14px/1.231 arial,helvetica,clean,sans-serif;
}

.expanding-area .mirror-wrap {
    display: block;
    visibility: hidden;
}

.expanding-area .source {    
    border: 0 none;
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
    resize: none;
}