UNPKG

@firestitch/froala

Version:

The next generation Javascript WYSIWYG HTML rich text editor made by devs for devs. High performance and modern design make it easy to use for developers and loved by users.

3 lines (2 loc) 11.8 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("froala-editor")):"function"==typeof define&&define.amd?define(["froala-editor"],t):t(e.FroalaEditor)}(this,function(f){"use strict";f=f&&f.hasOwnProperty("default")?f.default:f,Object.assign(f.POPUP_TEMPLATES,{"file.insert":"[_BUTTONS_][_UPLOAD_LAYER_][_PROGRESS_BAR_]"}),Object.assign(f.DEFAULTS,{fileUpload:!0,fileUploadURL:null,fileUploadParam:"file",fileUploadParams:{},fileUploadToS3:!1,fileUploadToAzure:!1,fileUploadMethod:"POST",fileMaxSize:10485760,fileAllowedTypes:["*"],fileInsertButtons:["fileBack","|"],fileUseSelectedText:!1}),f.PLUGINS.file=function(g){var i,v=g.$,h="https://i.froala.com/upload",m=2,U=3,b=4,y=5,T=6,a={};function A(){var e=g.popups.get("file.insert");(e=e||s()).find(".fr-layer.fr-active").removeClass("fr-active").addClass("fr-pactive"),e.find(".fr-file-progress-bar-layer").addClass("fr-active"),e.find(".fr-buttons").hide(),t(g.language.translate("Uploading"),0)}function r(e){var t=g.popups.get("file.insert");t&&(t.find(".fr-layer.fr-pactive").addClass("fr-active").removeClass("fr-pactive"),t.find(".fr-file-progress-bar-layer").removeClass("fr-active"),t.find(".fr-buttons").show(),e)&&(g.events.focus(),g.popups.hide("file.insert"))}function t(e,t){var o=g.popups.get("file.insert");o&&((o=o.find(".fr-file-progress-bar-layer")).find("h3").text(e+(t?" ".concat(t,"%"):"")),o.removeClass("fr-error"),t?(o.find("div").removeClass("fr-indeterminate"),o.find("div > span").css("width","".concat(t,"%"))):o.find("div").addClass("fr-indeterminate"))}function S(e,t,o){g.edit.on(),g.events.focus(!0),g.selection.restore(),g.opts.fileUseSelectedText&&g.selection.text().length&&(t=g.selection.text()),g.html.insert('<a href="'.concat(e,'" target="_blank" id="fr-inserted-file" class="fr-file">').concat(t,"</a>"));e=g.$el.find("#fr-inserted-file");e.removeAttr("id"),g.popups.hide("file.insert"),g.undo.saveStep(),p(),g.events.trigger("file.inserted",[e,o])}function P(){w(b,this.response||this.responseText||this.responseXML)}function k(e){e.lengthComputable&&(e=e.loaded/e.total*100|0,t(g.language.translate("Uploading"),e))}function w(e,t){var o,i;g.edit.on(),o=g.language.translate("Something went wrong. Please try again."),A(),(i=g.popups.get("file.insert").find(".fr-file-progress-bar-layer")).addClass("fr-error"),(i=i.find("h3")).text(o),g.events.disableBlur(),i.focus(),g.events.trigger("file.error",[{code:e,message:a[e]},t])}function C(){g.edit.on(),r(!0)}function n(e){if(void 0!==e&&0<e.length){var t=e[0].type;if(e[0].name&&e[0].name.endsWith(".msg")&&(t="application/vnd.ms-outlook"),!1===g.events.trigger("file.beforeUpload",[e]))return!1;var o,i,a=e[0];if(!(null!==g.opts.fileUploadURL&&g.opts.fileUploadURL!==h||g.opts.fileUploadToS3||g.opts.fileUploadToAzure))return u=a,(c=new FileReader).onload=function(){c.result;for(var e=atob(c.result.split(",")[1]),t=[],o=0;o<e.length;o++)t.push(e.charCodeAt(o));var i=u.type;u.name&&u.name.endsWith(".msg")&&(i="application/vnd.ms-outlook"),i=window.URL.createObjectURL(new Blob([new Uint8Array(t)],{type:i})),g.file.insert(i,u.name,null)},A(),c.readAsDataURL(u),!1;if(a.size>g.opts.fileMaxSize)return w(y),!1;if(g.opts.fileAllowedTypes.indexOf("*")<0&&g.opts.fileAllowedTypes.indexOf(t.replace(/file\//g,""))<0)return w(T),!1;if(o=g.drag_support.formdata?g.drag_support.formdata?new FormData:null:o){if(!1!==g.opts.fileUploadToS3)for(i in o.append("key",g.opts.fileUploadToS3.keyStart+(new Date).getTime()+"-"+(a.name||"untitled")),o.append("success_action_status","201"),o.append("X-Requested-With","xhr"),o.append("Content-Type",t),g.opts.fileUploadToS3.params)g.opts.fileUploadToS3.params.hasOwnProperty(i)&&o.append(i,g.opts.fileUploadToS3.params[i]);for(i in g.opts.fileUploadParams)g.opts.fileUploadParams.hasOwnProperty(i)&&o.append(i,g.opts.fileUploadParams[i]);o.append(g.opts.fileUploadParam,a);var r,e=g.opts.fileUploadURL,n=(g.opts.fileUploadToS3&&(e=g.opts.fileUploadToS3.uploadURL||"https://".concat(g.opts.fileUploadToS3.region,".amazonaws.com/").concat(g.opts.fileUploadToS3.bucket)),g.opts.fileUploadMethod),s=(g.opts.fileUploadToAzure&&(e=g.opts.fileUploadToAzure.uploadURL?"".concat(g.opts.fileUploadToAzure.uploadURL,"/").concat(a.name):encodeURI("https://".concat(g.opts.fileUploadToAzure.account,".blob.core.windows.net/").concat(g.opts.fileUploadToAzure.container,"/").concat(a.name)),r=e,g.opts.fileUploadToAzure.SASToken&&(e+=g.opts.fileUploadToAzure.SASToken),n="PUT"),g.core.getXHR(e,n));if(g.opts.fileUploadToAzure){var l,p,f,e=(new Date).toUTCString();for(i in!g.opts.fileUploadToAzure.SASToken&&g.opts.fileUploadToAzure.accessKey&&(l=g.opts.fileUploadToAzure.account,d=g.opts.fileUploadToAzure.container,g.opts.fileUploadToAzure.uploadURL&&(d=(p=g.opts.fileUploadToAzure.uploadURL.split("/")).pop(),l=p.pop().split(".")[0]),p="x-ms-blob-type:BlockBlob\nx-ms-date:".concat(e,"\nx-ms-version:2019-07-07"),d=encodeURI("/"+l+"/"+d+"/"+a.name),n=n+"\n\n\n"+a.size+"\n\n"+t+"\n\n\n\n\n\n\n"+p+"\n"+d,p=g.cryptoJSPlugin.cryptoJS.HmacSHA256(n,g.cryptoJSPlugin.cryptoJS.enc.Base64.parse(g.opts.fileUploadToAzure.accessKey)).toString(g.cryptoJSPlugin.cryptoJS.enc.Base64),f=p,s.setRequestHeader("Authorization","SharedKey "+l+":"+p)),s.setRequestHeader("x-ms-version","2019-07-07"),s.setRequestHeader("x-ms-date",e),s.setRequestHeader("Content-Type",t),s.setRequestHeader("x-ms-blob-type","BlockBlob"),g.opts.fileUploadParams)g.opts.fileUploadParams.hasOwnProperty(i)&&s.setRequestHeader(i,g.opts.fileUploadParams[i]);for(i in g.opts.fileUploadToAzure.params)g.opts.fileUploadToAzure.params.hasOwnProperty(i)&&s.setRequestHeader(i,g.opts.fileUploadToAzure.params[i])}s.onload=function(){!function(e,t,o){var i,a,r=this.status,n=this.response,s=this.responseXML,l=this.responseText;try{if(g.opts.fileUploadToS3||g.opts.fileUploadToAzure)if(201===r){if(g.opts.fileUploadToAzure){if(!1===g.events.trigger("file.uploadedToAzure",[this.responseURL,o,n],!0))return g.edit.on(),!1;a=t}else a=function(t){try{var e=v(t).find("Location").text(),o=v(t).find("Key").text();return!1===g.events.trigger("file.uploadedToS3",[e,o,t],!0)?(g.edit.on(),!1):e}catch(e){return w(b,t),!1}}(s);a&&S(a,e,n||s)}else w(b,n||s);else 200<=r&&r<300?(i=function(t){try{var e;return!1===g.events.trigger("file.uploaded",[t],!0)?(g.edit.on(),!1):(e=JSON.parse(t)).link?e:(w(m,t),!1)}catch(e){return w(b,t),!1}}(l))&&S(i.link,e,n||l):w(U,n||l)}catch(e){w(b,n||l)}}.call(s,a.name,r,f)},s.onerror=P,s.upload.onprogress=k,s.onabort=C,A();var d=g.popups.get("file.insert");d&&(d.off("abortUpload"),d.on("abortUpload",function(){4!==s.readyState&&s.abort()})),s.send(g.opts.fileUploadToAzure?a:o)}}var u,c}function o(){r()}function s(e){var t;return e?(g.popups.onHide("file.insert",o),!0):(g.opts.fileUpload||g.opts.fileInsertButtons.splice(g.opts.fileInsertButtons.indexOf("fileUpload"),1),e="",e={buttons:'<div class="fr-buttons fr-tabs">'.concat(g.button.buildList(g.opts.fileInsertButtons),"</div>"),upload_layer:e=g.opts.fileUpload?'<div class="fr-file-upload-layer fr-layer fr-active" id="fr-file-upload-layer-'.concat(g.id,'"><strong>').concat(g.language.translate("Drop file"),"</strong><br>(").concat(g.language.translate("or click"),')<div class="fr-form"><input type="file" name="').concat(g.opts.fileUploadParam,'" accept="').concat(0<=g.opts.fileAllowedTypes.indexOf("*")?"/":"").concat(g.opts.fileAllowedTypes.join(", ").toLowerCase(),'" tabIndex="-1" aria-labelledby="fr-file-upload-layer-').concat(g.id,'" role="button"></div></div>'):e,progress_bar:'<div class="fr-file-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="fileDismissError" tabIndex="2" role="button">OK</button></div></div>'},e=g.popups.create("file.insert",e),t=e,g.events.$on(t,"dragover dragenter",".fr-file-upload-layer",function(){return v(this).addClass("fr-drop"),!1},!0),g.events.$on(t,"dragleave dragend",".fr-file-upload-layer",function(){return v(this).removeClass("fr-drop"),!1},!0),g.events.$on(t,"drop",".fr-file-upload-layer",function(e){e.preventDefault(),e.stopPropagation(),v(this).removeClass("fr-drop");e=e.originalEvent.dataTransfer;e&&e.files&&(t.data("instance")||g).file.upload(e.files)},!0),g.helpers.isIOS()&&g.events.$on(t,"touchstart",'.fr-file-upload-layer input[type="file"]',function(){v(this).trigger("click")}),g.events.$on(t,"change",'.fr-file-upload-layer input[type="file"]',function(){var e;this.files&&((e=t.data("instance")||g).events.disableBlur(),t.find("input:focus").blur(),e.events.enableBlur(),e.file.upload(this.files)),v(this).val("")},!0),e)}function e(e){g.node.hasClass(e,"fr-file")}function l(e){var t=e.originalEvent.dataTransfer;if(t&&t.files&&t.files.length){var o=t.files[0];if(o&&void 0!==o.type){if(o.type.indexOf("image")<0)return g.opts.fileUpload?(g.markers.remove(),g.markers.insertAtPoint(e.originalEvent),g.$el.find(".fr-marker").replaceWith(f.MARKERS),g.popups.hideAll(),g.popups.get("file.insert")||s(),g.popups.setContainer("file.insert",g.$sc),g.popups.show("file.insert",e.originalEvent.pageX,e.originalEvent.pageY),A(),n(t.files),e.preventDefault(),e.stopPropagation()):(e.preventDefault(),e.stopPropagation()),!1}else o.type.indexOf("image")<0&&(e.preventDefault(),e.stopPropagation())}}function p(){for(var e=Array.prototype.slice.call(g.el.querySelectorAll("a.fr-file")),t=[],o=0;o<e.length;o++)t.push(e[o].getAttribute("href"));if(i)for(o=0;o<i.length;o++)t.indexOf(i[o].getAttribute("href"))<0&&g.events.trigger("file.unlink",[i[o]]);i=e}return a[1]="File cannot be loaded from the passed link.",a[m]="No link in upload response.",a[U]="Error during file upload.",a[b]="Parsing response failed.",a[y]="File is too large.",a[T]="File file type is invalid.",a[7]="Files can be uploaded only to same domain in IE 8 and IE 9.",{_init:function(){g.events.on("drop",l),g.events.$on(g.$win,"keydown",function(e){var e=e.which,t=g.popups.get("file.insert");t&&e===f.KEYCODE.ESC&&t.trigger("abortUpload")}),g.events.on("destroy",function(){var e=g.popups.get("file.insert");e&&e.trigger("abortUpload")}),g.events.on("link.beforeRemove",e),g.$wp&&(p(),g.events.on("contentChanged",p)),s(!0)},showInsertPopup:function(){var e,t,o=g.$tb.find('.fr-command[data-cmd="insertFile"]'),i=(i=g.popups.get("file.insert"))||s();r(),i.hasClass("fr-active")||(g.popups.refresh("file.insert"),g.popups.setContainer("file.insert",g.$tb),o.isVisible?(e=(t=g.button.getPosition(o)).left,t=t.top,g.popups.show("file.insert",e,t,o.outerHeight())):(g.position.forSelection(i),g.popups.show("file.insert")))},upload:n,insert:S,back:function(){g.events.disableBlur(),g.selection.restore(),g.events.enableBlur(),g.popups.hide("file.insert"),g.toolbar.showInline()},hideProgressBar:r}},f.DefineIcon("insertFile",{NAME:"file-o",FA5NAME:"file",SVG_KEY:"insertFile"}),f.RegisterCommand("insertFile",{title:"Upload File",undo:!1,focus:!0,refreshAfterCallback:!1,popup:!0,callback:function(){this.popups.isVisible("file.insert")?(this.$el.find(".fr-marker").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide("file.insert")):this.file.showInsertPopup()},plugin:"file"}),f.DefineIcon("fileBack",{NAME:"arrow-left",SVG_KEY:"back"}),f.RegisterCommand("fileBack",{title:"Back",undo:!1,focus:!1,back:!0,refreshAfterCallback:!1,callback:function(){this.file.back()},refresh:function(e){this.opts.toolbarInline?(e.removeClass("fr-hidden"),e.next(".fr-separator").removeClass("fr-hidden")):(e.addClass("fr-hidden"),e.next(".fr-separator").addClass("fr-hidden"))}}),f.RegisterCommand("fileDismissError",{title:"OK",callback:function(){this.file.hideProgressBar(!0)}})}); //# sourceMappingURL=file.min.min.js.map