ngx-image-cropper 8.0.0 → 8.1.0
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 +46 -43
- package/esm2022/lib/component/cropper.state.mjs +188 -0
- package/esm2022/lib/component/image-cropper.component.mjs +206 -319
- package/esm2022/lib/interfaces/cropper-options.interface.mjs +1 -1
- package/esm2022/lib/interfaces/index.mjs +2 -2
- package/esm2022/lib/interfaces/move-start.interface.mjs +1 -1
- package/esm2022/lib/services/crop.service.mjs +60 -68
- package/esm2022/lib/services/load-image.service.mjs +20 -25
- package/esm2022/lib/utils/cropper-position.utils.mjs +239 -0
- package/esm2022/lib/utils/keyboard.utils.mjs +1 -1
- package/fesm2022/ngx-image-cropper.mjs +729 -687
- package/fesm2022/ngx-image-cropper.mjs.map +1 -1
- package/lib/component/cropper.state.d.ts +29 -0
- package/lib/component/image-cropper.component.d.ts +56 -64
- package/lib/interfaces/cropper-options.interface.d.ts +5 -5
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/interfaces/move-start.interface.d.ts +4 -6
- package/lib/services/crop.service.d.ts +6 -9
- package/lib/services/load-image.service.d.ts +5 -8
- package/lib/utils/cropper-position.utils.d.ts +11 -0
- package/lib/utils/keyboard.utils.d.ts +3 -2
- package/package.json +2 -1
- package/esm2022/lib/interfaces/cropper.settings.mjs +0 -54
- package/esm2022/lib/services/cropper-position.service.mjs +0 -210
- package/esm2022/lib/utils/hammer.utils.mjs +0 -2
- package/lib/interfaces/cropper.settings.d.ts +0 -38
- package/lib/services/cropper-position.service.d.ts +0 -15
- package/lib/utils/hammer.utils.d.ts +0 -7
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class CropperPositionService {
|
|
4
|
-
resetCropperPosition(sourceImage, cropperPosition, settings, maxSize) {
|
|
5
|
-
if (!sourceImage?.nativeElement) {
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
if (settings.cropperStaticHeight && settings.cropperStaticWidth) {
|
|
9
|
-
cropperPosition.x1 = 0;
|
|
10
|
-
cropperPosition.x2 = maxSize.width > settings.cropperStaticWidth ?
|
|
11
|
-
settings.cropperStaticWidth : maxSize.width;
|
|
12
|
-
cropperPosition.y1 = 0;
|
|
13
|
-
cropperPosition.y2 = maxSize.height > settings.cropperStaticHeight ?
|
|
14
|
-
settings.cropperStaticHeight : maxSize.height;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
const cropperWidth = Math.min(settings.cropperScaledMaxWidth, maxSize.width);
|
|
18
|
-
const cropperHeight = Math.min(settings.cropperScaledMaxHeight, maxSize.height);
|
|
19
|
-
if (!settings.maintainAspectRatio) {
|
|
20
|
-
cropperPosition.x1 = 0;
|
|
21
|
-
cropperPosition.x2 = cropperWidth;
|
|
22
|
-
cropperPosition.y1 = 0;
|
|
23
|
-
cropperPosition.y2 = cropperHeight;
|
|
24
|
-
}
|
|
25
|
-
else if (maxSize.width / settings.aspectRatio < maxSize.height) {
|
|
26
|
-
cropperPosition.x1 = 0;
|
|
27
|
-
cropperPosition.x2 = cropperWidth;
|
|
28
|
-
const cropperHeightWithAspectRatio = cropperWidth / settings.aspectRatio;
|
|
29
|
-
cropperPosition.y1 = (maxSize.height - cropperHeightWithAspectRatio) / 2;
|
|
30
|
-
cropperPosition.y2 = cropperPosition.y1 + cropperHeightWithAspectRatio;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
cropperPosition.y1 = 0;
|
|
34
|
-
cropperPosition.y2 = cropperHeight;
|
|
35
|
-
const cropperWidthWithAspectRatio = cropperHeight * settings.aspectRatio;
|
|
36
|
-
cropperPosition.x1 = (maxSize.width - cropperWidthWithAspectRatio) / 2;
|
|
37
|
-
cropperPosition.x2 = cropperPosition.x1 + cropperWidthWithAspectRatio;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
move(event, moveStart, cropperPosition) {
|
|
42
|
-
const diffX = this.getClientX(event) - moveStart.clientX;
|
|
43
|
-
const diffY = this.getClientY(event) - moveStart.clientY;
|
|
44
|
-
cropperPosition.x1 = moveStart.x1 + diffX;
|
|
45
|
-
cropperPosition.y1 = moveStart.y1 + diffY;
|
|
46
|
-
cropperPosition.x2 = moveStart.x2 + diffX;
|
|
47
|
-
cropperPosition.y2 = moveStart.y2 + diffY;
|
|
48
|
-
}
|
|
49
|
-
resize(event, moveStart, cropperPosition, maxSize, settings) {
|
|
50
|
-
const moveX = this.getClientX(event) - moveStart.clientX;
|
|
51
|
-
const moveY = this.getClientY(event) - moveStart.clientY;
|
|
52
|
-
switch (moveStart.position) {
|
|
53
|
-
case 'left':
|
|
54
|
-
cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);
|
|
55
|
-
break;
|
|
56
|
-
case 'topleft':
|
|
57
|
-
cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);
|
|
58
|
-
cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);
|
|
59
|
-
break;
|
|
60
|
-
case 'top':
|
|
61
|
-
cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);
|
|
62
|
-
break;
|
|
63
|
-
case 'topright':
|
|
64
|
-
cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);
|
|
65
|
-
cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);
|
|
66
|
-
break;
|
|
67
|
-
case 'right':
|
|
68
|
-
cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);
|
|
69
|
-
break;
|
|
70
|
-
case 'bottomright':
|
|
71
|
-
cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);
|
|
72
|
-
cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);
|
|
73
|
-
break;
|
|
74
|
-
case 'bottom':
|
|
75
|
-
cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);
|
|
76
|
-
break;
|
|
77
|
-
case 'bottomleft':
|
|
78
|
-
cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);
|
|
79
|
-
cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);
|
|
80
|
-
break;
|
|
81
|
-
case 'center':
|
|
82
|
-
const scale = event.scale;
|
|
83
|
-
const newWidth = Math.min(Math.max(settings.cropperScaledMinWidth, (Math.abs(moveStart.x2 - moveStart.x1)) * scale), settings.cropperScaledMaxWidth);
|
|
84
|
-
const newHeight = Math.min(Math.max(settings.cropperScaledMinHeight, (Math.abs(moveStart.y2 - moveStart.y1)) * scale), settings.cropperScaledMaxHeight);
|
|
85
|
-
cropperPosition.x1 = moveStart.clientX - newWidth / 2;
|
|
86
|
-
cropperPosition.x2 = moveStart.clientX + newWidth / 2;
|
|
87
|
-
cropperPosition.y1 = moveStart.clientY - newHeight / 2;
|
|
88
|
-
cropperPosition.y2 = moveStart.clientY + newHeight / 2;
|
|
89
|
-
if (cropperPosition.x1 < 0) {
|
|
90
|
-
cropperPosition.x2 -= cropperPosition.x1;
|
|
91
|
-
cropperPosition.x1 = 0;
|
|
92
|
-
}
|
|
93
|
-
else if (cropperPosition.x2 > maxSize.width) {
|
|
94
|
-
cropperPosition.x1 -= (cropperPosition.x2 - maxSize.width);
|
|
95
|
-
cropperPosition.x2 = maxSize.width;
|
|
96
|
-
}
|
|
97
|
-
if (cropperPosition.y1 < 0) {
|
|
98
|
-
cropperPosition.y2 -= cropperPosition.y1;
|
|
99
|
-
cropperPosition.y1 = 0;
|
|
100
|
-
}
|
|
101
|
-
else if (cropperPosition.y2 > maxSize.height) {
|
|
102
|
-
cropperPosition.y1 -= (cropperPosition.y2 - maxSize.height);
|
|
103
|
-
cropperPosition.y2 = maxSize.height;
|
|
104
|
-
}
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
if (settings.maintainAspectRatio) {
|
|
108
|
-
this.checkAspectRatio(moveStart.position, cropperPosition, maxSize, settings);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
checkAspectRatio(position, cropperPosition, maxSize, settings) {
|
|
112
|
-
let overflowX = 0;
|
|
113
|
-
let overflowY = 0;
|
|
114
|
-
switch (position) {
|
|
115
|
-
case 'top':
|
|
116
|
-
cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;
|
|
117
|
-
overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);
|
|
118
|
-
overflowY = Math.max(0 - cropperPosition.y1, 0);
|
|
119
|
-
if (overflowX > 0 || overflowY > 0) {
|
|
120
|
-
cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;
|
|
121
|
-
cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;
|
|
122
|
-
}
|
|
123
|
-
break;
|
|
124
|
-
case 'bottom':
|
|
125
|
-
cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;
|
|
126
|
-
overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);
|
|
127
|
-
overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);
|
|
128
|
-
if (overflowX > 0 || overflowY > 0) {
|
|
129
|
-
cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;
|
|
130
|
-
cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : (overflowX / settings.aspectRatio);
|
|
131
|
-
}
|
|
132
|
-
break;
|
|
133
|
-
case 'topleft':
|
|
134
|
-
cropperPosition.y1 = cropperPosition.y2 - (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;
|
|
135
|
-
overflowX = Math.max(0 - cropperPosition.x1, 0);
|
|
136
|
-
overflowY = Math.max(0 - cropperPosition.y1, 0);
|
|
137
|
-
if (overflowX > 0 || overflowY > 0) {
|
|
138
|
-
cropperPosition.x1 += (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;
|
|
139
|
-
cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;
|
|
140
|
-
}
|
|
141
|
-
break;
|
|
142
|
-
case 'topright':
|
|
143
|
-
cropperPosition.y1 = cropperPosition.y2 - (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;
|
|
144
|
-
overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);
|
|
145
|
-
overflowY = Math.max(0 - cropperPosition.y1, 0);
|
|
146
|
-
if (overflowX > 0 || overflowY > 0) {
|
|
147
|
-
cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;
|
|
148
|
-
cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;
|
|
149
|
-
}
|
|
150
|
-
break;
|
|
151
|
-
case 'right':
|
|
152
|
-
case 'bottomright':
|
|
153
|
-
cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;
|
|
154
|
-
overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);
|
|
155
|
-
overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);
|
|
156
|
-
if (overflowX > 0 || overflowY > 0) {
|
|
157
|
-
cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;
|
|
158
|
-
cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;
|
|
159
|
-
}
|
|
160
|
-
break;
|
|
161
|
-
case 'left':
|
|
162
|
-
case 'bottomleft':
|
|
163
|
-
cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;
|
|
164
|
-
overflowX = Math.max(0 - cropperPosition.x1, 0);
|
|
165
|
-
overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);
|
|
166
|
-
if (overflowX > 0 || overflowY > 0) {
|
|
167
|
-
cropperPosition.x1 += (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;
|
|
168
|
-
cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;
|
|
169
|
-
}
|
|
170
|
-
break;
|
|
171
|
-
case 'center':
|
|
172
|
-
cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;
|
|
173
|
-
cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;
|
|
174
|
-
const overflowX1 = Math.max(0 - cropperPosition.x1, 0);
|
|
175
|
-
const overflowX2 = Math.max(cropperPosition.x2 - maxSize.width, 0);
|
|
176
|
-
const overflowY1 = Math.max(cropperPosition.y2 - maxSize.height, 0);
|
|
177
|
-
const overflowY2 = Math.max(0 - cropperPosition.y1, 0);
|
|
178
|
-
if (overflowX1 > 0 || overflowX2 > 0 || overflowY1 > 0 || overflowY2 > 0) {
|
|
179
|
-
cropperPosition.x1 += (overflowY1 * settings.aspectRatio) > overflowX1 ? (overflowY1 * settings.aspectRatio) : overflowX1;
|
|
180
|
-
cropperPosition.x2 -= (overflowY2 * settings.aspectRatio) > overflowX2 ? (overflowY2 * settings.aspectRatio) : overflowX2;
|
|
181
|
-
cropperPosition.y1 += (overflowY2 * settings.aspectRatio) > overflowX2 ? overflowY2 : overflowX2 / settings.aspectRatio;
|
|
182
|
-
cropperPosition.y2 -= (overflowY1 * settings.aspectRatio) > overflowX1 ? overflowY1 : overflowX1 / settings.aspectRatio;
|
|
183
|
-
}
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
getClientX(event) {
|
|
188
|
-
if ('touches' in event && event.touches[0])
|
|
189
|
-
return event.touches[0].clientX;
|
|
190
|
-
else if ('clientX' in event) {
|
|
191
|
-
return event.clientX;
|
|
192
|
-
}
|
|
193
|
-
return 0;
|
|
194
|
-
}
|
|
195
|
-
getClientY(event) {
|
|
196
|
-
if ('touches' in event && event.touches[0])
|
|
197
|
-
return event.touches[0].clientY;
|
|
198
|
-
else if ('clientX' in event) {
|
|
199
|
-
return event.clientY;
|
|
200
|
-
}
|
|
201
|
-
return 0;
|
|
202
|
-
}
|
|
203
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CropperPositionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
204
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CropperPositionService, providedIn: 'root' }); }
|
|
205
|
-
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CropperPositionService, decorators: [{
|
|
207
|
-
type: Injectable,
|
|
208
|
-
args: [{ providedIn: 'root' }]
|
|
209
|
-
}] });
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvcHBlci1wb3NpdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjL2xpYi9zZXJ2aWNlcy9jcm9wcGVyLXBvc2l0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNdkQsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxvQkFBb0IsQ0FBQyxXQUF1QixFQUFFLGVBQWdDLEVBQUUsUUFBeUIsRUFBRSxPQUFtQjtRQUM1SCxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFDRCxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxRQUFRLENBQUMsa0JBQWtCLEVBQUU7WUFDL0QsZUFBZSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkIsZUFBZSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNoRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDOUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkIsZUFBZSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNsRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDakQ7YUFBTTtZQUNMLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FB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QUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO29CQUN4SCxlQUFlLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7aUJBQ3pIO2dCQUNELE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBc0M7UUFDL0MsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDN0IsSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQTtTQUNyQjtRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFzQztRQUMvQyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDeEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQzthQUM3QixJQUFJLFNBQVMsSUFBSSxLQUFLLEVBQUU7WUFDM0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFBO1NBQ3JCO1FBRUQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOytHQTdOVSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQURULE1BQU07OzRGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3JvcHBlclBvc2l0aW9uLCBEaW1lbnNpb25zLCBNb3ZlU3RhcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENyb3BwZXJTZXR0aW5ncyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3JvcHBlci5zZXR0aW5ncyc7XG5pbXBvcnQge0Jhc2ljRXZlbnR9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2Jhc2ljLWV2ZW50LmludGVyZmFjZVwiO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENyb3BwZXJQb3NpdGlvblNlcnZpY2Uge1xuXG4gIHJlc2V0Q3JvcHBlclBvc2l0aW9uKHNvdXJjZUltYWdlOiBFbGVtZW50UmVmLCBjcm9wcGVyUG9zaXRpb246IENyb3BwZXJQb3NpdGlvbiwgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncywgbWF4U2l6ZTogRGltZW5zaW9ucyk6IHZvaWQge1xuICAgIGlmICghc291cmNlSW1hZ2U/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNldHRpbmdzLmNyb3BwZXJTdGF0aWNIZWlnaHQgJiYgc2V0dGluZ3MuY3JvcHBlclN0YXRpY1dpZHRoKSB7XG4gICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSAwO1xuICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gbWF4U2l6ZS53aWR0aCA+IHNldHRpbmdzLmNyb3BwZXJTdGF0aWNXaWR0aCA/XG4gICAgICAgIHNldHRpbmdzLmNyb3BwZXJTdGF0aWNXaWR0aCA6IG1heFNpemUud2lkdGg7XG4gICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSAwO1xuICAgICAgY3JvcHBlclBvc2l0aW9uLnkyID0gbWF4U2l6ZS5oZWlnaHQgPiBzZXR0aW5ncy5jcm9wcGVyU3RhdGljSGVpZ2h0ID9cbiAgICAgICAgc2V0dGluZ3MuY3JvcHBlclN0YXRpY0hlaWdodCA6IG1heFNpemUuaGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjcm9wcGVyV2lkdGggPSBNYXRoLm1pbihzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4V2lkdGgsIG1heFNpemUud2lkdGgpO1xuICAgICAgY29uc3QgY3JvcHBlckhlaWdodCA9IE1hdGgubWluKHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQsIG1heFNpemUuaGVpZ2h0KTtcbiAgICAgIGlmICghc2V0dGluZ3MubWFpbnRhaW5Bc3BlY3RSYXRpbykge1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSAwO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBjcm9wcGVyV2lkdGg7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSA9IDA7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJIZWlnaHQ7XG4gICAgICB9IGVsc2UgaWYgKG1heFNpemUud2lkdGggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbyA8IG1heFNpemUuaGVpZ2h0KSB7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IDA7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IGNyb3BwZXJXaWR0aDtcbiAgICAgICAgY29uc3QgY3JvcHBlckhlaWdodFdpdGhBc3BlY3RSYXRpbyA9IGNyb3BwZXJXaWR0aCAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSAobWF4U2l6ZS5oZWlnaHQgLSBjcm9wcGVySGVpZ2h0V2l0aEFzcGVjdFJhdGlvKSAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIGNyb3BwZXJIZWlnaHRXaXRoQXNwZWN0UmF0aW87XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSAwO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgPSBjcm9wcGVySGVpZ2h0O1xuICAgICAgICBjb25zdCBjcm9wcGVyV2lkdGhXaXRoQXNwZWN0UmF0aW8gPSBjcm9wcGVySGVpZ2h0ICogc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IChtYXhTaXplLndpZHRoIC0gY3JvcHBlcldpZHRoV2l0aEFzcGVjdFJhdGlvKSAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IGNyb3BwZXJQb3NpdGlvbi54MSArIGNyb3BwZXJXaWR0aFdpdGhBc3BlY3RSYXRpbztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb3ZlKGV2ZW50OiBFdmVudCB8IEJhc2ljRXZlbnQsIG1vdmVTdGFydDogTW92ZVN0YXJ0LCBjcm9wcGVyUG9zaXRpb246IENyb3BwZXJQb3NpdGlvbikge1xuICAgIGNvbnN0IGRpZmZYID0gdGhpcy5nZXRDbGllbnRYKGV2ZW50KSAtIG1vdmVTdGFydC5jbGllbnRYO1xuICAgIGNvbnN0IGRpZmZZID0gdGhpcy5nZXRDbGllbnRZKGV2ZW50KSAtIG1vdmVTdGFydC5jbGllbnRZO1xuXG4gICAgY3JvcHBlclBvc2l0aW9uLngxID0gbW92ZVN0YXJ0LngxICsgZGlmZlg7XG4gICAgY3JvcHBlclBvc2l0aW9uLnkxID0gbW92ZVN0YXJ0LnkxICsgZGlmZlk7XG4gICAgY3JvcHBlclBvc2l0aW9uLngyID0gbW92ZVN0YXJ0LngyICsgZGlmZlg7XG4gICAgY3JvcHBlclBvc2l0aW9uLnkyID0gbW92ZVN0YXJ0LnkyICsgZGlmZlk7XG4gIH1cblxuICByZXNpemUoZXZlbnQ6IEV2ZW50IHwgQmFzaWNFdmVudCwgbW92ZVN0YXJ0OiBNb3ZlU3RhcnQsIGNyb3BwZXJQb3NpdGlvbjogQ3JvcHBlclBvc2l0aW9uLCBtYXhTaXplOiBEaW1lbnNpb25zLCBzZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogdm9pZCB7XG4gICAgY29uc3QgbW92ZVggPSB0aGlzLmdldENsaWVudFgoZXZlbnQpIC0gbW92ZVN0YXJ0LmNsaWVudFg7XG4gICAgY29uc3QgbW92ZVkgPSB0aGlzLmdldENsaWVudFkoZXZlbnQpIC0gbW92ZVN0YXJ0LmNsaWVudFk7XG4gICAgc3dpdGNoIChtb3ZlU3RhcnQucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSBNYXRoLm1pbihNYXRoLm1heChtb3ZlU3RhcnQueDEgKyBtb3ZlWCwgY3JvcHBlclBvc2l0aW9uLngyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heFdpZHRoKSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluV2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcGxlZnQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgPSBNYXRoLm1pbihNYXRoLm1heChtb3ZlU3RhcnQueDEgKyBtb3ZlWCwgY3JvcHBlclBvc2l0aW9uLngyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heFdpZHRoKSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluV2lkdGgpO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBNYXRoLm1pbihNYXRoLm1heChtb3ZlU3RhcnQueTEgKyBtb3ZlWSwgY3JvcHBlclBvc2l0aW9uLnkyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heEhlaWdodCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC0gc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbkhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gTWF0aC5taW4oTWF0aC5tYXgobW92ZVN0YXJ0LnkxICsgbW92ZVksIGNyb3BwZXJQb3NpdGlvbi55MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcHJpZ2h0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gTWF0aC5tYXgoTWF0aC5taW4obW92ZVN0YXJ0LngyICsgbW92ZVgsIGNyb3BwZXJQb3NpdGlvbi54MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbldpZHRoKTtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gTWF0aC5taW4oTWF0aC5tYXgobW92ZVN0YXJ0LnkxICsgbW92ZVksIGNyb3BwZXJQb3NpdGlvbi55MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhIZWlnaHQpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gTWF0aC5tYXgoTWF0aC5taW4obW92ZVN0YXJ0LngyICsgbW92ZVgsIGNyb3BwZXJQb3NpdGlvbi54MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbldpZHRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b21yaWdodCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IE1hdGgubWF4KE1hdGgubWluKG1vdmVTdGFydC54MiArIG1vdmVYLCBjcm9wcGVyUG9zaXRpb24ueDEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4V2lkdGgpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSArIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCk7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IE1hdGgubWF4KE1hdGgubWluKG1vdmVTdGFydC55MiArIG1vdmVZLCBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0KSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgPSBNYXRoLm1heChNYXRoLm1pbihtb3ZlU3RhcnQueTIgKyBtb3ZlWSwgY3JvcHBlclBvc2l0aW9uLnkxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1heEhlaWdodCksXG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxICsgc2V0dGluZ3MuY3JvcHBlclNjYWxlZE1pbkhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90dG9tbGVmdCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IE1hdGgubWluKE1hdGgubWF4KG1vdmVTdGFydC54MSArIG1vdmVYLCBjcm9wcGVyUG9zaXRpb24ueDIgLSBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4V2lkdGgpLFxuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiAtIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCk7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IE1hdGgubWF4KE1hdGgubWluKG1vdmVTdGFydC55MiArIG1vdmVZLCBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0KSxcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgKyBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWluSGVpZ2h0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBjb25zdCBzY2FsZSA9IChldmVudCBhcyBhbnkpLnNjYWxlO1xuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWluKFxuICAgICAgICAgIE1hdGgubWF4KHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5XaWR0aCwgKE1hdGguYWJzKG1vdmVTdGFydC54MiAtIG1vdmVTdGFydC54MSkpICogc2NhbGUpLFxuICAgICAgICAgIHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNYXhXaWR0aCk7XG4gICAgICAgIGNvbnN0IG5ld0hlaWdodCA9IE1hdGgubWluKFxuICAgICAgICAgIE1hdGgubWF4KHNldHRpbmdzLmNyb3BwZXJTY2FsZWRNaW5IZWlnaHQsIChNYXRoLmFicyhtb3ZlU3RhcnQueTIgLSBtb3ZlU3RhcnQueTEpKSAqIHNjYWxlKSxcbiAgICAgICAgICBzZXR0aW5ncy5jcm9wcGVyU2NhbGVkTWF4SGVpZ2h0KTtcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngxID0gbW92ZVN0YXJ0LmNsaWVudFggLSBuZXdXaWR0aCAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IG1vdmVTdGFydC5jbGllbnRYICsgbmV3V2lkdGggLyAyO1xuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBtb3ZlU3RhcnQuY2xpZW50WSAtIG5ld0hlaWdodCAvIDI7XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IG1vdmVTdGFydC5jbGllbnRZICsgbmV3SGVpZ2h0IC8gMjtcbiAgICAgICAgaWYgKGNyb3BwZXJQb3NpdGlvbi54MSA8IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLT0gY3JvcHBlclBvc2l0aW9uLngxO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoY3JvcHBlclBvc2l0aW9uLngyID4gbWF4U2l6ZS53aWR0aCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSAtPSAoY3JvcHBlclBvc2l0aW9uLngyIC0gbWF4U2l6ZS53aWR0aCk7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gbWF4U2l6ZS53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3JvcHBlclBvc2l0aW9uLnkxIDwgMCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtPSBjcm9wcGVyUG9zaXRpb24ueTE7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9wcGVyUG9zaXRpb24ueTIgPiBtYXhTaXplLmhlaWdodCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSAtPSAoY3JvcHBlclBvc2l0aW9uLnkyIC0gbWF4U2l6ZS5oZWlnaHQpO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IG1heFNpemUuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncy5tYWludGFpbkFzcGVjdFJhdGlvKSB7XG4gICAgICB0aGlzLmNoZWNrQXNwZWN0UmF0aW8obW92ZVN0YXJ0LnBvc2l0aW9uISwgY3JvcHBlclBvc2l0aW9uLCBtYXhTaXplLCBzZXR0aW5ncyk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tBc3BlY3RSYXRpbyhwb3NpdGlvbjogc3RyaW5nLCBjcm9wcGVyUG9zaXRpb246IENyb3BwZXJQb3NpdGlvbiwgbWF4U2l6ZTogRGltZW5zaW9ucywgc2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncyk6IHZvaWQge1xuICAgIGxldCBvdmVyZmxvd1ggPSAwO1xuICAgIGxldCBvdmVyZmxvd1kgPSAwO1xuXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyID0gY3JvcHBlclBvc2l0aW9uLngxICsgKGNyb3BwZXJQb3NpdGlvbi55MiAtIGNyb3BwZXJQb3NpdGlvbi55MSkgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgb3ZlcmZsb3dYID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLngyIC0gbWF4U2l6ZS53aWR0aCwgMCk7XG4gICAgICAgIG92ZXJmbG93WSA9IE1hdGgubWF4KDAgLSBjcm9wcGVyUG9zaXRpb24ueTEsIDApO1xuICAgICAgICBpZiAob3ZlcmZsb3dYID4gMCB8fCBvdmVyZmxvd1kgPiAwKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSArPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gb3ZlcmZsb3dZIDogb3ZlcmZsb3dYIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgPSBjcm9wcGVyUG9zaXRpb24ueDEgKyAoY3JvcHBlclBvc2l0aW9uLnkyIC0gY3JvcHBlclBvc2l0aW9uLnkxKSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBvdmVyZmxvd1ggPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueDIgLSBtYXhTaXplLndpZHRoLCAwKTtcbiAgICAgICAgb3ZlcmZsb3dZID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLnkyIC0gbWF4U2l6ZS5oZWlnaHQsIDApO1xuICAgICAgICBpZiAob3ZlcmZsb3dYID4gMCB8fCBvdmVyZmxvd1kgPiAwKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiAtPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gb3ZlcmZsb3dZIDogKG92ZXJmbG93WCAvIHNldHRpbmdzLmFzcGVjdFJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcGxlZnQnOlxuICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgPSBjcm9wcGVyUG9zaXRpb24ueTIgLSAoY3JvcHBlclBvc2l0aW9uLngyIC0gY3JvcHBlclBvc2l0aW9uLngxKSAvIHNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBvdmVyZmxvd1ggPSBNYXRoLm1heCgwIC0gY3JvcHBlclBvc2l0aW9uLngxLCAwKTtcbiAgICAgICAgb3ZlcmZsb3dZID0gTWF0aC5tYXgoMCAtIGNyb3BwZXJQb3NpdGlvbi55MSwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgKz0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxICs9IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiBvdmVyZmxvd1ggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcHJpZ2h0JzpcbiAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkxID0gY3JvcHBlclBvc2l0aW9uLnkyIC0gKGNyb3BwZXJQb3NpdGlvbi54MiAtIGNyb3BwZXJQb3NpdGlvbi54MSkgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgb3ZlcmZsb3dYID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLngyIC0gbWF4U2l6ZS53aWR0aCwgMCk7XG4gICAgICAgIG92ZXJmbG93WSA9IE1hdGgubWF4KDAgLSBjcm9wcGVyUG9zaXRpb24ueTEsIDApO1xuICAgICAgICBpZiAob3ZlcmZsb3dYID4gMCB8fCBvdmVyZmxvd1kgPiAwKSB7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYO1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MSArPSAob3ZlcmZsb3dZICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYID8gb3ZlcmZsb3dZIDogb3ZlcmZsb3dYIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICBjYXNlICdib3R0b21yaWdodCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIChjcm9wcGVyUG9zaXRpb24ueDIgLSBjcm9wcGVyUG9zaXRpb24ueDEpIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIG92ZXJmbG93WCA9IE1hdGgubWF4KGNyb3BwZXJQb3NpdGlvbi54MiAtIG1heFNpemUud2lkdGgsIDApO1xuICAgICAgICBvdmVyZmxvd1kgPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueTIgLSBtYXhTaXplLmhlaWdodCwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDIgLT0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiBvdmVyZmxvd1ggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY2FzZSAnYm90dG9tbGVmdCc6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIChjcm9wcGVyUG9zaXRpb24ueDIgLSBjcm9wcGVyUG9zaXRpb24ueDEpIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIG92ZXJmbG93WCA9IE1hdGgubWF4KDAgLSBjcm9wcGVyUG9zaXRpb24ueDEsIDApO1xuICAgICAgICBvdmVyZmxvd1kgPSBNYXRoLm1heChjcm9wcGVyUG9zaXRpb24ueTIgLSBtYXhTaXplLmhlaWdodCwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1ggPiAwIHx8IG92ZXJmbG93WSA+IDApIHtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueDEgKz0gKG92ZXJmbG93WSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WCA/IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgOiBvdmVyZmxvd1g7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLnkyIC09IChvdmVyZmxvd1kgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1ggPyBvdmVyZmxvd1kgOiBvdmVyZmxvd1ggLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MiA9IGNyb3BwZXJQb3NpdGlvbi54MSArIChjcm9wcGVyUG9zaXRpb24ueTIgLSBjcm9wcGVyUG9zaXRpb24ueTEpICogc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIGNyb3BwZXJQb3NpdGlvbi55MiA9IGNyb3BwZXJQb3NpdGlvbi55MSArIChjcm9wcGVyUG9zaXRpb24ueDIgLSBjcm9wcGVyUG9zaXRpb24ueDEpIC8gc2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIGNvbnN0IG92ZXJmbG93WDEgPSBNYXRoLm1heCgwIC0gY3JvcHBlclBvc2l0aW9uLngxLCAwKTtcbiAgICAgICAgY29uc3Qgb3ZlcmZsb3dYMiA9IE1hdGgubWF4KGNyb3BwZXJQb3NpdGlvbi54MiAtIG1heFNpemUud2lkdGgsIDApO1xuICAgICAgICBjb25zdCBvdmVyZmxvd1kxID0gTWF0aC5tYXgoY3JvcHBlclBvc2l0aW9uLnkyIC0gbWF4U2l6ZS5oZWlnaHQsIDApO1xuICAgICAgICBjb25zdCBvdmVyZmxvd1kyID0gTWF0aC5tYXgoMCAtIGNyb3BwZXJQb3NpdGlvbi55MSwgMCk7XG4gICAgICAgIGlmIChvdmVyZmxvd1gxID4gMCB8fCBvdmVyZmxvd1gyID4gMCB8fCBvdmVyZmxvd1kxID4gMCB8fCBvdmVyZmxvd1kyID4gMCkge1xuICAgICAgICAgIGNyb3BwZXJQb3NpdGlvbi54MSArPSAob3ZlcmZsb3dZMSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA+IG92ZXJmbG93WDEgPyAob3ZlcmZsb3dZMSAqIHNldHRpbmdzLmFzcGVjdFJhdGlvKSA6IG92ZXJmbG93WDE7XG4gICAgICAgICAgY3JvcHBlclBvc2l0aW9uLngyIC09IChvdmVyZmxvd1kyICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pID4gb3ZlcmZsb3dYMiA/IChvdmVyZmxvd1kyICogc2V0dGluZ3MuYXNwZWN0UmF0aW8pIDogb3ZlcmZsb3dYMjtcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTEgKz0gKG92ZXJmbG93WTIgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1gyID8gb3ZlcmZsb3dZMiA6IG92ZXJmbG93WDIgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgICBjcm9wcGVyUG9zaXRpb24ueTIgLT0gKG92ZXJmbG93WTEgKiBzZXR0aW5ncy5hc3BlY3RSYXRpbykgPiBvdmVyZmxvd1gxID8gb3ZlcmZsb3dZMSA6IG92ZXJmbG93WDEgLyBzZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXRDbGllbnRYKGV2ZW50OiBFdmVudCB8IEJhc2ljRXZlbnQgfCBUb3VjaEV2ZW50KTogbnVtYmVyIHtcbiAgICBpZiAoJ3RvdWNoZXMnIGluIGV2ZW50ICYmIGV2ZW50LnRvdWNoZXNbMF0pXG4gICAgICByZXR1cm4gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgIGVsc2UgaWYgKCdjbGllbnRYJyBpbiBldmVudCkge1xuICAgICAgcmV0dXJuIGV2ZW50LmNsaWVudFhcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldENsaWVudFkoZXZlbnQ6IEV2ZW50IHwgQmFzaWNFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIGlmICgndG91Y2hlcycgaW4gZXZlbnQgJiYgZXZlbnQudG91Y2hlc1swXSlcbiAgICAgIHJldHVybiBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XG4gICAgZWxzZSBpZiAoJ2NsaWVudFgnIGluIGV2ZW50KSB7XG4gICAgICByZXR1cm4gZXZlbnQuY2xpZW50WVxuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjL2xpYi91dGlscy9oYW1tZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEhhbW1lclN0YXRpYyA9IG5ldyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQsIG9wdGlvbnM/OiBhbnkpID0+IEhhbW1lck1hbmFnZXI7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgaW50ZXJmYWNlIEhhbW1lck1hbmFnZXIge1xuICBnZXQoZXZlbnROYW1lOiBzdHJpbmcpOiBIYW1tZXJNYW5hZ2VyO1xuXG4gIHNldChvcHRpb25zOiBhbnkpOiBIYW1tZXJNYW5hZ2VyO1xuXG4gIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiAoZXY6IGFueSkgPT4gYW55KTogdm9pZDtcbn1cbiJdfQ==
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { CropperOptions, OutputFormat, OutputType } from './cropper-options.interface';
|
|
2
|
-
import { ImageTransform } from './image-transform.interface';
|
|
3
|
-
import { SimpleChanges } from '@angular/core';
|
|
4
|
-
export declare class CropperSettings {
|
|
5
|
-
format: OutputFormat;
|
|
6
|
-
output: OutputType;
|
|
7
|
-
maintainAspectRatio: boolean;
|
|
8
|
-
transform: ImageTransform;
|
|
9
|
-
aspectRatio: number;
|
|
10
|
-
resetCropOnAspectRatioChange: boolean;
|
|
11
|
-
resizeToWidth: number;
|
|
12
|
-
resizeToHeight: number;
|
|
13
|
-
cropperMinWidth: number;
|
|
14
|
-
cropperMinHeight: number;
|
|
15
|
-
cropperMaxHeight: number;
|
|
16
|
-
cropperMaxWidth: number;
|
|
17
|
-
cropperStaticWidth: number;
|
|
18
|
-
cropperStaticHeight: number;
|
|
19
|
-
canvasRotation: number;
|
|
20
|
-
initialStepSize: number;
|
|
21
|
-
roundCropper: boolean;
|
|
22
|
-
onlyScaleDown: boolean;
|
|
23
|
-
imageQuality: number;
|
|
24
|
-
autoCrop: boolean;
|
|
25
|
-
backgroundColor: string | null;
|
|
26
|
-
containWithinAspectRatio: boolean;
|
|
27
|
-
hideResizeSquares: boolean;
|
|
28
|
-
alignImage: 'left' | 'center';
|
|
29
|
-
cropperFrameAriaLabel: string;
|
|
30
|
-
cropperScaledMinWidth: number;
|
|
31
|
-
cropperScaledMinHeight: number;
|
|
32
|
-
cropperScaledMaxWidth: number;
|
|
33
|
-
cropperScaledMaxHeight: number;
|
|
34
|
-
stepSize: number;
|
|
35
|
-
setOptions(options: Partial<CropperOptions>): void;
|
|
36
|
-
setOptionsFromChanges(changes: SimpleChanges): void;
|
|
37
|
-
private validateOptions;
|
|
38
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ElementRef } from '@angular/core';
|
|
2
|
-
import { CropperPosition, Dimensions, MoveStart } from '../interfaces';
|
|
3
|
-
import { CropperSettings } from '../interfaces/cropper.settings';
|
|
4
|
-
import { BasicEvent } from "../interfaces/basic-event.interface";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class CropperPositionService {
|
|
7
|
-
resetCropperPosition(sourceImage: ElementRef, cropperPosition: CropperPosition, settings: CropperSettings, maxSize: Dimensions): void;
|
|
8
|
-
move(event: Event | BasicEvent, moveStart: MoveStart, cropperPosition: CropperPosition): void;
|
|
9
|
-
resize(event: Event | BasicEvent, moveStart: MoveStart, cropperPosition: CropperPosition, maxSize: Dimensions, settings: CropperSettings): void;
|
|
10
|
-
checkAspectRatio(position: string, cropperPosition: CropperPosition, maxSize: Dimensions, settings: CropperSettings): void;
|
|
11
|
-
getClientX(event: Event | BasicEvent | TouchEvent): number;
|
|
12
|
-
getClientY(event: Event | BasicEvent | TouchEvent): number;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CropperPositionService, never>;
|
|
14
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<CropperPositionService>;
|
|
15
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export type HammerStatic = new (element: HTMLElement | SVGElement, options?: any) => HammerManager;
|
|
2
|
-
/** @docs-private */
|
|
3
|
-
export interface HammerManager {
|
|
4
|
-
get(eventName: string): HammerManager;
|
|
5
|
-
set(options: any): HammerManager;
|
|
6
|
-
on(eventName: string, handler: (ev: any) => any): void;
|
|
7
|
-
}
|