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