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
- const file2 = file; // get the file
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQWMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBS2hFLE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFDL0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLGNBQVMsR0FBRyw0Q0FBNEMsQ0FBQztJQUNaLENBQUM7SUFFdkMsTUFBTSxDQUFDLElBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFO1FBQ3hELElBQUksS0FBSyxHQUFvQjtZQUN6QixHQUFHO1lBQ0gsUUFBUSxFQUFFLENBQUM7WUFDWCxLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxLQUFLO1NBQ25CLENBQUM7UUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVTth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O1lBQzNELG1DQUFtQztZQUNuQyxxQ0FBcUM7WUFDckMsK0NBQStDO1lBQy9DLDBEQUEwRDtZQUMxRCx5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLG9GQUFvRjtZQUNwRiw4QkFBOEI7WUFDOUIsMENBQTBDO1lBQzFDLDZDQUE2QztZQUM3Qyw2RkFBNkY7WUFDN0YsNEJBQTRCO1lBQzVCLGdFQUFnRTtZQUNoRSxvQkFBb0I7WUFDcEIsb0RBQW9EO1lBQ3BELHlDQUF5QztZQUN6QyxvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLHlCQUF5QjtZQUN6QixzQkFBc0I7WUFDdEIsYUFBYTtZQUNiLFNBQVM7WUFDVCxvRUFBb0U7WUFDcEUsa0NBQWtDO1lBQ2xDLG9DQUFvQztZQUVwQywwRUFBMEU7WUFDMUUsZ0NBQWdDO1lBQ2hDLHNDQUFzQztZQUN0QyxvRUFBb0U7WUFDcEUsb0NBQW9DO1lBQ3BDLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsd0NBQXdDO1lBQ3hDLG9FQUFvRTtZQUNwRSxzQ0FBc0M7WUFDdEMsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixrQ0FBa0M7WUFDbEMsUUFBUTtZQUNSLE1BQU07UUFDVixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBMUpRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IsIGZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCYXJzYUFwaSwgSVVwbG9hZGluZ1N0YXRlIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfdXBsb2FkaW5nU3RhdGVTb3VyY2UgPSBuZXcgU3ViamVjdDxJVXBsb2FkaW5nU3RhdGU+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
- const file2 = file; // get the file
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 }); }