ngx-image-cropper 5.0.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/esm2020/lib/component/image-cropper.component.mjs +540 -0
- package/esm2020/lib/image-cropper.module.mjs +26 -0
- package/esm2020/lib/interfaces/cropper-options.interface.mjs +2 -0
- package/esm2020/lib/interfaces/cropper-position.interface.mjs +2 -0
- package/esm2020/lib/interfaces/cropper.settings.mjs +50 -0
- package/esm2020/lib/interfaces/dimensions.interface.mjs +2 -0
- package/esm2020/lib/interfaces/exif-transform.interface.mjs +2 -0
- package/esm2020/lib/interfaces/image-cropped-event.interface.mjs +2 -0
- package/esm2020/lib/interfaces/image-transform.interface.mjs +2 -0
- package/esm2020/lib/interfaces/index.mjs +2 -0
- package/esm2020/lib/interfaces/loaded-image.interface.mjs +2 -0
- package/esm2020/lib/interfaces/move-start.interface.mjs +7 -0
- package/esm2020/lib/services/crop.service.mjs +117 -0
- package/esm2020/lib/services/cropper-position.service.mjs +201 -0
- package/esm2020/lib/services/load-image.service.mjs +168 -0
- package/esm2020/lib/utils/blob.utils.mjs +12 -0
- package/esm2020/lib/utils/exif.utils.mjs +89 -0
- package/esm2020/lib/utils/hammer.utils.mjs +2 -0
- package/esm2020/lib/utils/keyboard.utils.mjs +40 -0
- package/esm2020/lib/utils/resize.utils.mjs +75 -0
- package/esm2020/ngx-image-cropper.mjs +5 -0
- package/esm2020/public-api.mjs +6 -0
- package/fesm2015/{ngx-image-cropper.js → ngx-image-cropper.mjs} +251 -1035
- package/fesm2015/ngx-image-cropper.mjs.map +1 -0
- package/fesm2020/ngx-image-cropper.mjs +1315 -0
- package/fesm2020/ngx-image-cropper.mjs.map +1 -0
- package/lib/component/image-cropper.component.d.ts +12 -9
- package/lib/image-cropper.module.d.ts +6 -0
- package/lib/interfaces/cropper.settings.d.ts +1 -1
- package/lib/services/crop.service.d.ts +3 -0
- package/lib/services/cropper-position.service.d.ts +3 -0
- package/lib/services/load-image.service.d.ts +3 -0
- package/lib/utils/hammer.utils.d.ts +1 -1
- package/ngx-image-cropper.d.ts +1 -3
- package/package.json +24 -13
- package/bundles/ngx-image-cropper.umd.js +0 -2418
- package/bundles/ngx-image-cropper.umd.js.map +0 -1
- package/bundles/ngx-image-cropper.umd.min.js +0 -16
- package/bundles/ngx-image-cropper.umd.min.js.map +0 -1
- package/esm2015/lib/component/image-cropper.component.js +0 -827
- package/esm2015/lib/image-cropper.module.js +0 -24
- package/esm2015/lib/interfaces/cropper-options.interface.js +0 -56
- package/esm2015/lib/interfaces/cropper-position.interface.js +0 -20
- package/esm2015/lib/interfaces/cropper.settings.js +0 -140
- package/esm2015/lib/interfaces/dimensions.interface.js +0 -16
- package/esm2015/lib/interfaces/exif-transform.interface.js +0 -16
- package/esm2015/lib/interfaces/image-cropped-event.interface.js +0 -24
- package/esm2015/lib/interfaces/image-transform.interface.js +0 -20
- package/esm2015/lib/interfaces/index.js +0 -6
- package/esm2015/lib/interfaces/loaded-image.interface.js +0 -18
- package/esm2015/lib/interfaces/move-start.interface.js +0 -37
- package/esm2015/lib/services/crop.service.js +0 -176
- package/esm2015/lib/services/cropper-position.service.js +0 -259
- package/esm2015/lib/services/load-image.service.js +0 -304
- package/esm2015/lib/utils/blob.utils.js +0 -26
- package/esm2015/lib/utils/exif.utils.js +0 -128
- package/esm2015/lib/utils/hammer.utils.js +0 -29
- package/esm2015/lib/utils/keyboard.utils.js +0 -58
- package/esm2015/lib/utils/resize.utils.js +0 -116
- package/esm2015/ngx-image-cropper.js +0 -13
- package/esm2015/public-api.js +0 -11
- package/fesm2015/ngx-image-cropper.js.map +0 -1
- package/ngx-image-cropper.metadata.json +0 -1
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/image-cropper.module.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
import { NgModule } from '@angular/core';
|
|
7
|
-
import { CommonModule } from '@angular/common';
|
|
8
|
-
import { ImageCropperComponent } from './component/image-cropper.component';
|
|
9
|
-
export class ImageCropperModule {
|
|
10
|
-
}
|
|
11
|
-
ImageCropperModule.decorators = [
|
|
12
|
-
{ type: NgModule, args: [{
|
|
13
|
-
imports: [
|
|
14
|
-
CommonModule
|
|
15
|
-
],
|
|
16
|
-
declarations: [
|
|
17
|
-
ImageCropperComponent
|
|
18
|
-
],
|
|
19
|
-
exports: [
|
|
20
|
-
ImageCropperComponent
|
|
21
|
-
]
|
|
22
|
-
},] }
|
|
23
|
-
];
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY3JvcHBlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL21hd2kvUHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2ltYWdlLWNyb3BwZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFhNUUsTUFBTSxPQUFPLGtCQUFrQjs7O1lBWDlCLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtpQkFDYjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1oscUJBQXFCO2lCQUN0QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AscUJBQXFCO2lCQUN0QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgSW1hZ2VDcm9wcGVyQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBJbWFnZUNyb3BwZXJDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUNyb3BwZXJNb2R1bGUge1xufVxuIl19
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/cropper-options.interface.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function CropperOptions() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?} */
|
|
12
|
-
CropperOptions.prototype.format;
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
CropperOptions.prototype.maintainAspectRatio;
|
|
15
|
-
/** @type {?} */
|
|
16
|
-
CropperOptions.prototype.transform;
|
|
17
|
-
/** @type {?} */
|
|
18
|
-
CropperOptions.prototype.aspectRatio;
|
|
19
|
-
/** @type {?} */
|
|
20
|
-
CropperOptions.prototype.resizeToWidth;
|
|
21
|
-
/** @type {?} */
|
|
22
|
-
CropperOptions.prototype.resizeToHeight;
|
|
23
|
-
/** @type {?} */
|
|
24
|
-
CropperOptions.prototype.cropperMinWidth;
|
|
25
|
-
/** @type {?} */
|
|
26
|
-
CropperOptions.prototype.cropperMinHeight;
|
|
27
|
-
/** @type {?} */
|
|
28
|
-
CropperOptions.prototype.cropperMaxHeight;
|
|
29
|
-
/** @type {?} */
|
|
30
|
-
CropperOptions.prototype.cropperMaxWidth;
|
|
31
|
-
/** @type {?} */
|
|
32
|
-
CropperOptions.prototype.cropperStaticWidth;
|
|
33
|
-
/** @type {?} */
|
|
34
|
-
CropperOptions.prototype.cropperStaticHeight;
|
|
35
|
-
/** @type {?} */
|
|
36
|
-
CropperOptions.prototype.canvasRotation;
|
|
37
|
-
/** @type {?} */
|
|
38
|
-
CropperOptions.prototype.initialStepSize;
|
|
39
|
-
/** @type {?} */
|
|
40
|
-
CropperOptions.prototype.roundCropper;
|
|
41
|
-
/** @type {?} */
|
|
42
|
-
CropperOptions.prototype.onlyScaleDown;
|
|
43
|
-
/** @type {?} */
|
|
44
|
-
CropperOptions.prototype.imageQuality;
|
|
45
|
-
/** @type {?} */
|
|
46
|
-
CropperOptions.prototype.autoCrop;
|
|
47
|
-
/** @type {?} */
|
|
48
|
-
CropperOptions.prototype.backgroundColor;
|
|
49
|
-
/** @type {?} */
|
|
50
|
-
CropperOptions.prototype.containWithinAspectRatio;
|
|
51
|
-
/** @type {?} */
|
|
52
|
-
CropperOptions.prototype.hideResizeSquares;
|
|
53
|
-
/** @type {?} */
|
|
54
|
-
CropperOptions.prototype.alignImage;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcHBlci1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbWF3aS9Qcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9wcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9zcmMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJmYWNlcy9jcm9wcGVyLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsb0NBdUJDOzs7SUF0QkMsZ0NBQXFCOztJQUNyQiw2Q0FBNkI7O0lBQzdCLG1DQUEwQjs7SUFDMUIscUNBQW9COztJQUNwQix1Q0FBc0I7O0lBQ3RCLHdDQUF1Qjs7SUFDdkIseUNBQXdCOztJQUN4QiwwQ0FBeUI7O0lBQ3pCLDBDQUF5Qjs7SUFDekIseUNBQXdCOztJQUN4Qiw0Q0FBMkI7O0lBQzNCLDZDQUE0Qjs7SUFDNUIsd0NBQXVCOztJQUN2Qix5Q0FBd0I7O0lBQ3hCLHNDQUFzQjs7SUFDdEIsdUNBQXVCOztJQUN2QixzQ0FBcUI7O0lBQ3JCLGtDQUFrQjs7SUFDbEIseUNBQXdCOztJQUN4QixrREFBa0M7O0lBQ2xDLDJDQUEyQjs7SUFDM0Isb0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW1hZ2VUcmFuc2Zvcm0gfSBmcm9tICcuL2ltYWdlLXRyYW5zZm9ybS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyb3BwZXJPcHRpb25zIHtcbiAgZm9ybWF0OiBPdXRwdXRGb3JtYXQ7XG4gIG1haW50YWluQXNwZWN0UmF0aW86IGJvb2xlYW47XG4gIHRyYW5zZm9ybTogSW1hZ2VUcmFuc2Zvcm07XG4gIGFzcGVjdFJhdGlvOiBudW1iZXI7XG4gIHJlc2l6ZVRvV2lkdGg6IG51bWJlcjtcbiAgcmVzaXplVG9IZWlnaHQ6IG51bWJlcjtcbiAgY3JvcHBlck1pbldpZHRoOiBudW1iZXI7XG4gIGNyb3BwZXJNaW5IZWlnaHQ6IG51bWJlcjtcbiAgY3JvcHBlck1heEhlaWdodDogbnVtYmVyO1xuICBjcm9wcGVyTWF4V2lkdGg6IG51bWJlcjtcbiAgY3JvcHBlclN0YXRpY1dpZHRoOiBudW1iZXI7XG4gIGNyb3BwZXJTdGF0aWNIZWlnaHQ6IG51bWJlcjtcbiAgY2FudmFzUm90YXRpb246IG51bWJlcjtcbiAgaW5pdGlhbFN0ZXBTaXplOiBudW1iZXI7XG4gIHJvdW5kQ3JvcHBlcjogYm9vbGVhbjtcbiAgb25seVNjYWxlRG93bjogYm9vbGVhbjtcbiAgaW1hZ2VRdWFsaXR5OiBudW1iZXI7XG4gIGF1dG9Dcm9wOiBib29sZWFuO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgY29udGFpbldpdGhpbkFzcGVjdFJhdGlvOiBib29sZWFuO1xuICBoaWRlUmVzaXplU3F1YXJlczogYm9vbGVhbjtcbiAgYWxpZ25JbWFnZTogJ2xlZnQnIHwgJ2NlbnRlcic7XG59XG5cbmV4cG9ydCB0eXBlIE91dHB1dEZvcm1hdCA9ICdwbmcnIHwgJ2pwZWcnIHwgJ2JtcCcgfCAnd2VicCcgfCAnaWNvJztcbiJdfQ==
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/cropper-position.interface.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function CropperPosition() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?} */
|
|
12
|
-
CropperPosition.prototype.x1;
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
CropperPosition.prototype.y1;
|
|
15
|
-
/** @type {?} */
|
|
16
|
-
CropperPosition.prototype.x2;
|
|
17
|
-
/** @type {?} */
|
|
18
|
-
CropperPosition.prototype.y2;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcHBlci1wb3NpdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL21hd2kvUHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvY3JvcHBlci1wb3NpdGlvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxxQ0FLQzs7O0lBSkMsNkJBQVc7O0lBQ1gsNkJBQVc7O0lBQ1gsNkJBQVc7O0lBQ1gsNkJBQVciLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENyb3BwZXJQb3NpdGlvbiB7XG4gIHgxOiBudW1iZXI7XG4gIHkxOiBudW1iZXI7XG4gIHgyOiBudW1iZXI7XG4gIHkyOiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/cropper.settings.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
export class CropperSettings {
|
|
7
|
-
constructor() {
|
|
8
|
-
// From options
|
|
9
|
-
this.format = 'png';
|
|
10
|
-
this.maintainAspectRatio = true;
|
|
11
|
-
this.transform = {};
|
|
12
|
-
this.aspectRatio = 1;
|
|
13
|
-
this.resizeToWidth = 0;
|
|
14
|
-
this.resizeToHeight = 0;
|
|
15
|
-
this.cropperMinWidth = 0;
|
|
16
|
-
this.cropperMinHeight = 0;
|
|
17
|
-
this.cropperMaxHeight = 0;
|
|
18
|
-
this.cropperMaxWidth = 0;
|
|
19
|
-
this.cropperStaticWidth = 0;
|
|
20
|
-
this.cropperStaticHeight = 0;
|
|
21
|
-
this.canvasRotation = 0;
|
|
22
|
-
this.initialStepSize = 3;
|
|
23
|
-
this.roundCropper = false;
|
|
24
|
-
this.onlyScaleDown = false;
|
|
25
|
-
this.imageQuality = 92;
|
|
26
|
-
this.autoCrop = true;
|
|
27
|
-
this.backgroundColor = undefined;
|
|
28
|
-
this.containWithinAspectRatio = false;
|
|
29
|
-
this.hideResizeSquares = false;
|
|
30
|
-
this.alignImage = 'center';
|
|
31
|
-
// Internal
|
|
32
|
-
this.cropperScaledMinWidth = 20;
|
|
33
|
-
this.cropperScaledMinHeight = 20;
|
|
34
|
-
this.cropperScaledMaxWidth = 20;
|
|
35
|
-
this.cropperScaledMaxHeight = 20;
|
|
36
|
-
this.stepSize = this.initialStepSize;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* @param {?} options
|
|
40
|
-
* @return {?}
|
|
41
|
-
*/
|
|
42
|
-
setOptions(options) {
|
|
43
|
-
Object.keys(options)
|
|
44
|
-
.filter((/**
|
|
45
|
-
* @param {?} k
|
|
46
|
-
* @return {?}
|
|
47
|
-
*/
|
|
48
|
-
(k) => k in this))
|
|
49
|
-
.forEach((/**
|
|
50
|
-
* @param {?} k
|
|
51
|
-
* @return {?}
|
|
52
|
-
*/
|
|
53
|
-
(k) => this[k] = options[k]));
|
|
54
|
-
this.validateOptions();
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* @param {?} changes
|
|
58
|
-
* @return {?}
|
|
59
|
-
*/
|
|
60
|
-
setOptionsFromChanges(changes) {
|
|
61
|
-
Object.keys(changes)
|
|
62
|
-
.filter((/**
|
|
63
|
-
* @param {?} k
|
|
64
|
-
* @return {?}
|
|
65
|
-
*/
|
|
66
|
-
(k) => k in this))
|
|
67
|
-
.forEach((/**
|
|
68
|
-
* @param {?} k
|
|
69
|
-
* @return {?}
|
|
70
|
-
*/
|
|
71
|
-
(k) => this[k] = changes[k].currentValue));
|
|
72
|
-
this.validateOptions();
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* @private
|
|
76
|
-
* @return {?}
|
|
77
|
-
*/
|
|
78
|
-
validateOptions() {
|
|
79
|
-
if (this.maintainAspectRatio && !this.aspectRatio) {
|
|
80
|
-
throw new Error('`aspectRatio` should > 0 when `maintainAspectRatio` is enabled');
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
if (false) {
|
|
85
|
-
/** @type {?} */
|
|
86
|
-
CropperSettings.prototype.format;
|
|
87
|
-
/** @type {?} */
|
|
88
|
-
CropperSettings.prototype.maintainAspectRatio;
|
|
89
|
-
/** @type {?} */
|
|
90
|
-
CropperSettings.prototype.transform;
|
|
91
|
-
/** @type {?} */
|
|
92
|
-
CropperSettings.prototype.aspectRatio;
|
|
93
|
-
/** @type {?} */
|
|
94
|
-
CropperSettings.prototype.resizeToWidth;
|
|
95
|
-
/** @type {?} */
|
|
96
|
-
CropperSettings.prototype.resizeToHeight;
|
|
97
|
-
/** @type {?} */
|
|
98
|
-
CropperSettings.prototype.cropperMinWidth;
|
|
99
|
-
/** @type {?} */
|
|
100
|
-
CropperSettings.prototype.cropperMinHeight;
|
|
101
|
-
/** @type {?} */
|
|
102
|
-
CropperSettings.prototype.cropperMaxHeight;
|
|
103
|
-
/** @type {?} */
|
|
104
|
-
CropperSettings.prototype.cropperMaxWidth;
|
|
105
|
-
/** @type {?} */
|
|
106
|
-
CropperSettings.prototype.cropperStaticWidth;
|
|
107
|
-
/** @type {?} */
|
|
108
|
-
CropperSettings.prototype.cropperStaticHeight;
|
|
109
|
-
/** @type {?} */
|
|
110
|
-
CropperSettings.prototype.canvasRotation;
|
|
111
|
-
/** @type {?} */
|
|
112
|
-
CropperSettings.prototype.initialStepSize;
|
|
113
|
-
/** @type {?} */
|
|
114
|
-
CropperSettings.prototype.roundCropper;
|
|
115
|
-
/** @type {?} */
|
|
116
|
-
CropperSettings.prototype.onlyScaleDown;
|
|
117
|
-
/** @type {?} */
|
|
118
|
-
CropperSettings.prototype.imageQuality;
|
|
119
|
-
/** @type {?} */
|
|
120
|
-
CropperSettings.prototype.autoCrop;
|
|
121
|
-
/** @type {?} */
|
|
122
|
-
CropperSettings.prototype.backgroundColor;
|
|
123
|
-
/** @type {?} */
|
|
124
|
-
CropperSettings.prototype.containWithinAspectRatio;
|
|
125
|
-
/** @type {?} */
|
|
126
|
-
CropperSettings.prototype.hideResizeSquares;
|
|
127
|
-
/** @type {?} */
|
|
128
|
-
CropperSettings.prototype.alignImage;
|
|
129
|
-
/** @type {?} */
|
|
130
|
-
CropperSettings.prototype.cropperScaledMinWidth;
|
|
131
|
-
/** @type {?} */
|
|
132
|
-
CropperSettings.prototype.cropperScaledMinHeight;
|
|
133
|
-
/** @type {?} */
|
|
134
|
-
CropperSettings.prototype.cropperScaledMaxWidth;
|
|
135
|
-
/** @type {?} */
|
|
136
|
-
CropperSettings.prototype.cropperScaledMaxHeight;
|
|
137
|
-
/** @type {?} */
|
|
138
|
-
CropperSettings.prototype.stepSize;
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcHBlci5zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbWF3aS9Qcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9wcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9zcmMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJmYWNlcy9jcm9wcGVyLnNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBSUEsTUFBTSxPQUFPLGVBQWU7SUFBNUI7O1FBR0UsV0FBTSxHQUFpQixLQUFLLENBQUM7UUFDN0Isd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzNCLGNBQVMsR0FBbUIsRUFBRSxDQUFDO1FBQy9CLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFDcEIsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUN4QixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUNwQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLG9CQUFlLEdBQVcsU0FBUyxDQUFDO1FBQ3BDLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFzQixRQUFRLENBQUM7O1FBR3pDLDBCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUMzQiwyQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLDJCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUM1QixhQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQXFCbEMsQ0FBQzs7Ozs7SUFuQkMsVUFBVSxDQUFDLE9BQWdDO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2pCLE1BQU07Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBQzthQUN4QixPQUFPOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7Ozs7SUFFRCxxQkFBcUIsQ0FBQyxPQUFzQjtRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNqQixNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUM7YUFDeEIsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7OztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztTQUNuRjtJQUNILENBQUM7Q0FDRjs7O0lBakRDLGlDQUE2Qjs7SUFDN0IsOENBQTJCOztJQUMzQixvQ0FBK0I7O0lBQy9CLHNDQUFnQjs7SUFDaEIsd0NBQWtCOztJQUNsQix5Q0FBbUI7O0lBQ25CLDBDQUFvQjs7SUFDcEIsMkNBQXFCOztJQUNyQiwyQ0FBcUI7O0lBQ3JCLDBDQUFvQjs7SUFDcEIsNkNBQXVCOztJQUN2Qiw4Q0FBd0I7O0lBQ3hCLHlDQUFtQjs7SUFDbkIsMENBQW9COztJQUNwQix1Q0FBcUI7O0lBQ3JCLHdDQUFzQjs7SUFDdEIsdUNBQWtCOztJQUNsQixtQ0FBZ0I7O0lBQ2hCLDBDQUFvQzs7SUFDcEMsbURBQWlDOztJQUNqQyw0Q0FBMEI7O0lBQzFCLHFDQUF5Qzs7SUFHekMsZ0RBQTJCOztJQUMzQixpREFBNEI7O0lBQzVCLGdEQUEyQjs7SUFDM0IsaURBQTRCOztJQUM1QixtQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcm9wcGVyT3B0aW9ucywgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnLi9jcm9wcGVyLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEltYWdlVHJhbnNmb3JtIH0gZnJvbSAnLi9pbWFnZS10cmFuc2Zvcm0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIENyb3BwZXJTZXR0aW5ncyB7XG5cbiAgLy8gRnJvbSBvcHRpb25zXG4gIGZvcm1hdDogT3V0cHV0Rm9ybWF0ID0gJ3BuZyc7XG4gIG1haW50YWluQXNwZWN0UmF0aW8gPSB0cnVlO1xuICB0cmFuc2Zvcm06IEltYWdlVHJhbnNmb3JtID0ge307XG4gIGFzcGVjdFJhdGlvID0gMTtcbiAgcmVzaXplVG9XaWR0aCA9IDA7XG4gIHJlc2l6ZVRvSGVpZ2h0ID0gMDtcbiAgY3JvcHBlck1pbldpZHRoID0gMDtcbiAgY3JvcHBlck1pbkhlaWdodCA9IDA7XG4gIGNyb3BwZXJNYXhIZWlnaHQgPSAwO1xuICBjcm9wcGVyTWF4V2lkdGggPSAwO1xuICBjcm9wcGVyU3RhdGljV2lkdGggPSAwO1xuICBjcm9wcGVyU3RhdGljSGVpZ2h0ID0gMDtcbiAgY2FudmFzUm90YXRpb24gPSAwO1xuICBpbml0aWFsU3RlcFNpemUgPSAzO1xuICByb3VuZENyb3BwZXIgPSBmYWxzZTtcbiAgb25seVNjYWxlRG93biA9IGZhbHNlO1xuICBpbWFnZVF1YWxpdHkgPSA5MjtcbiAgYXV0b0Nyb3AgPSB0cnVlO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9IHVuZGVmaW5lZDtcbiAgY29udGFpbldpdGhpbkFzcGVjdFJhdGlvID0gZmFsc2U7XG4gIGhpZGVSZXNpemVTcXVhcmVzID0gZmFsc2U7XG4gIGFsaWduSW1hZ2U6ICdsZWZ0JyB8ICdjZW50ZXInID0gJ2NlbnRlcic7XG5cbiAgLy8gSW50ZXJuYWxcbiAgY3JvcHBlclNjYWxlZE1pbldpZHRoID0gMjA7XG4gIGNyb3BwZXJTY2FsZWRNaW5IZWlnaHQgPSAyMDtcbiAgY3JvcHBlclNjYWxlZE1heFdpZHRoID0gMjA7XG4gIGNyb3BwZXJTY2FsZWRNYXhIZWlnaHQgPSAyMDtcbiAgc3RlcFNpemUgPSB0aGlzLmluaXRpYWxTdGVwU2l6ZTtcblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IFBhcnRpYWw8Q3JvcHBlck9wdGlvbnM+KTogdm9pZCB7XG4gICAgT2JqZWN0LmtleXMob3B0aW9ucylcbiAgICAgIC5maWx0ZXIoKGspID0+IGsgaW4gdGhpcylcbiAgICAgIC5mb3JFYWNoKChrKSA9PiB0aGlzW2tdID0gb3B0aW9uc1trXSk7XG4gICAgdGhpcy52YWxpZGF0ZU9wdGlvbnMoKTtcbiAgfVxuXG4gIHNldE9wdGlvbnNGcm9tQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgT2JqZWN0LmtleXMoY2hhbmdlcylcbiAgICAgIC5maWx0ZXIoKGspID0+IGsgaW4gdGhpcylcbiAgICAgIC5mb3JFYWNoKChrKSA9PiB0aGlzW2tdID0gY2hhbmdlc1trXS5jdXJyZW50VmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGVPcHRpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlT3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYWludGFpbkFzcGVjdFJhdGlvICYmICF0aGlzLmFzcGVjdFJhdGlvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Bhc3BlY3RSYXRpb2Agc2hvdWxkID4gMCB3aGVuIGBtYWludGFpbkFzcGVjdFJhdGlvYCBpcyBlbmFibGVkJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/dimensions.interface.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function Dimensions() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?} */
|
|
12
|
-
Dimensions.prototype.width;
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
Dimensions.prototype.height;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL21hd2kvUHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvZGltZW5zaW9ucy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxnQ0FHQzs7O0lBRkMsMkJBQWM7O0lBQ2QsNEJBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERpbWVuc2lvbnMge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/exif-transform.interface.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function ExifTransform() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?} */
|
|
12
|
-
ExifTransform.prototype.rotate;
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
ExifTransform.prototype.flip;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpZi10cmFuc2Zvcm0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9tYXdpL1Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmZhY2VzL2V4aWYtdHJhbnNmb3JtLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLG1DQUdDOzs7SUFGQywrQkFBZTs7SUFDZiw2QkFBYyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRXhpZlRyYW5zZm9ybSB7XG4gIHJvdGF0ZTogbnVtYmVyO1xuICBmbGlwOiBib29sZWFuO1xufVxuIl19
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/image-cropped-event.interface.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function ImageCroppedEvent() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?|undefined} */
|
|
12
|
-
ImageCroppedEvent.prototype.base64;
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
ImageCroppedEvent.prototype.width;
|
|
15
|
-
/** @type {?} */
|
|
16
|
-
ImageCroppedEvent.prototype.height;
|
|
17
|
-
/** @type {?} */
|
|
18
|
-
ImageCroppedEvent.prototype.cropperPosition;
|
|
19
|
-
/** @type {?} */
|
|
20
|
-
ImageCroppedEvent.prototype.imagePosition;
|
|
21
|
-
/** @type {?|undefined} */
|
|
22
|
-
ImageCroppedEvent.prototype.offsetImagePosition;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY3JvcHBlZC1ldmVudC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL21hd2kvUHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvaW1hZ2UtY3JvcHBlZC1ldmVudC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSx1Q0FPQzs7O0lBTkMsbUNBQXVCOztJQUN2QixrQ0FBYzs7SUFDZCxtQ0FBZTs7SUFDZiw0Q0FBaUM7O0lBQ2pDLDBDQUErQjs7SUFDL0IsZ0RBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3JvcHBlclBvc2l0aW9uIH0gZnJvbSAnLi9jcm9wcGVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VDcm9wcGVkRXZlbnQge1xuICBiYXNlNjQ/OiBzdHJpbmcgfCBudWxsO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgY3JvcHBlclBvc2l0aW9uOiBDcm9wcGVyUG9zaXRpb247XG4gIGltYWdlUG9zaXRpb246IENyb3BwZXJQb3NpdGlvbjtcbiAgb2Zmc2V0SW1hZ2VQb3NpdGlvbj86IENyb3BwZXJQb3NpdGlvbjtcbn1cbiJdfQ==
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/image-transform.interface.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function ImageTransform() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?|undefined} */
|
|
12
|
-
ImageTransform.prototype.scale;
|
|
13
|
-
/** @type {?|undefined} */
|
|
14
|
-
ImageTransform.prototype.rotate;
|
|
15
|
-
/** @type {?|undefined} */
|
|
16
|
-
ImageTransform.prototype.flipH;
|
|
17
|
-
/** @type {?|undefined} */
|
|
18
|
-
ImageTransform.prototype.flipV;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdHJhbnNmb3JtLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbWF3aS9Qcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9wcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9zcmMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJmYWNlcy9pbWFnZS10cmFuc2Zvcm0uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsb0NBS0M7OztJQUpDLCtCQUFlOztJQUNmLGdDQUFnQjs7SUFDaEIsK0JBQWdCOztJQUNoQiwrQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEltYWdlVHJhbnNmb3JtIHtcbiAgc2NhbGU/OiBudW1iZXI7XG4gIHJvdGF0ZT86IG51bWJlcjtcbiAgZmxpcEg/OiBib29sZWFuO1xuICBmbGlwVj86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/index.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL21hd2kvUHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENyb3BwZXJPcHRpb25zLCBPdXRwdXRGb3JtYXQgfSBmcm9tICcuL2Nyb3BwZXItb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgQ3JvcHBlclBvc2l0aW9uIH0gZnJvbSAnLi9jcm9wcGVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgeyBEaW1lbnNpb25zIH0gZnJvbSAnLi9kaW1lbnNpb25zLmludGVyZmFjZSc7XG5leHBvcnQgeyBJbWFnZUNyb3BwZWRFdmVudCB9IGZyb20gJy4vaW1hZ2UtY3JvcHBlZC1ldmVudC5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgTW92ZVN0YXJ0IH0gZnJvbSAnLi9tb3ZlLXN0YXJ0LmludGVyZmFjZSc7XG5leHBvcnQgeyBJbWFnZVRyYW5zZm9ybSB9IGZyb20gJy4vaW1hZ2UtdHJhbnNmb3JtLmludGVyZmFjZSc7XG5leHBvcnQgeyBMb2FkZWRJbWFnZSB9IGZyb20gJy4vbG9hZGVkLWltYWdlLmludGVyZmFjZSc7XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/loaded-image.interface.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function LoadedImage() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?} */
|
|
12
|
-
LoadedImage.prototype.original;
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
LoadedImage.prototype.transformed;
|
|
15
|
-
/** @type {?} */
|
|
16
|
-
LoadedImage.prototype.exifTransform;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVkLWltYWdlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbWF3aS9Qcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9wcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9zcmMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJmYWNlcy9sb2FkZWQtaW1hZ2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsaUNBWUM7OztJQVhDLCtCQUlFOztJQUNGLGtDQUlFOztJQUNGLG9DQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpbWVuc2lvbnMgfSBmcm9tICcuL2RpbWVuc2lvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEV4aWZUcmFuc2Zvcm0gfSBmcm9tICcuL2V4aWYtdHJhbnNmb3JtLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkSW1hZ2Uge1xuICBvcmlnaW5hbDoge1xuICAgIGJhc2U2NDogc3RyaW5nO1xuICAgIGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50O1xuICAgIHNpemU6IERpbWVuc2lvbnM7XG4gIH07XG4gIHRyYW5zZm9ybWVkOiB7XG4gICAgYmFzZTY0OiBzdHJpbmc7XG4gICAgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgc2l6ZTogRGltZW5zaW9ucztcbiAgfTtcbiAgZXhpZlRyYW5zZm9ybTogRXhpZlRyYW5zZm9ybTtcbn1cbiJdfQ==
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/interfaces/move-start.interface.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @record
|
|
8
|
-
*/
|
|
9
|
-
export function MoveStart() { }
|
|
10
|
-
if (false) {
|
|
11
|
-
/** @type {?} */
|
|
12
|
-
MoveStart.prototype.active;
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
MoveStart.prototype.type;
|
|
15
|
-
/** @type {?} */
|
|
16
|
-
MoveStart.prototype.position;
|
|
17
|
-
/** @type {?} */
|
|
18
|
-
MoveStart.prototype.x1;
|
|
19
|
-
/** @type {?} */
|
|
20
|
-
MoveStart.prototype.y1;
|
|
21
|
-
/** @type {?} */
|
|
22
|
-
MoveStart.prototype.x2;
|
|
23
|
-
/** @type {?} */
|
|
24
|
-
MoveStart.prototype.y2;
|
|
25
|
-
/** @type {?} */
|
|
26
|
-
MoveStart.prototype.clientX;
|
|
27
|
-
/** @type {?} */
|
|
28
|
-
MoveStart.prototype.clientY;
|
|
29
|
-
}
|
|
30
|
-
/** @enum {string} */
|
|
31
|
-
const MoveTypes = {
|
|
32
|
-
Move: "move",
|
|
33
|
-
Resize: "resize",
|
|
34
|
-
Pinch: "pinch",
|
|
35
|
-
};
|
|
36
|
-
export { MoveTypes };
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS1zdGFydC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL21hd2kvUHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvbW92ZS1zdGFydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSwrQkFVQzs7O0lBVEMsMkJBQWdCOztJQUNoQix5QkFBdUI7O0lBQ3ZCLDZCQUF3Qjs7SUFDeEIsdUJBQVc7O0lBQ1gsdUJBQVc7O0lBQ1gsdUJBQVc7O0lBQ1gsdUJBQVc7O0lBQ1gsNEJBQWdCOztJQUNoQiw0QkFBZ0I7OztBQUdsQixNQUFZLFNBQVM7SUFDbkIsSUFBSSxRQUFTO0lBQ2IsTUFBTSxVQUFXO0lBQ2pCLEtBQUssU0FBVTtFQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTW92ZVN0YXJ0IHtcbiAgYWN0aXZlOiBib29sZWFuO1xuICB0eXBlOiBNb3ZlVHlwZXMgfCBudWxsO1xuICBwb3NpdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgeDE6IG51bWJlcjtcbiAgeTE6IG51bWJlcjtcbiAgeDI6IG51bWJlcjtcbiAgeTI6IG51bWJlcjtcbiAgY2xpZW50WDogbnVtYmVyO1xuICBjbGllbnRZOiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIE1vdmVUeXBlcyB7XG4gIE1vdmUgPSAnbW92ZScsXG4gIFJlc2l6ZSA9ICdyZXNpemUnLFxuICBQaW5jaCA9ICdwaW5jaCdcbn1cbiJdfQ==
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/services/crop.service.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
import { Injectable } from '@angular/core';
|
|
7
|
-
import { resizeCanvas } from '../utils/resize.utils';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export class CropService {
|
|
10
|
-
/**
|
|
11
|
-
* @param {?} sourceImage
|
|
12
|
-
* @param {?} loadedImage
|
|
13
|
-
* @param {?} cropper
|
|
14
|
-
* @param {?} settings
|
|
15
|
-
* @return {?}
|
|
16
|
-
*/
|
|
17
|
-
crop(sourceImage, loadedImage, cropper, settings) {
|
|
18
|
-
/** @type {?} */
|
|
19
|
-
const imagePosition = this.getImagePosition(sourceImage, loadedImage, cropper, settings);
|
|
20
|
-
/** @type {?} */
|
|
21
|
-
const width = imagePosition.x2 - imagePosition.x1;
|
|
22
|
-
/** @type {?} */
|
|
23
|
-
const height = imagePosition.y2 - imagePosition.y1;
|
|
24
|
-
/** @type {?} */
|
|
25
|
-
const cropCanvas = (/** @type {?} */ (document.createElement('canvas')));
|
|
26
|
-
cropCanvas.width = width;
|
|
27
|
-
cropCanvas.height = height;
|
|
28
|
-
/** @type {?} */
|
|
29
|
-
const ctx = cropCanvas.getContext('2d');
|
|
30
|
-
if (!ctx) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (settings.backgroundColor != null) {
|
|
34
|
-
ctx.fillStyle = settings.backgroundColor;
|
|
35
|
-
ctx.fillRect(0, 0, width, height);
|
|
36
|
-
}
|
|
37
|
-
/** @type {?} */
|
|
38
|
-
const scaleX = (settings.transform.scale || 1) * (settings.transform.flipH ? -1 : 1);
|
|
39
|
-
/** @type {?} */
|
|
40
|
-
const scaleY = (settings.transform.scale || 1) * (settings.transform.flipV ? -1 : 1);
|
|
41
|
-
/** @type {?} */
|
|
42
|
-
const transformedImage = loadedImage.transformed;
|
|
43
|
-
ctx.setTransform(scaleX, 0, 0, scaleY, transformedImage.size.width / 2, transformedImage.size.height / 2);
|
|
44
|
-
ctx.translate(-imagePosition.x1 / scaleX, -imagePosition.y1 / scaleY);
|
|
45
|
-
ctx.rotate((settings.transform.rotate || 0) * Math.PI / 180);
|
|
46
|
-
ctx.drawImage(transformedImage.image, -transformedImage.size.width / 2, -transformedImage.size.height / 2);
|
|
47
|
-
/** @type {?} */
|
|
48
|
-
const output = {
|
|
49
|
-
width, height,
|
|
50
|
-
imagePosition,
|
|
51
|
-
cropperPosition: Object.assign({}, cropper)
|
|
52
|
-
};
|
|
53
|
-
if (settings.containWithinAspectRatio) {
|
|
54
|
-
output.offsetImagePosition = this.getOffsetImagePosition(sourceImage, loadedImage, cropper, settings);
|
|
55
|
-
}
|
|
56
|
-
/** @type {?} */
|
|
57
|
-
const resizeRatio = this.getResizeRatio(width, height, settings);
|
|
58
|
-
if (resizeRatio !== 1) {
|
|
59
|
-
output.width = Math.round(width * resizeRatio);
|
|
60
|
-
output.height = settings.maintainAspectRatio
|
|
61
|
-
? Math.round(output.width / settings.aspectRatio)
|
|
62
|
-
: Math.round(height * resizeRatio);
|
|
63
|
-
resizeCanvas(cropCanvas, output.width, output.height);
|
|
64
|
-
}
|
|
65
|
-
output.base64 = cropCanvas.toDataURL('image/' + settings.format, this.getQuality(settings));
|
|
66
|
-
return output;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* @private
|
|
70
|
-
* @param {?} sourceImage
|
|
71
|
-
* @param {?} loadedImage
|
|
72
|
-
* @param {?} cropper
|
|
73
|
-
* @param {?} settings
|
|
74
|
-
* @return {?}
|
|
75
|
-
*/
|
|
76
|
-
getImagePosition(sourceImage, loadedImage, cropper, settings) {
|
|
77
|
-
/** @type {?} */
|
|
78
|
-
const sourceImageElement = sourceImage.nativeElement;
|
|
79
|
-
/** @type {?} */
|
|
80
|
-
const ratio = loadedImage.transformed.size.width / sourceImageElement.offsetWidth;
|
|
81
|
-
/** @type {?} */
|
|
82
|
-
const out = {
|
|
83
|
-
x1: Math.round(cropper.x1 * ratio),
|
|
84
|
-
y1: Math.round(cropper.y1 * ratio),
|
|
85
|
-
x2: Math.round(cropper.x2 * ratio),
|
|
86
|
-
y2: Math.round(cropper.y2 * ratio)
|
|
87
|
-
};
|
|
88
|
-
if (!settings.containWithinAspectRatio) {
|
|
89
|
-
out.x1 = Math.max(out.x1, 0);
|
|
90
|
-
out.y1 = Math.max(out.y1, 0);
|
|
91
|
-
out.x2 = Math.min(out.x2, loadedImage.transformed.size.width);
|
|
92
|
-
out.y2 = Math.min(out.y2, loadedImage.transformed.size.height);
|
|
93
|
-
}
|
|
94
|
-
return out;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* @private
|
|
98
|
-
* @param {?} sourceImage
|
|
99
|
-
* @param {?} loadedImage
|
|
100
|
-
* @param {?} cropper
|
|
101
|
-
* @param {?} settings
|
|
102
|
-
* @return {?}
|
|
103
|
-
*/
|
|
104
|
-
getOffsetImagePosition(sourceImage, loadedImage, cropper, settings) {
|
|
105
|
-
/** @type {?} */
|
|
106
|
-
const canvasRotation = settings.canvasRotation + loadedImage.exifTransform.rotate;
|
|
107
|
-
/** @type {?} */
|
|
108
|
-
const sourceImageElement = sourceImage.nativeElement;
|
|
109
|
-
/** @type {?} */
|
|
110
|
-
const ratio = loadedImage.transformed.size.width / sourceImageElement.offsetWidth;
|
|
111
|
-
/** @type {?} */
|
|
112
|
-
let offsetX;
|
|
113
|
-
/** @type {?} */
|
|
114
|
-
let offsetY;
|
|
115
|
-
if (canvasRotation % 2) {
|
|
116
|
-
offsetX = (loadedImage.transformed.size.width - loadedImage.original.size.height) / 2;
|
|
117
|
-
offsetY = (loadedImage.transformed.size.height - loadedImage.original.size.width) / 2;
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
offsetX = (loadedImage.transformed.size.width - loadedImage.original.size.width) / 2;
|
|
121
|
-
offsetY = (loadedImage.transformed.size.height - loadedImage.original.size.height) / 2;
|
|
122
|
-
}
|
|
123
|
-
/** @type {?} */
|
|
124
|
-
const out = {
|
|
125
|
-
x1: Math.round(cropper.x1 * ratio) - offsetX,
|
|
126
|
-
y1: Math.round(cropper.y1 * ratio) - offsetY,
|
|
127
|
-
x2: Math.round(cropper.x2 * ratio) - offsetX,
|
|
128
|
-
y2: Math.round(cropper.y2 * ratio) - offsetY
|
|
129
|
-
};
|
|
130
|
-
if (!settings.containWithinAspectRatio) {
|
|
131
|
-
out.x1 = Math.max(out.x1, 0);
|
|
132
|
-
out.y1 = Math.max(out.y1, 0);
|
|
133
|
-
out.x2 = Math.min(out.x2, loadedImage.transformed.size.width);
|
|
134
|
-
out.y2 = Math.min(out.y2, loadedImage.transformed.size.height);
|
|
135
|
-
}
|
|
136
|
-
return out;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* @param {?} width
|
|
140
|
-
* @param {?} height
|
|
141
|
-
* @param {?} settings
|
|
142
|
-
* @return {?}
|
|
143
|
-
*/
|
|
144
|
-
getResizeRatio(width, height, settings) {
|
|
145
|
-
/** @type {?} */
|
|
146
|
-
const ratioWidth = settings.resizeToWidth / width;
|
|
147
|
-
/** @type {?} */
|
|
148
|
-
const ratioHeight = settings.resizeToHeight / height;
|
|
149
|
-
/** @type {?} */
|
|
150
|
-
const ratios = new Array();
|
|
151
|
-
if (settings.resizeToWidth > 0) {
|
|
152
|
-
ratios.push(ratioWidth);
|
|
153
|
-
}
|
|
154
|
-
if (settings.resizeToHeight > 0) {
|
|
155
|
-
ratios.push(ratioHeight);
|
|
156
|
-
}
|
|
157
|
-
/** @type {?} */
|
|
158
|
-
const result = ratios.length === 0 ? 1 : Math.min(...ratios);
|
|
159
|
-
if (result > 1 && !settings.onlyScaleDown) {
|
|
160
|
-
return result;
|
|
161
|
-
}
|
|
162
|
-
return Math.min(result, 1);
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* @param {?} settings
|
|
166
|
-
* @return {?}
|
|
167
|
-
*/
|
|
168
|
-
getQuality(settings) {
|
|
169
|
-
return Math.min(1, Math.max(0, settings.imageQuality / 100));
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
CropService.decorators = [
|
|
173
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
174
|
-
];
|
|
175
|
-
/** @nocollapse */ CropService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CropService_Factory() { return new CropService(); }, token: CropService, providedIn: "root" });
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9tYXdpL1Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jcm9wLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHckQsTUFBTSxPQUFPLFdBQVc7Ozs7Ozs7O0lBRXRCLElBQUksQ0FBQyxXQUF1QixFQUFFLFdBQXdCLEVBQUUsT0FBd0IsRUFBRSxRQUF5Qjs7Y0FDbkcsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7O2NBQ2xGLEtBQUssR0FBRyxhQUFhLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxFQUFFOztjQUMzQyxNQUFNLEdBQUcsYUFBYSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsRUFBRTs7Y0FDNUMsVUFBVSxHQUFHLG1CQUFBLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQXFCO1FBQ3hFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztjQUVyQixHQUFHLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE9BQU87U0FDUjtRQUNELElBQUksUUFBUSxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUU7WUFDcEMsR0FBRyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1lBQ3pDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFL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QUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUU1RCxJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQ3pDLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Ozs7O0lBRUQsVUFBVSxDQUFDLFFBQXlCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7OztZQTVIRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3JvcHBlclBvc2l0aW9uLCBJbWFnZUNyb3BwZWRFdmVudCwgTG9hZGVkSW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENyb3BwZXJTZXR0aW5ncyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3JvcHBlci5zZXR0aW5ncyc7XG5pbXBvcnQgeyByZXNpemVDYW52YXMgfSBmcm9tICcuLi91dGlscy9yZXNpemUudXRpbHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENyb3BTZXJ2aWNlIHtcblxuICBjcm9wKHNvdXJjZUltYWdlOiBFbGVtZW50UmVmLCBsb2FkZWRJbWFnZTogTG9hZGVkSW1hZ2UsIGNyb3BwZXI6IENyb3BwZXJQb3NpdGlvbiwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncyk6IEltYWdlQ3JvcHBlZEV2ZW50IHwgbnVsbCB7XG4gICAgY29uc3QgaW1hZ2VQb3NpdGlvbiA9IHRoaXMuZ2V0SW1hZ2VQb3NpdGlvbihzb3VyY2VJbWFnZSwgbG9hZGVkSW1hZ2UsIGNyb3BwZXIsIHNldHRpbmdzKTtcbiAgICBjb25zdCB3aWR0aCA9IGltYWdlUG9zaXRpb24ueDIgLSBpbWFnZVBvc2l0aW9uLngxO1xuICAgIGNvbnN0IGhlaWdodCA9IGltYWdlUG9zaXRpb24ueTIgLSBpbWFnZVBvc2l0aW9uLnkxO1xuICAgIGNvbnN0IGNyb3BDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbiAgICBjcm9wQ2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY3JvcENhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICBjb25zdCBjdHggPSBjcm9wQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgaWYgKCFjdHgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNldHRpbmdzLmJhY2tncm91bmRDb2xvciAhPSBudWxsKSB7XG4gICAgICBjdHguZmlsbFN0eWxlID0gc2V0dGluZ3MuYmFja2dyb3VuZENvbG9yO1xuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjYWxlWCA9IChzZXR0aW5ncy50cmFuc2Zvcm0uc2NhbGUgfHwgMSkgKiAoc2V0dGluZ3MudHJhbnNmb3JtLmZsaXBIID8gLTEgOiAxKTtcbiAgICBjb25zdCBzY2FsZVkgPSAoc2V0dGluZ3MudHJhbnNmb3JtLnNjYWxlIHx8IDEpICogKHNldHRpbmdzLnRyYW5zZm9ybS5mbGlwViA/IC0xIDogMSk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZEltYWdlID0gbG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQ7XG4gICAgY3R4LnNldFRyYW5zZm9ybShzY2FsZVgsIDAsIDAsIHNjYWxlWSwgdHJhbnNmb3JtZWRJbWFnZS5zaXplLndpZHRoIC8gMiwgdHJhbnNmb3JtZWRJbWFnZS5zaXplLmhlaWdodCAvIDIpO1xuICAgIGN0eC50cmFuc2xhdGUoLWltYWdlUG9zaXRpb24ueDEgLyBzY2FsZVgsIC1pbWFnZVBvc2l0aW9uLnkxIC8gc2NhbGVZKTtcbiAgICBjdHgucm90YXRlKChzZXR0aW5ncy50cmFuc2Zvcm0ucm90YXRlIHx8IDApICogTWF0aC5QSSAvIDE4MCk7XG4gICAgY3R4LmRyYXdJbWFnZSh0cmFuc2Zvcm1lZEltYWdlLmltYWdlLCAtdHJhbnNmb3JtZWRJbWFnZS5zaXplLndpZHRoIC8gMiwgLXRyYW5zZm9ybWVkSW1hZ2Uuc2l6ZS5oZWlnaHQgLyAyKTtcblxuICAgIGNvbnN0IG91dHB1dDogSW1hZ2VDcm9wcGVkRXZlbnQgPSB7XG4gICAgICB3aWR0aCwgaGVpZ2h0LFxuICAgICAgaW1hZ2VQb3NpdGlvbixcbiAgICAgIGNyb3BwZXJQb3NpdGlvbjogeyAuLi5jcm9wcGVyIH1cbiAgICB9O1xuICAgIGlmIChzZXR0aW5ncy5jb250YWluV2l0aGluQXNwZWN0UmF0aW8pIHtcbiAgICAgIG91dHB1dC5vZmZzZXRJbWFnZVBvc2l0aW9uID0gdGhpcy5nZXRPZmZzZXRJbWFnZVBvc2l0aW9uKHNvdXJjZUltYWdlLCBsb2FkZWRJbWFnZSwgY3JvcHBlciwgc2V0dGluZ3MpO1xuICAgIH1cbiAgICBjb25zdCByZXNpemVSYXRpbyA9IHRoaXMuZ2V0UmVzaXplUmF0aW8od2lkdGgsIGhlaWdodCwgc2V0dGluZ3MpO1xuICAgIGlmIChyZXNpemVSYXRpbyAhPT0gMSkge1xuICAgICAgb3V0cHV0LndpZHRoID0gTWF0aC5yb3VuZCh3aWR0aCAqIHJlc2l6ZVJhdGlvKTtcbiAgICAgIG91dHB1dC5oZWlnaHQgPSBzZXR0aW5ncy5tYWludGFpbkFzcGVjdFJhdGlvXG4gICAgICAgID8gTWF0aC5yb3VuZChvdXRwdXQud2lkdGggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbylcbiAgICAgICAgOiBNYXRoLnJvdW5kKGhlaWdodCAqIHJlc2l6ZVJhdGlvKTtcbiAgICAgIHJlc2l6ZUNhbnZhcyhjcm9wQ2FudmFzLCBvdXRwdXQud2lkdGgsIG91dHB1dC5oZWlnaHQpO1xuICAgIH1cbiAgICBvdXRwdXQuYmFzZTY0ID0gY3JvcENhbnZhcy50b0RhdGFVUkwoJ2ltYWdlLycgKyBzZXR0aW5ncy5mb3JtYXQsIHRoaXMuZ2V0UXVhbGl0eShzZXR0aW5ncykpO1xuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwcml2YXRlIGdldEltYWdlUG9zaXRpb24oc291cmNlSW1hZ2U6IEVsZW1lbnRSZWYsIGxvYWRlZEltYWdlOiBMb2FkZWRJbWFnZSwgY3JvcHBlcjogQ3JvcHBlclBvc2l0aW9uLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogQ3JvcHBlclBvc2l0aW9uIHtcbiAgICBjb25zdCBzb3VyY2VJbWFnZUVsZW1lbnQgPSBzb3VyY2VJbWFnZS5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHJhdGlvID0gbG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCAvIHNvdXJjZUltYWdlRWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgIGNvbnN0IG91dDogQ3JvcHBlclBvc2l0aW9uID0ge1xuICAgICAgeDE6IE1hdGgucm91bmQoY3JvcHBlci54MSAqIHJhdGlvKSxcbiAgICAgIHkxOiBNYXRoLnJvdW5kKGNyb3BwZXIueTEgKiByYXRpbyksXG4gICAgICB4MjogTWF0aC5yb3VuZChjcm9wcGVyLngyICogcmF0aW8pLFxuICAgICAgeTI6IE1hdGgucm91bmQoY3JvcHBlci55MiAqIHJhdGlvKVxuICAgIH07XG5cbiAgICBpZiAoIXNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgb3V0LngxID0gTWF0aC5tYXgob3V0LngxLCAwKTtcbiAgICAgIG91dC55MSA9IE1hdGgubWF4KG91dC55MSwgMCk7XG4gICAgICBvdXQueDIgPSBNYXRoLm1pbihvdXQueDIsIGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGgpO1xuICAgICAgb3V0LnkyID0gTWF0aC5taW4ob3V0LnkyLCBsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2Zmc2V0SW1hZ2VQb3NpdGlvbihzb3VyY2VJbWFnZTogRWxlbWVudFJlZiwgbG9hZGVkSW1hZ2U6IExvYWRlZEltYWdlLCBjcm9wcGVyOiBDcm9wcGVyUG9zaXRpb24sIHNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBDcm9wcGVyUG9zaXRpb24ge1xuICAgIGNvbnN0IGNhbnZhc1JvdGF0aW9uID0gc2V0dGluZ3MuY2FudmFzUm90YXRpb24gKyBsb2FkZWRJbWFnZS5leGlmVHJhbnNmb3JtLnJvdGF0ZTtcbiAgICBjb25zdCBzb3VyY2VJbWFnZUVsZW1lbnQgPSBzb3VyY2VJbWFnZS5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHJhdGlvID0gbG9hZGVkSW1hZ2UudHJhbnNmb3JtZWQuc2l6ZS53aWR0aCAvIHNvdXJjZUltYWdlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBsZXQgb2Zmc2V0WDogbnVtYmVyO1xuICAgIGxldCBvZmZzZXRZOiBudW1iZXI7XG5cbiAgICBpZiAoY2FudmFzUm90YXRpb24gJSAyKSB7XG4gICAgICBvZmZzZXRYID0gKGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGggLSBsb2FkZWRJbWFnZS5vcmlnaW5hbC5zaXplLmhlaWdodCkgLyAyO1xuICAgICAgb2Zmc2V0WSA9IChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCAtIGxvYWRlZEltYWdlLm9yaWdpbmFsLnNpemUud2lkdGgpIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0WCA9IChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLndpZHRoIC0gbG9hZGVkSW1hZ2Uub3JpZ2luYWwuc2l6ZS53aWR0aCkgLyAyO1xuICAgICAgb2Zmc2V0WSA9IChsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCAtIGxvYWRlZEltYWdlLm9yaWdpbmFsLnNpemUuaGVpZ2h0KSAvIDI7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0OiBDcm9wcGVyUG9zaXRpb24gPSB7XG4gICAgICB4MTogTWF0aC5yb3VuZChjcm9wcGVyLngxICogcmF0aW8pIC0gb2Zmc2V0WCxcbiAgICAgIHkxOiBNYXRoLnJvdW5kKGNyb3BwZXIueTEgKiByYXRpbykgLSBvZmZzZXRZLFxuICAgICAgeDI6IE1hdGgucm91bmQoY3JvcHBlci54MiAqIHJhdGlvKSAtIG9mZnNldFgsXG4gICAgICB5MjogTWF0aC5yb3VuZChjcm9wcGVyLnkyICogcmF0aW8pIC0gb2Zmc2V0WVxuICAgIH07XG5cbiAgICBpZiAoIXNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgb3V0LngxID0gTWF0aC5tYXgob3V0LngxLCAwKTtcbiAgICAgIG91dC55MSA9IE1hdGgubWF4KG91dC55MSwgMCk7XG4gICAgICBvdXQueDIgPSBNYXRoLm1pbihvdXQueDIsIGxvYWRlZEltYWdlLnRyYW5zZm9ybWVkLnNpemUud2lkdGgpO1xuICAgICAgb3V0LnkyID0gTWF0aC5taW4ob3V0LnkyLCBsb2FkZWRJbWFnZS50cmFuc2Zvcm1lZC5zaXplLmhlaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGdldFJlc2l6ZVJhdGlvKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogbnVtYmVyIHtcbiAgICBjb25zdCByYXRpb1dpZHRoID0gc2V0dGluZ3MucmVzaXplVG9XaWR0aCAvIHdpZHRoO1xuICAgIGNvbnN0IHJhdGlvSGVpZ2h0ID0gc2V0dGluZ3MucmVzaXplVG9IZWlnaHQgLyBoZWlnaHQ7XG4gICAgY29uc3QgcmF0aW9zID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblxuICAgIGlmIChzZXR0aW5ncy5yZXNpemVUb1dpZHRoID4gMCkge1xuICAgICAgcmF0aW9zLnB1c2gocmF0aW9XaWR0aCk7XG4gICAgfVxuICAgIGlmIChzZXR0aW5ncy5yZXNpemVUb0hlaWdodCA+IDApIHtcbiAgICAgIHJhdGlvcy5wdXNoKHJhdGlvSGVpZ2h0KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSByYXRpb3MubGVuZ3RoID09PSAwID8gMSA6IE1hdGgubWluKC4uLnJhdGlvcyk7XG5cbiAgICBpZiAocmVzdWx0ID4gMSAmJiAhc2V0dGluZ3Mub25seVNjYWxlRG93bikge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWluKHJlc3VsdCwgMSk7XG4gIH1cblxuICBnZXRRdWFsaXR5KHNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCBzZXR0aW5ncy5pbWFnZVF1YWxpdHkgLyAxMDApKTtcbiAgfVxufVxuIl19
|