@cause-911/core
Version:
Run `npm install @cause-911/core --save` to add this library to your project
132 lines • 10.5 kB
JavaScript
/**
* @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=