@lyra/form-builder
Version:
Lyra form builder
48 lines (38 loc) • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = rotateImage;
var _rxjs = require('rxjs');
var _operators = require('rxjs/operators');
var _orient = require('./orient');
var _orient2 = _interopRequireDefault(_orient);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// The eslint import plugin doesn't work well with opaque types
// https://github.com/benmosher/eslint-plugin-import/issues/921
// https://github.com/gajus/eslint-plugin-flowtype/issues/260
// eslint-disable-next-line import/named
/*:: import type {OrientationId} from './orient'*/
function loadImage(url /*: string*/) {
/* global window */
return new _rxjs.Observable(observer => {
const image = new window.Image();
//console.time("read image");
image.onerror = () => {
observer.error(new Error(`Could not load image from url "${url}". Image may be of an unsupported format`));
};
image.onload = () => {
//console.timeEnd("read image");
observer.next(image);
observer.complete();
};
image.src = url;
return () => {
// todo: cancel loading (if possible?)
};
});
}
function rotateImage(file /*: File*/, orientation /*: OrientationId*/) {
/* global window */
return loadImage(window.URL.createObjectURL(file)).pipe((0, _operators.mergeMap)(image => (0, _orient2.default)(image, orientation)));
}