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,304 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/services/load-image.service.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1pbWFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9tYXdpL1Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9sb2FkLWltYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFFaEcsOEJBR0M7OztJQUZDLHdDQUFnQzs7SUFDaEMseUNBQXVCOztBQUl6QixNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBR1Usd0JBQW1CLEdBQXFCLHlCQUF5QixFQUFFLENBQUM7S0FtTDdFOzs7Ozs7SUFqTEMsYUFBYSxDQUFDLElBQVUsRUFBRSxlQUFnQztRQUN4RCxPQUFPLElBQUksT0FBTzs7Ozs7UUFBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTs7a0JBQy9CLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRTtZQUNuQyxVQUFVLENBQUMsTUFBTTs7OztZQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUM7cUJBQzVELElBQUksQ0FBQyxPQUFPLENBQUM7cUJBQ2IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQSxDQUFDO1lBQ0YsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7Ozs7O0lBRU8sU0FBUyxDQUFDLFdBQW1CLEVBQUUsU0FBaUIsRUFBRSxlQUFnQztRQUN4RixJQUFJLENB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QUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDO2lCQUN6RCxDQUFDO2FBQ0g7aUJBQU07O3NCQUNDLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLFdBQVc7O3NCQUNyRSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxXQUFXO2dCQUMzRSxPQUFPO29CQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3RELE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUM7aUJBQzFELENBQUM7YUFDSDtTQUNGO1FBRUQsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU07YUFDM0IsQ0FBQztTQUNIO1FBQ0QsT0FBTztZQUNMLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSztZQUN6QixNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU07U0FDNUIsQ0FBQztJQUNKLENBQUM7OztZQXJMRixVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7Ozs7OztJQUc5QiwrQ0FBNEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaW1lbnNpb25zLCBMb2FkZWRJbWFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ3JvcHBlclNldHRpbmdzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jcm9wcGVyLnNldHRpbmdzJztcbmltcG9ydCB7IEV4aWZUcmFuc2Zvcm0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4aWYtdHJhbnNmb3JtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBnZXRUcmFuc2Zvcm1hdGlvbnNGcm9tRXhpZkRhdGEsIHN1cHBvcnRzQXV0b21hdGljUm90YXRpb24gfSBmcm9tICcuLi91dGlscy9leGlmLnV0aWxzJztcblxuaW50ZXJmYWNlIExvYWRJbWFnZUJhc2U2NCB7XG4gIG9yaWdpbmFsSW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQ7XG4gIG9yaWdpbmFsQmFzZTY0OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIExvYWRJbWFnZVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgYXV0b1JvdGF0ZVN1cHBvcnRlZDogUHJvbWlzZTxib29sZWFuPiA9IHN1cHBvcnRzQXV0b21hdGljUm90YXRpb24oKTtcblxuICBsb2FkSW1hZ2VGaWxlKGZpbGU6IEZpbGUsIGNyb3BwZXJTZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogUHJvbWlzZTxMb2FkZWRJbWFnZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkSW1hZ2UoZXZlbnQudGFyZ2V0LnJlc3VsdCwgZmlsZS50eXBlLCBjcm9wcGVyU2V0dGluZ3MpXG4gICAgICAgICAgLnRoZW4ocmVzb2x2ZSlcbiAgICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICAgIH07XG4gICAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRJbWFnZShpbWFnZUJhc2U2NDogc3RyaW5nLCBpbWFnZVR5cGU6IHN0cmluZywgY3JvcHBlclNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBQcm9taXNlPExvYWRlZEltYWdlPiB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRJbWFnZVR5cGUoaW1hZ2VUeXBlKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignSW52YWxpZCBpbWFnZSB0eXBlJykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb2FkQmFzZTY0SW1hZ2UoaW1hZ2VCYXNlNjQsIGNyb3BwZXJTZXR0aW5ncyk7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRJbWFnZVR5cGUodHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9pbWFnZVxcLyhwbmd8anBnfGpwZWd8Ym1wfGdpZnx0aWZmfHdlYnApLy50ZXN0KHR5cGUpO1xuICB9XG5cbiAgbG9hZEltYWdlRnJvbVVSTCh1cmw6IHN0cmluZywgY3JvcHBlclNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBQcm9taXNlPExvYWRlZEltYWdlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiByZWplY3Q7XG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBjYW52YXMud2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWcuaGVpZ2h0O1xuICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIDAsIDApO1xuICAgICAgICB0aGlzLmxvYWRCYXNlNjRJbWFnZShjYW52YXMudG9EYXRhVVJMKCksIGNyb3BwZXJTZXR0aW5ncykudGhlbihyZXNvbHZlKTtcbiAgICAgIH07XG4gICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcbiAgICAgIGltZy5zcmMgPSB1cmw7XG4gICAgfSk7XG4gIH1cblxuICBsb2FkQmFzZTY0SW1hZ2UoaW1hZ2VCYXNlNjQ6IHN0cmluZywgY3JvcHBlclNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBQcm9taXNlPExvYWRlZEltYWdlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPExvYWRJbWFnZUJhc2U2ND4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb3JpZ2luYWxJbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgb3JpZ2luYWxJbWFnZS5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHtcbiAgICAgICAgb3JpZ2luYWxJbWFnZSxcbiAgICAgICAgb3JpZ2luYWxCYXNlNjQ6IGltYWdlQmFzZTY0XG4gICAgICB9KTtcbiAgICAgIG9yaWdpbmFsSW1hZ2Uub25lcnJvciA9IHJlamVjdDtcbiAgICAgIG9yaWdpbmFsSW1hZ2Uuc3JjID0gaW1hZ2VCYXNlNjQ7XG4gICAgfSkudGhlbigocmVzOiBMb2FkSW1hZ2VCYXNlNjQpID0+IHRoaXMudHJhbnNmb3JtSW1hZ2VCYXNlNjQocmVzLCBjcm9wcGVyU2V0dGluZ3MpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJhbnNmb3JtSW1hZ2VCYXNlNjQocmVzOiBMb2FkSW1hZ2VCYXNlNjQsIGNyb3BwZXJTZXR0aW5nczogQ3JvcHBlclNldHRpbmdzKTogUHJvbWlzZTxMb2FkZWRJbWFnZT4ge1xuICAgIGNvbnN0IGF1dG9Sb3RhdGUgPSBhd2FpdCB0aGlzLmF1dG9Sb3RhdGVTdXBwb3J0ZWQ7XG4gICAgY29uc3QgZXhpZlRyYW5zZm9ybSA9IGF3YWl0IGdldFRyYW5zZm9ybWF0aW9uc0Zyb21FeGlmRGF0YShhdXRvUm90YXRlID8gLTEgOiByZXMub3JpZ2luYWxCYXNlNjQpO1xuICAgIGlmICghcmVzLm9yaWdpbmFsSW1hZ2UgfHwgIXJlcy5vcmlnaW5hbEltYWdlLmNvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdObyBpbWFnZSBsb2FkZWQnKSk7XG4gICAgfVxuICAgIGNvbnN0IGxvYWRlZEltYWdlID0ge1xuICAgICAgb3JpZ2luYWw6IHtcbiAgICAgICAgYmFzZTY0OiByZXMub3JpZ2luYWxCYXNlNjQsXG4gICAgICAgIGltYWdlOiByZXMub3JpZ2luYWxJbWFnZSxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiByZXMub3JpZ2luYWxJbWFnZS5uYXR1cmFsV2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiByZXMub3JpZ2luYWxJbWFnZS5uYXR1cmFsSGVpZ2h0XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBleGlmVHJhbnNmb3JtXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Mb2FkZWRJbWFnZShsb2FkZWRJbWFnZSwgY3JvcHBlclNldHRpbmdzKTtcbiAgfVxuXG4gIGFzeW5jIHRyYW5zZm9ybUxvYWRlZEltYWdlKGxvYWRlZEltYWdlOiBQYXJ0aWFsPExvYWRlZEltYWdlPiwgY3JvcHBlclNldHRpbmdzOiBDcm9wcGVyU2V0dGluZ3MpOiBQcm9taXNlPExvYWRlZEltYWdlPiB7XG4gICAgY29uc3QgY2FudmFzUm90YXRpb24gPSBjcm9wcGVyU2V0dGluZ3MuY2FudmFzUm90YXRpb24gKyBsb2FkZWRJbWFnZS5leGlmVHJhbnNmb3JtLnJvdGF0ZTtcbiAgICBjb25zdCBvcmlnaW5hbFNpemUgPSB7XG4gICAgICB3aWR0aDogbG9hZGVkSW1hZ2Uub3JpZ2luYWwuaW1hZ2UubmF0dXJhbFdpZHRoLFxuICAgICAgaGVpZ2h0OiBsb2FkZWRJbWFnZS5vcmlnaW5hbC5pbWFnZS5uYXR1cmFsSGVpZ2h0XG4gICAgfTtcbiAgICBpZiAoY2FudmFzUm90YXRpb24gPT09IDAgJiYgIWxvYWRlZEltYWdlLmV4aWZUcmFuc2Zvcm0uZmxpcCAmJiAhY3JvcHBlclNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luYWw6IHtcbiAgICAgICAgICBiYXNlNjQ6IGxvYWRlZEltYWdlLm9yaWdpbmFsLmJhc2U2NCxcbiAgICAgICAgICBpbWFnZTogbG9hZGVkSW1hZ2Uub3JpZ2luYWwuaW1hZ2UsXG4gICAgICAgICAgc2l6ZTogey4uLm9yaWdpbmFsU2l6ZX1cbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNmb3JtZWQ6IHtcbiAgICAgICAgICBiYXNlNjQ6IGxvYWRlZEltYWdlLm9yaWdpbmFsLmJhc2U2NCxcbiAgICAgICAgICBpbWFnZTogbG9hZGVkSW1hZ2Uub3JpZ2luYWwuaW1hZ2UsXG4gICAgICAgICAgc2l6ZTogey4uLm9yaWdpbmFsU2l6ZX1cbiAgICAgICAgfSxcbiAgICAgICAgZXhpZlRyYW5zZm9ybTogbG9hZGVkSW1hZ2UuZXhpZlRyYW5zZm9ybVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZFNpemUgPSB0aGlzLmdldFRyYW5zZm9ybWVkU2l6ZShvcmlnaW5hbFNpemUsIGxvYWRlZEltYWdlLmV4aWZUcmFuc2Zvcm0sIGNyb3BwZXJTZXR0aW5ncyk7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY2FudmFzLndpZHRoID0gdHJhbnNmb3JtZWRTaXplLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSB0cmFuc2Zvcm1lZFNpemUuaGVpZ2h0O1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGN0eC5zZXRUcmFuc2Zvcm0oXG4gICAgICBsb2FkZWRJbWFnZS5leGlmVHJhbnNmb3JtLmZsaXAgPyAtMSA6IDEsXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIDEsXG4gICAgICBjYW52YXMud2lkdGggLyAyLFxuICAgICAgY2FudmFzLmhlaWdodCAvIDJcbiAgICApO1xuICAgIGN0eC5yb3RhdGUoTWF0aC5QSSAqIChjYW52YXNSb3RhdGlvbiAvIDIpKTtcbiAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgbG9hZGVkSW1hZ2Uub3JpZ2luYWwuaW1hZ2UsXG4gICAgICAtb3JpZ2luYWxTaXplLndpZHRoIC8gMixcbiAgICAgIC1vcmlnaW5hbFNpemUuaGVpZ2h0IC8gMlxuICAgICk7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRCYXNlNjQgPSBjYW52YXMudG9EYXRhVVJMKCk7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRJbWFnZSA9IGF3YWl0IHRoaXMubG9hZEltYWdlRnJvbUJhc2U2NCh0cmFuc2Zvcm1lZEJhc2U2NCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgIGJhc2U2NDogbG9hZGVkSW1hZ2Uub3JpZ2luYWwuYmFzZTY0LFxuICAgICAgICBpbWFnZTogbG9hZGVkSW1hZ2Uub3JpZ2luYWwuaW1hZ2UsXG4gICAgICAgIHNpemU6IHsuLi5vcmlnaW5hbFNpemV9XG4gICAgICB9LFxuICAgICAgdHJhbnNmb3JtZWQ6IHtcbiAgICAgICAgYmFzZTY0OiB0cmFuc2Zvcm1lZEJhc2U2NCxcbiAgICAgICAgaW1hZ2U6IHRyYW5zZm9ybWVkSW1hZ2UsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogdHJhbnNmb3JtZWRJbWFnZS53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHRyYW5zZm9ybWVkSW1hZ2UuaGVpZ2h0XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBleGlmVHJhbnNmb3JtOiBsb2FkZWRJbWFnZS5leGlmVHJhbnNmb3JtXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEltYWdlRnJvbUJhc2U2NChpbWFnZUJhc2U2NDogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW1hZ2VFbGVtZW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+KCgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgaW1hZ2Uub25sb2FkID0gKCkgPT4gcmVzb2x2ZShpbWFnZSk7XG4gICAgICBpbWFnZS5vbmVycm9yID0gcmVqZWN0O1xuICAgICAgaW1hZ2Uuc3JjID0gaW1hZ2VCYXNlNjQ7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFuc2Zvcm1lZFNpemUoXG4gICAgb3JpZ2luYWxTaXplOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0sXG4gICAgZXhpZlRyYW5zZm9ybTogRXhpZlRyYW5zZm9ybSxcbiAgICBjcm9wcGVyU2V0dGluZ3M6IENyb3BwZXJTZXR0aW5nc1xuICApOiBEaW1lbnNpb25zIHtcbiAgICBjb25zdCBjYW52YXNSb3RhdGlvbiA9IGNyb3BwZXJTZXR0aW5ncy5jYW52YXNSb3RhdGlvbiArIGV4aWZUcmFuc2Zvcm0ucm90YXRlO1xuICAgIGlmIChjcm9wcGVyU2V0dGluZ3MuY29udGFpbldpdGhpbkFzcGVjdFJhdGlvKSB7XG4gICAgICBpZiAoY2FudmFzUm90YXRpb24gJSAyKSB7XG4gICAgICAgIGNvbnN0IG1pbldpZHRoVG9Db250YWluID0gb3JpZ2luYWxTaXplLndpZHRoICogY3JvcHBlclNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICBjb25zdCBtaW5IZWlnaHRUb0NvbnRhaW4gPSBvcmlnaW5hbFNpemUuaGVpZ2h0IC8gY3JvcHBlclNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdpZHRoOiBNYXRoLm1heChvcmlnaW5hbFNpemUuaGVpZ2h0LCBtaW5XaWR0aFRvQ29udGFpbiksXG4gICAgICAgICAgaGVpZ2h0OiBNYXRoLm1heChvcmlnaW5hbFNpemUud2lkdGgsIG1pbkhlaWdodFRvQ29udGFpbilcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1pbldpZHRoVG9Db250YWluID0gb3JpZ2luYWxTaXplLmhlaWdodCAqIGNyb3BwZXJTZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgICAgY29uc3QgbWluSGVpZ2h0VG9Db250YWluID0gb3JpZ2luYWxTaXplLndpZHRoIC8gY3JvcHBlclNldHRpbmdzLmFzcGVjdFJhdGlvO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdpZHRoOiBNYXRoLm1heChvcmlnaW5hbFNpemUud2lkdGgsIG1pbldpZHRoVG9Db250YWluKSxcbiAgICAgICAgICBoZWlnaHQ6IE1hdGgubWF4KG9yaWdpbmFsU2l6ZS5oZWlnaHQsIG1pbkhlaWdodFRvQ29udGFpbilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2FudmFzUm90YXRpb24gJSAyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQ6IG9yaWdpbmFsU2l6ZS53aWR0aCxcbiAgICAgICAgd2lkdGg6IG9yaWdpbmFsU2l6ZS5oZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogb3JpZ2luYWxTaXplLndpZHRoLFxuICAgICAgaGVpZ2h0OiBvcmlnaW5hbFNpemUuaGVpZ2h0XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/utils/blob.utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbWF3aS9Qcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9wcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9zcmMvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvYmxvYi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQW1COztVQUN4QyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7O1VBQzlCLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQzs7VUFDM0QsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O1VBQzNCLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDOztVQUN2QyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDN0MsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbEM7SUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYmFzZTY0VG9GaWxlKGJhc2U2NEltYWdlOiBzdHJpbmcpOiBCbG9iIHtcbiAgY29uc3Qgc3BsaXQgPSBiYXNlNjRJbWFnZS5zcGxpdCgnLCcpO1xuICBjb25zdCB0eXBlID0gc3BsaXRbMF0ucmVwbGFjZSgnZGF0YTonLCAnJykucmVwbGFjZSgnO2Jhc2U2NCcsICcnKTtcbiAgY29uc3QgYnl0ZVN0cmluZyA9IGF0b2Ioc3BsaXRbMV0pO1xuICBjb25zdCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XG4gIGNvbnN0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpYVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gbmV3IEJsb2IoW2FiXSwge3R5cGV9KTtcbn1cbiJdfQ==
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/utils/exif.utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpZi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbWF3aS9Qcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9wcm9qZWN0cy9uZ3gtaW1hZ2UtY3JvcHBlci9zcmMvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvZXhpZi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7TUFLTSwyQkFBMkIsR0FDL0Isd0VBQXdFO0lBQ3hFLHdFQUF3RTtJQUN4RSx3RUFBd0U7SUFDeEUsd0VBQXdFO0lBQ3hFLHdFQUF3RTtJQUN4RSwyREFBMkQ7Ozs7QUFFN0QsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxPQUFPLElBQUksT0FBTzs7OztJQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7O2NBQ3ZCLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRTtRQUN2QixHQUFHLENBQUMsTUFBTTs7O1FBQUcsR0FBRyxFQUFFOzs7a0JBRVYsU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNyRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFBLENBQUM7UUFDRixHQUFHLENBQUMsR0FBRyxHQUFHLDJCQUEyQixDQUFDO0lBQ3hDLENBQUMsRUFBQyxDQUFDO0FBQ0wsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsOEJBQThCLENBQUMseUJBQTBDO0lBQ3ZGLElBQUksT0FBTyx5QkFBeUIsS0FBSyxRQUFRLEVBQUU7UUFDakQseUJBQXlCLEdBQUcsZUFBZSxDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDeEU7SUFDRCxRQUFRLHlCQUF5QixFQUFFO1FBQ2pDLEtBQUssQ0FBQztZQUNKLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxLQUFLLENBQUM7WUFDSixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJ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VyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUM7O1VBQy9ELFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDOztVQUNoQyxHQUFHLEdBQUcsWUFBWSxDQUFDLE1BQU07O1VBQ3pCLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM1QixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN2QztJQUNELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhpZlRyYW5zZm9ybSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXhpZi10cmFuc2Zvcm0uaW50ZXJmYWNlJztcblxuLy8gQmxhY2sgMngxIEpQRUcsIHdpdGggdGhlIGZvbGxvd2luZyBtZXRhIGluZm9ybWF0aW9uIHNldDpcbi8vIC0gRVhJRiBPcmllbnRhdGlvbjogNiAoUm90YXRlZCA5MMKwIENDVylcbi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvSmF2YVNjcmlwdC1Mb2FkLUltYWdlXG5jb25zdCB0ZXN0QXV0b09yaWVudGF0aW9uSW1hZ2VVUkwgPVxuICAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNFFBaVJYaHBaZ0FBVFUwQUtnQUFBQWdBQVFFU0FBTUFBQUFCQUFZQUFBQScgK1xuICAnQUFBRC8yd0NFQUFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQScgK1xuICAnUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRScgK1xuICAnQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBZi9BQUJFSUFBRUFBZ01CRVFBQ0VRRURFUUgveCcgK1xuICAnQUJLQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQUFBQUFBQUFBQUFBQUFBQScgK1xuICAnQUFBQUFFUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUEvOW9BREFNQkFBSVJBeEVBUHdBLzhILy8yUT09JztcblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvcnRzQXV0b21hdGljUm90YXRpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAvLyBDaGVjayBpZiBicm93c2VyIHN1cHBvcnRzIGF1dG9tYXRpYyBpbWFnZSBvcmllbnRhdGlvbjpcbiAgICAgIGNvbnN0IHN1cHBvcnRlZCA9IGltZy53aWR0aCA9PT0gMSAmJiBpbWcuaGVpZ2h0ID09PSAyO1xuICAgICAgcmVzb2x2ZShzdXBwb3J0ZWQpO1xuICAgIH07XG4gICAgaW1nLnNyYyA9IHRlc3RBdXRvT3JpZW50YXRpb25JbWFnZVVSTDtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1hdGlvbnNGcm9tRXhpZkRhdGEoZXhpZlJvdGF0aW9uT3JCYXNlNjRJbWFnZTogbnVtYmVyIHwgc3RyaW5nKTogRXhpZlRyYW5zZm9ybSB7XG4gIGlmICh0eXBlb2YgZXhpZlJvdGF0aW9uT3JCYXNlNjRJbWFnZSA9PT0gJ3N0cmluZycpIHtcbiAgICBleGlmUm90YXRpb25PckJhc2U2NEltYWdlID0gZ2V0RXhpZlJvdGF0aW9uKGV4aWZSb3RhdGlvbk9yQmFzZTY0SW1hZ2UpO1xuICB9XG4gIHN3aXRjaCAoZXhpZlJvdGF0aW9uT3JCYXNlNjRJbWFnZSkge1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiB7IHJvdGF0ZTogMCwgZmxpcDogdHJ1ZSB9O1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiB7IHJvdGF0ZTogMiwgZmxpcDogZmFsc2UgfTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4geyByb3RhdGU6IDIsIGZsaXA6IHRydWUgfTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4geyByb3RhdGU6IDEsIGZsaXA6IHRydWUgfTtcbiAgICBjYXNlIDY6XG4gICAgICByZXR1cm4geyByb3RhdGU6IDEsIGZsaXA6IGZhbHNlIH07XG4gICAgY2FzZSA3OlxuICAgICAgcmV0dXJuIHsgcm90YXRlOiAzLCBmbGlwOiB0cnVlIH07XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIHsgcm90YXRlOiAzLCBmbGlwOiBmYWxzZSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4geyByb3RhdGU6IDAsIGZsaXA6IGZhbHNlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RXhpZlJvdGF0aW9uKGltYWdlQmFzZTY0OiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJhc2U2NFRvQXJyYXlCdWZmZXIoaW1hZ2VCYXNlNjQpKTtcbiAgaWYgKHZpZXcuZ2V0VWludDE2KDAsIGZhbHNlKSAhPT0gMHhGRkQ4KSB7XG4gICAgcmV0dXJuIC0yO1xuICB9XG4gIGNvbnN0IGxlbmd0aCA9IHZpZXcuYnl0ZUxlbmd0aDtcbiAgbGV0IG9mZnNldCA9IDI7XG4gIHdoaWxlIChvZmZzZXQgPCBsZW5ndGgpIHtcbiAgICBpZiAodmlldy5nZXRVaW50MTYob2Zmc2V0ICsgMiwgZmFsc2UpIDw9IDgpIHJldHVybiAtMTtcbiAgICBjb25zdCBtYXJrZXIgPSB2aWV3LmdldFVpbnQxNihvZmZzZXQsIGZhbHNlKTtcbiAgICBvZmZzZXQgKz0gMjtcbiAgICBpZiAobWFya2VyID09IDB4RkZFMSkge1xuICAgICAgaWYgKHZpZXcuZ2V0VWludDMyKG9mZnNldCArPSAyLCBmYWxzZSkgIT09IDB4NDU3ODY5NjYpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsaXR0bGUgPSB2aWV3LmdldFVpbnQxNihvZmZzZXQgKz0gNiwgZmFsc2UpID09IDB4NDk0OTtcbiAgICAgIG9mZnNldCArPSB2aWV3LmdldFVpbnQzMihvZmZzZXQgKyA0LCBsaXR0bGUpO1xuICAgICAgY29uc3QgdGFncyA9IHZpZXcuZ2V0VWludDE2KG9mZnNldCwgbGl0dGxlKTtcbiAgICAgIG9mZnNldCArPSAyO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdzOyBpKyspIHtcbiAgICAgICAgaWYgKHZpZXcuZ2V0VWludDE2KG9mZnNldCArIChpICogMTIpLCBsaXR0bGUpID09IDB4MDExMikge1xuICAgICAgICAgIHJldHVybiB2aWV3LmdldFVpbnQxNihvZmZzZXQgKyAoaSAqIDEyKSArIDgsIGxpdHRsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChtYXJrZXIgJiAweEZGMDApICE9PSAweEZGMDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgKz0gdmlldy5nZXRVaW50MTYob2Zmc2V0LCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9BcnJheUJ1ZmZlcihpbWFnZUJhc2U2NDogc3RyaW5nKSB7XG4gIGltYWdlQmFzZTY0ID0gaW1hZ2VCYXNlNjQucmVwbGFjZSgvXmRhdGFcXDooW15cXDtdKylcXDtiYXNlNjQsL2dtaSwgJycpO1xuICBjb25zdCBiaW5hcnlTdHJpbmcgPSBhdG9iKGltYWdlQmFzZTY0KTtcbiAgY29uc3QgbGVuID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYnl0ZXNbaV0gPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gYnl0ZXMuYnVmZmVyO1xufVxuIl19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/utils/hammer.utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9tYXdpL1Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3Byb2plY3RzL25neC1pbWFnZS1jcm9wcGVyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9oYW1tZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0EsbUNBTUM7Ozs7OztJQUxDLHVEQUFzQzs7Ozs7SUFFdEMscURBQWlDOzs7Ozs7SUFFakMsK0RBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSGFtbWVyU3RhdGljID0gbmV3KGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCwgb3B0aW9ucz86IGFueSkgPT4gSGFtbWVyTWFuYWdlcjtcblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGFtbWVyTWFuYWdlciB7XG4gIGdldChldmVudE5hbWU6IHN0cmluZyk6IEhhbW1lck1hbmFnZXI7XG5cbiAgc2V0KG9wdGlvbnM6IGFueSk6IEhhbW1lck1hbmFnZXI7XG5cbiAgb24oZXZlbnROYW1lOiBzdHJpbmcsIGhhbmRsZXI6IChldjogYW55KSA9PiBhbnkpO1xufVxuIl19
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* Generated from: lib/utils/keyboard.utils.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL21hd2kvUHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvcHJvamVjdHMvbmd4LWltYWdlLWNyb3BwZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL2tleWJvYXJkLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLFFBQVEsR0FBRyxFQUFFO1FBQ1gsS0FBSyxTQUFTO1lBQ1osT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLFlBQVk7WUFDZixPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLFdBQVc7WUFDZCxPQUFPLFFBQVEsQ0FBQztRQUNsQixLQUFLLFdBQVcsQ0FBQztRQUNqQjtZQUNFLE9BQU8sTUFBTSxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsR0FBVztJQUNuRCxRQUFRLEdBQUcsRUFBRTtRQUNYLEtBQUssU0FBUztZQUNaLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLEtBQUssWUFBWTtZQUNmLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssV0FBVztZQUNkLE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxXQUFXLENBQUM7UUFDakI7WUFDRSxPQUFPLE9BQU8sQ0FBQztLQUNsQjtBQUNILENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBVyxFQUFFLFFBQWdCO0lBQzFELFFBQVEsR0FBRyxFQUFFO1FBQ1gsS0FBSyxTQUFTO1lBQ1osT0FBTyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBQyxDQUFDO1FBQzlDLEtBQUssWUFBWTtZQUNmLE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQztRQUN6QyxLQUFLLFdBQVc7WUFDZCxPQUFPLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLENBQUM7UUFDekMsS0FBSyxXQUFXLENBQUM7UUFDakI7WUFDRSxPQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUM7S0FDL0M7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldFBvc2l0aW9uRm9yS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgIHJldHVybiAndG9wJztcbiAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICByZXR1cm4gJ2JvdHRvbSc7XG4gICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52ZXJ0ZWRQb3NpdGlvbkZvcktleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICByZXR1cm4gJ2JvdHRvbSc7XG4gICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICByZXR1cm4gJ2xlZnQnO1xuICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICByZXR1cm4gJ3RvcCc7XG4gICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdyaWdodCc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV2ZW50Rm9yS2V5KGtleTogc3RyaW5nLCBzdGVwU2l6ZTogbnVtYmVyKTogYW55IHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgIHJldHVybiB7Y2xpZW50WDogMCwgY2xpZW50WTogc3RlcFNpemUgKiAtMX07XG4gICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICByZXR1cm4ge2NsaWVudFg6IHN0ZXBTaXplLCBjbGllbnRZOiAwfTtcbiAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgcmV0dXJuIHtjbGllbnRYOiAwLCBjbGllbnRZOiBzdGVwU2l6ZX07XG4gICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtjbGllbnRYOiBzdGVwU2l6ZSAqIC0xLCBjbGllbnRZOiAwfTtcbiAgfVxufVxuIl19
|