UNPKG

@lyra/form-builder

Version:
48 lines (38 loc) 1.44 kB
'use strict'; 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))); }