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);
}
...