JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdn.rawgit.com/DeviateFish/java-deserializer/master/dist/java-deserializer.min.js"></script>
<textarea id="output" style="width: 100%; height: 300px">Drag and drop an ingress .obj here.</textarea>

JavaScript

var FileDragDrop = (function () {
    var cancelEvent = function (e) {
        e && e.stopPropagation && e.stopPropagation();
        e && e.preventDefault && e.preventDefault();
    };
    
    var FileDragDrop = function (target, onComplete) {
        if (window.File && window.FileList && window.FileReader) {
            this.target = target;
            this.onComplete = onComplete;
            this.target.addEventListener('drop', this.handleDropEvent.bind(this), false);
            this.target.addEventListener('dragover', cancelEvent, false);
            this.target.addEventListener('dragleave', cancelEvent, false);
        } else {
            throw 'File reading capabilities are not supported by this browser!';
        }
    };
    
    FileDragDrop.prototype.handleDropEvent = function (e) {
        cancelEvent(e);
        var files = e.dataTransfer && e.dataTransfer.files;
        for (var i = 0; i < files.length; i++) {
            this.handleFile(files[i]);
        }
        return false;
    };
    
    FileDragDrop.prototype.handleFile = function (file) {
        var reader = new window.FileReader(),
            that = this;
        reader.onload = function (e) {
            if (e && e.target && e.target.result) {
                that.onComplete(e.target.result, file.name);
            }
        };
        reader.readAsArrayBuffer(file);
    };
    
    return FileDragDrop;
}());

var eachSlice = function(array, size, callback)
{
    for(var i = 0; i < Math.floor(array.length / size); i++)
    {
        callback(array.subarray(i * size, (i + 1) * size), i);
    }
};

var parseAttributes = function(buf)
{
    var v = new DataView(buf.buffer, buf.byteOffset, buf.byteLength), c = 0;
    var n = v.getUint32(c), type, size, len, j, name;
    c += 4;
    var attributes = [];
    for(var i = 0; i < n; i++)
    {
        type = v.getUint32(c);
        if(type != 0x01 && type != 0x10)
        {
            console.warn('unknown type ' + type);
        }
       ...