ngx-image-cropper 4.0.1 → 6.0.1
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} +544 -1324
- 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 +15 -12
- package/lib/image-cropper.module.d.ts +6 -0
- package/lib/interfaces/cropper.settings.d.ts +1 -1
- package/lib/interfaces/index.d.ts +1 -0
- package/lib/services/crop.service.d.ts +4 -1
- 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 -15
- package/bundles/ngx-image-cropper.umd.js +0 -2617
- 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 -825
- 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 -257
- 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/esm5/lib/component/image-cropper.component.js +0 -978
- package/esm5/lib/image-cropper.module.js +0 -28
- package/esm5/lib/interfaces/cropper-options.interface.js +0 -56
- package/esm5/lib/interfaces/cropper-position.interface.js +0 -20
- package/esm5/lib/interfaces/cropper.settings.js +0 -156
- package/esm5/lib/interfaces/dimensions.interface.js +0 -16
- package/esm5/lib/interfaces/exif-transform.interface.js +0 -16
- package/esm5/lib/interfaces/image-cropped-event.interface.js +0 -24
- package/esm5/lib/interfaces/image-transform.interface.js +0 -20
- package/esm5/lib/interfaces/index.js +0 -6
- package/esm5/lib/interfaces/loaded-image.interface.js +0 -18
- package/esm5/lib/interfaces/move-start.interface.js +0 -37
- package/esm5/lib/services/crop.service.js +0 -214
- package/esm5/lib/services/cropper-position.service.js +0 -296
- package/esm5/lib/services/load-image.service.js +0 -366
- package/esm5/lib/utils/blob.utils.js +0 -26
- package/esm5/lib/utils/exif.utils.js +0 -128
- package/esm5/lib/utils/hammer.utils.js +0 -29
- package/esm5/lib/utils/keyboard.utils.js +0 -58
- package/esm5/lib/utils/resize.utils.js +0 -116
- package/esm5/ngx-image-cropper.js +0 -13
- package/esm5/public-api.js +0 -11
- package/fesm2015/ngx-image-cropper.js.map +0 -1
- package/fesm5/ngx-image-cropper.js +0 -2399
- package/fesm5/ngx-image-cropper.js.map +0 -1
- package/ngx-image-cropper.metadata.json +0 -1
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/services/load-image.service.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
import { __awaiter } from "tslib";
|
|
7
|
-
import { Injectable } from '@angular/core';
|
|
8
|
-
import { getTransformationsFromExifData, supportsAutomaticRotation } from '../utils/exif.utils';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
/**
|
|
11
|
-
* @record
|
|
12
|
-
*/
|
|
13
|
-
function LoadImageBase64() { }
|
|
14
|
-
if (false) {
|
|
15
|
-
/** @type {?} */
|
|
16
|
-
LoadImageBase64.prototype.originalImage;
|
|
17
|
-
/** @type {?} */
|
|
18
|
-
LoadImageBase64.prototype.originalBase64;
|
|
19
|
-
}
|
|
20
|
-
export class LoadImageService {
|
|
21
|
-
constructor() {
|
|
22
|
-
this.autoRotateSupported = supportsAutomaticRotation();
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* @param {?} file
|
|
26
|
-
* @param {?} cropperSettings
|
|
27
|
-
* @return {?}
|
|
28
|
-
*/
|
|
29
|
-
loadImageFile(file, cropperSettings) {
|
|
30
|
-
return new Promise((/**
|
|
31
|
-
* @param {?} resolve
|
|
32
|
-
* @param {?} reject
|
|
33
|
-
* @return {?}
|
|
34
|
-
*/
|
|
35
|
-
(resolve, reject) => {
|
|
36
|
-
/** @type {?} */
|
|
37
|
-
const fileReader = new FileReader();
|
|
38
|
-
fileReader.onload = (/**
|
|
39
|
-
* @param {?} event
|
|
40
|
-
* @return {?}
|
|
41
|
-
*/
|
|
42
|
-
(event) => {
|
|
43
|
-
this.loadImage(event.target.result, file.type, cropperSettings)
|
|
44
|
-
.then(resolve)
|
|
45
|
-
.catch(reject);
|
|
46
|
-
});
|
|
47
|
-
fileReader.readAsDataURL(file);
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* @private
|
|
52
|
-
* @param {?} imageBase64
|
|
53
|
-
* @param {?} imageType
|
|
54
|
-
* @param {?} cropperSettings
|
|
55
|
-
* @return {?}
|
|
56
|
-
*/
|
|
57
|
-
loadImage(imageBase64, imageType, cropperSettings) {
|
|
58
|
-
if (!this.isValidImageType(imageType)) {
|
|
59
|
-
return Promise.reject(new Error('Invalid image type'));
|
|
60
|
-
}
|
|
61
|
-
return this.loadBase64Image(imageBase64, cropperSettings);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* @private
|
|
65
|
-
* @param {?} type
|
|
66
|
-
* @return {?}
|
|
67
|
-
*/
|
|
68
|
-
isValidImageType(type) {
|
|
69
|
-
return /image\/(png|jpg|jpeg|bmp|gif|tiff|webp)/.test(type);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* @param {?} url
|
|
73
|
-
* @param {?} cropperSettings
|
|
74
|
-
* @return {?}
|
|
75
|
-
*/
|
|
76
|
-
loadImageFromURL(url, cropperSettings) {
|
|
77
|
-
return new Promise((/**
|
|
78
|
-
* @param {?} resolve
|
|
79
|
-
* @param {?} reject
|
|
80
|
-
* @return {?}
|
|
81
|
-
*/
|
|
82
|
-
(resolve, reject) => {
|
|
83
|
-
/** @type {?} */
|
|
84
|
-
const img = new Image();
|
|
85
|
-
img.onerror = (/**
|
|
86
|
-
* @return {?}
|
|
87
|
-
*/
|
|
88
|
-
() => reject);
|
|
89
|
-
img.onload = (/**
|
|
90
|
-
* @return {?}
|
|
91
|
-
*/
|
|
92
|
-
() => {
|
|
93
|
-
/** @type {?} */
|
|
94
|
-
const canvas = document.createElement('canvas');
|
|
95
|
-
/** @type {?} */
|
|
96
|
-
const context = canvas.getContext('2d');
|
|
97
|
-
canvas.width = img.width;
|
|
98
|
-
canvas.height = img.height;
|
|
99
|
-
context.drawImage(img, 0, 0);
|
|
100
|
-
this.loadBase64Image(canvas.toDataURL(), cropperSettings).then(resolve);
|
|
101
|
-
});
|
|
102
|
-
img.crossOrigin = 'anonymous';
|
|
103
|
-
img.src = url;
|
|
104
|
-
}));
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* @param {?} imageBase64
|
|
108
|
-
* @param {?} cropperSettings
|
|
109
|
-
* @return {?}
|
|
110
|
-
*/
|
|
111
|
-
loadBase64Image(imageBase64, cropperSettings) {
|
|
112
|
-
return new Promise((/**
|
|
113
|
-
* @param {?} resolve
|
|
114
|
-
* @param {?} reject
|
|
115
|
-
* @return {?}
|
|
116
|
-
*/
|
|
117
|
-
(resolve, reject) => {
|
|
118
|
-
/** @type {?} */
|
|
119
|
-
const originalImage = new Image();
|
|
120
|
-
originalImage.onload = (/**
|
|
121
|
-
* @return {?}
|
|
122
|
-
*/
|
|
123
|
-
() => resolve({
|
|
124
|
-
originalImage,
|
|
125
|
-
originalBase64: imageBase64
|
|
126
|
-
}));
|
|
127
|
-
originalImage.onerror = reject;
|
|
128
|
-
originalImage.src = imageBase64;
|
|
129
|
-
})).then((/**
|
|
130
|
-
* @param {?} res
|
|
131
|
-
* @return {?}
|
|
132
|
-
*/
|
|
133
|
-
(res) => this.transformImageBase64(res, cropperSettings)));
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* @private
|
|
137
|
-
* @param {?} res
|
|
138
|
-
* @param {?} cropperSettings
|
|
139
|
-
* @return {?}
|
|
140
|
-
*/
|
|
141
|
-
transformImageBase64(res, cropperSettings) {
|
|
142
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
143
|
-
/** @type {?} */
|
|
144
|
-
const autoRotate = yield this.autoRotateSupported;
|
|
145
|
-
/** @type {?} */
|
|
146
|
-
const exifTransform = yield getTransformationsFromExifData(autoRotate ? -1 : res.originalBase64);
|
|
147
|
-
if (!res.originalImage || !res.originalImage.complete) {
|
|
148
|
-
return Promise.reject(new Error('No image loaded'));
|
|
149
|
-
}
|
|
150
|
-
/** @type {?} */
|
|
151
|
-
const loadedImage = {
|
|
152
|
-
original: {
|
|
153
|
-
base64: res.originalBase64,
|
|
154
|
-
image: res.originalImage,
|
|
155
|
-
size: {
|
|
156
|
-
width: res.originalImage.naturalWidth,
|
|
157
|
-
height: res.originalImage.naturalHeight
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
exifTransform
|
|
161
|
-
};
|
|
162
|
-
return this.transformLoadedImage(loadedImage, cropperSettings);
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* @param {?} loadedImage
|
|
167
|
-
* @param {?} cropperSettings
|
|
168
|
-
* @return {?}
|
|
169
|
-
*/
|
|
170
|
-
transformLoadedImage(loadedImage, cropperSettings) {
|
|
171
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
172
|
-
/** @type {?} */
|
|
173
|
-
const canvasRotation = cropperSettings.canvasRotation + loadedImage.exifTransform.rotate;
|
|
174
|
-
/** @type {?} */
|
|
175
|
-
const originalSize = {
|
|
176
|
-
width: loadedImage.original.image.naturalWidth,
|
|
177
|
-
height: loadedImage.original.image.naturalHeight
|
|
178
|
-
};
|
|
179
|
-
if (canvasRotation === 0 && !loadedImage.exifTransform.flip && !cropperSettings.containWithinAspectRatio) {
|
|
180
|
-
return {
|
|
181
|
-
original: {
|
|
182
|
-
base64: loadedImage.original.base64,
|
|
183
|
-
image: loadedImage.original.image,
|
|
184
|
-
size: Object.assign({}, originalSize)
|
|
185
|
-
},
|
|
186
|
-
transformed: {
|
|
187
|
-
base64: loadedImage.original.base64,
|
|
188
|
-
image: loadedImage.original.image,
|
|
189
|
-
size: Object.assign({}, originalSize)
|
|
190
|
-
},
|
|
191
|
-
exifTransform: loadedImage.exifTransform
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
/** @type {?} */
|
|
195
|
-
const transformedSize = this.getTransformedSize(originalSize, loadedImage.exifTransform, cropperSettings);
|
|
196
|
-
/** @type {?} */
|
|
197
|
-
const canvas = document.createElement('canvas');
|
|
198
|
-
canvas.width = transformedSize.width;
|
|
199
|
-
canvas.height = transformedSize.height;
|
|
200
|
-
/** @type {?} */
|
|
201
|
-
const ctx = canvas.getContext('2d');
|
|
202
|
-
ctx.setTransform(loadedImage.exifTransform.flip ? -1 : 1, 0, 0, 1, canvas.width / 2, canvas.height / 2);
|
|
203
|
-
ctx.rotate(Math.PI * (canvasRotation / 2));
|
|
204
|
-
ctx.drawImage(loadedImage.original.image, -originalSize.width / 2, -originalSize.height / 2);
|
|
205
|
-
/** @type {?} */
|
|
206
|
-
const transformedBase64 = canvas.toDataURL();
|
|
207
|
-
/** @type {?} */
|
|
208
|
-
const transformedImage = yield this.loadImageFromBase64(transformedBase64);
|
|
209
|
-
return {
|
|
210
|
-
original: {
|
|
211
|
-
base64: loadedImage.original.base64,
|
|
212
|
-
image: loadedImage.original.image,
|
|
213
|
-
size: Object.assign({}, originalSize)
|
|
214
|
-
},
|
|
215
|
-
transformed: {
|
|
216
|
-
base64: transformedBase64,
|
|
217
|
-
image: transformedImage,
|
|
218
|
-
size: {
|
|
219
|
-
width: transformedImage.width,
|
|
220
|
-
height: transformedImage.height
|
|
221
|
-
}
|
|
222
|
-
},
|
|
223
|
-
exifTransform: loadedImage.exifTransform
|
|
224
|
-
};
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* @private
|
|
229
|
-
* @param {?} imageBase64
|
|
230
|
-
* @return {?}
|
|
231
|
-
*/
|
|
232
|
-
loadImageFromBase64(imageBase64) {
|
|
233
|
-
return new Promise(((/**
|
|
234
|
-
* @param {?} resolve
|
|
235
|
-
* @param {?} reject
|
|
236
|
-
* @return {?}
|
|
237
|
-
*/
|
|
238
|
-
(resolve, reject) => {
|
|
239
|
-
/** @type {?} */
|
|
240
|
-
const image = new Image();
|
|
241
|
-
image.onload = (/**
|
|
242
|
-
* @return {?}
|
|
243
|
-
*/
|
|
244
|
-
() => resolve(image));
|
|
245
|
-
image.onerror = reject;
|
|
246
|
-
image.src = imageBase64;
|
|
247
|
-
})));
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* @private
|
|
251
|
-
* @param {?} originalSize
|
|
252
|
-
* @param {?} exifTransform
|
|
253
|
-
* @param {?} cropperSettings
|
|
254
|
-
* @return {?}
|
|
255
|
-
*/
|
|
256
|
-
getTransformedSize(originalSize, exifTransform, cropperSettings) {
|
|
257
|
-
/** @type {?} */
|
|
258
|
-
const canvasRotation = cropperSettings.canvasRotation + exifTransform.rotate;
|
|
259
|
-
if (cropperSettings.containWithinAspectRatio) {
|
|
260
|
-
if (canvasRotation % 2) {
|
|
261
|
-
/** @type {?} */
|
|
262
|
-
const minWidthToContain = originalSize.width * cropperSettings.aspectRatio;
|
|
263
|
-
/** @type {?} */
|
|
264
|
-
const minHeightToContain = originalSize.height / cropperSettings.aspectRatio;
|
|
265
|
-
return {
|
|
266
|
-
width: Math.max(originalSize.height, minWidthToContain),
|
|
267
|
-
height: Math.max(originalSize.width, minHeightToContain)
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
/** @type {?} */
|
|
272
|
-
const minWidthToContain = originalSize.height * cropperSettings.aspectRatio;
|
|
273
|
-
/** @type {?} */
|
|
274
|
-
const minHeightToContain = originalSize.width / cropperSettings.aspectRatio;
|
|
275
|
-
return {
|
|
276
|
-
width: Math.max(originalSize.width, minWidthToContain),
|
|
277
|
-
height: Math.max(originalSize.height, minHeightToContain)
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
if (canvasRotation % 2) {
|
|
282
|
-
return {
|
|
283
|
-
height: originalSize.width,
|
|
284
|
-
width: originalSize.height
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
return {
|
|
288
|
-
width: originalSize.width,
|
|
289
|
-
height: originalSize.height
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
LoadImageService.decorators = [
|
|
294
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
295
|
-
];
|
|
296
|
-
/** @nocollapse */ LoadImageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LoadImageService_Factory() { return new LoadImageService(); }, token: LoadImageService, providedIn: "root" });
|
|
297
|
-
if (false) {
|
|
298
|
-
/**
|
|
299
|
-
* @type {?}
|
|
300
|
-
* @private
|
|
301
|
-
*/
|
|
302
|
-
LoadImageService.prototype.autoRotateSupported;
|
|
303
|
-
}
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1pbWFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWltYWdlLWNyb3BwZXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbG9hZC1pbWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBRWhHLDhCQUdDOzs7SUFGQyx3Q0FBZ0M7O0lBQ2hDLHlDQUF1Qjs7QUFJekIsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUdVLHdCQUFtQixHQUFxQix5QkFBeUIsRUFBRSxDQUFDO0tBbUw3RTs7Ozs7O0lBakxDLGFBQWEsQ0FBQyxJQUFVLEVBQUUsZUFBZ0M7UUFDeEQsT0FBTyxJQUFJLE9BQU87Ozs7O1FBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7O2tCQUMvQixVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUU7WUFDbkMsVUFBVSxDQUFDLE1BQU07Ozs7WUFBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDO3FCQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDO3FCQUNiLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUEsQ0FBQztZQUNGLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7OztJQUVPLFNBQVMsQ0FBQyxXQUFtQixFQUFFLFNBQWlCLEVBQUUsZUFBZ0M7UUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQyxP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QkFDekQsQ0FBQzthQUNIO2lCQUFNOztzQkFDQyxpQkFBaUIsR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxXQUFXOztzQkFDckUsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsV0FBVztnQkFDM0UsT0FBTztvQkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDO29CQUN0RCxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDO2lCQUMxRCxDQUFDO2FBQ0g7U0FDRjtRQUVELElBQUksY0FBYyxHQUFHLENBQUMsRUFBRTtZQUN0QixPQUFPO2dCQUNMLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSztnQkFDMUIsS0FBSyxFQUFFLFlBQVksQ0FBQyxNQUFNO2FBQzNCLENBQUM7U0FDSDtRQUNELE9BQU87WUFDTCxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7WUFDekIsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNO1NBQzVCLENBQUM7SUFDSixDQUFDOzs7WUFyTEYsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7Ozs7Ozs7SUFHOUIsK0NBQTRFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGltZW5zaW9ucywgTG9hZGVkSW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENyb3BwZXJTZXR0aW5ncyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3JvcHBlci5zZXR0aW5ncyc7XG5pbXBvcnQgeyBFeGlmVHJhbnNmb3JtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leGlmLXRyYW5zZm9ybS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZ2V0VHJhbnNmb3JtYXRpb25zRnJvbUV4aWZEYXRhLCBzdXBwb3J0c0F1dG9tYXRpY1JvdGF0aW9uIH0gZnJvbSAnLi4vdXRpbHMvZXhpZi51dGlscyc7XG5cbmludGVyZmFjZSBMb2FkSW1hZ2VCYXNlNjQge1xuICBvcmlnaW5hbEltYWdlOiBIVE1MSW1hZ2VFbGVtZW50O1xuICBvcmlnaW5hbEJhc2U2NDogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBMb2FkSW1hZ2VTZXJ2aWNlIHtcblxuICBwcml2YXRlIGF1dG9Sb3RhdGVTdXBwb3J0ZWQ6IFByb21pc2U8Ym9vbGVhbj4gPSBzdXBwb3J0c0F1dG9tYXRpY1JvdGF0aW9uKCk7XG5cbiAgbG9hZEltYWdlRmlsZShmaWxlOiBGaWxlLCBjcm9wcGVyU2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncyk6IFByb21pc2U8TG9hZGVkSW1hZ2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IChldmVudDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZEltYWdlKGV2ZW50LnRhcmdldC5yZXN1bHQsIGZpbGUudHlwZSwgY3JvcHBlclNldHRpbmdzKVxuICAgICAgICAgIC50aGVuKHJlc29sdmUpXG4gICAgICAgICAgLmNhdGNoKHJlamVjdCk7XG4gICAgICB9O1xuICAgICAgZmlsZVJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSW1hZ2UoaW1hZ2VCYXNlNjQ6IHN0cmluZywgaW1hZ2VUeXBlOiBzdHJpbmcsIGNyb3BwZXJTZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogUHJvbWlzZTxMb2FkZWRJbWFnZT4ge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkSW1hZ2VUeXBlKGltYWdlVHlwZSkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0ludmFsaWQgaW1hZ2UgdHlwZScpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubG9hZEJhc2U2NEltYWdlKGltYWdlQmFzZTY0LCBjcm9wcGVyU2V0dGluZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkSW1hZ2VUeXBlKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvaW1hZ2VcXC8ocG5nfGpwZ3xqcGVnfGJtcHxnaWZ8dGlmZnx3ZWJwKS8udGVzdCh0eXBlKTtcbiAgfVxuXG4gIGxvYWRJbWFnZUZyb21VUkwodXJsOiBzdHJpbmcsIGNyb3BwZXJTZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogUHJvbWlzZTxMb2FkZWRJbWFnZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltZy5vbmVycm9yID0gKCkgPT4gcmVqZWN0O1xuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gaW1nLndpZHRoO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1nLmhlaWdodDtcbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTtcbiAgICAgICAgdGhpcy5sb2FkQmFzZTY0SW1hZ2UoY2FudmFzLnRvRGF0YVVSTCgpLCBjcm9wcGVyU2V0dGluZ3MpLnRoZW4ocmVzb2x2ZSk7XG4gICAgICB9O1xuICAgICAgaW1nLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG4gICAgICBpbWcuc3JjID0gdXJsO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZEJhc2U2NEltYWdlKGltYWdlQmFzZTY0OiBzdHJpbmcsIGNyb3BwZXJTZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogUHJvbWlzZTxMb2FkZWRJbWFnZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxMb2FkSW1hZ2VCYXNlNjQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIG9yaWdpbmFsSW1hZ2Uub25sb2FkID0gKCkgPT4gcmVzb2x2ZSh7XG4gICAgICAgIG9yaWdpbmFsSW1hZ2UsXG4gICAgICAgIG9yaWdpbmFsQmFzZTY0OiBpbWFnZUJhc2U2NFxuICAgICAgfSk7XG4gICAgICBvcmlnaW5hbEltYWdlLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICBvcmlnaW5hbEltYWdlLnNyYyA9IGltYWdlQmFzZTY0O1xuICAgIH0pLnRoZW4oKHJlczogTG9hZEltYWdlQmFzZTY0KSA9PiB0aGlzLnRyYW5zZm9ybUltYWdlQmFzZTY0KHJlcywgY3JvcHBlclNldHRpbmdzKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRyYW5zZm9ybUltYWdlQmFzZTY0KHJlczogTG9hZEltYWdlQmFzZTY0LCBjcm9wcGVyU2V0dGluZ3M6IENyb3BwZXJTZXR0aW5ncyk6IFByb21pc2U8TG9hZGVkSW1hZ2U+IHtcbiAgICBjb25zdCBhdXRvUm90YXRlID0gYXdhaXQgdGhpcy5hdXRvUm90YXRlU3VwcG9ydGVkO1xuICAgIGNvbnN0IGV4aWZUcmFuc2Zvcm0gPSBhd2FpdCBnZXRUcmFuc2Zvcm1hdGlvbnNGcm9tRXhpZkRhdGEoYXV0b1JvdGF0ZSA/IC0xIDogcmVzLm9yaWdpbmFsQmFzZTY0KTtcbiAgICBpZiAoIXJlcy5vcmlnaW5hbEltYWdlIHx8ICFyZXMub3JpZ2luYWxJbWFnZS5jb21wbGV0ZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignTm8gaW1hZ2UgbG9hZGVkJykpO1xuICAgIH1cbiAgICBjb25zdCBsb2FkZWRJbWFnZSA9IHtcbiAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgIGJhc2U2NDogcmVzLm9yaWdpbmFsQmFzZTY0LFxuICAgICAgICBpbWFnZTogcmVzLm9yaWdpbmFsSW1hZ2UsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogcmVzLm9yaWdpbmFsSW1hZ2UubmF0dXJhbFdpZHRoLFxuICAgICAgICAgIGhlaWdodDogcmVzLm9yaWdpbmFsSW1hZ2UubmF0dXJhbEhlaWdodFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXhpZlRyYW5zZm9ybVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtTG9hZGVkSW1hZ2UobG9hZGVkSW1hZ2UsIGNyb3BwZXJTZXR0aW5ncyk7XG4gIH1cblxuICBhc3luYyB0cmFuc2Zvcm1Mb2FkZWRJbWFnZShsb2FkZWRJbWFnZTogUGFydGlhbDxMb2FkZWRJbWFnZT4sIGNyb3BwZXJTZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogUHJvbWlzZTxMb2FkZWRJbWFnZT4ge1xuICAgIGNvbnN0IGNhbnZhc1JvdGF0aW9uID0gY3JvcHBlclNldHRpbmdzLmNhbnZhc1JvdGF0aW9uICsgbG9hZGVkSW1hZ2UuZXhpZlRyYW5zZm9ybS5yb3RhdGU7XG4gICAgY29uc3Qgb3JpZ2luYWxTaXplID0ge1xuICAgICAgd2lkdGg6IGxvYWRlZEltYWdlLm9yaWdpbmFsLmltYWdlLm5hdHVyYWxXaWR0aCxcbiAgICAgIGhlaWdodDogbG9hZGVkSW1hZ2Uub3JpZ2luYWwuaW1hZ2UubmF0dXJhbEhlaWdodFxuICAgIH07XG4gICAgaWYgKGNhbnZhc1JvdGF0aW9uID09PSAwICYmICFsb2FkZWRJbWFnZS5leGlmVHJhbnNmb3JtLmZsaXAgJiYgIWNyb3BwZXJTZXR0aW5ncy5jb250YWluV2l0aGluQXNwZWN0UmF0aW8pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgYmFzZTY0OiBsb2FkZWRJbWFnZS5vcmlnaW5hbC5iYXNlNjQsXG4gICAgICAgICAgaW1hZ2U6IGxvYWRlZEltYWdlLm9yaWdpbmFsLmltYWdlLFxuICAgICAgICAgIHNpemU6IHsuLi5vcmlnaW5hbFNpemV9XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zZm9ybWVkOiB7XG4gICAgICAgICAgYmFzZTY0OiBsb2FkZWRJbWFnZS5vcmlnaW5hbC5iYXNlNjQsXG4gICAgICAgICAgaW1hZ2U6IGxvYWRlZEltYWdlLm9yaWdpbmFsLmltYWdlLFxuICAgICAgICAgIHNpemU6IHsuLi5vcmlnaW5hbFNpemV9XG4gICAgICAgIH0sXG4gICAgICAgIGV4aWZUcmFuc2Zvcm06IGxvYWRlZEltYWdlLmV4aWZUcmFuc2Zvcm1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRTaXplID0gdGhpcy5nZXRUcmFuc2Zvcm1lZFNpemUob3JpZ2luYWxTaXplLCBsb2FkZWRJbWFnZS5leGlmVHJhbnNmb3JtLCBjcm9wcGVyU2V0dGluZ3MpO1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNhbnZhcy53aWR0aCA9IHRyYW5zZm9ybWVkU2l6ZS53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gdHJhbnNmb3JtZWRTaXplLmhlaWdodDtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjdHguc2V0VHJhbnNmb3JtKFxuICAgICAgbG9hZGVkSW1hZ2UuZXhpZlRyYW5zZm9ybS5mbGlwID8gLTEgOiAxLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAxLFxuICAgICAgY2FudmFzLndpZHRoIC8gMixcbiAgICAgIGNhbnZhcy5oZWlnaHQgLyAyXG4gICAgKTtcbiAgICBjdHgucm90YXRlKE1hdGguUEkgKiAoY2FudmFzUm90YXRpb24gLyAyKSk7XG4gICAgY3R4LmRyYXdJbWFnZShcbiAgICAgIGxvYWRlZEltYWdlLm9yaWdpbmFsLmltYWdlLFxuICAgICAgLW9yaWdpbmFsU2l6ZS53aWR0aCAvIDIsXG4gICAgICAtb3JpZ2luYWxTaXplLmhlaWdodCAvIDJcbiAgICApO1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkQmFzZTY0ID0gY2FudmFzLnRvRGF0YVVSTCgpO1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkSW1hZ2UgPSBhd2FpdCB0aGlzLmxvYWRJbWFnZUZyb21CYXNlNjQodHJhbnNmb3JtZWRCYXNlNjQpO1xuICAgIHJldHVybiB7XG4gICAgICBvcmlnaW5hbDoge1xuICAgICAgICBiYXNlNjQ6IGxvYWRlZEltYWdlLm9yaWdpbmFsLmJhc2U2NCxcbiAgICAgICAgaW1hZ2U6IGxvYWRlZEltYWdlLm9yaWdpbmFsLmltYWdlLFxuICAgICAgICBzaXplOiB7Li4ub3JpZ2luYWxTaXplfVxuICAgICAgfSxcbiAgICAgIHRyYW5zZm9ybWVkOiB7XG4gICAgICAgIGJhc2U2NDogdHJhbnNmb3JtZWRCYXNlNjQsXG4gICAgICAgIGltYWdlOiB0cmFuc2Zvcm1lZEltYWdlLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IHRyYW5zZm9ybWVkSW1hZ2Uud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiB0cmFuc2Zvcm1lZEltYWdlLmhlaWdodFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXhpZlRyYW5zZm9ybTogbG9hZGVkSW1hZ2UuZXhpZlRyYW5zZm9ybVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGxvYWRJbWFnZUZyb21CYXNlNjQoaW1hZ2VCYXNlNjQ6IHN0cmluZyk6IFByb21pc2U8SFRNTEltYWdlRWxlbWVudD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxIVE1MSW1hZ2VFbGVtZW50PigoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1hZ2UpO1xuICAgICAgaW1hZ2Uub25lcnJvciA9IHJlamVjdDtcbiAgICAgIGltYWdlLnNyYyA9IGltYWdlQmFzZTY0O1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJhbnNmb3JtZWRTaXplKFxuICAgIG9yaWdpbmFsU2l6ZTogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9LFxuICAgIGV4aWZUcmFuc2Zvcm06IEV4aWZUcmFuc2Zvcm0sXG4gICAgY3JvcHBlclNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3NcbiAgKTogRGltZW5zaW9ucyB7XG4gICAgY29uc3QgY2FudmFzUm90YXRpb24gPSBjcm9wcGVyU2V0dGluZ3MuY2FudmFzUm90YXRpb24gKyBleGlmVHJhbnNmb3JtLnJvdGF0ZTtcbiAgICBpZiAoY3JvcHBlclNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgaWYgKGNhbnZhc1JvdGF0aW9uICUgMikge1xuICAgICAgICBjb25zdCBtaW5XaWR0aFRvQ29udGFpbiA9IG9yaWdpbmFsU2l6ZS53aWR0aCAqIGNyb3BwZXJTZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgY29uc3QgbWluSGVpZ2h0VG9Db250YWluID0gb3JpZ2luYWxTaXplLmhlaWdodCAvIGNyb3BwZXJTZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB3aWR0aDogTWF0aC5tYXgob3JpZ2luYWxTaXplLmhlaWdodCwgbWluV2lkdGhUb0NvbnRhaW4pLFxuICAgICAgICAgIGhlaWdodDogTWF0aC5tYXgob3JpZ2luYWxTaXplLndpZHRoLCBtaW5IZWlnaHRUb0NvbnRhaW4pXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtaW5XaWR0aFRvQ29udGFpbiA9IG9yaWdpbmFsU2l6ZS5oZWlnaHQgKiBjcm9wcGVyU2V0dGluZ3MuYXNwZWN0UmF0aW87XG4gICAgICAgIGNvbnN0IG1pbkhlaWdodFRvQ29udGFpbiA9IG9yaWdpbmFsU2l6ZS53aWR0aCAvIGNyb3BwZXJTZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB3aWR0aDogTWF0aC5tYXgob3JpZ2luYWxTaXplLndpZHRoLCBtaW5XaWR0aFRvQ29udGFpbiksXG4gICAgICAgICAgaGVpZ2h0OiBNYXRoLm1heChvcmlnaW5hbFNpemUuaGVpZ2h0LCBtaW5IZWlnaHRUb0NvbnRhaW4pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNhbnZhc1JvdGF0aW9uICUgMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0OiBvcmlnaW5hbFNpemUud2lkdGgsXG4gICAgICAgIHdpZHRoOiBvcmlnaW5hbFNpemUuaGVpZ2h0XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IG9yaWdpbmFsU2l6ZS53aWR0aCxcbiAgICAgIGhlaWdodDogb3JpZ2luYWxTaXplLmhlaWdodFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/utils/blob.utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @param {?} base64Image
|
|
8
|
-
* @return {?}
|
|
9
|
-
*/
|
|
10
|
-
export function base64ToFile(base64Image) {
|
|
11
|
-
/** @type {?} */
|
|
12
|
-
const split = base64Image.split(',');
|
|
13
|
-
/** @type {?} */
|
|
14
|
-
const type = split[0].replace('data:', '').replace(';base64', '');
|
|
15
|
-
/** @type {?} */
|
|
16
|
-
const byteString = atob(split[1]);
|
|
17
|
-
/** @type {?} */
|
|
18
|
-
const ab = new ArrayBuffer(byteString.length);
|
|
19
|
-
/** @type {?} */
|
|
20
|
-
const ia = new Uint8Array(ab);
|
|
21
|
-
for (let i = 0; i < byteString.length; i += 1) {
|
|
22
|
-
ia[i] = byteString.charCodeAt(i);
|
|
23
|
-
}
|
|
24
|
-
return new Blob([ab], { type });
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1pbWFnZS1jcm9wcGVyLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL2Jsb2IudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxXQUFtQjs7VUFDeEMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDOztVQUM5QixJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7O1VBQzNELFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztVQUMzQixFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQzs7VUFDdkMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQztJQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzdDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NFRvRmlsZShiYXNlNjRJbWFnZTogc3RyaW5nKTogQmxvYiB7XG4gIGNvbnN0IHNwbGl0ID0gYmFzZTY0SW1hZ2Uuc3BsaXQoJywnKTtcbiAgY29uc3QgdHlwZSA9IHNwbGl0WzBdLnJlcGxhY2UoJ2RhdGE6JywgJycpLnJlcGxhY2UoJztiYXNlNjQnLCAnJyk7XG4gIGNvbnN0IGJ5dGVTdHJpbmcgPSBhdG9iKHNwbGl0WzFdKTtcbiAgY29uc3QgYWIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZVN0cmluZy5sZW5ndGgpO1xuICBjb25zdCBpYSA9IG5ldyBVaW50OEFycmF5KGFiKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWFbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBCbG9iKFthYl0sIHt0eXBlfSk7XG59XG4iXX0=
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/utils/exif.utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
// Black 2x1 JPEG, with the following meta information set:
|
|
7
|
-
// - EXIF Orientation: 6 (Rotated 90° CCW)
|
|
8
|
-
// Source: https://github.com/blueimp/JavaScript-Load-Image
|
|
9
|
-
/** @type {?} */
|
|
10
|
-
const testAutoOrientationImageURL = 'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +
|
|
11
|
-
'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +
|
|
12
|
-
'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +
|
|
13
|
-
'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' +
|
|
14
|
-
'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' +
|
|
15
|
-
'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==';
|
|
16
|
-
/**
|
|
17
|
-
* @return {?}
|
|
18
|
-
*/
|
|
19
|
-
export function supportsAutomaticRotation() {
|
|
20
|
-
return new Promise((/**
|
|
21
|
-
* @param {?} resolve
|
|
22
|
-
* @return {?}
|
|
23
|
-
*/
|
|
24
|
-
(resolve) => {
|
|
25
|
-
/** @type {?} */
|
|
26
|
-
const img = new Image();
|
|
27
|
-
img.onload = (/**
|
|
28
|
-
* @return {?}
|
|
29
|
-
*/
|
|
30
|
-
() => {
|
|
31
|
-
// Check if browser supports automatic image orientation:
|
|
32
|
-
/** @type {?} */
|
|
33
|
-
const supported = img.width === 1 && img.height === 2;
|
|
34
|
-
resolve(supported);
|
|
35
|
-
});
|
|
36
|
-
img.src = testAutoOrientationImageURL;
|
|
37
|
-
}));
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* @param {?} exifRotationOrBase64Image
|
|
41
|
-
* @return {?}
|
|
42
|
-
*/
|
|
43
|
-
export function getTransformationsFromExifData(exifRotationOrBase64Image) {
|
|
44
|
-
if (typeof exifRotationOrBase64Image === 'string') {
|
|
45
|
-
exifRotationOrBase64Image = getExifRotation(exifRotationOrBase64Image);
|
|
46
|
-
}
|
|
47
|
-
switch (exifRotationOrBase64Image) {
|
|
48
|
-
case 2:
|
|
49
|
-
return { rotate: 0, flip: true };
|
|
50
|
-
case 3:
|
|
51
|
-
return { rotate: 2, flip: false };
|
|
52
|
-
case 4:
|
|
53
|
-
return { rotate: 2, flip: true };
|
|
54
|
-
case 5:
|
|
55
|
-
return { rotate: 1, flip: true };
|
|
56
|
-
case 6:
|
|
57
|
-
return { rotate: 1, flip: false };
|
|
58
|
-
case 7:
|
|
59
|
-
return { rotate: 3, flip: true };
|
|
60
|
-
case 8:
|
|
61
|
-
return { rotate: 3, flip: false };
|
|
62
|
-
default:
|
|
63
|
-
return { rotate: 0, flip: false };
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* @param {?} imageBase64
|
|
68
|
-
* @return {?}
|
|
69
|
-
*/
|
|
70
|
-
function getExifRotation(imageBase64) {
|
|
71
|
-
/** @type {?} */
|
|
72
|
-
const view = new DataView(base64ToArrayBuffer(imageBase64));
|
|
73
|
-
if (view.getUint16(0, false) != 0xFFD8) {
|
|
74
|
-
return -2;
|
|
75
|
-
}
|
|
76
|
-
/** @type {?} */
|
|
77
|
-
const length = view.byteLength;
|
|
78
|
-
/** @type {?} */
|
|
79
|
-
let offset = 2;
|
|
80
|
-
while (offset < length) {
|
|
81
|
-
if (view.getUint16(offset + 2, false) <= 8)
|
|
82
|
-
return -1;
|
|
83
|
-
/** @type {?} */
|
|
84
|
-
const marker = view.getUint16(offset, false);
|
|
85
|
-
offset += 2;
|
|
86
|
-
if (marker == 0xFFE1) {
|
|
87
|
-
if (view.getUint32(offset += 2, false) != 0x45786966) {
|
|
88
|
-
return -1;
|
|
89
|
-
}
|
|
90
|
-
/** @type {?} */
|
|
91
|
-
const little = view.getUint16(offset += 6, false) == 0x4949;
|
|
92
|
-
offset += view.getUint32(offset + 4, little);
|
|
93
|
-
/** @type {?} */
|
|
94
|
-
const tags = view.getUint16(offset, little);
|
|
95
|
-
offset += 2;
|
|
96
|
-
for (let i = 0; i < tags; i++) {
|
|
97
|
-
if (view.getUint16(offset + (i * 12), little) == 0x0112) {
|
|
98
|
-
return view.getUint16(offset + (i * 12) + 8, little);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
else if ((marker & 0xFF00) != 0xFF00) {
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
offset += view.getUint16(offset, false);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return -1;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* @param {?} imageBase64
|
|
113
|
-
* @return {?}
|
|
114
|
-
*/
|
|
115
|
-
function base64ToArrayBuffer(imageBase64) {
|
|
116
|
-
imageBase64 = imageBase64.replace(/^data\:([^\;]+)\;base64,/gmi, '');
|
|
117
|
-
/** @type {?} */
|
|
118
|
-
const binaryString = atob(imageBase64);
|
|
119
|
-
/** @type {?} */
|
|
120
|
-
const len = binaryString.length;
|
|
121
|
-
/** @type {?} */
|
|
122
|
-
const bytes = new Uint8Array(len);
|
|
123
|
-
for (let i = 0; i < len; i++) {
|
|
124
|
-
bytes[i] = binaryString.charCodeAt(i);
|
|
125
|
-
}
|
|
126
|
-
return bytes.buffer;
|
|
127
|
-
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpZi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1pbWFnZS1jcm9wcGVyLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL2V4aWYudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O01BS00sMkJBQTJCLEdBQy9CLHdFQUF3RTtJQUN4RSx3RUFBd0U7SUFDeEUsd0VBQXdFO0lBQ3hFLHdFQUF3RTtJQUN4RSx3RUFBd0U7SUFDeEUsMkRBQTJEOzs7O0FBRTdELE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTyxJQUFJLE9BQU87Ozs7SUFBQyxDQUFDLE9BQU8sRUFBRSxFQUFFOztjQUN2QixHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUU7UUFDdkIsR0FBRyxDQUFDLE1BQU07OztRQUFHLEdBQUcsRUFBRTs7O2tCQUVWLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDckQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQSxDQUFDO1FBQ0YsR0FBRyxDQUFDLEdBQUcsR0FBRywyQkFBMkIsQ0FBQztJQUN4QyxDQUFDLEVBQUMsQ0FBQztBQUNMLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLHlCQUEwQztJQUN2RixJQUFJLE9BQU8seUJBQXlCLEtBQUssUUFBUSxFQUFFO1FBQ2pELHlCQUF5QixHQUFHLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBQ3hFO0lBQ0QsUUFBUSx5QkFBeUIsRUFBRTtRQUNqQyxLQUFLLENBQUM7WUFDSixPQUFPLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDO1lBQ0osT0FBTyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQztZQUNKLE9BQU8s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QyxDQUFDOztVQUMvRCxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQzs7VUFDaEMsR0FBRyxHQUFHLFlBQVksQ0FBQyxNQUFNOztVQUN6QixLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdkM7SUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4aWZUcmFuc2Zvcm0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4aWYtdHJhbnNmb3JtLmludGVyZmFjZSc7XG5cbi8vIEJsYWNrIDJ4MSBKUEVHLCB3aXRoIHRoZSBmb2xsb3dpbmcgbWV0YSBpbmZvcm1hdGlvbiBzZXQ6XG4vLyAtIEVYSUYgT3JpZW50YXRpb246IDYgKFJvdGF0ZWQgOTDCsCBDQ1cpXG4vLyBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL0phdmFTY3JpcHQtTG9hZC1JbWFnZVxuY29uc3QgdGVzdEF1dG9PcmllbnRhdGlvbkltYWdlVVJMID1cbiAgJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRRQWlSWGhwWmdBQVRVMEFLZ0FBQUFnQUFRRVNBQU1BQUFBQkFBWUFBQUEnICtcbiAgJ0FBQUQvMndDRUFBRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkEnICtcbiAgJ1FFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUUnICtcbiAgJ0JBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQWYvQUFCRUlBQUVBQWdNQkVRQUNFUUVERVFIL3gnICtcbiAgJ0FCS0FBRUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUFBQUFBQUFBQUFBQUFBQUEnICtcbiAgJ0FBQUFBRVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzlvQURBTUJBQUlSQXhFQVB3QS84SC8vMlE9PSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3J0c0F1dG9tYXRpY1JvdGF0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgYnJvd3NlciBzdXBwb3J0cyBhdXRvbWF0aWMgaW1hZ2Ugb3JpZW50YXRpb246XG4gICAgICBjb25zdCBzdXBwb3J0ZWQgPSBpbWcud2lkdGggPT09IDEgJiYgaW1nLmhlaWdodCA9PT0gMjtcbiAgICAgIHJlc29sdmUoc3VwcG9ydGVkKTtcbiAgICB9O1xuICAgIGltZy5zcmMgPSB0ZXN0QXV0b09yaWVudGF0aW9uSW1hZ2VVUkw7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNmb3JtYXRpb25zRnJvbUV4aWZEYXRhKGV4aWZSb3RhdGlvbk9yQmFzZTY0SW1hZ2U6IG51bWJlciB8IHN0cmluZyk6IEV4aWZUcmFuc2Zvcm0ge1xuICBpZiAodHlwZW9mIGV4aWZSb3RhdGlvbk9yQmFzZTY0SW1hZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgZXhpZlJvdGF0aW9uT3JCYXNlNjRJbWFnZSA9IGdldEV4aWZSb3RhdGlvbihleGlmUm90YXRpb25PckJhc2U2NEltYWdlKTtcbiAgfVxuICBzd2l0Y2ggKGV4aWZSb3RhdGlvbk9yQmFzZTY0SW1hZ2UpIHtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4ge3JvdGF0ZTogMCwgZmxpcDogdHJ1ZX07XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHtyb3RhdGU6IDIsIGZsaXA6IGZhbHNlfTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4ge3JvdGF0ZTogMiwgZmxpcDogdHJ1ZX07XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIHtyb3RhdGU6IDEsIGZsaXA6IHRydWV9O1xuICAgIGNhc2UgNjpcbiAgICAgIHJldHVybiB7cm90YXRlOiAxLCBmbGlwOiBmYWxzZX07XG4gICAgY2FzZSA3OlxuICAgICAgcmV0dXJuIHtyb3RhdGU6IDMsIGZsaXA6IHRydWV9O1xuICAgIGNhc2UgODpcbiAgICAgIHJldHVybiB7cm90YXRlOiAzLCBmbGlwOiBmYWxzZX07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7cm90YXRlOiAwLCBmbGlwOiBmYWxzZX07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RXhpZlJvdGF0aW9uKGltYWdlQmFzZTY0OiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJhc2U2NFRvQXJyYXlCdWZmZXIoaW1hZ2VCYXNlNjQpKTtcbiAgaWYgKHZpZXcuZ2V0VWludDE2KDAsIGZhbHNlKSAhPSAweEZGRDgpIHtcbiAgICByZXR1cm4gLTI7XG4gIH1cbiAgY29uc3QgbGVuZ3RoID0gdmlldy5ieXRlTGVuZ3RoO1xuICBsZXQgb2Zmc2V0ID0gMjtcbiAgd2hpbGUgKG9mZnNldCA8IGxlbmd0aCkge1xuICAgIGlmICh2aWV3LmdldFVpbnQxNihvZmZzZXQgKyAyLCBmYWxzZSkgPD0gOCkgcmV0dXJuIC0xO1xuICAgIGNvbnN0IG1hcmtlciA9IHZpZXcuZ2V0VWludDE2KG9mZnNldCwgZmFsc2UpO1xuICAgIG9mZnNldCArPSAyO1xuICAgIGlmIChtYXJrZXIgPT0gMHhGRkUxKSB7XG4gICAgICBpZiAodmlldy5nZXRVaW50MzIob2Zmc2V0ICs9IDIsIGZhbHNlKSAhPSAweDQ1Nzg2OTY2KSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGl0dGxlID0gdmlldy5nZXRVaW50MTYob2Zmc2V0ICs9IDYsIGZhbHNlKSA9PSAweDQ5NDk7XG4gICAgICBvZmZzZXQgKz0gdmlldy5nZXRVaW50MzIob2Zmc2V0ICsgNCwgbGl0dGxlKTtcbiAgICAgIGNvbnN0IHRhZ3MgPSB2aWV3LmdldFVpbnQxNihvZmZzZXQsIGxpdHRsZSk7XG4gICAgICBvZmZzZXQgKz0gMjtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnczsgaSsrKSB7XG4gICAgICAgIGlmICh2aWV3LmdldFVpbnQxNihvZmZzZXQgKyAoaSAqIDEyKSwgbGl0dGxlKSA9PSAweDAxMTIpIHtcbiAgICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MTYob2Zmc2V0ICsgKGkgKiAxMikgKyA4LCBsaXR0bGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgobWFya2VyICYgMHhGRjAwKSAhPSAweEZGMDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgKz0gdmlldy5nZXRVaW50MTYob2Zmc2V0LCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9BcnJheUJ1ZmZlcihpbWFnZUJhc2U2NDogc3RyaW5nKSB7XG4gIGltYWdlQmFzZTY0ID0gaW1hZ2VCYXNlNjQucmVwbGFjZSgvXmRhdGFcXDooW15cXDtdKylcXDtiYXNlNjQsL2dtaSwgJycpO1xuICBjb25zdCBiaW5hcnlTdHJpbmcgPSBhdG9iKGltYWdlQmFzZTY0KTtcbiAgY29uc3QgbGVuID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYnl0ZXNbaV0gPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gYnl0ZXMuYnVmZmVyO1xufVxuIl19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/utils/hammer.utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* \@docs-private
|
|
8
|
-
* @record
|
|
9
|
-
*/
|
|
10
|
-
export function HammerManager() { }
|
|
11
|
-
if (false) {
|
|
12
|
-
/**
|
|
13
|
-
* @param {?} eventName
|
|
14
|
-
* @return {?}
|
|
15
|
-
*/
|
|
16
|
-
HammerManager.prototype.get = function (eventName) { };
|
|
17
|
-
/**
|
|
18
|
-
* @param {?} options
|
|
19
|
-
* @return {?}
|
|
20
|
-
*/
|
|
21
|
-
HammerManager.prototype.set = function (options) { };
|
|
22
|
-
/**
|
|
23
|
-
* @param {?} eventName
|
|
24
|
-
* @param {?} handler
|
|
25
|
-
* @return {?}
|
|
26
|
-
*/
|
|
27
|
-
HammerManager.prototype.on = function (eventName, handler) { };
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWltYWdlLWNyb3BwZXIvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvaGFtbWVyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLG1DQU1DOzs7Ozs7SUFMQyx1REFBc0M7Ozs7O0lBRXRDLHFEQUFpQzs7Ozs7O0lBRWpDLCtEQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEhhbW1lclN0YXRpYyA9IG5ldyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQsIG9wdGlvbnM/OiBhbnkpID0+IEhhbW1lck1hbmFnZXI7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgaW50ZXJmYWNlIEhhbW1lck1hbmFnZXIge1xuICBnZXQoZXZlbnROYW1lOiBzdHJpbmcpOiBIYW1tZXJNYW5hZ2VyO1xuXG4gIHNldChvcHRpb25zOiBhbnkpOiBIYW1tZXJNYW5hZ2VyO1xuXG4gIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiAoZXY6IGFueSkgPT4gYW55KTtcbn1cbiJdfQ==
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/utils/keyboard.utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* @param {?} key
|
|
8
|
-
* @return {?}
|
|
9
|
-
*/
|
|
10
|
-
export function getPositionForKey(key) {
|
|
11
|
-
switch (key) {
|
|
12
|
-
case 'ArrowUp':
|
|
13
|
-
return 'top';
|
|
14
|
-
case 'ArrowRight':
|
|
15
|
-
return 'right';
|
|
16
|
-
case 'ArrowDown':
|
|
17
|
-
return 'bottom';
|
|
18
|
-
case 'ArrowLeft':
|
|
19
|
-
default:
|
|
20
|
-
return 'left';
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @param {?} key
|
|
25
|
-
* @return {?}
|
|
26
|
-
*/
|
|
27
|
-
export function getInvertedPositionForKey(key) {
|
|
28
|
-
switch (key) {
|
|
29
|
-
case 'ArrowUp':
|
|
30
|
-
return 'bottom';
|
|
31
|
-
case 'ArrowRight':
|
|
32
|
-
return 'left';
|
|
33
|
-
case 'ArrowDown':
|
|
34
|
-
return 'top';
|
|
35
|
-
case 'ArrowLeft':
|
|
36
|
-
default:
|
|
37
|
-
return 'right';
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* @param {?} key
|
|
42
|
-
* @param {?} stepSize
|
|
43
|
-
* @return {?}
|
|
44
|
-
*/
|
|
45
|
-
export function getEventForKey(key, stepSize) {
|
|
46
|
-
switch (key) {
|
|
47
|
-
case 'ArrowUp':
|
|
48
|
-
return { clientX: 0, clientY: stepSize * -1 };
|
|
49
|
-
case 'ArrowRight':
|
|
50
|
-
return { clientX: stepSize, clientY: 0 };
|
|
51
|
-
case 'ArrowDown':
|
|
52
|
-
return { clientX: 0, clientY: stepSize };
|
|
53
|
-
case 'ArrowLeft':
|
|
54
|
-
default:
|
|
55
|
-
return { clientX: stepSize * -1, clientY: 0 };
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaW1hZ2UtY3JvcHBlci8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9rZXlib2FyZC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVztJQUMzQyxRQUFRLEdBQUcsRUFBRTtRQUNYLEtBQUssU0FBUztZQUNaLE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxZQUFZO1lBQ2YsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxXQUFXO1lBQ2QsT0FBTyxRQUFRLENBQUM7UUFDbEIsS0FBSyxXQUFXLENBQUM7UUFDakI7WUFDRSxPQUFPLE1BQU0sQ0FBQztLQUNqQjtBQUNILENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEdBQVc7SUFDbkQsUUFBUSxHQUFHLEVBQUU7UUFDWCxLQUFLLFNBQVM7WUFDWixPQUFPLFFBQVEsQ0FBQztRQUNsQixLQUFLLFlBQVk7WUFDZixPQUFPLE1BQU0sQ0FBQztRQUNoQixLQUFLLFdBQVc7WUFDZCxPQUFPLEtBQUssQ0FBQztRQUNmLEtBQUssV0FBVyxDQUFDO1FBQ2pCO1lBQ0UsT0FBTyxPQUFPLENBQUM7S0FDbEI7QUFDSCxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVcsRUFBRSxRQUFnQjtJQUMxRCxRQUFRLEdBQUcsRUFBRTtRQUNYLEtBQUssU0FBUztZQUNaLE9BQU8sRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUM5QyxLQUFLLFlBQVk7WUFDZixPQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFDekMsS0FBSyxXQUFXO1lBQ2QsT0FBTyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBQyxDQUFDO1FBQ3pDLEtBQUssV0FBVyxDQUFDO1FBQ2pCO1lBQ0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDO0tBQy9DO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQb3NpdGlvbkZvcktleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICByZXR1cm4gJ3RvcCc7XG4gICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnbGVmdCc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludmVydGVkUG9zaXRpb25Gb3JLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgcmV0dXJuICd0b3AnO1xuICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudEZvcktleShrZXk6IHN0cmluZywgc3RlcFNpemU6IG51bWJlcik6IGFueSB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICByZXR1cm4ge2NsaWVudFg6IDAsIGNsaWVudFk6IHN0ZXBTaXplICogLTF9O1xuICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgcmV0dXJuIHtjbGllbnRYOiBzdGVwU2l6ZSwgY2xpZW50WTogMH07XG4gICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIHJldHVybiB7Y2xpZW50WDogMCwgY2xpZW50WTogc3RlcFNpemV9O1xuICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7Y2xpZW50WDogc3RlcFNpemUgKiAtMSwgY2xpZW50WTogMH07XG4gIH1cbn1cbiJdfQ==
|