UNPKG

@cause-911/core

Version:

Run `npm install @cause-911/core --save` to add this library to your project

132 lines 10.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import * as i0 from "@angular/core"; var ImageService = /** @class */ (function () { function ImageService() { } /** * @param {?} file * @param {?=} maxWidth * @param {?=} maxHeight * @return {?} */ ImageService.prototype.compress = /** * @param {?} file * @param {?=} maxWidth * @param {?=} maxHeight * @return {?} */ function (file, maxWidth, maxHeight) { var _this = this; if (maxWidth === void 0) { maxWidth = 0; } if (maxHeight === void 0) { maxHeight = 0; } /** @type {?} */ var fileName = file.name; /** @type {?} */ var reader = new FileReader(); return new Observable((/** * @param {?} observer * @return {?} */ function (observer) { reader.readAsDataURL(file); reader.onload = (/** * @param {?} e * @return {?} */ function (e) { /** @type {?} */ var image = new Image(); image.src = e.target['result'].toString(); image.onload = (/** * @return {?} */ function () { /** @type {?} */ var ratio = _this.findRatio(image, maxWidth, maxHeight); if (ratio !== null) { /** @type {?} */ var elem = document.createElement('canvas'); elem.width = ratio.width; elem.height = ratio.height; /** @type {?} */ var ctx = elem.getContext('2d'); ctx.drawImage(image, 0, 0, ratio.width, ratio.height); ctx.canvas.toBlob((/** * @param {?} blob * @return {?} */ function (blob) { /** @type {?} */ var resizeFile = new File([blob], fileName, { type: file.type, lastModified: Date.now() }); observer.next(resizeFile); }), file.type, 1); } else { observer.next(file); } }); }); })); }; /** * @private * @param {?} image * @param {?=} maxWidth * @param {?=} maxHeight * @return {?} */ ImageService.prototype.findRatio = /** * @private * @param {?} image * @param {?=} maxWidth * @param {?=} maxHeight * @return {?} */ function (image, maxWidth, maxHeight) { if (maxWidth === void 0) { maxWidth = 0; } if (maxHeight === void 0) { maxHeight = 0; } if (maxWidth === 0 && maxHeight === 0) { return null; } /** @type {?} */ var aspectRatio = (image.width / image.height); /** @type {?} */ var aspect = aspectRatio > 1 ? 'horizontal' : 'vertical'; maxWidth = maxWidth || image.width; maxHeight = maxHeight || image.height; if (image.width < maxWidth && image.height < maxHeight) { return null; } if (aspect === 'horizontal' && maxWidth < image.width) { return { width: maxWidth, height: (maxWidth / aspectRatio) }; } else { return { width: (maxHeight * aspectRatio), height: maxHeight }; } }; ImageService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ ImageService.ctorParameters = function () { return []; }; /** @nocollapse */ ImageService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ImageService_Factory() { return new ImageService(); }, token: ImageService, providedIn: "root" }); return ImageService; }()); export { ImageService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvc2VydmljZXMvaW1hZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUU5QztJQUtFO0lBQWdCLENBQUM7Ozs7Ozs7SUFFViwrQkFBUTs7Ozs7O0lBQWYsVUFBZ0IsSUFBVSxFQUFFLFFBQW9CLEVBQUUsU0FBcUI7UUFBdkUsaUJBa0NDO1FBbEMyQix5QkFBQSxFQUFBLFlBQW9CO1FBQUUsMEJBQUEsRUFBQSxhQUFxQjs7WUFDL0QsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJOztZQUNwQixNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFFL0IsT0FBTyxJQUFJLFVBQVU7Ozs7UUFBQyxVQUFDLFFBQTBCO1lBQy9DLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLE1BQU07Ozs7WUFBRyxVQUFDLENBQUM7O29CQUNWLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRTtnQkFFekIsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMxQyxLQUFLLENBQUMsTUFBTTs7O2dCQUFHOzt3QkFDUCxLQUFLLEdBQUcsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztvQkFFeEQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFOzs0QkFDWixJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7d0JBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQzt3QkFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDOzs0QkFFckIsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO3dCQUNqQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUN0RCxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU07Ozs7d0JBQUMsVUFBQyxJQUFJOztnQ0FDZixVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUU7Z0NBQzVDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQ0FDZixZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTs2QkFDekIsQ0FBQzs0QkFFRixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUM1QixDQUFDLEdBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDbEI7eUJBQU07d0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDckI7Z0JBQ0gsQ0FBQyxDQUFBLENBQUM7WUFDSixDQUFDLENBQUEsQ0FBQztRQUNKLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7Ozs7SUFFTyxnQ0FBUzs7Ozs7OztJQUFqQixVQUFrQixLQUF1QixFQUFFLFFBQW9CLEVBQUUsU0FBcUI7UUFBM0MseUJBQUEsRUFBQSxZQUFvQjtRQUFFLDBCQUFBLEVBQUEsYUFBcUI7UUFDcEYsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjs7WUFFSyxXQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7O1lBQzFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFFMUQsUUFBUSxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ25DLFNBQVMsR0FBRyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUV0QyxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLE1BQU0sS0FBSyxZQUFZLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDckQsT0FBTztnQkFDTCxLQUFLLEVBQUUsUUFBUTtnQkFDZixNQUFNLEVBQUUsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO2FBQ2pDLENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTztnQkFDTCxLQUFLLEVBQUUsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO2dCQUNoQyxNQUFNLEVBQUUsU0FBUzthQUNsQixDQUFDO1NBQ0g7SUFDSCxDQUFDOztnQkFyRUYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7Ozs7dUJBTEQ7Q0F5RUMsQUF0RUQsSUFzRUM7U0FuRVksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIHB1YmxpYyBjb21wcmVzcyhmaWxlOiBGaWxlLCBtYXhXaWR0aDogbnVtYmVyID0gMCwgbWF4SGVpZ2h0OiBudW1iZXIgPSAwKTogT2JzZXJ2YWJsZTxGaWxlPiB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlLm5hbWU7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IFN1YnNjcmliZXI8RmlsZT4pID0+IHtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG5cbiAgICAgICAgaW1hZ2Uuc3JjID0gZS50YXJnZXRbJ3Jlc3VsdCddLnRvU3RyaW5nKCk7XG4gICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICBjb25zdCByYXRpbyA9IHRoaXMuZmluZFJhdGlvKGltYWdlLCBtYXhXaWR0aCwgbWF4SGVpZ2h0KTtcblxuICAgICAgICAgIGlmIChyYXRpbyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgZWxlbS53aWR0aCA9IHJhdGlvLndpZHRoO1xuICAgICAgICAgICAgZWxlbS5oZWlnaHQgPSByYXRpby5oZWlnaHQ7XG5cbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IGVsZW0uZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIHJhdGlvLndpZHRoLCByYXRpby5oZWlnaHQpO1xuICAgICAgICAgICAgY3R4LmNhbnZhcy50b0Jsb2IoKGJsb2IpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzaXplRmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgZmlsZU5hbWUsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzaXplRmlsZSk7XG4gICAgICAgICAgICB9LCBmaWxlLnR5cGUsIDEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRSYXRpbyhpbWFnZTogSFRNTEltYWdlRWxlbWVudCwgbWF4V2lkdGg6IG51bWJlciA9IDAsIG1heEhlaWdodDogbnVtYmVyID0gMCk6IHsgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgaWYgKG1heFdpZHRoID09PSAwICYmIG1heEhlaWdodCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYXNwZWN0UmF0aW8gPSAoaW1hZ2Uud2lkdGggLyBpbWFnZS5oZWlnaHQpO1xuICAgIGNvbnN0IGFzcGVjdCA9IGFzcGVjdFJhdGlvID4gMSA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCc7XG5cbiAgICBtYXhXaWR0aCA9IG1heFdpZHRoIHx8IGltYWdlLndpZHRoO1xuICAgIG1heEhlaWdodCA9IG1heEhlaWdodCB8fCBpbWFnZS5oZWlnaHQ7XG5cbiAgICBpZiAoaW1hZ2Uud2lkdGggPCBtYXhXaWR0aCAmJiBpbWFnZS5oZWlnaHQgPCBtYXhIZWlnaHQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChhc3BlY3QgPT09ICdob3Jpem9udGFsJyAmJiBtYXhXaWR0aCA8IGltYWdlLndpZHRoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogbWF4V2lkdGgsXG4gICAgICAgIGhlaWdodDogKG1heFdpZHRoIC8gYXNwZWN0UmF0aW8pXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogKG1heEhlaWdodCAqIGFzcGVjdFJhdGlvKSxcbiAgICAgICAgaGVpZ2h0OiBtYXhIZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iXX0=