UNPKG

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.2 kB
/*! * froala_editor v5.0.1 (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(C){var S,o,r,s,c,a,E=C.$,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=C.popups.get("image.insert").find(".fr-image-by-url-layer input");e.val(""),S&&e.val(S.attr("src")),e.trigger("change")}function l(){var e,t;(C.popups.get("image.edit")||V())&&(C.popups.setContainer("image.edit",C.$sc),C.popups.refresh("image.edit"),e=(t=C.helpers.getImagePopupPosition(S)).top,t=t.left,S.hasClass("fr-uploading")?x():C.popups.show("image.edit",t,e,1,!0))}function W(){h()}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(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","")),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":N(e),P(e,a,t),e.removeClass("fr-dib fr-dii fr-fir fr-fil")),C.opts.iframe&&r.on("load",C.size.syncIframe)}}function m(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(c)for(r=0;r<c.length;r++)i.indexOf(c[r].getAttribute("src"))<0&&C.events.trigger("image.removed",[E(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&&C.events.trigger("image.loaded",[E(a[r])])}c=a}function R(){var e,t,a,i,n;o||ge(),S&&((a=C.$wp||C.$sc).append(o),o.data("instance",C),e=a.scrollTop()-("static"!=a.css("position")?a.offset().top:0),t=a.scrollLeft()-("static"!=a.css("position")?a.offset().left:0),t-=C.helpers.getPX(a.css("border-left-width")),e-=C.helpers.getPX(a.css("border-top-width")),C.$el.is("img")&&C.$sc.is("body")&&(t=e=0),a=k(),O()&&(a=a.find(".fr-img-wrap")),n=i=0,C.opts.iframe&&(i=C.helpers.getPX(C.$wp.find(".fr-iframe").css("padding-top")),n=C.helpers.getPX(C.$wp.find(".fr-iframe").css("padding-left"))),o.css("top",(C.opts.iframe?a.offset().top+i:a.offset().top+e)-1).css("left",(C.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()&&S.parents(".fr-img-caption").css("width",e),S.css("width",e)}function G(e){if(!C.core.sameInstance(o))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 a=C.$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=E(this)).data("start-x",t),r.data("start-width",S.width()),r.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)+"%"),u(a),s.show(),C.popups.hideAll(),T()}function H(e){var t,a;return!C.core.sameInstance(o)||(r&&S?(e.preventDefault(),!C.$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),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)),u("".concat(a,"%")),(t=(O()?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||u("".concat(t,"%")),S.css("height","").removeAttr("height")):(a+e>=C.opts.imageMinWidth&&(u(a+e),t=O()?C.helpers.getPX(S.parents(".fr-img-caption").css("width")):C.helpers.getPX(S.css("width"))),t!==a+e&&u(t),((S.attr("style")||"").match(/(^height:)|(; *height:)/)||S.attr("height"))&&(S.css("height",r.data("start-height")*S.width()/r.data("start-width")),S.removeAttr("height"))),R(),void C.events.trigger("image.resize",[S]))):void 0)}function F(e){if(!C.core.sameInstance(o))return!0;if(r&&S){if(e&&e.stopPropagation(),C.$el.find("img.fr-error").left)return!1;r=null,s.hide(),R(),l(),C.undo.saveStep(),C.events.trigger("image.resizeEnd",[S])}else o.removeClass("fr-active")}function U(e,t,a){C.edit.on(),S&&S.addClass("fr-error"),n[e]?X(C.language.translate(n[e])):X(C.language.translate("Something went wrong. Please try again.")),!S&&a&&A(a),C.events.trigger("image.error",[{code:e,message:n[e]},t,a])}function V(e){return e?(C.$wp&&C.events.$on(C.$wp,"scroll.image-edit",function(){S&&C.popups.isVisible("image.edit")&&(C.events.disableBlur(),l())}),!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||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(),S&&(i=k(),C.popups.setContainer("image.insert",C.$sc),a=(t=C.helpers.getImagePopupPosition(i)).top,C.popups.show("image.insert",t.left,a,i.outerHeight())),void 0===e&&v(C.language.translate("Uploading"),0)}function h(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,I(!0),C.selection.setAfter(t.get(0)),C.selection.restore()),C.popups.hide("image.insert"))}function v(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 X(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 D(e){ye.call(e.get(0))}function q(){var e;!f&&C.browser.mozilla||(f=!1,e=E(this),C.popups.hide("image.insert"),e.removeClass("fr-uploading"),e.next().is("br")&&e.next().remove(),D(e),C.events.trigger("image.loaded",[e]))}function b(s,e,l,p,g){p&&"string"==typeof p&&(p=C.$(p)),C.edit.off(),v(C.language.translate("Loading image")),e&&(s=C.helpers.sanitizeURL(s));e=new Image;e.onload=function(){var e,t;if(p){C.undo.canDo()||p.hasClass("fr-uploading")||C.undo.saveStep();for(var a,i=p.data("fr-old-src"),n=(p.data("fr-image-pasted")&&(i=null),C.$wp?((e=p.clone().removeData("fr-old-src").removeClass("fr-uploading").removeAttr("data-fr-image-pasted")).off("load"),i&&p.attr("src",i),!C.opts.trackChangesEnabled||p[0].parentNode&&"SPAN"===p[0].parentNode.tagName&&p[0].parentNode.hasAttribute("data-tracking")||C.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),C.edit.on(),m(!1),p[0].src!=s&&C.selection.restore(),d||C.undo.saveStep(),C.events.trigger(i?"image.replaced":"image.inserted",[e,g])}else(e=Z(s,l,q))&&(m(!1),C.undo.saveStep(),C.events.disableBlur(),C.$el.blur(),C.events.trigger("image.inserted",[e,g]))},e.onerror=function(){U(i)},x(C.language.translate("Loading image")),e.src=s}function j(e,t,a){v(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=t}else n=function(e){try{var t=E(e).find("Location").text(),a=E(e).find("Key").text();return!1===C.events.trigger("image.uploadedToS3",[t,a,e],!0)?(C.edit.on(),!1):t}catch(i){return U(g,e),!1}}(s);n&&b(n,!1,[],e,o||s)}else U(g,o||s,e);else 200<=r&&r<300?(i=function(e){try{var t;return!1===C.events.trigger("image.uploaded",[e],!0)?(C.edit.on(),!1):(t=JSON.parse(e)).link?t:(U(L,e),!1)}catch(a){return U(g,e),!1}}(l))&&b(i.link,!1,i,e,o||l):U(_,o||l,e)}catch(p){U(g,o||l,e)}}function J(){U(g,this.response||this.responseText||this.responseXML)}function Q(e){e.lengthComputable&&(e=e.loaded/e.total*100|0,v(C.language.translate("Uploading"),e))}function Z(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,";"):""),P(n,C.opts.imageDefaultDisplay,C.opts.imageDefaultAlign),f=!0,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 h(!0),!1;C.$el.append(n)}return C.selection.clear(),n}function ee(){C.edit.on(),h(!0)}function y(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&&C.opts.imageUploadURL!=B||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(M),!1;if(C.opts.imageAllowedTypes.indexOf(e.type.replace(/image\//g,""))<0)return U(K),!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)):Z(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(),D(e),R(),x(),C.edit.off(),d.onload=function(){j.call(d,e,h,v)},d.onerror=J,d.upload.onprogress=Q,d.onabort=ee,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(),I(!0))}),d.send(C.opts.imageUploadToAzure?m:f)}var d,f,m,u,h,v,b,y,w,A}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<=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(Re.MARKERS),0===C.$el.find(".fr-marker").length&&C.selection.setAtEnd(C.el),C.popups.hideAll(),C.popups.get("image.insert")||w(),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,""))?(I(!0),y(t.files)):U(K),e.preventDefault(),e.stopPropagation()):(e.preventDefault(),e.stopPropagation()),!1}}function w(e){var t,a,i,n,r,o,s;return e?(C.popups.onRefresh("image.insert",Y),C.popups.onHide("image.insert",W),!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")&&Se()}),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 ie(){S&&C.popups.get("image.alt").find("input").val(S.attr("alt")||"").trigger("change")}function ne(){C.popups.get("image.alt")||re();h(),C.popups.refresh("image.alt"),C.popups.setContainer("image.alt",C.$sc);var e=k(),t=C.helpers.getImagePopupPosition(e),a=t.top,t=t.left,e=e.outerHeight();C.opts.iframe&&O()&&(e=S?S.outerHeight():0),C.popups.show("image.alt",t,a,e,!0)}function re(e){var t;return e?(C.popups.onRefresh("image.alt",ie),!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")&&ne()}),e)}function oe(){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&&(O()&&!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 se(){C.popups.get("image.size")||le();h(),C.popups.refresh("image.size"),C.popups.setContainer("image.size",C.$sc);var e=k(),t=(e.outerWidth(),O()&&(e=e.find(".fr-img-wrap"),S.outerWidth()),e.outerHeight()),e=(C.opts.iframe&&O()&&(t=S?S.outerHeight():0),C.helpers.getImagePopupPosition(e)),a=e.top;C.popups.show("image.size",e.left,a,t,!0)}function le(e){var t;return e?(C.popups.onRefresh("image.size",oe),!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")&&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;C.shared.$image_resizer?(o=C.shared.$image_resizer,s=C.shared.$img_overlay,C.events.on("destroy",function(){E("body").first().append(o.removeClass("fr-active"))},!0)):(C.shared.$image_resizer=E(document.createElement("div")).attr("class","fr-image-resizer"),o=C.shared.$image_resizer,C.events.$on(o,"mousedown",function(e){e.stopPropagation()},!0),C.opts.imageResize&&(o.append(p("nw")+p("ne")+p("sw")+p("se")),C.shared.$img_overlay=E(document.createElement("div")).attr("class","fr-image-overlay"),s=C.shared.$img_overlay,e=o.get(0).ownerDocument,E(e).find("body").first().append(s))),C.events.on("shared.destroy",function(){o.html("").removeData().remove(),o=null,C.opts.imageResize&&(s.remove(),s=null)},!0),C.helpers.isMobile()||C.events.$on(E(C.o_win),"resize",function(){S&&!S.hasClass("fr-uploading")?I(!0):S&&(R(),Se(),x(!1))}),C.opts.imageResize&&(e=o.get(0).ownerDocument,C.events.$on(o,C._mousedown,".fr-handler",G),C.events.$on(E(e),C._mousemove,H),C.events.$on(E(e.defaultView||e.parentWindow),C._mouseup,F),C.events.$on(s,"mouseleave",F),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==Re.KEYCODE.EQUALS||C.browser.mozilla&&a==Re.KEYCODE.FF_EQUALS)&&t&&!e.altKey?i=pe.call(this,e,1,1,i):(a==Re.KEYCODE.HYPHEN||C.browser.mozilla&&a==Re.KEYCODE.FF_HYPHEN)&&t&&!e.altKey?i=pe.call(this,e,2,-1,i):C.keys.ctrlKey(e)||a!=Re.KEYCODE.ENTER||(S.before("<br>"),D(S)),n=a,r=e.timeStamp)},!0),C.events.on("keyup",function(){i=1}))}function A(e){e=e||k(),!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(),$(),I(!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(Re.MARKERS),E(e.get(0).parentNode)):(C.selection.setBefore(e.get(0))||C.selection.setAfter(e.get(0))||e.after(Re.MARKERS),e)).remove(),C.html.fillEmptyBlocks(),C.selection.restore()),C.undo.saveStep()):(C.track_changes.removeSpecialItem(e),C.popups.hideAll(),I(!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!(S=i?null:S)||t!=Re.KEYCODE.BACKSPACE&&t!=Re.KEYCODE.DELETE?S&&t==Re.KEYCODE.ESC?(a=S,I(!0),C.selection.setAfter(a.get(0)),C.selection.restore(),e.preventDefault(),!1):!S||t!=Re.KEYCODE.ARROW_LEFT&&t!=Re.KEYCODE.ARROW_RIGHT?S&&t===Re.KEYCODE.TAB?(e.preventDefault(),e.stopPropagation(),I(!0),!1):S&&t!=Re.KEYCODE.F10&&!C.keys.isBrowserAction(e)?(e.preventDefault(),e.stopPropagation(),!1):void 0:(a=S.get(0),I(!0),t==Re.KEYCODE.ARROW_LEFT?C.selection.setBefore(a):C.selection.setAfter(a),C.selection.restore(),e.preventDefault(),!1):(e.preventDefault(),e.stopPropagation(),A(),!1)}function de(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++)de(a[i])}function fe(e){if(!1===C.events.trigger("image.beforePasteUpload",[e]))E(e).removeAttr("data-fr-image-pasted");else{S=E(e),d||(R(),l()),o||ge(),x(),S.on("load",function(){var t=[];d||R(),C.popups.get("image.insert")&&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));y([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 me(){var i=C.$el.find("img[data-fr-image-pasted]");C.opts.imagePaste?i.length&&(C.selection.save(),i.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"),P(E(a),C.opts.imageDefaultDisplay,C.opts.imageDefaultAlign)),0===a.src.indexOf("data:")?fe(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(){fe(a)},0),a.src=e.toDataURL(Re.IMAGE_TYPE)},C.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(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"),e===i.length-1&&E(a).attr("data-fr-last-image-pasted","true")})):i.remove()}function ue(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&&P(e,C.opts.imageDefaultDisplay,C.opts.imageDefaultAlign),C.events.trigger("paste.after")}function he(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"]'))&&P(a,C.opts.imageDefaultDisplay,C.opts.imageDefaultAlign),void C.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;C.browser.mozilla&&(""===t||/<!--StartFragment-->([ ])<!--EndFragment-->/.test(t))&&(t=C.win.localStorage.getItem("fr-copied-html"));e=(new DOMParser).parseFromString(t,"text/html").querySelector("img");if(e&&!C.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=C.doc.createElement("div");return t.innerHTML=e,d=0<t.textContent.trim().length,e}function ye(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<Re.INSTANCES.length;t++)Re.INSTANCES[t]!=C&&Re.INSTANCES[t].events.trigger("image.hideResizer");C.toolbar.disable(),e&&(e.stopPropagation(),e.preventDefault(),d=!1),C.helpers.isMobile()&&(C.events.disableBlur(),C.$el.blur(),C.events.enableBlur()),C.opts.iframe&&C.size.syncIframe(),S=E(this),d||($(),R(),l()),C.browser.msie?(C.popups.areVisible()&&C.events.disableBlur(),C.win.getSelection&&(C.win.getSelection().removeAllRanges(),C.win.getSelection().addRange(C.doc.createRange()))):d?S.attr("data-fr-last-image-pasted")&&(S.removeAttr("data-fr-last-image-pasted"),d=!1,S=null,!C.opts.iframe&&C.core.hasFocus()||C.events.focus(),C.selection.restore(),C.keys.positionCaret()):C.selection.clear(),C.helpers.isIOS()&&(C.events.disableBlur(),C.$el.blur()),C.button.bulkRefresh(),C.events.trigger("video.hideResizer")}function I(e){S&&(we||!0===e)&&(C.toolbar.enable(),o.removeClass("fr-active"),C.popups.hideAll(),d=!1,T(),r=S=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 T(){we=!1}function P(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 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(){C.popups.get("image.insert")||w();C.popups.isVisible("image.insert")||(h(),C.popups.refresh("image.insert"),C.popups.setContainer("image.insert",C.$sc));var e=k(),t=(e&&e.outerWidth(),O()&&(e=e.find(".fr-img-wrap"),S.outerWidth()),e.outerHeight(!0)),e=(C.opts.iframe&&O()&&(t=S?S.outerHeight():0),C.helpers.getImagePopupPosition(e)),a=e.top;C.popups.show("image.insert",e.left,a,t,!0)}function $(){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 Ee(){return S}function k(){return O()?S.parents(".fr-img-caption").first():S}function O(){return!!S&&0<S.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;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._mousedown,'img:not([contenteditable="false"])',function(e){var t=this;C.browser.mozilla&&3==e.which&&(E(this).attr("contenteditable",!1),setTimeout(function(){E(t).removeAttr("contenteditable")},200))}),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?D(E(e)):t&&"IMG"==t.tagName&&D(E(t)))},!0),C.events.on("drop",ae),C.events.on("element.beforeDrop",te),C.events.on("mousedown window.mousedown",Ae),C.events.on("window.touchmove",T),C.events.on("mouseup window.mouseup",function(){if(S&&!C.helpers.isMobile())return I(),!1;T()}),C.events.on("touchstart touchend",function(){if(S&&C.helpers.isMobile())return I(),!1;T()}),C.events.on("commands.mousedown",function(e){0<e.parents(".fr-toolbar").length&&I()}),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(){I(!(t=!1))}),C.events.on("modals.hide",function(){S&&($(),C.selection.clear())}),C.events.on("image.resizeEnd",function(){C.win.getSelection&&D(S)}),C.events.on("filestack-init",function(){w()}),C.events.on("filestack-init-edit",function(){for(var e=C.$(".fr-popup:not(.fr-do-not-hide)"),t=e.length-1;0<=t;t--)e[t].parentElement.removeChild(e[t]);V()}),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===Re.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"])',ye),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",ce,!0),C.events.on("keyup",function(e){if(S&&e.which==Re.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(Re.INVISIBLE_SPACE+Re.MARKERS),C.selection.restore()))})):C.events.$on(C.$win,"keydown",ce),C.events.on("toolbar.esc",function(){var e;if(S)return C.$wp?(C.events.disableBlur(),C.events.focus()):(e=S,I(!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=k(),O()?(t.before(Re.START_MARKER),t.after(Re.END_MARKER),C.selection.restore(),C.paste.saveCopiedText(t.get(0).outerHTML,t.text())):($(),C.paste.saveCopiedText(S.get(0).outerHTML,S.attr("alt"))),"copy"==e.type?setTimeout(function(){D(S)}):(I(!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==Re.KEYCODE.C&&C.keys.ctrlKey(e)?C.events.trigger("window.copy"):t==Re.KEYCODE.X&&C.keys.ctrlKey(e)&&C.events.trigger("window.cut")}),C.events.$on(E(C.o_win),"keydown",function(e){if(C.opts.pluginsEnabled.includes("filestack")&&C.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&&(S=null)}t=e.which;if(S&&t==Re.KEYCODE.BACKSPACE)return e.preventDefault(),!1}),C.events.$on(C.$win,"keydown",function(e){e=e.which;S&&S.hasClass("fr-uploading")&&e==Re.KEYCODE.ESC&&S.trigger("abortUpload")}),C.events.on("destroy",function(){S&&S.hasClass("fr-uploading")&&S.trigger("abortUpload")}),C.events.on("paste.before",ve),C.events.on("paste.beforeCleanup",be),C.events.on("paste.after",me),C.events.on("html.set",e),C.events.on("html.inserted",e),e(),C.events.on("destroy",function(){c=[]}),C.events.on("html.processGet",de),C.opts.imageOutputSize&&C.events.on("html.beforeGet",function(){i=C.el.querySelectorAll("img");for(var e=0;e<i.length;e++){var t=parseFloat(E(i[e]).css("padding-left"))+parseFloat(E(i[e]).css("padding-right")),t=E(i[e]).width()-t,t=i[e].style.width||t,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&&(m(),C.events.on("contentChanged",m)),C.events.$on(E(C.o_win),"orientationchange.image",function(){setTimeout(function(){S&&D(S)},100)}),V(!0),w(!0),le(!0),re(!0),C.events.on("node.remove",function(e){if("IMG"==e.get(0).tagName)return A(e),!1})},showInsertPopup:function(){var e,t,a=C.$tb.find('.fr-command[data-cmd="insertImage"]'),i=(i=C.popups.get("image.insert"))||w();h(),i.hasClass("fr-active")||(C.popups.refresh("image.insert"),C.popups.setContainer("image.insert",C.$tb),a.isVisible()?(t=(e=C.button.getPosition(a)).left,C.popups.show("image.insert",t,e.top,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=k(),t=0,O()&&(a=a.find(".fr-img-wrap"),t=S.outerWidth()/2),i=(a=C.helpers.getImagePopupPosition(a)).topPosition,a=a.leftPosition+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,O()),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:y,insertByURL:function(){var e,t,a=C.popups.get("image.insert").find(".fr-image-by-url-layer input");0<a.val().length&&(x(),v(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?y([new Blob([this.response],{type:this.response.type||"image/png"})],S):U(i)},t.onerror=function(){b(e,!0,[],S)},t.open("GET","".concat(C.opts.imageCORSProxy,"/").concat(e),!0),t.responseType="blob",t.send()):b(e,!0,[],S),a.val(""),a.blur())},align:function(e){var t=k();t.removeClass("fr-fir fr-fil"),!C.opts.htmlUntouched&&C.opts.useClasses?"left"==e?t.addClass("fr-fil"):"right"==e&&t.addClass("fr-fir"):P(t,Ce(),e),$(),R(),l(),C.selection.clear()},refreshAlign:function(e){S&&e.find("> *").first().replaceWith(C.icon.create("image-align-".concat(N())))},refreshAlignOnShow:function(e,t){S&&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"),!C.opts.htmlUntouched&&C.opts.useClasses?"inline"==e?t.addClass("fr-dii"):"block"==e&&t.addClass("fr-dib"):P(t,e,N()),$(),R(),l(),C.selection.clear()},refreshDisplayOnShow:function(e,t){S&&t.find('.fr-command[data-param1="'.concat(Ce(),'"]')).addClass("fr-active").attr("aria-selected",!0)},replace:Se,back:function(){S?(C.events.disableBlur(),E(".fr-popup input:focus").blur(),D(S)):(C.events.disableBlur(),C.selection.restore(),C.events.enableBlur(),C.popups.hide("image.insert"),C.toolbar.showInline())},get:Ee,getEl:k,insert:b,showProgressBar:x,remove:A,hideProgressBar:h,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=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()&&S.hasClass(e)&&S.removeClass(e)),D(S)},showAltPopup:ne,showSizePopup:se,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(),D(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",""),O()&&(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(),D(S))},toggleCaption:function(){var e,t=C.$el.get(0),a=["fr-dii","fr-dib","fr-fil","fr-fir"];if(S&&!O()){(e=S).parent().is("a")&&(e=S.parent());var i=S.parents("ul")&&0<S.parents("ul").length?S.parents("ul"):S.parents("ol")&&0<S.parents("ol").length?S.parents("ol"):[],n=(0<i.length&&(n=i.find("li").length,r=S.parents("li"),o=document.createElement("li"),n-1===r.index())&&(i.append(o),o.innerHTML="&nbsp;"),(S.attr("class")||"").split(/\s+/)),r=n.filter(function(e){return a.includes(e)}),o=(S.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")),C.opts.imageResizeWithPercent?(-1<d.indexOf("px")?null:d)||"100%":S.width()+"px"),n=(e.wrap('<div class="fr-img-space-wrap"><span '+(C.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>'),S.after('<span class="fr-inner"'.concat(C.browser.mozilla?"":' contenteditable="true"',">").concat(Re.START_MARKER).concat(C.language.translate("Image Caption")).concat(Re.END_MARKER,"</span>")),S.parents(".fr-img-caption").css("width",o),S.parents(".fr-img-space-wrap").length);1==n?z(t.querySelector(".fr-img-