126 lines
4.1 KiB
HTML
126 lines
4.1 KiB
HTML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<head>
|
|
<title>NBT Editor</title>
|
|
|
|
<script type="text/javascript" src="src/TagLibrary.js"></script>
|
|
<script type="text/javascript" src="src/HighlightedString.js"></script>
|
|
<script type="text/javascript" src="src/App.js"></script>
|
|
|
|
<link rel="stylesheet" href="style/app.css" />
|
|
|
|
<link rel="stylesheet" href="lib/jstree/dist/themes/default/style.min.css" />
|
|
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
|
|
<script src="lib/jstree/dist/jstree.min.js"></script>
|
|
|
|
<script type="text/javascript" src="lib/FileSaver.min.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
//<![CDATA[
|
|
|
|
var testInterval; // Hard to tell when Emscripten will be ready.
|
|
function testEmscripten() {
|
|
if(Module.Tag === undefined) return;
|
|
clearInterval(testInterval);
|
|
|
|
Module.TOTAL_MEMORY = 64 * 1024 * 1024;
|
|
Dependencies.handleLoaded(DEP_EMSCRIPTEN);
|
|
}
|
|
|
|
var Module = { preRun:[] };
|
|
Module['preRun'].push(function() {
|
|
testInterval = setInterval(testEmscripten, 50);
|
|
});
|
|
|
|
window.addEventListener('load', function() {
|
|
Dependencies.handleLoaded(DEP_WINDOW);
|
|
});
|
|
|
|
//]]>
|
|
</script>
|
|
<script type="text/javascript" src="NBT.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="drop_zone">
|
|
<span>
|
|
Drop file here<br />
|
|
or select file<br />
|
|
<input id="file_input" type="file" /><br>
|
|
</span>
|
|
<div id="contact" style="font-size:12px;position:fixed;bottom:10px;right:20px;opacity:0.8;">
|
|
Feedback? <a href="http://irath96.github.io/contact/">Contact me</a>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
|
|
function handleFileSelect(evt) {
|
|
evt.stopPropagation();
|
|
evt.preventDefault();
|
|
|
|
var files = evt.dataTransfer.files; // FileList object.
|
|
for (var i = 0, f; f = files[i]; ++i) {
|
|
var reader = new FileReader();
|
|
|
|
// Closure to capture the file information.
|
|
reader.onload = (function(file) {
|
|
lastFilename = file.name;
|
|
return function(e) {
|
|
loadData(e.target.result);
|
|
};
|
|
})(f);
|
|
|
|
reader.readAsArrayBuffer(f);
|
|
}
|
|
|
|
document.querySelector('#drop_zone').style.display = 'none';
|
|
}
|
|
|
|
function handleDragOver(evt) {
|
|
evt.stopPropagation();
|
|
evt.preventDefault();
|
|
evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
|
|
}
|
|
|
|
// Setup the dnd listeners.
|
|
document.getElementById('file_input').onchange = function() {
|
|
var files = document.getElementById('file_input').files; // FileList object.
|
|
for (var i = 0, f; f = files[i]; ++i) {
|
|
var reader = new FileReader();
|
|
|
|
// Closure to capture the file information.
|
|
reader.onload = (function(file) {
|
|
lastFilename = file.name;
|
|
return function(e) {
|
|
loadData(e.target.result);
|
|
};
|
|
})(f);
|
|
|
|
reader.readAsArrayBuffer(f);
|
|
}
|
|
|
|
document.querySelector('#drop_zone').style.display = 'none';
|
|
};
|
|
|
|
var dropZone = document.getElementById('drop_zone');
|
|
dropZone.addEventListener('dragover', handleDragOver, false);
|
|
dropZone.addEventListener('drop', handleFileSelect, false);
|
|
|
|
</script>
|
|
<div id="topbar">
|
|
<div id="buttons">
|
|
<input id="open_btn" type="button" value="Open" onclick="javascript:location.href = location.href;" />
|
|
<input id="save_btn" type="button" value="Save" onclick="javascript:App.save();" />
|
|
<input id="toggle_hexview_btn" type="button" value=">" onclick="javascript:App.toggleHexview(this);" />
|
|
</div>
|
|
<div id="search_bar">
|
|
<input type="text" id="search_field" placeholder="Search..." />
|
|
</div>
|
|
</div>
|
|
<div id="screen">
|
|
<div id="tree"></div>
|
|
</div>
|
|
<pre id="hexview">data</pre>
|
|
</body>
|
|
</html>
|