@firestitch/froala
Version:
The next generation Javascript WYSIWYG HTML rich text editor made by devs for devs. High performance and modern design make it easy to use for developers and loved by users.
3 lines (2 loc) • 9.24 kB
JavaScript
!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?a(require("froala-editor")):"function"==typeof define&&define.amd?define(["froala-editor"],a):a(e.FroalaEditor)}(this,function(O){"use strict";if(O=O&&O.hasOwnProperty("default")?O.default:O,Object.assign(O.DEFAULTS,{imageManagerLoadURL:"https://i.froala.com/load-files",imageManagerLoadMethod:"get",imageManagerLoadParams:{},imageManagerPreloader:null,imageManagerDeleteURL:"",imageManagerDeleteMethod:"post",imageManagerDeleteParams:{},imageManagerPageSize:12,imageManagerScrollOffset:20,imageManagerToggleTags:!0}),O.PLUGINS.imageManager=function(s){var i,g,t,r,n,l,o,d,m,c,f,u=s.$,p="image_manager",a=10,h=14,v=15,M={};function b(){var e=u(window).outerWidth();return e<768?2:e<1200?3:4}function w(){n.empty();for(var e=0;e<f;e++)n.append('<div class="fr-list-column"></div>')}function C(){if(m<o.length&&t[0].scrollTop>=t[0].scrollHeight-s.opts.imageManagerScrollOffset-t.outerHeight()){d++;for(var e=s.opts.imageManagerPageSize*(d-1);e<Math.min(o.length,s.opts.imageManagerPageSize*d);e++)!function(n){var i=new Image,o=u(document.createElement("div")).attr("class","fr-image-container fr-empty fr-image-"+c++).attr("data-loading",s.language.translate("Loading")+"..").attr("data-deleting",s.language.translate("Deleting")+"..");I(!1),i.onload=function(){o.height(Math.floor(o.width()/i.width*i.height));var e,t=u(document.createElement("img"));if(n.thumb)t.attr("src",n.thumb);else{if(E(h,n),!n.url)return E(v,n),!1;t.attr("src",n.url)}if(n.url&&t.attr("data-url",n.url),n.tag)if(g.find(".fr-modal-more.fr-not-available").removeClass("fr-not-available"),g.find(".fr-modal-tags").show(),0<=n.tag.indexOf(",")){for(var a=n.tag.split(","),r=0;r<a.length;r++)a[r]=a[r].trim(),0===l.find('a[title="'.concat(a[r],'"]')).length&&l.append('<a role="button" title="'.concat(a[r],'">').concat(a[r],"</a>"));t.attr("data-tag",a.join())}else 0===l.find('a[title="'.concat(n.tag.trim(),'"]')).length&&l.append('<a role="button" title="'.concat(n.tag.trim(),'">').concat(n.tag.trim(),"</a>")),t.attr("data-tag",n.tag.trim());for(e in n.name&&t.attr("alt",n.name),n)n.hasOwnProperty(e)&&"thumb"!==e&&"url"!==e&&"tag"!==e&&t.attr("data-".concat(e),n[e]);o.append(t).append(u(s.icon.create("imageManagerDelete")).addClass("fr-delete-img").attr("title",s.language.translate("Delete"))).append(u(s.icon.create("imageManagerInsert")).addClass("fr-insert-img").attr("title",s.language.translate("Insert"))),l.find(".fr-selected-tag").each(function(e,a){q(t,a.text)||o.hide()}),t.on("load",function(){o.removeClass("fr-empty"),o.height("auto"),m++,y(D(parseInt(t.parent().attr("class").match(/fr-image-(\d+)/)[1],10)+1)),I(!1),m%s.opts.imageManagerPageSize==0&&C()}),s.events.trigger("imageManager.imageLoaded",[t])},i.onerror=function(){m++,o.remove(),y(D(parseInt(o.attr("class").match(/fr-image-(\d+)/)[1],10)+1)),E(a,n),m%s.opts.imageManagerPageSize==0&&C()},i.src=n.thumb||n.url,L().append(o)}(o[e])}}function L(){var t,r;return n.find(".fr-list-column").each(function(e,a){a=u(a);(0===e||a.outerHeight()<r)&&(r=a.outerHeight(),t=a)}),t}function D(e){void 0===e&&(e=0);for(var a=[],t=c-1;e<=t;t--){var r=n.find(".fr-image-".concat(t));r.length&&(a.push(r),u(document.createElement("div")).attr("id","fr-image-hidden-container").append(r),n.find(".fr-image-".concat(t)).remove())}return a}function y(e){for(var a=e.length-1;0<=a;a--)L().append(e[a])}function I(e){var a;void 0===e&&(e=!0),i.isVisible()&&((a=b())!==f&&(f=a,a=D(),w(),y(a)),s.modals.resize(p),e)&&C()}function P(e){for(var a,t=e[0].attributes,r=t.length,n={};r--;)t[r]&&"src"!==(a=t[r].name)&&(n[a]=t[r].value);return n}function S(e){var a,t,e=u(e.currentTarget).siblings("img"),r=i.data("instance")||s,n=i.data("current-image");s.modals.hide(p),r.image.showProgressBar(),n?(n.data("fr-old-src",n.attr("src")),n.trigger("click")):(r.events.focus(!0),r.selection.restore(),a=(t=r.position.getBoundingRect()).left+t.width/2+u(s.doc).scrollLeft(),t=t.top+t.height+u(s.doc).scrollTop(),r.popups.setContainer("image.insert",s.$sc),r.popups.show("image.insert",a,t)),r.image.insert(e.data("url"),!1,P(e),n)}function T(e){var r=u(e.currentTarget).siblings("img"),e=s.language.translate("Are you sure? Image will be deleted.");confirm(e)&&(s.opts.imageManagerDeleteURL?!1!==s.events.trigger("imageManager.beforeDeleteImage",[r])&&(r.parent().addClass("fr-image-deleting"),u(this).ajax({method:s.opts.imageManagerDeleteMethod,url:s.opts.imageManagerDeleteURL,data:Object.assign(Object.assign({src:r.attr("src")},P(r)),s.opts.imageManagerDeleteParams),crossDomain:s.opts.requestWithCORS,withCredentials:s.opts.requestWithCredentials,headers:s.opts.requestHeaders,done:function(e,a,t){s.events.trigger("imageManager.imageDeleted",[e]);e=D(parseInt(r.parent().attr("class").match(/fr-image-(\d+)/)[1],10)+1);r.parent().remove(),y(e),i.find("#fr-modal-tags > a").each(function(){0===i.find('#fr-image-list [data-tag*="'.concat(u(this).text(),'"]')).length&&u(this).removeClass("fr-selected-tag").hide()}),U(),I(!0)},fail:function(e){E(21,e.response||e.responseText)}})):E(22))}function E(e,a){10<=e&&e<20?r.hide():20<=e&&e<30&&u(".fr-image-deleting").removeClass("fr-image-deleting"),s.events.trigger("imageManager.error",[{code:e,message:M[e]},a])}function R(){var e=g.find(".fr-modal-head-line").outerHeight(),a=l.outerHeight();g.toggleClass("fr-show-tags"),g.hasClass("fr-show-tags")?(g.css("height",e+a),t.css("marginTop",e+a),l.find("a").css("opacity",1)):(g.css("height",e),t.css("marginTop",e),l.find("a").css("opacity",0))}function U(){var e=l.find(".fr-selected-tag");0<e.length?(n.find("img").parents().show(),e.each(function(e,t){n.find("img").each(function(e,a){a=u(a);q(a,t.text)||a.parent().hide()})})):n.find("img").parents().show(),y(D()),C()}function x(e){e.preventDefault();e=u(e.currentTarget);e.toggleClass("fr-selected-tag"),s.opts.imageManagerToggleTags&&e.siblings("a").removeClass("fr-selected-tag"),U()}function q(e,a){for(var t=(e.attr("data-tag")||"").split(","),r=0;r<t.length;r++)if(t[r]===a)return 1}return M[a]="Image cannot be loaded from the passed link.",M[11]="Error during load images request.",M[12]="Missing imageManagerLoadURL option.",M[13]="Parsing load response failed.",M[h]="Missing image thumb.",M[v]="Missing image URL.",M[21]="Error during delete image request.",M[22]="Missing imageManagerDeleteURL option.",{require:["image"],_init:function(){if(!s.$wp&&"IMG"!==s.el.tagName)return!1},show:function(){var e,a;i||(a='<button class="fr-command fr-btn fr-modal-more fr-not-available" id="fr-modal-more-'.concat(s.sid,'"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24""><path d="').concat(O.SVG.tags,'"/></svg></button><h4 data-text="true">').concat(s.language.translate("Manage Images"),'</h4></div>\n <div class="fr-modal-tags" id="fr-modal-tags">'),e=s.opts.imageManagerPreloader?'<img class="fr-preloader" id="fr-preloader" alt="'.concat(s.language.translate("Loading"),'.." src="').concat(s.opts.imageManagerPreloader,'" style="display: none;">'):'<span class="fr-preloader" id="fr-preloader" style="display: none;">'.concat(s.language.translate("Loading"),"</span>"),a=s.modals.create(p,a,e+='<div class="fr-image-list" id="fr-image-list"></div>'),i=a.$modal,g=a.$head,t=a.$body),i.data("current-image",s.image.get()),s.modals.show(p),r||(r=i.find("#fr-preloader"),n=i.find("#fr-image-list"),l=i.find("#fr-modal-tags"),f=b(),w(),g.css("height",g.find(".fr-modal-head-line").outerHeight()),s.events.$on(u(s.o_win),"resize",function(){I(!!o)}),s.events.bindClick(n,".fr-insert-img",S),s.events.bindClick(n,".fr-delete-img",T),s.helpers.isMobile()&&(s.events.bindClick(n,"div.fr-image-container",function(e){i.find(".fr-mobile-selected").removeClass("fr-mobile-selected"),u(e.currentTarget).addClass("fr-mobile-selected")}),i.on(s._mousedown,function(){i.find(".fr-mobile-selected").removeClass("fr-mobile-selected")})),i.on(s._mousedown+" "+s._mouseup,function(e){e.stopPropagation()}),i.on(s._mousedown,"*",function(){s.events.disableBlur()}),t.on("scroll",C),s.events.bindClick(i,"button#fr-modal-more-".concat(s.sid),R),s.events.bindClick(l,"a",x)),function(){r.show(),n.find(".fr-list-column").empty(),s.opts.imageManagerLoadURL?u(this).ajax({url:s.opts.imageManagerLoadURL,method:s.opts.imageManagerLoadMethod,data:s.opts.imageManagerLoadParams,crossDomain:s.opts.requestWithCORS,withCredentials:s.opts.requestWithCredentials,headers:s.opts.requestHeaders,done:function(e,a,t){s.events.trigger("imageManager.imagesLoaded",[e]);t=t.response;try{n.find(".fr-list-column").empty(),c=m=d=0,o=JSON.parse(e),C()}catch(e){E(13,t)}r.hide()},fail:function(e){E(11,e.response||e.responseText)}}):E(12)}()},hide:function(){s.modals.hide(p)}}},!O.PLUGINS.image)throw new Error("Image manager plugin requires image plugin.");O.DEFAULTS.imageInsertButtons.push("imageManager"),O.RegisterCommand("imageManager",{title:"Browse",undo:!1,focus:!1,modal:!0,callback:function(){this.imageManager.show()},plugin:"imageManager"}),O.DefineIcon("imageManager",{NAME:"folder",SVG_KEY:"imageManager"}),O.DefineIcon("imageManagerInsert",{NAME:"plus",SVG_KEY:"add"}),O.DefineIcon("imageManagerDelete",{NAME:"trash",SVG_KEY:"remove"})});
//# sourceMappingURL=image_manager.min.min.js.map