summaryrefslogtreecommitdiffstats
path: root/admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js')
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js104
1 files changed, 104 insertions, 0 deletions
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js
new file mode 100644
index 0000000..e4d06ff
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js
@@ -0,0 +1,104 @@
+$(function(){
+
+ var inputCss = $('#input-css')
+ , outputCss = $('#output-css')
+ , outputContainer = $('#output-container')
+ , originalSize = $('#original-size')
+ , compressedSize = $('#compressed-size')
+ , bytesSaved = $('#bytes-saved')
+ , compressionRatio = $('#compression-ratio')
+ , compressBtn = $('#compress-btn')
+ , lessConsole = $('#less-error-message')
+
+ /**
+ * Prints LESS compilation errors
+ */
+ , lessError = function(e) {
+ var content, errorline
+ , template = '<li><label>{line}</label><pre class="{class}">{content}</pre></li>'
+ , error = [];
+
+ content = '<h3>' + (e.type || "Syntax") + "Error: " + (e.message || 'There is an error in your .less file') +
+ '</h3>' + '<p>';
+
+ errorline = function (e, i, classname) {
+ if (e.extract[i] != undefined) {
+ error.push(template.replace(/\{line\}/, (parseInt(e.line) || 0) + (i - 1))
+ .replace(/\{class\}/, classname)
+ .replace(/\{content\}/, e.extract[i]));
+ }
+ };
+
+ if (e.stack) {
+ content += '<br/>' + e.stack.split('\n').slice(1).join('<br/>');
+ } else if (e.extract) {
+ errorline(e, 0, '');
+ errorline(e, 1, 'line');
+ errorline(e, 2, '');
+ content += 'on line ' + e.line + ', column ' + (e.column + 1) + ':</p>' +
+ '<ul>' + error.join('') + '</ul>';
+ }
+
+ lessConsole.html(content).slideDown('fast');
+ }
+
+ /**
+ * Compresses user's CSS with the PHP port of the YUI compressor
+ */
+ , compress = function(formData) {
+ $.post(window.location.href, formData, function(data, textStatus, jqXHR){
+ // Hide LESS error console
+ lessConsole.slideUp('fast');
+
+ // Fill output & show
+ outputCss.val(data.css);
+ originalSize.html(data.originalSize);
+ compressedSize.html(data.compressedSize);
+ bytesSaved.html(data.bytesSaved);
+ compressionRatio.html(data.compressionRatio);
+
+ outputContainer.slideDown('fast');
+
+ // Restore button state
+ compressBtn.button('reset');
+ }, 'json');
+ };
+
+
+
+ /**
+ * Controller
+ */
+ $('#options-form').on('submit', function(e){
+ e && e.preventDefault();
+
+ var data = {
+ css: inputCss.val(),
+ options: $(this).serialize()
+ };
+
+ // Change button state
+ compressBtn.button('loading');
+
+ // If LESS enabled, precompile CSS with LESS and then compress
+ if (!!$('#enable-less:checked').val()) {
+ try {
+ new(less.Parser)().parse(data.css, function (err, tree) {
+ if (err) {
+ lessError(err);
+ compressBtn.button('reset');
+ } else {
+ data.css = tree.toCSS();
+ compress(data);
+ }
+ });
+ } catch (err) {
+ lessError(err);
+ compressBtn.button('reset');
+ }
+ } else {
+ compress(data);
+ }
+ });
+
+}); \ No newline at end of file