diff options
Diffstat (limited to 'thirdparty/URI.js/build.js')
-rw-r--r-- | thirdparty/URI.js/build.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/thirdparty/URI.js/build.js b/thirdparty/URI.js/build.js new file mode 100644 index 000000000..21d0bb531 --- /dev/null +++ b/thirdparty/URI.js/build.js @@ -0,0 +1,78 @@ +(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); |