wallet-core/build.js

79 lines
2.4 KiB
JavaScript
Raw Normal View History

(function($, undefined){
window.URL = window.webkitURL || window.URL;
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
function build(files) {
var $out = $('#output'),
$progress = $('#prog'),
sources = [],
connections = [],
source;
$out.parent().hide();
$progress.show().prop('value', 1).text('Loading Files');
for (var i = 0, length = files.length; i < length; i++) {
sources.push("");
(function(i, file){
connections.push($.get("src/" + file, function(data) {
sources[i] = data;
}, "text"));
})(i, files[i]);
}
$.when.apply($, connections).done(function() {
$progress.prop('value', 2).text('Compiling Scripts');
$.post('https://closure-compiler.appspot.com/compile', {
js_code: sources.join("\n\n"),
compilation_level: "SIMPLE_OPTIMIZATIONS",
output_format: "text",
output_info: "compiled_code"
}, function(data) {
var code = "/*! URI.js v1.18.2 http://medialize.github.io/URI.js/ */\n/* build contains: " + files.join(', ') + " */\n" + data;
$progress.hide();
$out.val(code).parent().show();
$out.prev().find('a').remove();
$out.prev().prepend(download(code));
}).error(function() {
alert("Your browser is incapable of cross-domain communication.\nPlease see instructions for manual build below.");
});
});
};
function download(code) {
var blob = new Blob([code], {type: 'text\/javascript'});
var a = document.createElement('a');
a.download = 'URI.js';
a.href = window.URL.createObjectURL(blob);
a.textContent = 'Download';
a.dataset.downloadurl = ['text/javascript', a.download, a.href].join(':');
return a;
};
$(function(){
$('#builder').on('submit', function(e) {
var $this = $(this),
$files = $this.find('input:checked'),
files = [];
e.preventDefault();
e.stopImmediatePropagation();
if (!$files.length) {
alert("please choose at least one file!");
return;
}
$files.each(function() {
var val = $(this).val();
val.length && files.push(val);
});
build(files);
});
});
})(jQuery);