@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.
1 lines • 53.4 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("froala-editor")):"function"==typeof define&&define.amd?define(["froala-editor"],t):t(e.FroalaEditor)}(this,function(we){"use strict";function Ae(e){return(Ae="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}we=we&&we.hasOwnProperty("default")?we.default:we,Object.assign(we.POPUP_TEMPLATES,{"image.insert":"[_BUTTONS_][_UPLOAD_LAYER_][_BY_URL_LAYER_][_PROGRESS_BAR_]","image.edit":"[_BUTTONS_]","image.alt":"[_BUTTONS_][_ALT_LAYER_]","image.size":"[_BUTTONS_][_SIZE_LAYER_]"}),Object.assign(we.DEFAULTS,{imageInsertButtons:["imageBack","|","imageUpload","imageByURL"],imageEditButtons:["imageReplace","imageAlign","imageCaption","imageRemove","imageLink","linkOpen","linkEdit","linkRemove","-","imageDisplay","imageStyle","imageAlt","imageSize"],imageAltButtons:["imageBack","|"],imageSizeButtons:["imageBack","|"],imageUpload:!0,imageUploadURL:null,imageCORSProxy:"https://cors-anywhere.froala.com",imageUploadRemoteUrls:!0,imageUploadParam:"file",imageUploadParams:{},imageUploadToS3:!1,imageUploadToAzure:!1,imageUploadMethod:"POST",imageMaxSize:10485760,imageAllowedTypes:["jpeg","jpg","png","gif","webp"],imageResize:!0,imageResizeWithPercent:!1,imageRoundPercent:!1,imageDefaultWidth:300,imageDefaultAlign:"center",imageDefaultDisplay:"block",imageSplitHTML:!1,imageStyles:{"fr-rounded":"Rounded","fr-bordered":"Bordered","fr-shadow":"Shadow"},imageMove:!0,imageMultipleStyles:!0,imageTextNear:!0,imagePaste:!0,imagePasteProcess:!1,imageMinWidth:16,imageOutputSize:!1,imageDefaultMargin:5,imageAddNewLine:!1}),we.IMAGE_ALLOW_REGEX=/\.(gif|jpe?g|tiff?|png|webp|bmp)$/i,we.PLUGINS.image=function(C){var S,p,i,g,o,a,E=C.$,t=!1,n=1,z=3,c=4,R=6,r={};function L(){var e=C.popups.get("image.insert").find(".fr-image-by-url-layer input");e.val(""),S&&e.val(S.attr("src")),e.trigger("change")}function _(e){return window.pageYOffset+e.get(0).getBoundingClientRect().top}function s(){var e,t,a,i,n,r=C.popups.get("image.edit");(r=r||G())&&(e=S,C.popups.setContainer("image.edit",C.$sc),C.popups.refresh("image.edit"),t=e.offset().left+e.outerWidth()/2,a=e&&_(e),i=(i=C.$wp&&_(C.$wp))||a,n=0,C.opts.iframe?(n=(n=C.$wp.scrollTop()+r.outerHeight())<e.get(0).getBoundingClientRect().top?e.get(0).getBoundingClientRect().top:n)>e.get(0).getBoundingClientRect().top+e.height()&&(n=e.get(0).getBoundingClientRect().top+e.height()):n=i<a?a:C.$wp&&a+e.height()<i+C.$wp.height()?a+e.height():i+r.outerHeight(),S.hasClass("fr-uploading")?x():C.popups.show("image.edit",t,n,1,!0))}function M(){m()}function e(){for(var e,t,a,i="IMG"==C.el.tagName?[C.el]:C.el.querySelectorAll("img"),n=0;n<i.length;n++){var r=E(i[n]);!C.opts.htmlUntouched&&C.opts.useClasses?(!C.opts.imageDefaultAlign&&!C.opts.imageDefaultDisplay||(a=0<(a=r).parents(".fr-img-caption").length?a.parents(".fr-img-caption").first():a).hasClass("fr-dii")||a.hasClass("fr-dib")||(a.addClass("fr-fi".concat(I(a)[0])),a.addClass("fr-di".concat(be(a)[0])),a.css("margin",""),a.css("float",""),a.css("display",""),a.css("z-index",""),a.css("position",""),a.css("overflow",""),a.css("vertical-align","")),C.opts.imageTextNear||(0<r.parents(".fr-img-caption").length?r.parents(".fr-img-caption").first():r).removeClass("fr-dii").addClass("fr-dib")):C.opts.htmlUntouched||C.opts.useClasses||(C.opts.imageDefaultAlign||C.opts.imageDefaultDisplay)&&(t=a=void 0,a=(e=0<(e=r).parents(".fr-img-caption").length?e.parents(".fr-img-caption").first():e).hasClass("fr-dib")?"block":e.hasClass("fr-dii")?"inline":null,t=e.hasClass("fr-fil")?"left":e.hasClass("fr-fir")?"right":I(e),A(e,a,t),e.removeClass("fr-dib fr-dii fr-fir fr-fil")),C.opts.iframe&&r.on("load",C.size.syncIframe)}}function d(e){void 0===e&&(e=!0);var t,a=Array.prototype.slice.call(C.el.querySelectorAll("img")),i=[];for(r=0;r<a.length;r++)i.push(a[r].getAttribute("src")),E(a[r]).toggleClass("fr-draggable",C.opts.imageMove),""===a[r].getAttribute("class")&&a[r].removeAttribute("class"),""===a[r].getAttribute("style")&&a[r].removeAttribute("style"),a[r].parentNode&&a[r].parentNode.parentNode&&C.node.hasClass(a[r].parentNode.parentNode,"fr-img-caption")&&(t=a[r].parentNode.parentNode,C.browser.mozilla||t.setAttribute("contenteditable",!1),t.setAttribute("draggable",!1),t.classList.add("fr-draggable"),t=a[r].nextSibling)&&!C.browser.mozilla&&t.setAttribute("contenteditable",!0);if(o)for(r=0;r<o.length;r++)i.indexOf(o[r].getAttribute("src"))<0&&C.events.trigger("image.removed",[E(o[r])]);if(o&&e){for(var n=[],r=0;r<o.length;r++)n.push(o[r].getAttribute("src"));for(r=0;r<a.length;r++)n.indexOf(a[r].getAttribute("src"))<0&&C.events.trigger("image.loaded",[E(a[r])])}o=a}function D(){var i,n,r,e,t,a,o,s,l;p||(C.shared.$image_resizer?(p=C.shared.$image_resizer,g=C.shared.$img_overlay,C.events.on("destroy",function(){E("body").first().append(p.removeClass("fr-active"))},!0)):(C.shared.$image_resizer=E(document.createElement("div")).attr("class","fr-image-resizer"),p=C.shared.$image_resizer,C.events.$on(p,"mousedown",function(e){e.stopPropagation()},!0),C.opts.imageResize&&(p.append(f("nw")+f("ne")+f("sw")+f("se")),C.shared.$img_overlay=E(document.createElement("div")).attr("class","fr-image-overlay"),g=C.shared.$img_overlay,e=p.get(0).ownerDocument,E(e).find("body").first().append(g))),C.events.on("shared.destroy",function(){p.html("").removeData().remove(),p=null,C.opts.imageResize&&(g.remove(),g=null)},!0),C.helpers.isMobile()||C.events.$on(E(C.o_win),"resize",function(){S&&!S.hasClass("fr-uploading")?$(!0):S&&(D(),P(),x(!1))}),C.opts.imageResize&&(e=p.get(0).ownerDocument,C.events.$on(p,C._mousedown,".fr-handler",K),C.events.$on(E(e),C._mousemove,Y),C.events.$on(E(e.defaultView||e.parentWindow),C._mouseup,W),C.events.$on(g,"mouseleave",W),i=1,n=null,r=0,C.events.on("keydown",function(e){var t,a;S&&(t=-1!=navigator.userAgent.indexOf("Mac OS X")?e.metaKey:e.ctrlKey,((a=e.which)!==n||200<e.timeStamp-r)&&(i=1),(a==we.KEYCODE.EQUALS||C.browser.mozilla&&a==we.KEYCODE.FF_EQUALS)&&t&&!e.altKey?i=oe.call(this,e,1,1,i):(a==we.KEYCODE.HYPHEN||C.browser.mozilla&&a==we.KEYCODE.FF_HYPHEN)&&t&&!e.altKey?i=oe.call(this,e,2,-1,i):C.keys.ctrlKey(e)||a!=we.KEYCODE.ENTER||(S.before("<br>"),T(S)),n=a,r=e.timeStamp)},!0),C.events.on("keyup",function(){i=1})));S&&((e=C.$wp||C.$sc).append(p),p.data("instance",C),t=e.scrollTop()-("static"!=e.css("position")?e.offset().top:0),a=e.scrollLeft()-("static"!=e.css("position")?e.offset().left:0),a-=C.helpers.getPX(e.css("border-left-width")),t-=C.helpers.getPX(e.css("border-top-width")),C.$el.is("img")&&C.$sc.is("body")&&(a=t=0),o=N(),B()&&(o=o.find(".fr-img-wrap")),l=s=0,C.opts.iframe&&(s=C.helpers.getPX(C.$wp.find(".fr-iframe").css("padding-top")),l=C.helpers.getPX(C.$wp.find(".fr-iframe").css("padding-left"))),p.css("top",(C.opts.iframe?o.offset().top+s:o.offset().top+t)-1).css("left",(C.opts.iframe?o.offset().left+l:o.offset().left+a)-1).css("width",o.get(0).getBoundingClientRect().width).css("height",o.get(0).getBoundingClientRect().height).addClass("fr-active"))}function f(e){return'<div class="fr-handler fr-h'.concat(e,'"></div>')}function l(e){B()&&S.parents(".fr-img-caption").css("width",e),S.css("width",e)}function K(e){if(!C.core.sameInstance(p))return!0;if(e.preventDefault(),e.stopPropagation(),C.$el.find("img.fr-error").left)return!1;C.undo.canDo()||C.undo.saveStep();var t=e.pageX||e.originalEvent.touches[0].pageX;if("mousedown"==e.type){var e=C.$oel.get(0).ownerDocument,e=e.defaultView||e.parentWindow,a=!1;try{a=e.location!=e.parent.location&&!(e.$&&e.$.FE)}catch(e){}a&&e.frameElement&&(t+=C.helpers.getPX(E(e.frameElement).offset().left)+e.frameElement.clientLeft)}(i=E(this)).data("start-x",t),i.data("start-width",S.width()),i.data("start-height",S.height());a=S.width();C.opts.imageResizeWithPercent&&(e=S.parentsUntil(C.$el,C.html.blockTagsQuery()).get(0)||C.el,a=(a/E(e).outerWidth()*100).toFixed(2)+"%"),l(a),g.show(),C.popups.hideAll(),w()}function Y(e){var t,a;return!C.core.sameInstance(p)||(i&&S?(e.preventDefault(),!C.$el.find("img.fr-error").left&&!!(e=e.pageX||(e.originalEvent.touches?e.originalEvent.touches[0].pageX:null))&&(e=e-i.data("start-x"),a=i.data("start-width"),(i.hasClass("fr-hnw")||i.hasClass("fr-hsw"))&&(e=0-e),C.opts.imageResizeWithPercent?(t=S.parentsUntil(C.$el,C.html.blockTagsQuery()).get(0)||C.el,a=((a+e)/E(t).outerWidth()*100).toFixed(2),C.opts.imageRoundPercent&&(a=Math.round(a)),l("".concat(a,"%")),(t=(B()?C.helpers.getPX(S.parents(".fr-img-caption").css("width"))/E(t).outerWidth()*100:C.helpers.getPX(S.css("width"))/E(t).outerWidth()*100).toFixed(2))===a||C.opts.imageRoundPercent||l("".concat(t,"%")),S.css("height","").removeAttr("height")):(a+e>=C.opts.imageMinWidth&&(l(a+e),t=B()?C.helpers.getPX(S.parents(".fr-img-caption").css("width")):C.helpers.getPX(S.css("width"))),t!==a+e&&l(t),((S.attr("style")||"").match(/(^height:)|(; *height:)/)||S.attr("height"))&&(S.css("height",i.data("start-height")*S.width()/i.data("start-width")),S.removeAttr("height"))),D(),void C.events.trigger("image.resize",[S]))):void 0)}function W(e){if(!C.core.sameInstance(p))return!0;if(i&&S){if(e&&e.stopPropagation(),C.$el.find("img.fr-error").left)return!1;i=null,g.hide(),D(),s(),C.undo.saveStep(),C.events.trigger("image.resizeEnd",[S])}else p.removeClass("fr-active")}function U(e,t,a){C.edit.on(),S&&S.addClass("fr-error"),r[e]?H(C.language.translate(r[e])):H(C.language.translate("Something went wrong. Please try again.")),!S&&a&&y(a),C.events.trigger("image.error",[{code:e,message:r[e]},t,a])}function G(e){return e?(C.$wp&&C.events.$on(C.$wp,"scroll.image-edit",function(){S&&C.popups.isVisible("image.edit")&&(C.events.disableBlur(),s())}),!0):(e="",0<C.opts.imageEditButtons.length&&(e+='<div class="fr-buttons">\n '.concat(C.button.buildList(C.opts.imageEditButtons),"\n </div>"),C.popups.create("image.edit",{buttons:e})))}function x(e){var t,a,i=C.popups.get("image.insert");(i=i||b()).find(".fr-layer.fr-active").removeClass("fr-active").addClass("fr-pactive"),i.find(".fr-image-progress-bar-layer").addClass("fr-active"),i.find(".fr-buttons").hide(),S&&(i=N(),C.popups.setContainer("image.insert",C.$sc),t=i.offset().left,a=i.offset().top+i.height(),C.popups.show("image.insert",t,a,i.outerHeight())),void 0===e&&u(C.language.translate("Uploading"),0)}function m(e){var t=C.popups.get("image.insert");t&&(t.find(".fr-layer.fr-pactive").addClass("fr-active").removeClass("fr-pactive"),t.find(".fr-image-progress-bar-layer").removeClass("fr-active"),t.find(".fr-buttons").show(),e||C.$el.find("img.fr-error").length)&&(C.events.focus(),C.$el.find("img.fr-error").length&&(C.$el.find("img.fr-error").remove(),C.undo.saveStep(),C.undo.run(),C.undo.dropRedo()),!C.$wp&&S&&(t=S,$(!0),C.selection.setAfter(t.get(0)),C.selection.restore()),C.popups.hide("image.insert"))}function u(e,t){var a=C.popups.get("image.insert");a&&((a=a.find(".fr-image-progress-bar-layer")).find("h3").text(e+(t?" ".concat(t,"%"):"")),a.removeClass("fr-error"),t?(a.find("div").removeClass("fr-indeterminate"),a.find("div > span").css("width","".concat(t,"%"))):a.find("div").addClass("fr-indeterminate"))}function H(e){x();var t=C.popups.get("image.insert").find(".fr-image-progress-bar-layer"),t=(t.addClass("fr-error"),t.find("h3"));t.text(e),C.events.disableBlur(),t.focus()}function T(e){ue.call(e.get(0))}function F(){var e=E(this);C.popups.hide("image.insert"),e.removeClass("fr-uploading"),e.next().is("br")&&e.next().remove(),T(e),C.events.trigger("image.loaded",[e])}function h(o,e,s,l,p){l&&"string"==typeof l&&(l=C.$(l)),C.edit.off(),u(C.language.translate("Loading image")),e&&(o=C.helpers.sanitizeURL(o));e=new Image;e.onload=function(){var e,t;if(l){C.undo.canDo()||l.hasClass("fr-uploading")||C.undo.saveStep();for(var a=l.data("fr-old-src"),i=(l.data("fr-image-pasted")&&(a=null),C.$wp?((e=l.clone().removeData("fr-old-src").removeClass("fr-uploading").removeAttr("data-fr-image-pasted")).off("load"),a&&l.attr("src",a),!C.opts.trackChangesEnabled||l[0].parentNode&&"SPAN"===l[0].parentNode.tagName&&l[0].parentNode.hasAttribute("data-tracking")||C.track_changes.replaceSpecialItem(l),l.replaceWith(e)):e=l,e.get(0).attributes),n=0;n<i.length;n++){var r=i[n];(0===r.nodeName.indexOf("data-")||s&&s.hasOwnProperty(r.nodeName))&&e.removeAttr(r.nodeName)}if(void 0!==s)for(t in s)s.hasOwnProperty(t)&&"link"!=t&&e.attr("".concat(t),s[t]);e.on("load",F),e.attr("src",o),C.edit.on(),d(!1),l[0].src!=o&&C.selection.restore(),C.undo.saveStep(),C.events.disableBlur(),C.$el.blur(),C.events.trigger(a?"image.replaced":"image.inserted",[e,p])}else(e=j(o,s,F))&&(d(!1),C.undo.saveStep(),C.events.disableBlur(),C.$el.blur(),C.events.trigger("image.inserted",[e,p]))},e.onerror=function(){U(n)},x(C.language.translate("Loading image")),e.src=o}function V(t,e,a){u(C.language.translate("Loading image"));var i,n,r=this.status,o=this.response,s=this.responseXML,l=this.responseText;try{if(C.opts.imageUploadToS3||C.opts.imageUploadToAzure)if(201==r){if(C.opts.imageUploadToAzure){if(!1===C.events.trigger("image.uploadedToAzure",[this.responseURL,a,o],!0))return C.edit.on(),!1;n=e}else n=function(t){try{var e=E(t).find("Location").text(),a=E(t).find("Key").text();return!1===C.events.trigger("image.uploadedToS3",[e,a,t],!0)?(C.edit.on(),!1):e}catch(e){return U(c,t),!1}}(s);n&&h(n,!1,[],t,o||s)}else U(c,o||s,t);else 200<=r&&r<300?(i=function(t){try{var e;return!1===C.events.trigger("image.uploaded",[t],!0)?(C.edit.on(),!1):(e=JSON.parse(t)).link?e:(U(2,t),!1)}catch(e){return U(c,t),!1}}(l))&&h(i.link,!1,i,t,o||l):U(z,o||l,t)}catch(e){U(c,o||l,t)}}function X(){U(c,this.response||this.responseText||this.responseXML)}function q(e){e.lengthComputable&&(e=e.loaded/e.total*100|0,u(C.language.translate("Uploading"),e))}function j(e,t,a){var i,n=E(document.createElement("img")).attr("src",e);if(t&&void 0!==t)for(i in t)t.hasOwnProperty(i)&&"link"!=i&&(" data-".concat(i,'="').concat(t[i],'"'),n.attr("".concat(i),t[i]));e=C.opts.imageDefaultWidth,e&&"auto"!=e&&(e=C.opts.imageResizeWithPercent?"100%":"".concat(e,"px")),n.attr("style",e?"width: ".concat(e,";"):""),A(n,C.opts.imageDefaultDisplay,C.opts.imageDefaultAlign),n.on("load",a),n.on("error",a),C.edit.on(),C.events.focus(!0),C.selection.restore(),C.undo.saveStep(),C.opts.imageSplitHTML?C.markers.split():C.markers.insert(),C.html.wrap(),e=C.$el.find(".fr-marker");if(e.length)(e.parent().is("hr")||e.parent().is("IMG"))&&e.parent().after(e),C.node.isLastSibling(e)&&e.parent().hasClass("fr-deletable")&&e.insertAfter(e.parent()),e.replaceWith(n);else{if(C.opts.trackChangesEnabled)return m(!0),!1;C.$el.append(n)}return C.selection.clear(),n}function J(){C.edit.on(),m(!0)}function v(e,t){if(void 0!==e&&0<e.length){if(!1===C.events.trigger("image.beforeUpload",[e,t]))return!1;var a,i,e=e[0];if(!(null!==C.opts.imageUploadURL&&"https://i.froala.com/upload"!=C.opts.imageUploadURL||C.opts.imageUploadToS3||C.opts.imageUploadToAzure))return y=e,w=t||S,(A=new FileReader).onload=function(){var e=A.result;if(A.result.indexOf("svg+xml")<0){for(var t=atob(A.result.split(",")[1]),a=[],i=0;i<t.length;i++)a.push(t.charCodeAt(i));e=window.URL.createObjectURL(new Blob([new Uint8Array(a)],{type:y.type})),w&&w.data("fr-old-src",w.attr("src")),C.image.insert(e,!1,null,w)}else C.image.insert(e,null,null,C.image.get())},x(),A.readAsDataURL(y),!1;if(e.name||(e.name=(new Date).getTime()+"."+(e.type||"image/jpeg").replace(/image\//g,"")),e.size>C.opts.imageMaxSize)return U(5),!1;if(C.opts.imageAllowedTypes.indexOf(e.type.replace(/image\//g,""))<0)return U(R),!1;if(a=C.drag_support.formdata?C.drag_support.formdata?new FormData:null:a){if(!1!==C.opts.imageUploadToS3)for(i in a.append("key",C.opts.imageUploadToS3.keyStart+(new Date).getTime()+"-"+(e.name||"untitled")),a.append("success_action_status","201"),a.append("X-Requested-With","xhr"),a.append("Content-Type",e.type),C.opts.imageUploadToS3.params)C.opts.imageUploadToS3.params.hasOwnProperty(i)&&a.append(i,C.opts.imageUploadToS3.params[i]);for(i in C.opts.imageUploadParams)C.opts.imageUploadParams.hasOwnProperty(i)&&a.append(i,C.opts.imageUploadParams[i]);a.append(C.opts.imageUploadParam,e,e.name);var n,r=C.opts.imageUploadURL,o=C.opts.imageUploadMethod,s=(C.opts.imageUploadToS3&&(r=C.opts.imageUploadToS3.uploadURL||"https://".concat(C.opts.imageUploadToS3.region,".amazonaws.com/").concat(C.opts.imageUploadToS3.bucket)),C.opts.imageUploadToAzure&&(n=r=C.opts.imageUploadToAzure.uploadURL?"".concat(C.opts.imageUploadToAzure.uploadURL,"/").concat(e.name):encodeURI("https://".concat(C.opts.imageUploadToAzure.account,".blob.core.windows.net/").concat(C.opts.imageUploadToAzure.container,"/").concat(e.name)),C.opts.imageUploadToAzure.SASToken&&(r+=C.opts.imageUploadToAzure.SASToken),o="PUT"),C.core.getXHR(r,o));if(C.opts.imageUploadToAzure){var l,p,g,r=(new Date).toUTCString();for(i in!C.opts.imageUploadToAzure.SASToken&&C.opts.imageUploadToAzure.accessKey&&(l=C.opts.imageUploadToAzure.account,g=C.opts.imageUploadToAzure.container,C.opts.imageUploadToAzure.uploadURL&&(g=(p=C.opts.imageUploadToAzure.uploadURL.split("/")).pop(),l=p.pop().split(".")[0]),p="x-ms-blob-type:BlockBlob\nx-ms-date:".concat(r,"\nx-ms-version:2019-07-07"),g=encodeURI("/"+l+"/"+g+"/"+e.name),o=o+"\n\n\n"+e.size+"\n\n"+e.type+"\n\n\n\n\n\n\n"+p+"\n"+g,p=C.cryptoJSPlugin.cryptoJS.HmacSHA256(o,C.cryptoJSPlugin.cryptoJS.enc.Base64.parse(C.opts.imageUploadToAzure.accessKey)).toString(C.cryptoJSPlugin.cryptoJS.enc.Base64),s.setRequestHeader("Authorization","SharedKey "+l+":"+(g=p))),s.setRequestHeader("x-ms-version","2019-07-07"),s.setRequestHeader("x-ms-date",r),s.setRequestHeader("Content-Type",e.type),s.setRequestHeader("x-ms-blob-type","BlockBlob"),C.opts.imageUploadParams)C.opts.imageUploadParams.hasOwnProperty(i)&&s.setRequestHeader(i,C.opts.imageUploadParams[i]);for(i in C.opts.imageUploadToAzure.params)C.opts.imageUploadToAzure.params.hasOwnProperty(i)&&s.setRequestHeader(i,C.opts.imageUploadToAzure.params[i])}d=s,f=a,m=e,u=t||S,h=n,v=g,(b=new FileReader).onload=function(){var e=b.result;if(b.result.indexOf("svg+xml")<0){for(var t=atob(b.result.split(",")[1]),a=[],i=0;i<t.length;i++)a.push(t.charCodeAt(i));e=window.URL.createObjectURL(new Blob([new Uint8Array(a)],{type:"image/jpeg"}))}u?(u.on("load",c),u.on("error",function(){c(),E(this).off("error")}),C.edit.on(),C.undo.saveStep(),u.data("fr-old-src",u.attr("src")),u.attr("src",e)):j(e,null,c)},b.readAsDataURL(m)}}function c(){var e=E(this);e.off("load"),e.addClass("fr-uploading"),e.next().is("br")&&e.next().remove(),C.placeholder.refresh(),T(e),D(),x(),C.edit.off(),d.onload=function(){V.call(d,e,h,v)},d.onerror=X,d.upload.onprogress=q,d.onabort=J,E(e.off("abortUpload")).on("abortUpload",function(){4!=d.readyState&&(d.abort(),u?(u.attr("src",u.data("fr-old-src")),u.removeClass("fr-uploading")):e.remove(),$(!0))}),d.send(C.opts.imageUploadToAzure?m:f)}var d,f,m,u,h,v,b,y,w,A}function Q(e){if(e.is("img")&&0<e.parents(".fr-img-caption").length)return e.parents(".fr-img-caption")}function Z(e){var t=e.originalEvent.dataTransfer;if(t&&t.files&&t.files.length){var a,i,n,r,o=t.files[0];if(o&&o.type&&-1!==o.type.indexOf("image")&&0<=C.opts.imageAllowedTypes.indexOf(o.type.replace(/image\//g,"")))return C.opts.imageUpload?(C.markers.remove(),C.markers.insertAtPoint(e.originalEvent),C.$el.find(".fr-marker").replaceWith(we.MARKERS),0===C.$el.find(".fr-marker").length&&C.selection.setAtEnd(C.el),C.popups.hideAll(),C.popups.get("image.insert")||b(),a=(C.popups.setContainer("image.insert",C.$sc),e.originalEvent.pageX),i=e.originalEvent.pageY,C.opts.iframe&&(n=C.helpers.getPX(C.$wp.find(".fr-iframe").css("padding-top")),r=C.helpers.getPX(C.$wp.find(".fr-iframe").css("padding-left")),i+=C.$iframe.offset().top+n,a+=C.$iframe.offset().left+r),C.popups.show("image.insert",a,i),x(),0<=C.opts.imageAllowedTypes.indexOf(o.type.replace(/image\//g,""))?($(!0),v(t.files)):U(R),e.preventDefault(),e.stopPropagation()):(e.preventDefault(),e.stopPropagation()),!1}}function b(e){var t,a,i,n,r,o,s;return e?(C.popups.onRefresh("image.insert",L),C.popups.onHide("image.insert",M),!0):(e="",C.opts.imageUpload||-1===C.opts.imageInsertButtons.indexOf("imageUpload")||C.opts.imageInsertButtons.splice(C.opts.imageInsertButtons.indexOf("imageUpload"),1),""!==(i=C.button.buildList(C.opts.imageInsertButtons))&&(e='<div class="fr-buttons fr-tabs">'.concat(i,"</div>")),i=C.opts.imageInsertButtons.indexOf("imageUpload"),n=C.opts.imageInsertButtons.indexOf("imageByURL"),r="",0<=i&&(t=" fr-active",r='<div class="fr-image-upload-layer'.concat(t=0<=n&&n<i?"":t,' fr-layer" id="fr-image-upload-layer-').concat(C.id,'"><strong>').concat(C.language.translate("Drop image"),"</strong><br>(").concat(C.language.translate("or click"),')<div class="fr-form"><input type="file" accept="image/').concat(C.opts.imageAllowedTypes.join(", image/").toLowerCase(),'" tabIndex="-1" aria-labelledby="fr-image-upload-layer-').concat(C.id,'" role="button"></div></div>')),o="",0<=n&&(t=" fr-active",o='<div class="fr-image-by-url-layer'.concat(t=0<=i&&i<n?"":t,' fr-layer" id="fr-image-by-url-layer-').concat(C.id,'"><div class="fr-input-line"><input id="fr-image-by-url-layer-text-').concat(C.id,'" type="text" placeholder="http://" tabIndex="1" aria-required="true"></div><div class="fr-action-buttons"><button type="button" class="fr-command fr-submit" data-cmd="imageInsertByURL" tabIndex="2" role="button">').concat(C.language.translate("Insert"),"</button></div></div>")),1<=C.opts.imageInsertButtons.length&&(a=C.popups.create("image.insert",{buttons:e,upload_layer:r,by_url_layer:o,progress_bar:'<div class="fr-image-progress-bar-layer fr-layer"><h3 tabIndex="-1" class="fr-message">Uploading</h3><div class="fr-loader"><span class="fr-progress"></span></div><div class="fr-action-buttons"><button type="button" class="fr-command fr-dismiss" data-cmd="imageDismissError" tabIndex="2" role="button">OK</button></div></div>'})),C.$wp&&C.events.$on(C.$wp,"scroll",function(){S&&C.popups.isVisible("image.insert")&&P()}),s=a,C.events.$on(s,"dragover dragenter",".fr-image-upload-layer",function(e){return E(this).addClass("fr-drop"),(C.browser.msie||C.browser.edge)&&e.preventDefault(),!1},!0),C.events.$on(s,"dragleave dragend",".fr-image-upload-layer",function(e){return E(this).removeClass("fr-drop"),(C.browser.msie||C.browser.edge)&&e.preventDefault(),!1},!0),C.events.$on(s,"drop",".fr-image-upload-layer",function(e){e.preventDefault(),e.stopPropagation(),E(this).removeClass("fr-drop");var t,e=e.originalEvent.dataTransfer;e&&e.files&&((t=s.data("instance")||C).events.disableBlur(),t.image.upload(e.files),t.events.enableBlur())},!0),C.helpers.isIOS()&&C.events.$on(s,"touchstart",'.fr-image-upload-layer input[type="file"]',function(){E(this).trigger("click")},!0),C.events.$on(s,"change",'.fr-image-upload-layer input[type="file"]',function(){var e;this.files&&((e=s.data("instance")||C).events.disableBlur(),s.find("input:focus").blur(),e.events.enableBlur(),e.image.upload(this.files,S)),E(this).val("")},!0),a)}function ee(){S&&C.popups.get("image.alt").find("input").val(S.attr("alt")||"").trigger("change")}function te(){C.popups.get("image.alt")||ae();m(),C.popups.refresh("image.alt"),C.popups.setContainer("image.alt",C.$sc);var e=N(),t=e.outerWidth()/2,t=(B()&&(e=e.find(".fr-img-wrap"),t=S.outerWidth()/2),e.offset().left+t),a=e.offset().top+e.outerHeight(),e=e.outerHeight();C.opts.iframe&&B()&&(e=S?S.outerHeight():0),C.popups.show("image.alt",t,a,e,!0)}function ae(e){var t;return e?(C.popups.onRefresh("image.alt",ee),!0):(e="",e='<div class="fr-buttons fr-tabs">'.concat(C.button.buildList(C.opts.imageAltButtons),"</div>"),t="",t='<div class="fr-image-alt-layer fr-layer fr-active" id="fr-image-alt-layer-'.concat(C.id,'"><div class="fr-input-line"><input id="fr-image-alt-layer-text-').concat(C.id,'" type="text" placeholder="').concat(C.language.translate("Alternative Text"),'" tabIndex="1"></div><div class="fr-action-buttons"><button type="button" class="fr-command fr-submit" data-cmd="imageSetAlt" tabIndex="2" role="button">').concat(C.language.translate("Update"),"</button></div></div>"),e=C.popups.create("image.alt",{buttons:e,alt_layer:t}),C.$wp&&C.events.$on(C.$wp,"scroll.image-alt",function(){S&&C.popups.isVisible("image.alt")&&te()}),e)}function ie(){var e=C.popups.get("image.size"),t=S.get(0).style.height?S.get(0).style.height:"auto",a=S.get(0).style.width?S.get(0).style.width:"auto";S&&(B()&&!S.parent().get(0).style.width&&S.parent().parent(),e.find('input[name="width"]').val(a).trigger("change"),e.find('input[name="height"]').val(t).trigger("change"))}function ne(){C.popups.get("image.size")||re();m(),C.popups.refresh("image.size"),C.popups.setContainer("image.size",C.$sc);var e=N(),t=e.outerWidth()/2,a=(B()&&(e=e.find(".fr-img-wrap"),t=S.outerWidth()/2),e.outerHeight()),t=(C.opts.iframe&&B()&&(a=S?S.outerHeight():0),e.offset().left+t),e=e.offset().top+e.outerHeight();C.popups.show("image.size",t,e,a,!0)}function re(e){var t;return e?(C.popups.onRefresh("image.size",ie),!0):(e="",e='<div class="fr-buttons fr-tabs">'.concat(C.button.buildList(C.opts.imageSizeButtons),"</div>"),t="",t='<div class="fr-image-size-layer fr-layer fr-active" id="fr-image-size-layer-'.concat(C.id,'"><div class="fr-image-group"><div class="fr-input-line"><input id="fr-image-size-layer-width-\'').concat(C.id,'" type="text" name="width" placeholder="').concat(C.language.translate("Width"),'" tabIndex="1"></div><div class="fr-input-line"><input id="fr-image-size-layer-height').concat(C.id,'" type="text" name="height" placeholder="').concat(C.language.translate("Height"),'" tabIndex="1"></div></div><div class="fr-action-buttons"><button type="button" class="fr-command fr-submit" data-cmd="imageSetSize" tabIndex="2" role="button">').concat(C.language.translate("Update"),"</button></div></div>"),e=C.popups.create("image.size",{buttons:e,size_layer:t}),C.$wp&&C.events.$on(C.$wp,"scroll.image-size",function(){S&&C.popups.isVisible("image.size")&&ne()}),e)}function oe(e,t,a,i){return e.pageX=t,K.call(this,e),e.pageX=e.pageX+a*Math.floor(Math.pow(1.1,i)),Y.call(this,e),W.call(this,e),++i}function y(e){e=e||N(),!C.opts.trackChangesEnabled||C.helpers.isMobile()||e[0].parentNode&&"SPAN"===e[0].parentNode.tagName&&e[0].parentNode.hasAttribute("data-tracking")?e&&!1!==C.events.trigger("image.beforeRemove",[e])&&(C.popups.hideAll(),k(),$(!0),C.undo.canDo()||C.undo.saveStep(),e.get(0)==C.el?e.removeAttr("src"):((e.get(0).parentNode&&"A"==e.get(0).parentNode.tagName?(C.selection.setBefore(e.get(0).parentNode)||C.selection.setAfter(e.get(0).parentNode)||e.parent().after(we.MARKERS),E(e.get(0).parentNode)):(C.selection.setBefore(e.get(0))||C.selection.setAfter(e.get(0))||e.after(we.MARKERS),e)).remove(),C.html.fillEmptyBlocks(),C.selection.restore()),C.undo.saveStep()):(C.track_changes.removeSpecialItem(e),C.popups.hideAll(),$(!0))}function se(e){var t,a=e.which;return!S||a!=we.KEYCODE.BACKSPACE&&a!=we.KEYCODE.DELETE?S&&a==we.KEYCODE.ESC?(t=S,$(!0),C.selection.setAfter(t.get(0)),C.selection.restore(),e.preventDefault(),!1):!S||a!=we.KEYCODE.ARROW_LEFT&&a!=we.KEYCODE.ARROW_RIGHT?S&&a===we.KEYCODE.TAB?(e.preventDefault(),e.stopPropagation(),$(!0),!1):S&&a!=we.KEYCODE.F10&&!C.keys.isBrowserAction(e)?(e.preventDefault(),e.stopPropagation(),!1):void 0:(t=S.get(0),$(!0),a==we.KEYCODE.ARROW_LEFT?C.selection.setBefore(t):C.selection.setAfter(t),C.selection.restore(),e.preventDefault(),!1):(e.preventDefault(),e.stopPropagation(),y(),!1)}function le(e){var t;if(e&&"IMG"==e.tagName)C.node.hasClass(e,"fr-uploading")||C.node.hasClass(e,"fr-error")?e.parentNode.removeChild(e):C.node.hasClass(e,"fr-draggable")&&e.classList.remove("fr-draggable"),e.parentNode&&e.parentNode.parentNode&&C.node.hasClass(e.parentNode.parentNode,"fr-img-caption")&&((t=e.parentNode.parentNode).removeAttribute("contenteditable"),t.removeAttribute("draggable"),t.classList.remove("fr-draggable"),t=e.nextSibling)&&t.removeAttribute("contenteditable");else if(e&&e.nodeType==Node.ELEMENT_NODE)for(var a=e.querySelectorAll("img.fr-uploading, img.fr-error, img.fr-draggable"),i=0;i<a.length;i++)le(a[i])}function pe(e){if(!1===C.events.trigger("image.beforePasteUpload",[e]))E(e).removeAttr("data-fr-image-pasted");else{S=E(e),D(),s(),P(),x(),S.on("load",function(){var t=[];D(),E(C.popups.get("image.insert").get(0)).find("div.fr-active.fr-error").length<1&&x(),E(this).data("events").filter(function(e){"load"===e[0]&&t.push(e)}),t.length<=1&&E(this).off("load")});for(var e=E(e).attr("src").split(","),t=atob(e[1]),a=[],i=0;i<t.length;i++)a.push(t.charCodeAt(i));v([C.browser.safari&&!C.opts.imageUploadURL?new Blob([new Uint8Array(a)],{type:e[0].replace(/data\:/g,"")}):new Blob([new Uint8Array(a)],{type:e[0].replace(/data\:/g,"").replace(/;base64/g,"")})],S)}}function ge(){C.opts.imagePaste?C.$el.find("img[data-fr-image-pasted]").each(function(e,a){var t;C.opts.imagePasteProcess&&((t=C.opts.imageDefaultWidth)&&"auto"!=t&&(t+=C.opts.imageResizeWithPercent?"%":"px"),E(a).css("width",t).removeClass("fr-dii fr-dib fr-fir fr-fil"),A(E(a),C.opts.imageDefaultDisplay,C.opts.imageDefaultAlign)),0===a.src.indexOf("data:")?pe(a):0===a.src.indexOf("blob:")||0===a.src.indexOf("http")&&C.opts.imageUploadRemoteUrls&&C.opts.imageCORSProxy?((t=new Image).crossOrigin="Anonymous",t.onload=function(){var e=C.o_doc.createElement("CANVAS"),t=e.getContext("2d");e.height=this.naturalHeight,e.width=this.naturalWidth,t.drawImage(this,0,0),setTimeout(function(){pe(a)},0),a.src=e.toDataURL(we.IMAGE_TYPE)},C.browser.msie&&we.IMAGE_ALLOW_REGEX.test(a.src)&&(we.IMAGE_TYPE="image/"+a.src.split(we.IMAGE_ALLOW_REGEX)[1]),t.src=(0===a.src.indexOf("blob:")?"":"".concat(C.opts.imageCORSProxy,"/"))+a.src,0!==a.src.indexOf("blob:")&&C.undo.saveStep()):0!==a.src.indexOf("http")||0===a.src.indexOf("https://mail.google.com/mail")?(C.selection.save(),E(a).remove(),C.selection.restore()):E(a).removeAttr("data-fr-image-pasted")}):C.$el.find("img[data-fr-image-pasted]").remove()}function ce(e){var e=e.target.result,t=C.opts.imageDefaultWidth,e=(t&&"auto"!=t&&(t+=C.opts.imageResizeWithPercent?"%":"px"),C.undo.saveStep(),C.html.insert('<img data-fr-image-pasted="true" src="'.concat(e,'"').concat(t?' style="width: '.concat(t,';"'):"",">")),C.$el.find('img[data-fr-image-pasted="true"]'));e&&A(e,C.opts.imageDefaultDisplay,C.opts.imageDefaultAlign),C.events.trigger("paste.after")}function de(e,t){var a,i,n=new FileReader;n.onload=(a=t,(i=C.opts.imageDefaultWidth)&&"auto"!=i&&(i+=C.opts.imageResizeWithPercent?"%":"px"),C.html.insert('<img data-fr-image-pasted="true" src="'.concat(a,'"').concat(i?' style="width: '.concat(i,';"'):"",">")),(a=C.$el.find('img[data-fr-image-pasted="true"]'))&&A(a,C.opts.imageDefaultDisplay,C.opts.imageDefaultAlign),void C.events.trigger("paste.after")),n.readAsDataURL(e,t)}function fe(e){if(e&&e.clipboardData&&e.clipboardData.items){var t=(e.clipboardData||window.clipboardData).getData("text/html")||"";C.browser.mozilla&&(""===t||/<!--StartFragment-->([ ])<!--EndFragment-->/.test(t))&&(t=C.win.localStorage.getItem("fr-copied-html"));t=(new DOMParser).parseFromString(t,"text/html").querySelector("img");if(t){if(!t)return!1;var t=t.src,a=null;if(e.clipboardData.types&&-1!=[].indexOf.call(e.clipboardData.types,"text/rtf")||e.clipboardData.getData("text/rtf"))a=e.clipboardData.items[0].getAsFile();else for(var i=0;i<e.clipboardData.items.length;i++)if(a=e.clipboardData.items[i].getAsFile()){we.IMAGE_TYPE=a.type;break}return a?(de(a,t),!1):void 0}var n=null;if(e.clipboardData.types&&-1!=[].indexOf.call(e.clipboardData.types,"text/rtf")||e.clipboardData.getData("text/rtf"))n=e.clipboardData.items[0].getAsFile();else for(var r=0;r<e.clipboardData.items.length&&!(n=e.clipboardData.items[r].getAsFile());r++);if(n)return t=n,(o=new FileReader).onload=ce,o.readAsDataURL(t),!1}var o}function me(e){return e=e.replace(/<img /gi,'<img data-fr-image-pasted="true" ')}function ue(e){if("false"==E(this).parents("[contenteditable]").not(".fr-element").not(".fr-img-caption").not("body").first().attr("contenteditable"))return!0;if(e&&"touchend"==e.type&&a)return!0;if(e&&C.edit.isDisabled())return e.stopPropagation(),e.preventDefault(),!1;for(var t=0;t<we.INSTANCES.length;t++)we.INSTANCES[t]!=C&&we.INSTANCES[t].events.trigger("image.hideResizer");C.toolbar.disable(),e&&(e.stopPropagation(),e.preventDefault()),C.helpers.isMobile()&&(C.events.disableBlur(),C.$el.blur(),C.events.enableBlur()),C.opts.iframe&&C.size.syncIframe(),S=E(this),k(),D(),s(),C.browser.msie?(C.popups.areVisible()&&C.events.disableBlur(),C.win.getSelection&&(C.win.getSelection().removeAllRanges(),C.win.getSelection().addRange(C.doc.createRange()))):C.selection.clear(),C.helpers.isIOS()&&(C.events.disableBlur(),C.$el.blur()),C.button.bulkRefresh(),C.events.trigger("video.hideResizer")}function $(e){S&&(he||!0===e)&&(C.toolbar.enable(),p.removeClass("fr-active"),C.popups.hideAll(),w(),i=S=null,g)&&g.hide()}r[n]="Image cannot be loaded from the passed link.",r[2]="No link in upload response.",r[z]="Error during file upload.",r[c]="Parsing response failed.",r[5]="File is too large.",r[R]="Image file type is invalid.",r[7]="Files can be uploaded only to same domain in IE 8 and IE 9.";var he=!(r[8]="Image file is corrupted.");function ve(){he=!0}function w(){he=!1}function A(e,t,a){var i,n;!C.opts.htmlUntouched&&C.opts.useClasses?(e.removeClass("fr-fil fr-fir fr-dib fr-dii"),a&&e.addClass("fr-fi".concat(a[0])),t&&e.addClass("fr-di".concat(t[0]))):"inline"==t?(e.css({display:"inline-block",verticalAlign:"bottom",margin:C.opts.imageDefaultMargin}),"center"==a?e.css({float:"none",marginBottom:"",marginTop:"",maxWidth:"calc(100% - ".concat(2*C.opts.imageDefaultMargin,"px)"),textAlign:"center"}):"left"==a?(i="0px",(n=(n=e.parent("span.fr-img-caption").get(0))||e.parent().get(0))&&"li"===n.tagName.toLowerCase()?i="20px":n&&"p"===n.tagName.toLowerCase()&&(i="15px"),e.css({float:"left",marginLeft:0,maxWidth:"calc(100% - ".concat(C.opts.imageDefaultMargin,"px)"),textAlign:"left",marginRight:i})):e.css({float:"right",marginRight:0,maxWidth:"calc(100% - ".concat(C.opts.imageDefaultMargin,"px)"),textAlign:"right"})):"block"==t&&(e.css({display:"block",float:"none",verticalAlign:"top",margin:"".concat(C.opts.imageDefaultMargin,"px auto"),textAlign:"center"}),"left"==a?e.css({marginLeft:0,textAlign:"left"}):"right"==a&&e.css({marginRight:0,textAlign:"right"}))}function I(e){if(e=void 0===e?N():e){if(e.hasClass("fr-fil"))return"left";if(e.hasClass("fr-fir"))return"right";if(e.hasClass("fr-dib")||e.hasClass("fr-dii"))return"center";var t=e.css("float");if(e.css("float","none"),"block"==e.css("display")){if(e.css("float",""),e.css("float")!=t&&e.css("float",t),0===parseInt(e.css("margin-left"),10))return"left";if(0===parseInt(e.css("margin-right"),10))return"right"}else{if(e.css("float",""),e.css("float")!=t&&e.css("float",t),"left"==e.css("float"))return"left";if("right"==e.css("float"))return"right"}}return"center"}function be(e){var t=(e=void 0===e?N():e).css("float");return e.css("float","none"),"block"==e.css("display")?(e.css("float",""),e.css("float")!=t&&e.css("float",t),"block"):(e.css("float",""),e.css("float")!=t&&e.css("float",t),"inline")}function P(){C.popups.get("image.insert")||b();C.popups.isVisible("image.insert")||(m(),C.popups.refresh("image.insert"),C.popups.setContainer("image.insert",C.$sc));var e=N(),t=e.outerWidth()/2,t=(B()&&(e=e.find(".fr-img-wrap"),t=S.outerWidth()/2),e.offset().left+t),a=e.outerHeight(!0),e=(C.opts.iframe&&B()&&(a=S?S.outerHeight():0),e.offset().top+e.outerHeight());C.popups.show("image.insert",t,e,a,!0)}function k(){var e;S&&(C.events.disableBlur(),C.selection.clear(),(e=C.doc.createRange()).selectNode(S.get(0)),C.browser.msie&&e.collapse(!0),C.selection.get().addRange(e),C.events.enableBlur())}function ye(){return S}function N(){return B()?S.parents(".fr-img-caption").first():S}function B(){return!!S&&0<S.parents(".fr-img-caption").length}function O(e){for(var t=document.createDocumentFragment();e.firstChild;){var a=e.removeChild(e.firstChild);t.appendChild(a)}e.parentNode.replaceChild(t,e)}return{_init:function(){var i;C.events.$on(C.$el,C._mousedown,"IMG"==C.el.tagName?null:'img:not([contenteditable="false"])',function(e){if("false"==E(this).parents("contenteditable").not(".fr-element").not(".fr-img-caption").not("body").first().attr("contenteditable"))return!0;C.helpers.isMobile()||C.selection.clear(),t=!0,C.popups.areVisible()&&C.events.disableBlur(),C.browser.msie&&(C.events.disableBlur(),C.$el.attr("contenteditable",!1)),C.draggable||"touchstart"==e.type||e.preventDefault(),e.stopPropagation()}),C.events.$on(C.$el,C._mousedown,".fr-img-caption .fr-inner",function(e){C.core.hasFocus()||C.events.focus(),e.stopPropagation()}),C.events.$on(C.$el,"paste",".fr-img-caption .fr-inner",function(e){!0===C.opts.toolbarInline&&(C.toolbar.hide(),e.stopPropagation())}),C.events.$on(C.$el,C._mouseup,"IMG"==C.el.tagName?null:'img:not([contenteditable="false"])',function(e){if("false"==E(this).parents("contenteditable").not(".fr-element").not(".fr-img-caption").not("body").first().attr("contenteditable"))return!0;t&&(t=!1,e.stopPropagation(),C.browser.msie)&&(C.$el.attr("contenteditable",!0),C.events.enableBlur())}),C.events.on("keyup",function(e){var t;e.shiftKey&&""===C.selection.text().replace(/\n/g,"")&&C.keys.isArrow(e.which)&&(e=C.selection.element(),t=C.selection.endElement(),e&&"IMG"==e.tagName?T(E(e)):t&&"IMG"==t.tagName&&T(E(t)))},!0),C.events.on("drop",Z),C.events.on("element.beforeDrop",Q),C.events.on("mousedown window.mousedown",ve),C.events.on("window.touchmove",w),C.events.on("mouseup window.mouseup",function(){if(S&&!C.helpers.isMobile())return $(),!1;w()}),C.events.on("touchstart touchend",function(){if(S&&C.helpers.isMobile())return $(),!1;w()}),C.events.on("commands.mousedown",function(e){0<e.parents(".fr-toolbar").length&&$()}),C.events.on("image.resizeEnd",function(){C.opts.iframe&&C.size.syncIframe()}),C.events.on("blur image.hideResizer commands.undo commands.redo element.dropped",function(){$(!(t=!1))}),C.events.on("modals.hide",function(){S&&(k(),C.selection.clear())}),C.events.on("image.resizeEnd",function(){C.win.getSelection&&T(S)}),C.opts.imageAddNewLine&&C.events.on("image.inserted",function(e){var t=e.get(0);for(t.nextSibling&&"BR"===t.nextSibling.tagName&&(t=t.nextSibling);t&&!C.node.isElement(t);)t=C.node.isLastSibling(t)?t.parentNode:null;C.node.isElement(t)&&(C.opts.enter===we.ENTER_BR?e.after("<br>"):E(C.node.blockParent(e.get(0))).after("<".concat(C.html.defaultTag(),"><br></").concat(C.html.defaultTag(),">")))}),"IMG"==C.el.tagName&&C.$el.addClass("fr-view"),C.events.$on(C.$el,C.helpers.isMobile()&&!C.helpers.isWindowsPhone()?"touchend":"click","IMG"==C.el.tagName?null:'img:not([contenteditable="false"])',ue),C.helpers.isMobile()&&(C.events.$on(C.$el,"touchstart","IMG"==C.el.tagName?null:'img:not([contenteditable="false"])',function(){a=!1}),C.events.$on(C.$el,"touchmove",function(){a=!0})),C.$wp?(C.events.on("window.keydown keydown",se,!0),C.events.on("keyup",function(e){if(S&&e.which==we.KEYCODE.ENTER)return!1},!0),C.events.$on(C.$el,"keydown",function(){var e=C.selection.element();(e.nodeType===Node.TEXT_NODE||"BR"==e.tagName&&C.node.isLastSibling(e))&&(e=e.parentNode),C.node.hasClass(e,"fr-inner")||(C.node.hasClass(e,"fr-img-caption")||(e=E(e).parents(".fr-img-caption").get(0)),C.node.hasClass(e,"fr-img-caption")&&(C.opts.trackChangesEnabled||E(e).after(we.INVISIBLE_SPACE+we.MARKERS),C.selection.restore()))})):C.events.$on(C.$win,"keydown",se),C.events.on("toolbar.esc",function(){var e;if(S)return C.$wp?(C.events.disableBlur(),C.events.focus()):(e=S,$(!0),C.selection.setAfter(e.get(0)),C.selection.restore()),!1},!0),C.events.on("toolbar.focusEditor",function(){if(S)return!1},!0),C.events.on("window.cut window.copy",function(e){var t;S&&C.popups.isVisible("image.edit")&&!C.popups.get("image.edit").find(":focus").length&&(t=N(),B()?(t.before(we.START_MARKER),t.after(we.END_MARKER),C.selection.restore(),C.paste.saveCopiedText(t.get(0).outerHTML,t.text())):(k(),C.paste.saveCopiedText(S.get(0).outerHTML,S.attr("alt"))),"copy"==e.type?setTimeout(function(){T(S)}):($(!0),C.undo.saveStep(),setTimeout(function(){C.undo.saveStep()},0)))},!0),C.browser.msie&&C.events.on("keydown",function(e){if(!C.selection.isCollapsed()||!S)return!0;var t=e.which;t==we.KEYCODE.C&&C.keys.ctrlKey(e)?C.events.trigger("window.copy"):t==we.KEYCODE.X&&C.keys.ctrlKey(e)&&C.events.trigger("window.cut")}),C.events.$on(E(C.o_win),"keydown",function(e){var t=e.which;if(S&&t==we.KEYCODE.BACKSPACE)return e.preventDefault(),!1}),C.events.$on(C.$win,"keydown",function(e){e=e.which;S&&S.hasClass("fr-uploading")&&e==we.KEYCODE.ESC&&S.trigger("abortUpload")}),C.events.on("destroy",function(){S&&S.hasClass("fr-uploading")&&S.trigger("abortUpload")}),C.events.on("paste.before",fe),C.events.on("paste.beforeCleanup",me),C.events.on("paste.after",ge),C.events.on("html.set",e),C.events.on("html.inserted",e),e(),C.events.on("destroy",function(){o=[]}),C.events.on("html.processGet",le),C.opts.imageOutputSize&&C.events.on("html.beforeGet",function(){i=C.el.querySelectorAll("img");for(var e=0;e<i.length;e++){var t=i[e].style.width||E(i[e]).width(),a=i[e].style.height||E(i[e]).height();t&&i[e].setAttribute("width","".concat(t).replace(/px/,"")),a&&i[e].setAttribute("height","".concat(a).replace(/px/,""))}}),C.opts.iframe&&C.events.on("image.loaded",C.size.syncIframe),C.$wp&&(d(),C.events.on("contentChanged",d)),C.events.$on(E(C.o_win),"orientationchange.image",function(){setTimeout(function(){S&&T(S)},100)}),G(!0),b(!0),re(!0),ae(!0),C.events.on("node.remove",function(e){if("IMG"==e.get(0).tagName)return y(e),!1})},showInsertPopup:function(){var e,t,a=C.$tb.find('.fr-command[data-cmd="insertImage"]'),i=(i=C.popups.get("image.insert"))||b();m(),i.hasClass("fr-active")||(C.popups.refresh("image.insert"),C.popups.setContainer("image.insert",C.$tb),a.isVisible()?(e=(t=C.button.getPosition(a)).left,t=t.top,C.popups.show("image.insert",e,t,a.outerHeight())):(C.position.forSelection(i),C.popups.show("image.insert")))},showLayer:function(e){var t,a,i,n=C.popups.get("image.insert");S||C.opts.toolbarInline?S&&(a=N(),t=0,B()&&(a=a.find(".fr-img-wrap"),t=S.outerWidth()/2),i=a.offset().top+a.outerHeight(),a=a.offset().left+t):(a=(t=C.$tb.find('.fr-command[data-cmd="insertImage"]')).offset().left,i=t.offset().top+(C.opts.toolbarBottom?10:t.outerHeight()-10)),!S&&C.opts.toolbarInline&&(i=n.offset().top-C.helpers.getPX(n.css("margin-top")),n.hasClass("fr-above"))&&(i+=n.outerHeight()),n.find(".fr-layer").removeClass("fr-active"),n.find(".fr-".concat(e,"-layer")).addClass("fr-active"),C.popups.show("image.insert",a,i,S?S.outerHeight():0,B()),C.accessibility.focusPopup(n)},refreshUploadButton:function(e){var t=C.popups.get("image.insert");t&&t.find(".fr-image-upload-layer").hasClass("fr-active")&&e.addClass("fr-active").attr("aria-pressed",!0)},refreshByURLButton:function(e){var t=C.popups.get("image.insert");t&&t.find(".fr-image-by-url-layer").hasClass("fr-active")&&e.addClass("fr-active").attr("aria-pressed",!0)},upload:v,insertByURL:function(){var e,t,a=C.popups.get("image.insert").find(".fr-image-by-url-layer input");0<a.val().length&&(x(),u(C.language.translate("Loading image")),e=a.val().trim(),C.opts.imageUploadRemoteUrls&&C.opts.imageCORSProxy&&C.opts.imageUpload?((t=new XMLHttpRequest).onload=function(){200==this.status?v([new Blob([this.response],{type:this.response.type||"image/png"})],S):U(n)},t.onerror=function(){h(e,!0,[],S)},t.open("GET","".concat(C.opts.imageCORSProxy,"/").concat(e),!0),t.responseType="blob",t.send()):h(e,!0,[],S),a.val(""),a.blur())},align:function(e){var t=N();t.removeClass("fr-fir fr-fil"),!C.opts.htmlUntouched&&C.opts.useClasses?"left"==e?t.addClass("fr-fil"):"right"==e&&t.addClass("fr-fir"):A(t,be(),e),k(),D(),s(),C.selection.clear()},refreshAlign:function(e){S&&e.find("> *").first().replaceWith(C.icon.create("image-align-".concat(I())))},refreshAlignOnShow:function(e,t){S&&t.find('.fr-command[data-param1="'.concat(I(),'"]')).addClass("fr-active").attr("aria-selected",!0)},display:function(e){var t=N();t.removeClass("fr-dii fr-dib"),!C.opts.htmlUntouched&&C.opts.useClasses?"inline"==e?t.addClass("fr-dii"):"block"==e&&t.addClass("fr-dib"):A(t,e,I()),k(),D(),s(),C.selection.clear()},refreshDisplayOnShow:function(e,t){S&&t.find('.fr-command[data-param1="'.concat(be(),'"]')).addClass("fr-active").attr("aria-selected",!0)},replace:P,back:function(){S?(C.events.disableBlur(),E(".fr-popup input:focus").blur(),T(S)):(C.events.disableBlur(),C.selection.restore(),C.events.enableBlur(),C.popups.hide("image.insert"),C.toolbar.showInline())},get:ye,getEl:N,insert:h,showProgressBar:x,remove:y,hideProgressBar:m,applyStyle:function(e,t,a){if(void 0===t&&(t=C.opts.imageStyles),void 0===a&&(a=C.opts.imageMultipleStyles),!S)return!1;var i=N();a||((a=Object.keys(t)).splice(a.indexOf(e),1),i.removeClass(a.join(" "))),"object"==Ae(t[e])?(i.removeAttr("style"),i.css(t[e].style)):(i.toggleClass(e),B()&&S.hasClass(e)&&S.removeClass(e)),T(S)},showAltPopup:te,showSizePopup:ne,setAlt:function(e){var t;S&&(t=C.popups.get("image.alt"),S.attr("alt",e||t.find("input").val()||""),t.find("input:focus").blur(),T(S))},setSize:function(e,t){var a,i;S&&(a=C.popups.get("image.size"),e=e||a.find('input[name="width"]').val()||"",t=t||a.find('input[name="height"]').val()||"",i=/^[\d]+((px)|%)*$/g,S.removeAttr("width").removeAttr("height"),e.match(i)?S.css("width",e):S.css("width",""),t.match(i)?S.css("height",t):S.css("height",""),B()&&(S.parents(".fr-img-caption").removeAttr("width").removeAttr("height"),e.match(i)?S.parents(".fr-img-caption").css("width",e):S.parents(".fr-img-caption").css("width",""),t.match(i)?S.parents(".fr-img-caption").css("height",t):S.parents(".fr-img-caption").css("height","")),a&&a.find("input:focus").blur(),T(S))},toggleCaption:function(){var e;if(S&&!B()){(e=S).parent().is("a")&&(e=S.parent());var t,a=S.parents("ul")&&0<S.parents("ul").length?S.parents("ul"):S.parents("ol")&&0<S.parents("ol").length?S.parents("ol"):[],i=(0<a.length&&(g=a.find("li").length,i=S.parents("li"),r=document.createElement("li"),g-1===i.index())&&(a.append(r),r.innerHTML=" "),e.attr("style")?t=-1<(g=e.attr("style").split(":")).indexOf("width")?g[g.indexOf("width")+1].replace(";",""):"":e.attr("width")&&(t=e.attr("width")),C.opts.imageResizeWithPercent?(-1<t.indexOf("px")?null:t)||"100%":S.width()+"px"),a=(e.wrap('<div class="fr-img-space-wrap"><span '+(C.browser.mozilla?"":'contenteditable="false"')+'class="fr-img-caption '+S.attr("class")+'" style="'+(C.opts.useClasses?"":e.attr("style"))+'" draggable="false"></span></div>'),e.wrap('<span class="fr-img-wrap"></span>'),S.after('<span class="fr-inner"'.concat(C.browser.mozilla?"":' contenteditable="true"',">").concat(we.START_MARKER).concat(C.language.translate("Image Caption")).concat(we.END_MARKER,"</span>")),S.parents(".fr-img-caption").css("width",i),S.parents(".fr-img-space-wrap").length);1==a?O(document.querySelector(".fr-img-space-wrap")):1<a&&(O(document.querySelector(".fr-img-space-wrap")),O(document.querySelector(".fr-img-space-wrap2"))),$(!0),C.selection.restore()}else{if(e=N(),S.insertBefore(e),null!==e[0].querySelector("a")){for(var n,r=e[0].querySelector("a"),o=document.createElement("a"),s=0,l=r.attributes,p=l.length;s<p;s++)n=l[s],o.setAttribute(n.nodeName,n.nodeValue);S.wrap(o)}S.attr("class",e.attr("class").replace("fr-img-caption","")).attr("style",e.attr("style")),e.remove();var g=S.parents(".fr-img-space-wrap").length;1==g?O(document.querySelector(".fr-img-space-wrap")):1<g&&(O(document.querySelector(".fr-img-space-wrap")),O(document.querySelector(".fr-img-space-wrap2"))),T(S)}},hasCaption:B,exitEdit:$,edit:T}},we.DefineIcon("insertImage",{NAME:"image",SVG_KEY:"insertImage"}),we.RegisterShortcut(we.KEYCODE.P,"insertImage",null,"P"),we.RegisterCommand("insertImage",{title:"Insert Image",undo:!1,focus:!0,refreshAfterCallback:!1,popup:!0,callback:function(){this.popups.isVisible("image.insert")?(this.$el.find(".fr-marker").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide("image.insert")):this.image.showInsertPopup()},plugin:"image"}),we.DefineIcon("imageUpload",{NAME:"upload",SVG_KEY:"upload"}),we.RegisterCommand("imageUpload",{title:"Upload Image",undo:!1,focus:!1,toggle:!0,callback:function(){this.image.showLayer("image-upload")},refresh:function(e){this.image.refreshUploadButton(e)}}),we.DefineIcon("imageByURL",{NAME:"link",SVG_KEY:"insertLink"}),we.RegisterCommand("imageByURL",{title:"By URL",undo:!1,focus:!1,toggle:!0,callback:function(){this.image.showLayer("image-by-url")},refresh:function(e){this.image.refreshByURLButton(e)}}),we.RegisterCommand("imageInsertByURL",{title:"Insert Image",undo:!0,refreshAfterCallback:!1,callback:function(){this.image.insertByURL()},refresh:function(e){this.image.get()?e.text(this.language.translate("Replace")):e.text(this.language.translate("Insert"))}}),we.DefineIcon("imageDisplay",{NAME:"star",SVG_KEY:"imageDisplay"}),we.RegisterCommand("imageDisplay",{title:"Display",type:"dropdown",options:{inline:"Inline",block:"Break Text"},callback:function(e,t){this.image.display(t)},refresh:function(e){this.opts.imageTextNear||e.addClass("fr-hidden")},refreshOnShow:function(e,t){this.image.refreshDisplayOnShow(e,t)}}),we.DefineIcon("image-align",{NAME:"align-left",SVG_KEY:"alignLeft"}),we.DefineIcon("image-align-left",{NAME:"align-left",SVG_KEY:"alignLeft"}),we.DefineIcon("image-align-right",{NAME:"align-right",SVG_KEY:"alignRight"}),we.DefineIcon("image-align-center",{NAME:"align-justify",SVG_KEY:"alignCenter"}),we.DefineIcon("imageAlign",{NAME:"align-justify",SVG_KEY:"alignJustify"}),we.RegisterCommand("imageAlign",{type:"dropdown",title:"Align",options:{left:"Align Left",center