Skip to content
This repository has been archived by the owner on Jun 26, 2020. It is now read-only.

Commit

Permalink
Merge pull request #11 from ckeditor/t/1
Browse files Browse the repository at this point in the history
Feature: Initial implementation. Closes #1.
  • Loading branch information
Piotr Jasiun authored Apr 12, 2017
2 parents f661a87 + 387ea3f commit 98976f0
Show file tree
Hide file tree
Showing 17 changed files with 1,788 additions and 6 deletions.
27 changes: 21 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,30 @@
"version": "0.0.1",
"description": "Upload Feature for CKEditor 5.",
"keywords": [],
"dependencies": {},
"dependencies": {
"@ckeditor/ckeditor5-core": "^0.7.0",
"@ckeditor/ckeditor5-engine": "^0.8.0",
"@ckeditor/ckeditor5-ui": "^v0.7.1",
"@ckeditor/ckeditor5-utils": "^0.8.0"
},
"devDependencies": {
"@ckeditor/ckeditor5-dev-lint": "^2.0.2",
"gulp": "^3.9.1",
"guppy-pre-commit": "^0.4.0"
"@ckeditor/ckeditor5-basic-styles": "^0.8.0",
"@ckeditor/ckeditor5-clipboard": "^0.5.0",
"@ckeditor/ckeditor5-dev-lint": "^2.0.2",
"@ckeditor/ckeditor5-editor-classic": "^0.7.2",
"@ckeditor/ckeditor5-enter": "^0.9.0",
"@ckeditor/ckeditor5-heading": "^0.9.0",
"@ckeditor/ckeditor5-image": "^0.5.0",
"@ckeditor/ckeditor5-list": "^0.6.0",
"@ckeditor/ckeditor5-paragraph": "^0.7.0",
"@ckeditor/ckeditor5-typing": "^0.9.0",
"@ckeditor/ckeditor5-undo": "^0.8.0",
"gulp": "^3.9.1",
"guppy-pre-commit": "^0.4.0"
},
"engines": {
"node": ">=6.0.0",
"npm": ">=3.0.0"
"node": ">=6.0.0",
"npm": ">=3.0.0"
},
"author": "CKSource (http://cksource.com/)",
"license": "(GPL-2.0 OR LGPL-2.1 OR MPL-1.1)",
Expand Down
89 changes: 89 additions & 0 deletions src/filereader.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/**
* @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md.
*/

/**
* @module upload/filereader
*/

/* globals window */

import ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';
import mix from '@ckeditor/ckeditor5-utils/src/mix';

/**
* FileReader class - wrapper over native FileReader.
*/
export default class FileReader {
constructor() {
const reader = new window.FileReader();

/**
* Instance of native FileReader.
*
* @private
* @member {FileReader} #_reader
*/
this._reader = reader;

/**
* Number of bytes loaded.
*
* @readonly
* @observable
* @member {Number} #loaded
*/
this.set( 'loaded', 0 );

reader.onprogress = evt => {
this.loaded = evt.loaded;
};
}

/**
* Returns error that occurred during file reading.
*
* @returns {Error}
*/
get error() {
return this._reader.error;
}

/**
* Reads provided file.
*
* @param {File} file Native File object.
* @returns {Promise} Returns a promise that will resolve with file's contents. Promise can be rejected in case of
* error or when reading process is aborted.
*/
read( file ) {
const reader = this._reader;
this.total = file.size;

return new Promise( ( resolve, reject ) => {
reader.onload = () => {
resolve( reader.result );
};

reader.onerror = () => {
reject( 'error' );
};

reader.onabort = () => {
reject( 'aborted' );
};

this._reader.readAsDataURL( file );
} );
}

/**
* Aborts file reader.
*/
abort() {
this._reader.abort();
}
}

mix( FileReader, ObservableMixin );
Loading

0 comments on commit 98976f0

Please sign in to comment.