UNPKG

angular-froala-wysiwyg-2.7.1

Version:

Angular 2 and Angular 4 bindings for Froala WYSIWYG HTML rich text editor

7 lines (6 loc) 7.86 kB
/*! * froala_editor v2.7.1 (https://www.froala.com/wysiwyg-editor) * License https://froala.com/wysiwyg-editor/terms/ * Copyright 2014-2017 Froala Labs */ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c)}:a(window.jQuery)}(function(a){a.extend(a.FE.POPUP_TEMPLATES,{"embedly.insert":"[_BUTTONS_][_URL_LAYER_]","embedly.edit":"[_BUTTONS_]"}),a.extend(a.FE.DEFAULTS,{embedlyKey:null,embedlyInsertButtons:["embedlyBack","|"],embedlyEditButtons:["embedlyRemove"],embedlyScriptPath:"https://cdn.embedly.com/widgets/platform.js"}),a.FE.PLUGINS.embedly=function(b){function c(){b.events.on("html.processGet",k),b.events.$on(b.$el,"click touchend","div.fr-embedly",e),b.events.on("mousedown window.mousedown",s),b.events.on("window.touchmove",t),b.events.on("mouseup window.mouseup",r),b.events.on("commands.mousedown",function(a){a.parents(".fr-toolbar").length>0&&r()}),b.events.on("blur video.hideResizer commands.undo commands.redo element.dropped",function(){r(!0)}),b.events.on("element.beforeDrop",function(a){if(a.hasClass("fr-embedly"))return a.html(a.attr("data-original-embed")),a}),b.events.on("keydown",function(c){var d=c.which;return!x||d!=a.FE.KEYCODE.BACKSPACE&&d!=a.FE.KEYCODE.DELETE?x&&d==a.FE.KEYCODE.ESC?(r(!0),c.preventDefault(),!1):x&&d!=a.FE.KEYCODE.F10&&!b.keys.isBrowserAction(c)?(c.preventDefault(),!1):void 0:(c.preventDefault(),q(),!1)},!0),b.events.on("toolbar.esc",function(){if(x)return b.events.disableBlur(),b.events.focus(),!1},!0),b.events.on("toolbar.focusEditor",function(){if(x)return!1},!0),b.events.on("snapshot.after",function(a){var c=b.doc.createElement("div");c.innerHTML=a.html,k(c),a.html=c.innerHTML}),embedly("on","card.resize",function(b){var c=a(b);c.parents(".fr-embedly").attr("contenteditable",!1).attr("draggable",!0).css("height",c.height()).addClass("fr-draggable")}),l(!0)}function d(){if(!b.$wp)return!1;if("undefined"!=typeof embedly)c();else if(b.shared.embedlyLoaded||(b.shared.embedlyCallbacks=[]),b.shared.embedlyCallbacks.push(c),!b.shared.embedlyLoaded){b.shared.embedlyLoaded=!0;var a=document.createElement("script");a.type="text/javascript",a.src=b.opts.embedlyScriptPath,a.innerText="",a.onload=function(){for(var a=0;a<b.shared.embedlyCallbacks.length;a++)b.shared.embedlyCallbacks[a]()},document.getElementsByTagName("head")[0].appendChild(a)}}function e(b){x=a(this),j(),h()}function f(){var a="";if(b.opts.embedlyEditButtons.length>0){a+='<div class="fr-buttons">',a+=b.button.buildList(b.opts.embedlyEditButtons),a+="</div>";var c={buttons:a},d=b.popups.create("embedly.edit",c);return b.events.$on(b.$wp,"scroll.emebdly-edit",function(){x&&b.popups.isVisible("embedly.edit")&&(b.events.disableBlur(),g(x))}),d}return!1}function g(a){e.call(a.get(0))}function h(){var a=b.popups.get("embedly.edit");if(a||(a=f()),a){b.popups.setContainer("embedly.edit",b.$sc),b.popups.refresh("embedly.edit");var c=x.offset().left+x.outerWidth()/2,d=x.offset().top+x.outerHeight();b.popups.show("embedly.edit",c,d,x.outerHeight())}}function i(){b.shared.$embedly_resizer?(y=b.shared.$embedly_resizer,z=b.shared.$embedly_overlay,b.events.on("destroy",function(){y.appendTo(a("body:first"))},!0)):(b.shared.$embedly_resizer=a('<div class="fr-embedly-resizer"></div>'),y=b.shared.$embedly_resizer,b.events.$on(y,"mousedown",function(a){a.stopPropagation()},!0)),b.events.on("shared.destroy",function(){y.html("").removeData().remove(),y=null},!0)}function j(){y||i(),(b.$wp||b.$sc).append(y),y.data("instance",b),y.css("top",(b.opts.iframe?x.offset().top-1+b.$iframe.position().top:x.offset().top-b.$wp.offset().top-1)+b.$wp.scrollTop()).css("left",(b.opts.iframe?x.offset().left-1:x.offset().left-b.$wp.offset().left-1)+b.$wp.scrollLeft()).css("width",x.outerWidth()).css("height",x.height()).addClass("fr-active")}function k(a){if(a&&b.node.hasClass(a,"fr-embedly"))a.innerHTML=a.getAttribute("data-original-embed"),a.removeAttribute("draggable"),a.removeAttribute("contenteditable"),a.setAttribute("class",(a.getAttribute("class")||"").replace("fr-draggable",""));else if(a&&a.nodeType==Node.ELEMENT_NODE)for(var c=a.querySelectorAll(".fr-embedly"),d=0;d<c.length;d++)k(c[d])}function l(a){if(a)return b.popups.onRefresh("embedly.insert",m),!0;var c="";b.opts.embedlyInsertButtons.length>0&&(c+='<div class="fr-buttons">',c+=b.button.buildList(b.opts.embedlyInsertButtons),c+="</div>");var d="";d='<div class="fr-embedly-layer fr-active fr-layer" id="fr-embedly-layer-'+b.id+'"><div class="fr-input-line"><input id="fr-embedly-layer-text-'+b.id+'" type="text" placeholder="'+b.language.translate("Paste in a URL to embed")+'" tabIndex="1" aria-required="true"></div><div class="fr-action-buttons"><button type="button" class="fr-command fr-submit" data-cmd="embedlyInsert" tabIndex="2" role="button">'+b.language.translate("Insert")+"</button></div></div>";var e={buttons:c,url_layer:d};return b.popups.create("embedly.insert",e)}function m(){b.popups.get("embedly.insert").find(".fr-embedly-layer input").val("").trigger("change")}function n(){var a=b.$tb.find('.fr-command[data-cmd="embedly"]'),c=b.popups.get("embedly.insert");if(c||(c=l()),!c.hasClass("fr-active"))if(b.popups.refresh("embedly.insert"),b.popups.setContainer("embedly.insert",b.$tb),a.is(":visible")){var d=a.offset().left+a.outerWidth()/2,e=a.offset().top+(b.opts.toolbarBottom?10:a.outerHeight()-10);b.popups.show("embedly.insert",d,e,a.outerHeight())}else b.position.forSelection(c),b.popups.show("embedly.insert")}function o(){p(b.popups.get("embedly.insert").find(".fr-embedly-layer input").val())}function p(a){if(a.length){var c="<a href='"+a+"' class='embedly-card'"+(b.opts.embedlyKey?" data-card-key='"+b.opts.embedlyKey+"'":"")+"></a>";b.html.insert('<div class="fr-embedly fr-draggable" draggable="true" contenteditable="false" data-original-embed="'+c+'">'+c+"</div>"),b.popups.hideAll()}}function q(){if(x&&!1!==b.events.trigger("embedly.beforeRemove",[x])){var a=x;b.popups.hideAll(),r(!0),b.selection.setBefore(a.get(0))||b.selection.setAfter(a.get(0)),a.remove(),b.selection.restore(),b.html.fillEmptyBlocks(),b.undo.saveStep(),b.events.trigger("video.removed",[a])}}function r(a){x&&(u()||!0===a)&&(y.removeClass("fr-active"),b.toolbar.enable(),x.removeClass("fr-active"),x=null,t())}function s(){b.shared.embedly_exit_flag=!0}function t(){b.shared.embedly_exit_flag=!1}function u(){return b.shared.embedly_exit_flag}function v(){return x}function w(){x?(b.events.disableBlur(),x.trigger("click")):(b.events.disableBlur(),b.selection.restore(),b.events.enableBlur(),b.popups.hide("embedly.insert"),b.toolbar.showInline())}var x,y,z;return b.shared.embedly_exit_flag=!1,{_init:d,showInsertPopup:n,insert:o,remove:q,get:v,add:p,back:w}},a.FE.DefineIcon("embedly",{NAME:"share-alt"}),a.FE.RegisterCommand("embedly",{undo:!0,focus:!0,title:"Embed URL",popup:!0,callback:function(){this.popups.isVisible("embedly.insert")?(this.$el.find(".fr-marker").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide("embedly.insert")):this.embedly.showInsertPopup()},plugin:"embedly"}),a.FE.RegisterCommand("embedlyInsert",{undo:!0,focus:!0,callback:function(){this.embedly.insert()}}),a.FE.DefineIcon("embedlyRemove",{NAME:"trash"}),a.FE.RegisterCommand("embedlyRemove",{title:"Remove",undo:!1,callback:function(){this.embedly.remove()}}),a.FE.DefineIcon("embedlyBack",{NAME:"arrow-left"}),a.FE.RegisterCommand("embedlyBack",{title:"Back",undo:!1,focus:!1,back:!0,callback:function(){this.embedly.back()},refresh:function(a){this.embedly.get()||this.opts.toolbarInline?(a.removeClass("fr-hidden"),a.next(".fr-separator").removeClass("fr-hidden")):(a.addClass("fr-hidden"),a.next(".fr-separator").addClass("fr-hidden"))}})});