{I" class:ETI"BundledAsset;�FI"logical_path;�TI"polyblock/polyblock.js;�FI" pathname;�TI"i/Applications/XAMPP/xamppfiles/htdocs/polyblock/app/assets/javascripts/polyblock/polyblock.js.coffee;�FI"content_type;�TI"application/javascript;�TI" mtime;�Tl+N��RI"length;�Tir)I"digest;�TI"%e56d0eedc13d38c6e449323fa71f48ef;�FI"source;�TI"r)(function() { var unsavedChanges; CKEDITOR.disableAutoInline = true; unsavedChanges = false; window.onbeforeunload = function() { if (unsavedChanges) { return "Are you sure you want to leave this page? Your unsaved changes will not be stored!"; } }; $(function() { return $(document).ready(function() { var blocks, has_switch, initialize, pb_switch; blocks = $(".polyblock[contenteditable='true']"); if (!blocks.length) { return; } pb_switch = $('.polyblock-switch'); has_switch = pb_switch.is('*'); initialize = function() { var blockclones, changeChecker, changeText, convertFromTextarea, convertToTextarea, currentMode, editorModeOff, editorModeOn, indicator, initialBodyPadding, instanciateCKEditor, previousMode, revertChanges, saveChanges, showSavedChanges, showUnsavedChanges, startListening, stopListening, verbose; blockclones = {}; instanciateCKEditor = function(id) { return CKEDITOR.inline(id, { on: { focus: function(e) { editorModeOn(); return startListening(id); }, blur: function(e) { return stopListening(); } } }); }; blocks.each(function() { var id; id = $(this).attr('id'); blockclones[id] = $(this).clone(); if (!_.contains(_.keys(CKEDITOR.instances), id)) { return instanciateCKEditor(id); } }); verbose = false; changeChecker = null; indicator = $('.pb-change-indicator'); changeText = $('.pb-change-text'); startListening = function(which) { var buffer; stopListening(); if (verbose) { console.log("I'm listening..."); } buffer = CKEDITOR.instances[which].getData(); return changeChecker = setInterval(function() { var reading; if (verbose) { console.log("Checking for changes..."); } reading = CKEDITOR.instances[which].getData(); if (reading !== buffer && !unsavedChanges) { return showUnsavedChanges(); } else if (reading === buffer && unsavedChanges) { return showSavedChanges(); } }, 1000); }; stopListening = function() { if (changeChecker == null) { return; } if (verbose) { console.log("I'm no longer listening."); } clearInterval(changeChecker); return changeChecker = null; }; showUnsavedChanges = function() { indicator.transition({ rotate: "-30deg", color: "red" }); changeText.html("You have unsaved changes.").transition({ color: "red" }); return unsavedChanges = true; }; showSavedChanges = function() { indicator.transition({ rotate: "0deg", color: "green" }); changeText.html("All changes saved.").transition({ color: "green" }); return unsavedChanges = false; }; initialBodyPadding = $('body').css("padding-bottom"); editorModeOn = function(pb) { return $('#pb_bar').show("slide", { direction: "down" }, 250, function() { $('body').css("padding-bottom", $("#pb_bar").height() + 20); return typeof pb === "function" ? pb() : void 0; }); }; editorModeOff = function(pb) { return $('#pb_bar').hide("slide", { direction: "down" }, 250, function() { $('body').css("padding-bottom", initialBodyPadding); return typeof pb === "function" ? pb() : void 0; }); }; saveChanges = function() { var pbs; showSavedChanges(); pbs = _.map(blocks, function(b) { return { id: $(b).attr("data-pbid"), name: $(b).attr("data-pbname"), content: $(b).html() }; }); return $.post("/polyblock/update", { pbs: pbs }, function(data) { return editorModeOff(function() { return alertify.success("Your changes have been saved."); }); }); }; revertChanges = function(pb) { if (!confirm("Are you sure you want to discard your changes?")) { return; } return editorModeOff(function() { blocks.each(function() { return $(this).replaceWith(blockclones[$(this).attr("id")]); }); return alertify.success("Your changes have been discarded."); }); }; currentMode = previousMode = "WYSIWYG"; convertToTextarea = function(block, content, tab) { var previous_textarea, replaceIt, tabchars, textarea, _this = this; if (content == null) { content = null; } if (tab == null) { tab = "\t"; } tabchars = tab.replace(/\\/, "").length; previous_textarea = $("textarea[data-pbid=" + (block.attr("data-pbid")) + "]"); if (content == null) { content = previous_textarea.is("*") ? previous_textarea.val() : block.html(); } textarea = $('<textarea />').addClass("form-control").attr("data-pbid", block.attr("data-pbid")).val(content).css({ "font-family": 'Monaco, Menlo, Consolas, "Courier New", monospace' }).on("keydown", function(e) { var end, keycode, start; keycode = e.keyCode || e.which; if (!(keycode === 9 || keycode === 8 || keycode === 46)) { return; } start = $(this).get(0).selectionStart; end = $(this).get(0).selectionEnd; if (keycode === 9) { e.preventDefault(); $(this).val("" + ($(this).val().substring(0, start)) + tab + ($(this).val().substring(end))); return $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start + tabchars; } else if (keycode === 8) { if (!(currentMode === "HAML" && $(this).val().substring(start - tabchars, start) === tab)) { return; } e.preventDefault(); $(this).val("" + ($(this).val().substring(0, start - tabchars)) + ($(this).val().substring(end))); return $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start - tabchars; } else if (keycode === 46) { if (!(currentMode === "HAML" && $(this).val().substring(start, start + tabchars) === tab)) { return; } e.preventDefault(); $(this).val("" + ($(this).val().substring(0, start)) + ($(this).val().substring(end + tabchars))); return $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start; } }); replaceIt = function(html) { if (!previous_textarea.is("*")) { block.replaceWith(textarea); } else { previous_textarea.replaceWith(textarea); } return textarea.autosize().focus(); }; if (previousMode !== "HAML") { return replaceIt(content); } else { return $.post("/convert_haml_to_html", { haml: content }, function(data) { return replaceIt(data); }); } }; convertFromTextarea = function(block) { var replaceIt, textarea, _this = this; textarea = $("textarea[data-pbid=" + (block.attr("data-pbid")) + "]"); replaceIt = function(html) { console.log("Replacing with html: " + html); textarea.replaceWith(block); return block.html(html); }; if (previousMode !== "HAML") { return replaceIt(textarea.text()); } else { return $.post("/convert_haml_to_html", { haml: textarea.val() }, function(data) { return replaceIt(data); }); } }; $('#pb_bar_format_buttons button').click(function(e) { var changeModes, _this = this; e.preventDefault(); if ($(this).hasClass("active")) { return; } previousMode = currentMode; currentMode = $(this).html(); changeModes = function(block) { var content, textarea; textarea = $("textarea[data-pbid=" + (block.attr("data-pbid")) + "]"); content = textarea.is("*") ? textarea.val() : block.html(); switch (currentMode) { case "WYSIWYG": return convertFromTextarea(block); case "HTML": return convertToTextarea(block, html_beautify(content)); case "HAML": return $.post("/convert_html_to_haml", { html: content }, function(data) { return convertToTextarea(block, data, " "); }); case "Markdown": return convertToTextarea(block, html_beautify(content)); } }; if (previousMode === "WYSIWYG") { blocks = $(".polyblock[contenteditable='true']"); } blocks.each(function() { return changeModes($(this)); }); return $(this).siblings().removeClass("active").end().addClass("active"); }); $('#pb_bar_revert').click(function(e) { e.preventDefault(); return revertChanges(); }); return $('#pb_bar_save').click(function(e) { e.preventDefault(); return saveChanges(); }); }; if (has_switch) { return pb_switch.click(function(e) { e.preventDefault(); if ($(this).hasClass("active")) { $(this).removeClass("active"); return window.location.reload(); } else { $(this).addClass("active"); return initialize(); } }); } else { return initialize(); } }); }); }).call(this); ;�TI"required_assets_digest;�TI"%16e25f8ceaf525c68a3fa6ffbed1e942;�FI" _version;�TI"%01dc9d4cb5b0ece13ed47cc1cabfeb41;�F