benfluleck/HelloBooks

View on GitHub
templates/js/bootstrap-imageupload.min.js

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * bootstrap-imageupload v1.1.2
 * https://github.com/egonolieux/bootstrap-imageupload
 * Copyright 2016 Egon Olieux
 * Released under the MIT license
 */

if("undefined"==typeof jQuery)throw new Error("bootstrap-imageupload's JavaScript requires jQuery.");!function(e){"use strict";function i(i){b=e.extend({},e.fn.imageupload.defaultOptions,i);var n=this,a=n.find(".file-tab"),o=n.find(".panel-heading .btn:eq(0)"),d=a.find('input[type="file"]'),l=a.find(".btn:eq(1)"),r=n.find(".url-tab"),s=n.find(".panel-heading .btn:eq(1)"),h=r.find(".btn:eq(0)"),g=r.find(".btn:eq(1)");u(a),m(r),f(a),t.call(n),o.off(),d.off(),l.off(),s.off(),h.off(),g.off(),o.on("click",function(){e(this).blur(),f(a)}),d.on("change",function(){e(this).blur(),p(a)}),l.on("click",function(){e(this).blur(),u(a)}),s.on("click",function(){e(this).blur(),c(r)}),h.on("click",function(){e(this).blur(),v(r)}),g.on("click",function(){e(this).blur(),m(r)})}function n(){var e=this;e.addClass("imageupload-disabled")}function t(){var e=this;e.removeClass("imageupload-disabled")}function a(){var e=this;i.call(e,b)}function o(e){var i=[];return i.push('<div class="alert alert-danger alert-dismissible">'),i.push('<button type="button" class="close" data-dismiss="alert">'),i.push("<span>&times;</span>"),i.push("</button>"+e),i.push("</div>"),i.join("")}function d(e){return'<img src="'+e+'" alt="Image preview" class="thumbnail" style="max-width: '+b.maxWidth+"px; max-height: "+b.maxHeight+'px">'}function l(e){return e.substr(e.lastIndexOf(".")+1).toLowerCase()}function r(i,n){if(i.size/1024>b.maxFileSizeKb)return void n(!1,"File is too large (max "+b.maxFileSizeKb+"kB).");var t=l(i.name);e.inArray(t,b.allowedFormats)>-1?n(!0,"Image file is valid."):n(!1,"File type is not allowed.")}function s(i,n){var t=null,a=3e3,o=!1,d=new Image;d.onload=function(){if(!o){window.clearTimeout(t);var a=i;a.indexOf("?")!==-1&&(a=a.split("?")[0].split("#")[0]);var d=l(a);e.inArray(d,b.allowedFormats)>-1?n(!0,"Image URL is valid."):n(!1,"File type is not allowed.")}},d.onerror=function(){o||(window.clearTimeout(t),n(!1,"Image could not be found."))},d.src=i,t=window.setTimeout(function(){o=!0,d.src="???",n(!1,"Loading image timed out.")},a)}function f(e){var i=e.closest(".imageupload"),n=i.find(".panel-heading .btn:eq(0)");if(!n.hasClass("active")){var t=i.find(".url-tab");i.find(".panel-heading .btn:eq(1)").removeClass("active"),n.addClass("active"),t.hide(),e.show(),m(t)}}function u(e){e.find(".alert").remove(),e.find("img").remove(),e.find(".btn span").text("Browse"),e.find(".btn:eq(1)").hide(),e.find("input").val("")}function p(e){var i=e.find(".btn:eq(0)"),n=e.find(".btn:eq(1)"),t=i.find("input");if(e.find(".alert").remove(),e.find("img").remove(),i.find("span").text("Browse"),n.hide(),t[0].files&&t[0].files[0]){i.prop("disabled",!0);var a=t[0].files[0];r(a,function(l,r){if(l){var s=new FileReader;s.onload=function(t){e.prepend(d(t.target.result)),i.find("span").text("Change"),n.css("display","inline-block")},s.onerror=function(){e.prepend(o("Error loading image file.")),t.val("")},s.readAsDataURL(a)}else e.prepend(o(r)),i.find("span").text("Browse"),t.val("");i.prop("disabled",!1)})}}function c(e){var i=e.closest(".imageupload"),n=i.find(".panel-heading .btn:eq(1)");if(!n.hasClass("active")){var t=i.find(".file-tab");i.find(".panel-heading .btn:eq(0)").removeClass("active"),n.addClass("active"),t.hide(),e.show(),u(t)}}function m(e){e.find(".alert").remove(),e.find("img").remove(),e.find(".btn:eq(1)").hide(),e.find("input").val("")}function v(i){var n=i.find('input[type="text"]'),t=i.find(".btn:eq(0)"),a=i.find(".btn:eq(1)");i.find(".alert").remove(),i.find("img").remove(),a.hide();var l=n.val();return l?(n.prop("disabled",!0),t.prop("disabled",!0),void s(l,function(r,s){r?(i.find('input[type="hidden"]').val(l),e(d(l)).insertAfter(t.closest(".input-group")),a.css("display","inline-block")):i.prepend(o(s)),n.prop("disabled",!1),t.prop("disabled",!1)})):void i.prepend(o("Please enter an image URL."))}var b={},h={init:i,disable:n,enable:t,reset:a};e.fn.imageupload=function(i){var n=arguments;return this.filter("div").each(function(){if(h[i])h[i].apply(e(this),Array.prototype.slice.call(n,1));else{if("object"!=typeof i&&i)throw new Error('Method "'+i+'" is not defined for imageupload.');h.init.apply(e(this),n)}})},e.fn.imageupload.defaultOptions={allowedFormats:["jpg","jpeg","png","gif"],maxWidth:250,maxHeight:250,maxFileSizeKb:2048}}(jQuery);