Last active
May 26, 2019 11:45
-
-
Save f1ames/f0d154e2a1fbeefcac5bb4dff20920ec to your computer and use it in GitHub Desktop.
Base64UploadAdapter CKEditor5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. | |
* For licensing, see LICENSE.md. | |
*/ | |
/* globals window */ | |
/** | |
* @module adapter-base64/uploadadapter | |
*/ | |
import Plugin from '@ckeditor/ckeditor5-core/src/plugin'; | |
import FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository'; | |
/** | |
* @extends module:core/plugin~Plugin | |
*/ | |
export default class Base64UploadAdapter extends Plugin { | |
/** | |
* @inheritDoc | |
*/ | |
static get requires() { | |
return [ FileRepository ]; | |
} | |
/** | |
* @inheritDoc | |
*/ | |
static get pluginName() { | |
return 'Base64UploadAdapter'; | |
} | |
/** | |
* @inheritDoc | |
*/ | |
init() { | |
// Register Base64UploadAdapter | |
this.editor.plugins.get( FileRepository ).createUploadAdapter = loader => new UploadAdapter( loader, this.editor.t ); | |
} | |
} | |
/** | |
* Upload adapter for Base64. | |
* | |
* @private | |
* @implements module:upload/filerepository~UploadAdapter | |
*/ | |
class UploadAdapter { | |
/** | |
* Creates a new adapter instance. | |
* | |
* @param {module:upload/filerepository~FileLoader} loader | |
* @param {module:utils/locale~Locale#t} t | |
*/ | |
constructor( loader, t ) { | |
/** | |
* FileLoader instance to use during the upload. | |
* | |
* @member {module:upload/filerepository~FileLoader} #loader | |
*/ | |
this.loader = loader; | |
/** | |
* Locale translation method. | |
* | |
* @member {module:utils/locale~Locale#t} #t | |
*/ | |
this.t = t; | |
} | |
/** | |
* Starts the upload process. | |
* | |
* @see module:upload/filerepository~UploadAdapter#upload | |
* @returns {Promise} | |
*/ | |
upload() { | |
return new Promise( ( resolve, reject ) => { | |
const reader = this.reader = new window.FileReader(); | |
reader.onload = function() { | |
resolve( { default: reader.result } ); | |
}; | |
reader.onerror = function( error ) { | |
reject( error ); | |
}; | |
reader.onabort = function() { | |
reject(); | |
}; | |
reader.readAsDataURL( this.loader.file ); | |
} ); | |
} | |
/** | |
* Aborts the upload process. | |
* | |
* @see module:upload/filerepository~UploadAdapter#abort | |
* @returns {Promise} | |
*/ | |
abort() { | |
if ( this.reader ) { | |
this.reader.abort(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment