barsa-novin-ray-core 2.2.9 → 2.2.11
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.
|
@@ -83,70 +83,75 @@ export class UploadService {
|
|
|
83
83
|
const formData = new FormData();
|
|
84
84
|
return new Promise((resolve, reject) => {
|
|
85
85
|
files.forEach((file, index) => {
|
|
86
|
-
|
|
87
|
-
const blobURL = URL.createObjectURL(file2);
|
|
88
|
-
const img = new Image();
|
|
89
|
-
img.src = blobURL;
|
|
90
|
-
const biggerThan1MB = file.size / 1024 > 1000;
|
|
91
|
-
console.log(`file size ${biggerThan1MB}`);
|
|
92
|
-
const mimeTypeJpg = 'image/jpeg';
|
|
93
|
-
const MAX_WIDTH = 1920;
|
|
94
|
-
const MAX_HEIGHT = 1080;
|
|
95
|
-
const MIME_TYPE = biggerThan1MB ? mimeTypeJpg : file.type;
|
|
96
|
-
const QUALITY = biggerThan1MB && file.type === mimeTypeJpg ? 0.5 : 1;
|
|
97
|
-
if (MIME_TYPE === file.type && QUALITY === 1) {
|
|
98
|
-
formData.append('file', file, file.name);
|
|
99
|
-
if (index === files.length - 1) {
|
|
100
|
-
resolve(formData);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
img.onerror = function () {
|
|
104
|
-
URL.revokeObjectURL(img.src);
|
|
105
|
-
// Handle the failure properly
|
|
106
|
-
console.log('Cannot load image');
|
|
107
|
-
reject(new Error('Cannot load image'));
|
|
108
|
-
};
|
|
109
|
-
img.onload = function () {
|
|
110
|
-
URL.revokeObjectURL(img.src);
|
|
111
|
-
const [newWidth, newHeight] = calculateSize(img, MAX_WIDTH, MAX_HEIGHT);
|
|
112
|
-
const canvas = document.createElement('canvas');
|
|
113
|
-
canvas.width = newWidth;
|
|
114
|
-
canvas.height = newHeight;
|
|
115
|
-
const ctx = canvas.getContext('2d');
|
|
116
|
-
ctx?.drawImage(img, 0, 0, newWidth, newHeight);
|
|
117
|
-
canvas.toBlob((blob) => {
|
|
118
|
-
// Handle the compressed image. es. upload or save in local state
|
|
119
|
-
if (blob) {
|
|
120
|
-
// formData.append(
|
|
121
|
-
// 'unicFileName',
|
|
122
|
-
// 'x' + BarsaApi.Common.Util.GetNewMetaGuid() + ';;;' + file.name
|
|
123
|
-
// );
|
|
124
|
-
formData.append('file', blob, file.name);
|
|
125
|
-
}
|
|
126
|
-
if (index === files.length - 1) {
|
|
127
|
-
resolve(formData);
|
|
128
|
-
}
|
|
129
|
-
}, MIME_TYPE, QUALITY);
|
|
130
|
-
};
|
|
131
|
-
function calculateSize(img1, maxWidth, maxHeight) {
|
|
132
|
-
let width = img1.width;
|
|
133
|
-
let height = img1.height;
|
|
134
|
-
// calculate the width and height, constraining the proportions
|
|
135
|
-
if (width > height) {
|
|
136
|
-
if (width > maxWidth) {
|
|
137
|
-
height = Math.round((height * maxWidth) / width);
|
|
138
|
-
width = maxWidth;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
if (height > maxHeight) {
|
|
143
|
-
width = Math.round((width * maxHeight) / height);
|
|
144
|
-
height = maxHeight;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return [width, height];
|
|
148
|
-
}
|
|
86
|
+
formData.append('file', file, file.name);
|
|
149
87
|
});
|
|
88
|
+
resolve(formData);
|
|
89
|
+
// const file2 = file; // get the file
|
|
90
|
+
// const blobURL = URL.createObjectURL(file2);
|
|
91
|
+
// const img = new Image();
|
|
92
|
+
// img.src = blobURL;
|
|
93
|
+
// const biggerThan1MB = file.size / 1024 > 1000;
|
|
94
|
+
// const mimeTypeJpg = 'image/jpeg';
|
|
95
|
+
// const MAX_WIDTH = 1920;
|
|
96
|
+
// const MAX_HEIGHT = 1080;
|
|
97
|
+
// const MIME_TYPE = biggerThan1MB ? mimeTypeJpg : file.type;
|
|
98
|
+
// const QUALITY = biggerThan1MB && file.type === mimeTypeJpg ? 0.5 : 1;
|
|
99
|
+
// if (MIME_TYPE === file.type && QUALITY === 1) {
|
|
100
|
+
// formData.append('file', file, file.name);
|
|
101
|
+
// if (index === files.length - 1) {
|
|
102
|
+
// resolve(formData);
|
|
103
|
+
// }
|
|
104
|
+
// }
|
|
105
|
+
// img.onerror = function (): void {
|
|
106
|
+
// URL.revokeObjectURL(img.src);
|
|
107
|
+
// // Handle the failure properly
|
|
108
|
+
// console.log('Cannot load image');
|
|
109
|
+
// reject(new Error('Cannot load image'));
|
|
110
|
+
// };
|
|
111
|
+
// img.onload = function (): void {
|
|
112
|
+
// URL.revokeObjectURL(img.src);
|
|
113
|
+
// const [newWidth, newHeight] = calculateSize(img, MAX_WIDTH, MAX_HEIGHT);
|
|
114
|
+
// const canvas = document.createElement('canvas');
|
|
115
|
+
// canvas.width = newWidth;
|
|
116
|
+
// canvas.height = newHeight;
|
|
117
|
+
// const ctx = canvas.getContext('2d');
|
|
118
|
+
// ctx?.drawImage(img, 0, 0, newWidth, newHeight);
|
|
119
|
+
// canvas.toBlob(
|
|
120
|
+
// (blob) => {
|
|
121
|
+
// // Handle the compressed image. es. upload or save in local state
|
|
122
|
+
// if (blob) {
|
|
123
|
+
// // formData.append(
|
|
124
|
+
// // 'unicFileName',
|
|
125
|
+
// // 'x' + BarsaApi.Common.Util.GetNewMetaGuid() + ';;;' + file.name
|
|
126
|
+
// // );
|
|
127
|
+
// formData.append('file', blob, file.name);
|
|
128
|
+
// }
|
|
129
|
+
// if (index === files.length - 1) {
|
|
130
|
+
// resolve(formData);
|
|
131
|
+
// }
|
|
132
|
+
// },
|
|
133
|
+
// MIME_TYPE,
|
|
134
|
+
// QUALITY
|
|
135
|
+
// );
|
|
136
|
+
// };
|
|
137
|
+
// function calculateSize(img1, maxWidth, maxHeight): number[] {
|
|
138
|
+
// let width = img1.width;
|
|
139
|
+
// let height = img1.height;
|
|
140
|
+
// // calculate the width and height, constraining the proportions
|
|
141
|
+
// if (width > height) {
|
|
142
|
+
// if (width > maxWidth) {
|
|
143
|
+
// height = Math.round((height * maxWidth) / width);
|
|
144
|
+
// width = maxWidth;
|
|
145
|
+
// }
|
|
146
|
+
// } else {
|
|
147
|
+
// if (height > maxHeight) {
|
|
148
|
+
// width = Math.round((width * maxHeight) / height);
|
|
149
|
+
// height = maxHeight;
|
|
150
|
+
// }
|
|
151
|
+
// }
|
|
152
|
+
// return [width, height];
|
|
153
|
+
// }
|
|
154
|
+
// });
|
|
150
155
|
});
|
|
151
156
|
}
|
|
152
157
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -158,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
158
163
|
providedIn: 'root'
|
|
159
164
|
}]
|
|
160
165
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQWMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBS2hFLE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFDL0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLGNBQVMsR0FBRyw0Q0FBNEMsQ0FBQztJQUNaLENBQUM7SUFFdkMsTUFBTSxDQUFDLElBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFO1FBQ3hELElBQUksS0FBSyxHQUFvQjtZQUN6QixHQUFHO1lBQ0gsUUFBUSxFQUFFLENBQUM7WUFDWCxLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxLQUFLO1NBQ25CLENBQUM7UUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVTth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LEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQzs0QkFDakQsTUFBTSxHQUFHLFNBQVMsQ0FBQzt3QkFDdkIsQ0FBQztvQkFDTCxDQUFDO29CQUNELE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F4SlEsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFyc2FBcGksIElVcGxvYWRpbmdTdGF0ZSB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX3VwbG9hZGluZ1N0YXRlU291cmNlID0gbmV3IFN1YmplY3Q8SVVwbG9hZGluZ1N0YXRlPigpO1xuICAgIHVwbG9hZGluZ1N0YXRlJCA9IHRoaXMuX3VwbG9hZGluZ1N0YXRlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIGNhbmNlbGF0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdXBsb2FkVVJMID0gYC9GaWVsZHMvRmlsZS9CYXNlL0ZpbGVVcGxvYWRGb3JtTXVsdGkuYXNoeGA7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7fVxuXG4gICAgcHVibGljIHVwbG9hZChkYXRhOiBGb3JtRGF0YSwgZmRJZDogc3RyaW5nLCBrZXk6IHN0cmluZyA9ICcnKTogT2JzZXJ2YWJsZTxJVXBsb2FkaW5nU3RhdGU+IHtcbiAgICAgICAgbGV0IHN0YXRlOiBJVXBsb2FkaW5nU3RhdGUgPSB7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICAgIHN0YXRlOiAnU3RhcnQnLFxuICAgICAgICAgICAgdXBsb2FkaW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9zZXRVcGxvYWRpbmdTdGF0dXMoc3RhdGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdDxhbnk+KHRoaXMudXBsb2FkVVJMLCBkYXRhLCB7XG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogeyBmZElkLCBJc1BvcnRhbDogJ3RydWUnIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSBldmVudC50b3RhbCB8fCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIHRvdGFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBzdGF0dXM6ICdwcm9ncmVzcycsIG1lc3NhZ2U6IHByb2dyZXNzIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgVW5oYW5kbGVkIGV2ZW50OiAke2V2ZW50LnR5cGV9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gdGhpcy5fc2V0VXBsb2FkaW5nU3RhdHVzKHsgLi4uc3RhdGUsIHN0YXRlOiAnQ29tcGxldGUnLCB1cGxvYWRpbmc6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyAhPT0gbnVsbCAmJiB0eXBlb2YgcmVzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHRoaXMuX3NldFVwbG9hZGluZ1N0YXR1cyh7IC4uLnN0YXRlLCBzdGF0ZTogJ0Vycm9yJywgdXBsb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gJ3Byb2dyZXNzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gdGhpcy5fc2V0VXBsb2FkaW5nU3RhdHVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiAnVXBsb2FkaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzczogcmVzLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNhbmNlbGF0aW9uJC5hc09ic2VydmFibGUoKSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuVG9hc3QuRXJyb3IoYCR7ZXJyLnN0YXR1c30gOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVycikpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSB0aGlzLl9zZXRVcGxvYWRpbmdTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRpbmc6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wcmVzc0ZpbGVzJChmaWxlczogRmlsZVtdKTogT2JzZXJ2YWJsZTxGb3JtRGF0YT4ge1xuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmNvbXByZXNzRmlsZXMoZmlsZXMpKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0VXBsb2FkaW5nU3RhdHVzKHN0YXRlOiBJVXBsb2FkaW5nU3RhdGUpOiBJVXBsb2FkaW5nU3RhdGUge1xuICAgICAgICBpZiAoc3RhdGUuc3RhdGUgPT09ICdTdGFydCcpIHtcbiAgICAgICAgICAgIHN0YXRlLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBsb2FkaW5nU3RhdGVTb3VyY2UubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjb21wcmVzc0ZpbGVzKGZpbGVzOiBGaWxlW10pOiBQcm9taXNlPEZvcm1EYXRhPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUyID0gZmlsZTsgLy8gZ2V0IHRoZSBmaWxlXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvYlVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZTIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgICAgIGltZy5zcmMgPSBibG9iVVJMO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpZ2dlclRoYW4xTUIgPSBmaWxlLnNpemUgLyAxMDI0ID4gMTAwMDtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgZmlsZSBzaXplICR7YmlnZ2VyVGhhbjFNQn1gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW1lVHlwZUpwZyA9ICdpbWFnZS9qcGVnJztcbiAgICAgICAgICAgICAgICBjb25zdCBNQVhfV0lEVEggPSAxOTIwO1xuICAgICAgICAgICAgICAgIGNvbnN0IE1BWF9IRUlHSFQgPSAxMDgwO1xuICAgICAgICAgICAgICAgIGNvbnN0IE1JTUVfVFlQRSA9IGJpZ2dlclRoYW4xTUIgPyBtaW1lVHlwZUpwZyA6IGZpbGUudHlwZTtcbiAgICAgICAgICAgICAgICBjb25zdCBRVUFMSVRZID0gYmlnZ2VyVGhhbjFNQiAmJiBmaWxlLnR5cGUgPT09IG1pbWVUeXBlSnBnID8gMC41IDogMTtcbiAgICAgICAgICAgICAgICBpZiAoTUlNRV9UWVBFID09PSBmaWxlLnR5cGUgJiYgUVVBTElUWSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGZpbGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGltZy5zcmMpO1xuICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGZhaWx1cmUgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Nhbm5vdCBsb2FkIGltYWdlJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0Nhbm5vdCBsb2FkIGltYWdlJykpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChpbWcuc3JjKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW25ld1dpZHRoLCBuZXdIZWlnaHRdID0gY2FsY3VsYXRlU2l6ZShpbWcsIE1BWF9XSURUSCwgTUFYX0hFSUdIVCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IG5ld0hlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICAgICAgICAgIGN0eD8uZHJhd0ltYWdlKGltZywgMCwgMCwgbmV3V2lkdGgsIG5ld0hlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNhbnZhcy50b0Jsb2IoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmxvYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgY29tcHJlc3NlZCBpbWFnZS4gZXMuIHVwbG9hZCBvciBzYXZlIGluIGxvY2FsIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgJ3VuaWNGaWxlTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAneCcgKyBCYXJzYUFwaS5Db21tb24uVXRpbC5HZXROZXdNZXRhR3VpZCgpICsgJzs7OycgKyBmaWxlLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgYmxvYiwgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBmaWxlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBNSU1FX1RZUEUsXG4gICAgICAgICAgICAgICAgICAgICAgICBRVUFMSVRZXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGVTaXplKGltZzEsIG1heFdpZHRoLCBtYXhIZWlnaHQpOiBudW1iZXJbXSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGltZzEud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpbWcxLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIHdpZHRoIGFuZCBoZWlnaHQsIGNvbnN0cmFpbmluZyB0aGUgcHJvcG9ydGlvbnNcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IE1hdGgucm91bmQoKGhlaWdodCAqIG1heFdpZHRoKSAvIHdpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG1heFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlaWdodCA+IG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gTWF0aC5yb3VuZCgod2lkdGggKiBtYXhIZWlnaHQpIC8gaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt3aWR0aCwgaGVpZ2h0XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQWMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBS2hFLE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFDL0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLGNBQVMsR0FBRyw0Q0FBNEMsQ0FBQztJQUNaLENBQUM7SUFFdkMsTUFBTSxDQUFDLElBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFO1FBQ3hELElBQUksS0FBSyxHQUFvQjtZQUN6QixHQUFHO1lBQ0gsUUFBUSxFQUFFLENBQUM7WUFDWCxLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxLQUFLO1NBQ25CLENBQUM7UUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNqQixJQUFJLENBQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUU7WUFDN0IsY0FBYyxFQUFFLElBQUk7WUFDcEIsT0FBTyxFQUFFLFFBQVE7WUFDakIsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7U0FDdEMsQ0FBQzthQUNELElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNWLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqQixLQUFLLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztvQkFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7b0JBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDckQsQ0FBQztnQkFDRCxLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN2QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCO29CQUNJLE9BQU8sb0JBQW9CLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDUixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEYsQ0FBQztpQkFBTSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2pELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDekIsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7cUJBQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUNuQyxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO3dCQUM3QixHQUFHLEtBQUs7d0JBQ1IsS0FBSyxFQUFFLFdBQVc7d0JBQ2xCLFNBQVMsRUFBRSxJQUFJO3dCQUNmLFFBQVEsRUFBRSxHQUFHLENBQUMsT0FBTztxQkFDeEIsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUMzQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNmLElBQUksR0FBRyxZQUFZLGlCQUFpQixFQUFFLENBQUM7Z0JBQ25DLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7Z0JBQzdCLEdBQUcsS0FBSztnQkFDUixTQUFTLEVBQUUsS0FBSzthQUNuQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ08sbUJBQW1CLENBQUMsS0FBc0I7UUFDOUMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzFCLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDTyxhQUFhLENBQUMsS0FBYTtRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQiwwQ0FBMEM7WUFDMUMsa0RBQWtEO1lBQ2xELCtCQUErQjtZQUMvQix5QkFBeUI7WUFDekIscURBQXFEO1lBQ3JELHdDQUF3QztZQUN4Qyw4QkFBOEI7WUFDOUIsK0JBQStCO1lBQy9CLGlFQUFpRTtZQUNqRSw0RUFBNEU7WUFDNUUsc0RBQXNEO1lBQ3RELG9EQUFvRDtZQUNwRCw0Q0FBNEM7WUFDNUMsaUNBQWlDO1lBQ2pDLFlBQVk7WUFDWixRQUFRO1lBQ1Isd0NBQXdDO1lBQ3hDLHdDQUF3QztZQUN4Qyx5Q0FBeUM7WUFDekMsNENBQTRDO1lBQzVDLGtEQUFrRDtZQUNsRCxTQUFTO1lBQ1QsdUNBQXVDO1lBQ3ZDLHdDQUF3QztZQUN4QyxtRkFBbUY7WUFDbkYsMkRBQTJEO1lBQzNELG1DQUFtQztZQUNuQyxxQ0FBcUM7WUFDckMsK0NBQStDO1lBQy9DLDBEQUEwRDtZQUMxRCx5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLG9GQUFvRjtZQUNwRiw4QkFBOEI7WUFDOUIsMENBQTBDO1lBQzFDLDZDQUE2QztZQUM3Qyw2RkFBNkY7WUFDN0YsNEJBQTRCO1lBQzVCLGdFQUFnRTtZQUNoRSxvQkFBb0I7WUFDcEIsb0RBQW9EO1lBQ3BELHlDQUF5QztZQUN6QyxvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLHlCQUF5QjtZQUN6QixzQkFBc0I7WUFDdEIsYUFBYTtZQUNiLFNBQVM7WUFDVCxvRUFBb0U7WUFDcEUsa0NBQWtDO1lBQ2xDLG9DQUFvQztZQUVwQywwRUFBMEU7WUFDMUUsZ0NBQWdDO1lBQ2hDLHNDQUFzQztZQUN0QyxvRUFBb0U7WUFDcEUsb0NBQW9DO1lBQ3BDLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsd0NBQXdDO1lBQ3hDLG9FQUFvRTtZQUNwRSxzQ0FBc0M7WUFDdEMsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixrQ0FBa0M7WUFDbEMsUUFBUTtZQUNSLE1BQU07UUFDVixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBMUpRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IsIGZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCYXJzYUFwaSwgSVVwbG9hZGluZ1N0YXRlIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfdXBsb2FkaW5nU3RhdGVTb3VyY2UgPSBuZXcgU3ViamVjdDxJVXBsb2FkaW5nU3RhdGU+KCk7XHJcbiAgICB1cGxvYWRpbmdTdGF0ZSQgPSB0aGlzLl91cGxvYWRpbmdTdGF0ZVNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgIGNhbmNlbGF0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICB1cGxvYWRVUkwgPSBgL0ZpZWxkcy9GaWxlL0Jhc2UvRmlsZVVwbG9hZEZvcm1NdWx0aS5hc2h4YDtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge31cclxuXHJcbiAgICBwdWJsaWMgdXBsb2FkKGRhdGE6IEZvcm1EYXRhLCBmZElkOiBzdHJpbmcsIGtleTogc3RyaW5nID0gJycpOiBPYnNlcnZhYmxlPElVcGxvYWRpbmdTdGF0ZT4ge1xyXG4gICAgICAgIGxldCBzdGF0ZTogSVVwbG9hZGluZ1N0YXRlID0ge1xyXG4gICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgIHByb2dyZXNzOiAwLFxyXG4gICAgICAgICAgICBzdGF0ZTogJ1N0YXJ0JyxcclxuICAgICAgICAgICAgdXBsb2FkaW5nOiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fc2V0VXBsb2FkaW5nU3RhdHVzKHN0YXRlKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgICAgICAgIC5wb3N0PGFueT4odGhpcy51cGxvYWRVUkwsIGRhdGEsIHtcclxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7IGZkSWQsIElzUG9ydGFsOiAndHJ1ZScgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3RhbCA9IGV2ZW50LnRvdGFsIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyB0b3RhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBzdGF0dXM6ICdwcm9ncmVzcycsIG1lc3NhZ2U6IHByb2dyZXNzIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFVuaGFuZGxlZCBldmVudDogJHtldmVudC50eXBlfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSB0aGlzLl9zZXRVcGxvYWRpbmdTdGF0dXMoeyAuLi5zdGF0ZSwgc3RhdGU6ICdDb21wbGV0ZScsIHVwbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgIT09IG51bGwgJiYgdHlwZW9mIHJlcyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09ICdlcnJvcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gdGhpcy5fc2V0VXBsb2FkaW5nU3RhdHVzKHsgLi4uc3RhdGUsIHN0YXRlOiAnRXJyb3InLCB1cGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09ICdwcm9ncmVzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gdGhpcy5fc2V0VXBsb2FkaW5nU3RhdHVzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ1VwbG9hZGluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiByZXMubWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY2FuY2VsYXRpb24kLmFzT2JzZXJ2YWJsZSgpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5Ub2FzdC5FcnJvcihgJHtlcnIuc3RhdHVzfSA6ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHRoaXMuX3NldFVwbG9hZGluZ1N0YXR1cyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRpbmc6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb21wcmVzc0ZpbGVzJChmaWxlczogRmlsZVtdKTogT2JzZXJ2YWJsZTxGb3JtRGF0YT4ge1xyXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuY29tcHJlc3NGaWxlcyhmaWxlcykpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfc2V0VXBsb2FkaW5nU3RhdHVzKHN0YXRlOiBJVXBsb2FkaW5nU3RhdGUpOiBJVXBsb2FkaW5nU3RhdGUge1xyXG4gICAgICAgIGlmIChzdGF0ZS5zdGF0ZSA9PT0gJ1N0YXJ0Jykge1xyXG4gICAgICAgICAgICBzdGF0ZS51cGxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl91cGxvYWRpbmdTdGF0ZVNvdXJjZS5uZXh0KHN0YXRlKTtcclxuICAgICAgICByZXR1cm4gc3RhdGU7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGNvbXByZXNzRmlsZXMoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8Rm9ybURhdGE+IHtcclxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmVzb2x2ZShmb3JtRGF0YSk7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zdCBmaWxlMiA9IGZpbGU7IC8vIGdldCB0aGUgZmlsZVxyXG4gICAgICAgICAgICAvLyAgICAgY29uc3QgYmxvYlVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZTIpO1xyXG4gICAgICAgICAgICAvLyAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgICAgIC8vICAgICBpbWcuc3JjID0gYmxvYlVSTDtcclxuICAgICAgICAgICAgLy8gICAgIGNvbnN0IGJpZ2dlclRoYW4xTUIgPSBmaWxlLnNpemUgLyAxMDI0ID4gMTAwMDtcclxuICAgICAgICAgICAgLy8gICAgIGNvbnN0IG1pbWVUeXBlSnBnID0gJ2ltYWdlL2pwZWcnO1xyXG4gICAgICAgICAgICAvLyAgICAgY29uc3QgTUFYX1dJRFRIID0gMTkyMDtcclxuICAgICAgICAgICAgLy8gICAgIGNvbnN0IE1BWF9IRUlHSFQgPSAxMDgwO1xyXG4gICAgICAgICAgICAvLyAgICAgY29uc3QgTUlNRV9UWVBFID0gYmlnZ2VyVGhhbjFNQiA/IG1pbWVUeXBlSnBnIDogZmlsZS50eXBlO1xyXG4gICAgICAgICAgICAvLyAgICAgY29uc3QgUVVBTElUWSA9IGJpZ2dlclRoYW4xTUIgJiYgZmlsZS50eXBlID09PSBtaW1lVHlwZUpwZyA/IDAuNSA6IDE7XHJcbiAgICAgICAgICAgIC8vICAgICBpZiAoTUlNRV9UWVBFID09PSBmaWxlLnR5cGUgJiYgUVVBTElUWSA9PT0gMSkge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGluZGV4ID09PSBmaWxlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJlc29sdmUoZm9ybURhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24gKCk6IHZvaWQge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoaW1nLnNyYyk7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8gSGFuZGxlIHRoZSBmYWlsdXJlIHByb3Blcmx5XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ0Nhbm5vdCBsb2FkIGltYWdlJyk7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignQ2Fubm90IGxvYWQgaW1hZ2UnKSk7XHJcbiAgICAgICAgICAgIC8vICAgICB9O1xyXG4gICAgICAgICAgICAvLyAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGltZy5zcmMpO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IFtuZXdXaWR0aCwgbmV3SGVpZ2h0XSA9IGNhbGN1bGF0ZVNpemUoaW1nLCBNQVhfV0lEVEgsIE1BWF9IRUlHSFQpO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNhbnZhcy53aWR0aCA9IG5ld1dpZHRoO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBuZXdIZWlnaHQ7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY3R4Py5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTtcclxuICAgICAgICAgICAgLy8gICAgICAgICBjYW52YXMudG9CbG9iKFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAoYmxvYikgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjb21wcmVzc2VkIGltYWdlLiBlcy4gdXBsb2FkIG9yIHNhdmUgaW4gbG9jYWwgc3RhdGVcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIGlmIChibG9iKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybURhdGEuYXBwZW5kKFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIC8vICAgICAndW5pY0ZpbGVOYW1lJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAvLyAgICAgJ3gnICsgQmFyc2FBcGkuQ29tbW9uLlV0aWwuR2V0TmV3TWV0YUd1aWQoKSArICc7OzsnICsgZmlsZS5uYW1lXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgLy8gKTtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBibG9iLCBmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBmaWxlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmb3JtRGF0YSk7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIE1JTUVfVFlQRSxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgUVVBTElUWVxyXG4gICAgICAgICAgICAvLyAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vICAgICB9O1xyXG4gICAgICAgICAgICAvLyAgICAgZnVuY3Rpb24gY2FsY3VsYXRlU2l6ZShpbWcxLCBtYXhXaWR0aCwgbWF4SGVpZ2h0KTogbnVtYmVyW10ge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGxldCB3aWR0aCA9IGltZzEud2lkdGg7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgbGV0IGhlaWdodCA9IGltZzEuaGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgLy8gICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIHdpZHRoIGFuZCBoZWlnaHQsIGNvbnN0cmFpbmluZyB0aGUgcHJvcG9ydGlvbnNcclxuICAgICAgICAgICAgLy8gICAgICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgaWYgKHdpZHRoID4gbWF4V2lkdGgpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIGhlaWdodCA9IE1hdGgucm91bmQoKGhlaWdodCAqIG1heFdpZHRoKSAvIHdpZHRoKTtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4V2lkdGg7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICBpZiAoaGVpZ2h0ID4gbWF4SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICB3aWR0aCA9IE1hdGgucm91bmQoKHdpZHRoICogbWF4SGVpZ2h0KSAvIGhlaWdodCk7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIFt3aWR0aCwgaGVpZ2h0XTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -6447,70 +6447,75 @@ class UploadService {
|
|
|
6447
6447
|
const formData = new FormData();
|
|
6448
6448
|
return new Promise((resolve, reject) => {
|
|
6449
6449
|
files.forEach((file, index) => {
|
|
6450
|
-
|
|
6451
|
-
const blobURL = URL.createObjectURL(file2);
|
|
6452
|
-
const img = new Image();
|
|
6453
|
-
img.src = blobURL;
|
|
6454
|
-
const biggerThan1MB = file.size / 1024 > 1000;
|
|
6455
|
-
console.log(`file size ${biggerThan1MB}`);
|
|
6456
|
-
const mimeTypeJpg = 'image/jpeg';
|
|
6457
|
-
const MAX_WIDTH = 1920;
|
|
6458
|
-
const MAX_HEIGHT = 1080;
|
|
6459
|
-
const MIME_TYPE = biggerThan1MB ? mimeTypeJpg : file.type;
|
|
6460
|
-
const QUALITY = biggerThan1MB && file.type === mimeTypeJpg ? 0.5 : 1;
|
|
6461
|
-
if (MIME_TYPE === file.type && QUALITY === 1) {
|
|
6462
|
-
formData.append('file', file, file.name);
|
|
6463
|
-
if (index === files.length - 1) {
|
|
6464
|
-
resolve(formData);
|
|
6465
|
-
}
|
|
6466
|
-
}
|
|
6467
|
-
img.onerror = function () {
|
|
6468
|
-
URL.revokeObjectURL(img.src);
|
|
6469
|
-
// Handle the failure properly
|
|
6470
|
-
console.log('Cannot load image');
|
|
6471
|
-
reject(new Error('Cannot load image'));
|
|
6472
|
-
};
|
|
6473
|
-
img.onload = function () {
|
|
6474
|
-
URL.revokeObjectURL(img.src);
|
|
6475
|
-
const [newWidth, newHeight] = calculateSize(img, MAX_WIDTH, MAX_HEIGHT);
|
|
6476
|
-
const canvas = document.createElement('canvas');
|
|
6477
|
-
canvas.width = newWidth;
|
|
6478
|
-
canvas.height = newHeight;
|
|
6479
|
-
const ctx = canvas.getContext('2d');
|
|
6480
|
-
ctx?.drawImage(img, 0, 0, newWidth, newHeight);
|
|
6481
|
-
canvas.toBlob((blob) => {
|
|
6482
|
-
// Handle the compressed image. es. upload or save in local state
|
|
6483
|
-
if (blob) {
|
|
6484
|
-
// formData.append(
|
|
6485
|
-
// 'unicFileName',
|
|
6486
|
-
// 'x' + BarsaApi.Common.Util.GetNewMetaGuid() + ';;;' + file.name
|
|
6487
|
-
// );
|
|
6488
|
-
formData.append('file', blob, file.name);
|
|
6489
|
-
}
|
|
6490
|
-
if (index === files.length - 1) {
|
|
6491
|
-
resolve(formData);
|
|
6492
|
-
}
|
|
6493
|
-
}, MIME_TYPE, QUALITY);
|
|
6494
|
-
};
|
|
6495
|
-
function calculateSize(img1, maxWidth, maxHeight) {
|
|
6496
|
-
let width = img1.width;
|
|
6497
|
-
let height = img1.height;
|
|
6498
|
-
// calculate the width and height, constraining the proportions
|
|
6499
|
-
if (width > height) {
|
|
6500
|
-
if (width > maxWidth) {
|
|
6501
|
-
height = Math.round((height * maxWidth) / width);
|
|
6502
|
-
width = maxWidth;
|
|
6503
|
-
}
|
|
6504
|
-
}
|
|
6505
|
-
else {
|
|
6506
|
-
if (height > maxHeight) {
|
|
6507
|
-
width = Math.round((width * maxHeight) / height);
|
|
6508
|
-
height = maxHeight;
|
|
6509
|
-
}
|
|
6510
|
-
}
|
|
6511
|
-
return [width, height];
|
|
6512
|
-
}
|
|
6450
|
+
formData.append('file', file, file.name);
|
|
6513
6451
|
});
|
|
6452
|
+
resolve(formData);
|
|
6453
|
+
// const file2 = file; // get the file
|
|
6454
|
+
// const blobURL = URL.createObjectURL(file2);
|
|
6455
|
+
// const img = new Image();
|
|
6456
|
+
// img.src = blobURL;
|
|
6457
|
+
// const biggerThan1MB = file.size / 1024 > 1000;
|
|
6458
|
+
// const mimeTypeJpg = 'image/jpeg';
|
|
6459
|
+
// const MAX_WIDTH = 1920;
|
|
6460
|
+
// const MAX_HEIGHT = 1080;
|
|
6461
|
+
// const MIME_TYPE = biggerThan1MB ? mimeTypeJpg : file.type;
|
|
6462
|
+
// const QUALITY = biggerThan1MB && file.type === mimeTypeJpg ? 0.5 : 1;
|
|
6463
|
+
// if (MIME_TYPE === file.type && QUALITY === 1) {
|
|
6464
|
+
// formData.append('file', file, file.name);
|
|
6465
|
+
// if (index === files.length - 1) {
|
|
6466
|
+
// resolve(formData);
|
|
6467
|
+
// }
|
|
6468
|
+
// }
|
|
6469
|
+
// img.onerror = function (): void {
|
|
6470
|
+
// URL.revokeObjectURL(img.src);
|
|
6471
|
+
// // Handle the failure properly
|
|
6472
|
+
// console.log('Cannot load image');
|
|
6473
|
+
// reject(new Error('Cannot load image'));
|
|
6474
|
+
// };
|
|
6475
|
+
// img.onload = function (): void {
|
|
6476
|
+
// URL.revokeObjectURL(img.src);
|
|
6477
|
+
// const [newWidth, newHeight] = calculateSize(img, MAX_WIDTH, MAX_HEIGHT);
|
|
6478
|
+
// const canvas = document.createElement('canvas');
|
|
6479
|
+
// canvas.width = newWidth;
|
|
6480
|
+
// canvas.height = newHeight;
|
|
6481
|
+
// const ctx = canvas.getContext('2d');
|
|
6482
|
+
// ctx?.drawImage(img, 0, 0, newWidth, newHeight);
|
|
6483
|
+
// canvas.toBlob(
|
|
6484
|
+
// (blob) => {
|
|
6485
|
+
// // Handle the compressed image. es. upload or save in local state
|
|
6486
|
+
// if (blob) {
|
|
6487
|
+
// // formData.append(
|
|
6488
|
+
// // 'unicFileName',
|
|
6489
|
+
// // 'x' + BarsaApi.Common.Util.GetNewMetaGuid() + ';;;' + file.name
|
|
6490
|
+
// // );
|
|
6491
|
+
// formData.append('file', blob, file.name);
|
|
6492
|
+
// }
|
|
6493
|
+
// if (index === files.length - 1) {
|
|
6494
|
+
// resolve(formData);
|
|
6495
|
+
// }
|
|
6496
|
+
// },
|
|
6497
|
+
// MIME_TYPE,
|
|
6498
|
+
// QUALITY
|
|
6499
|
+
// );
|
|
6500
|
+
// };
|
|
6501
|
+
// function calculateSize(img1, maxWidth, maxHeight): number[] {
|
|
6502
|
+
// let width = img1.width;
|
|
6503
|
+
// let height = img1.height;
|
|
6504
|
+
// // calculate the width and height, constraining the proportions
|
|
6505
|
+
// if (width > height) {
|
|
6506
|
+
// if (width > maxWidth) {
|
|
6507
|
+
// height = Math.round((height * maxWidth) / width);
|
|
6508
|
+
// width = maxWidth;
|
|
6509
|
+
// }
|
|
6510
|
+
// } else {
|
|
6511
|
+
// if (height > maxHeight) {
|
|
6512
|
+
// width = Math.round((width * maxHeight) / height);
|
|
6513
|
+
// height = maxHeight;
|
|
6514
|
+
// }
|
|
6515
|
+
// }
|
|
6516
|
+
// return [width, height];
|
|
6517
|
+
// }
|
|
6518
|
+
// });
|
|
6514
6519
|
});
|
|
6515
6520
|
}
|
|
6516
6521
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|