UNPKG

@rickx/ckeditor5-upload-adapter

Version:
14 lines (10 loc) 2.67 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('ckeditor5')) : typeof define === 'function' && define.amd ? define(['exports', 'ckeditor5'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@rickx/ckeditor5-upload-adapter"] = {}, global.CKEDITOR)); })(this, (function (exports, ckeditor5) { 'use strict'; class s extends ckeditor5.Plugin{static get requires(){return [ckeditor5.FileRepository]}static get pluginName(){return "CustomUploadAdapter"}init(){const t=this.editor.config.get("customUpload");t&&(t.onUpload?this.editor.plugins.get(ckeditor5.FileRepository).createUploadAdapter=e=>new o(e,t):console.warn("custom-upload-adapter-missing-onupload"));}}let o=class{loader;options;constructor(t,e){this.loader=t,this.options=e;}async upload(){const t=await this.loader.file,e=await this.options.onUpload(t),s=e.url?{default:e.url}:e.urls;return {...e,urls:s}}abort(){this.options.onAbort&&this.options.onAbort();}};class r extends ckeditor5.Plugin{static get requires(){return [ckeditor5.FileRepository]}static get pluginName(){return "ImageUploadAdapter"}init(){const t=this.editor.config.get("imageUpload");t&&(t.uploadUrl?this.editor.plugins.get(ckeditor5.FileRepository).createUploadAdapter=e=>new i(e,t):console.warn("image-upload-adapter-missing-uploadurl"));}}class i{loader;options;xhr;constructor(t,e){this.loader=t,this.options=e;}async upload(){const t=await this.loader.file;return new Promise(((e,s)=>{this._initRequest(),this._initListeners(e,s,t),this._sendRequest(t);}))}abort(){this.xhr&&this.xhr.abort();}_initRequest(){const t=this.xhr=new XMLHttpRequest;t.open("POST",this.options.uploadUrl,true),t.responseType="json";}_initListeners(t,e,s){const o=this.xhr,r=this.loader,i=`Couldn't upload file: ${s.name}.`;o.addEventListener("error",(()=>e(i))),o.addEventListener("abort",(()=>e())),o.addEventListener("load",(()=>{const s=o.response;if(!s||s.error)return e(s&&s.error&&s.error.message?s.error.message:i);const r=s.url?{default:s.url}:s.urls;t({...s,urls:r});})),o.upload&&o.upload.addEventListener("progress",(t=>{t.lengthComputable&&(r.uploadTotal=t.total,r.uploaded=t.loaded);}));}_sendRequest(t){const e=this.options.headers||{},s=this.options.params||{},o=this.options.withCredentials||false;for(const t of Object.keys(e))this.xhr.setRequestHeader(t,e[t]);this.xhr.withCredentials=o;const r=new FormData;r.append("upload",t);for(const t of Object.keys(s))s[t]&&r.append(t,s[t]);this.xhr.send(r);}} exports.CustomUploadAdapter = s; exports.ImageUploadAdapter = r; })); //# sourceMappingURL=index.umd.js.map