@wizishop/img-manager-webelement 15.2.52 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +24 -24
  2. package/{esm2020 → esm2022}/lib/environments/environment.mjs +1 -1
  3. package/esm2022/lib/img-manager-webelement.component.mjs +135 -0
  4. package/esm2022/lib/img-manager-webelement.module.mjs +50 -0
  5. package/{esm2020 → esm2022}/lib/services/auth-credentials.service.mjs +4 -4
  6. package/esm2022/lib/services/event.service.mjs +40 -0
  7. package/esm2022/lib/services/fiche_products.service.mjs +253 -0
  8. package/esm2022/lib/services/webelement-image-manager-api.config.mjs +89 -0
  9. package/{esm2020 → esm2022}/public-api.mjs +1 -1
  10. package/{fesm2020 → fesm2022}/wizishop-img-manager-webelement.mjs +104 -97
  11. package/fesm2022/wizishop-img-manager-webelement.mjs.map +1 -0
  12. package/img-manager-webelement.scss +1 -0
  13. package/lib/img-manager-webelement.component.d.ts +2 -2
  14. package/lib/img-manager-webelement.module.d.ts +0 -3
  15. package/package.json +20 -25
  16. package/esm2020/lib/img-manager-webelement.component.mjs +0 -122
  17. package/esm2020/lib/img-manager-webelement.module.mjs +0 -58
  18. package/esm2020/lib/services/event.service.mjs +0 -37
  19. package/esm2020/lib/services/fiche_products.service.mjs +0 -242
  20. package/esm2020/lib/services/icon-webelement.service.mjs +0 -17
  21. package/esm2020/lib/services/webelement-image-manager-api.config.mjs +0 -88
  22. package/fesm2015/wizishop-img-manager-webelement.mjs +0 -660
  23. package/fesm2015/wizishop-img-manager-webelement.mjs.map +0 -1
  24. package/fesm2020/wizishop-img-manager-webelement.mjs.map +0 -1
  25. package/img-manager-webelement.css +0 -1
  26. package/lib/services/icon-webelement.service.d.ts +0 -6
  27. /package/{esm2020 → esm2022}/wizishop-img-manager-webelement.mjs +0 -0
@@ -0,0 +1,253 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpHeaders } from '@angular/common/http';
3
+ import { forkJoin, fromEvent, Observable } from "rxjs";
4
+ import { take } from 'rxjs/operators';
5
+ import { environment } from '../environments/environment';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ import * as i2 from "@wizishop/img-manager";
9
+ import * as i3 from "./event.service";
10
+ import * as i4 from "./auth-credentials.service";
11
+ export class FicheProductService {
12
+ http;
13
+ imgSelectionService;
14
+ eventService;
15
+ canvaService;
16
+ authCredentialsService;
17
+ productSheetApiRoute;
18
+ image_manager_api = environment.wizi_api + "/image-manager/shops/";
19
+ shopToken;
20
+ shopId;
21
+ productId;
22
+ isPhotosTab = false; // State of the Photos tabs in fiche product page
23
+ isPreviousTabPhotos = false;
24
+ isVariantsTab = false;
25
+ loadProductImgSelection = false;
26
+ currentProductImgSelection;
27
+ isProductCreation;
28
+ expectedMediaDto = {
29
+ id: '',
30
+ image_url: '',
31
+ image_width: '900',
32
+ image_height: '900',
33
+ };
34
+ subscriptions = [];
35
+ constructor(http, imgSelectionService, eventService, canvaService, authCredentialsService) {
36
+ this.http = http;
37
+ this.imgSelectionService = imgSelectionService;
38
+ this.eventService = eventService;
39
+ this.canvaService = canvaService;
40
+ this.authCredentialsService = authCredentialsService;
41
+ this.shopId = this.authCredentialsService.getSync().data.shop_id;
42
+ this.shopToken = this.authCredentialsService.getSync().data.token;
43
+ }
44
+ setApiConfig() {
45
+ const matches = window.location.pathname.match(/\/(\w+)\/products\/(\d+)\/edit/);
46
+ const lang = matches && matches[1] ? matches[1] : 'fr';
47
+ this.productSheetApiRoute = environment.wizi_admin_api + lang + environment.product_sheet_endpoint;
48
+ this.productId = matches && matches[2] ? matches[2] : "0";
49
+ this.isProductCreation = /\/products\/create/.test(window.location.pathname);
50
+ }
51
+ /**
52
+ * There is only one instance of this img manager.
53
+ * But it is called with different config, by Photos tab and Variation tab, on fiche product page.
54
+ * The method handle the switch config between Photos and Variation tab.
55
+ * Return an observable : true => Photos tab / false => Variation tab.
56
+ * */
57
+ handleTabs() {
58
+ return new Observable(observer => {
59
+ const switchTabsSub = this.switchTabs().subscribe(data => {
60
+ if (!data || !data["detail"] || !data["detail"]["currentTab"]) {
61
+ return;
62
+ }
63
+ // Retrieve current tab
64
+ const currentTab = data["detail"]["currentTab"];
65
+ this.isPreviousTabPhotos = this.isPhotosTab;
66
+ this.isPhotosTab = currentTab === 'photos';
67
+ this.isVariantsTab = currentTab === 'variation';
68
+ // The user switch to Photos tab
69
+ if (this.isPhotosTab) {
70
+ this.loadProductImgSelection = true;
71
+ if (!this.currentProductImgSelection || !this.currentProductImgSelection.length) {
72
+ this.initProductImgSelection();
73
+ }
74
+ else {
75
+ this.applyCurrentImgSelection();
76
+ this.loadProductImgSelection = false;
77
+ }
78
+ }
79
+ else if (this.isPreviousTabPhotos) { // The user switch to another tab
80
+ // Save current img selection, in order to not lose the img selection
81
+ this.saveCurrentImgSelection();
82
+ }
83
+ observer.next(this.isPhotosTab);
84
+ });
85
+ this.subscriptions.push(switchTabsSub);
86
+ });
87
+ }
88
+ getShopImg(idFile) {
89
+ return this.http.get(`${this.image_manager_api}${this.shopId}/images/${idFile}`, this.getOptionsHeadersWithBearer());
90
+ }
91
+ initProductImgSelection() {
92
+ // Display the loader in img list selection
93
+ this.imgSelectionService.imgSelectedListLoading$.next(true);
94
+ // retrieve img selection
95
+ const retrieveImgSelectionSub = this.retrieveImgSelection().subscribe(data => {
96
+ // No image selected
97
+ if (!data || !data["photos"] || !data["photos"]["infos"] || !data["photos"]["infos"]["files"] || !data["photos"]["infos"]["files"].length) {
98
+ this.loadProductImgSelection = false;
99
+ this.imgSelectionService.imgSelectedListLoading$.next(false);
100
+ return;
101
+ }
102
+ const idImgSelectionList = data["photos"]["infos"]["files"];
103
+ const obsImg = [];
104
+ idImgSelectionList.forEach(idFile => obsImg.push(this.getShopImg(idFile.toString()).pipe(take(1))));
105
+ const allImgSub = forkJoin(obsImg).subscribe({
106
+ next: (photos) => {
107
+ // The img selection must be saved, otherwise it is lost when the user switch on variation tab
108
+ this.saveCurrentImgSelection(photos);
109
+ this.applyCurrentImgSelection();
110
+ this.loadProductImgSelection = false;
111
+ },
112
+ error: error => {
113
+ // Hide the loader in img list selection
114
+ this.loadProductImgSelection = false;
115
+ this.imgSelectionService.imgSelectedListLoading$.next(false);
116
+ }
117
+ });
118
+ this.subscriptions.push(allImgSub);
119
+ });
120
+ this.subscriptions.push(retrieveImgSelectionSub);
121
+ this.canvaService.expectedImgSizesChange(this.expectedMediaDto);
122
+ }
123
+ retrieveInfoSelection() {
124
+ const formData = new FormData();
125
+ formData.append('rub', "main");
126
+ formData.append('action', "getInfos");
127
+ formData.append('prodId', this.productId);
128
+ formData.append('_token', '');
129
+ formData.append('_shid', this.shopId.toString());
130
+ return this.http.post(this.productSheetApiRoute, formData, this.getOptionsHeaders());
131
+ }
132
+ retrieveImgSelection() {
133
+ const formData = new FormData();
134
+ formData.append('rub', "main");
135
+ formData.append('action', "getAllInfos");
136
+ formData.append('prodId', this.productId);
137
+ formData.append('_token', '');
138
+ formData.append('_shid', this.shopId.toString());
139
+ return this.http.post(this.productSheetApiRoute, formData, this.getOptionsHeaders());
140
+ }
141
+ updateImgSelectionOnChange() {
142
+ // listen to the img manager change
143
+ const imgSelectionSub = this.imgSelectionService.imgSelection$.subscribe(imgSelectionList => {
144
+ if (!imgSelectionList) {
145
+ return;
146
+ }
147
+ // Send the img selection
148
+ if (this.isPhotosTab && !this.loadProductImgSelection) {
149
+ // Retrieve only the img id
150
+ const idImgSelectedList = [];
151
+ imgSelectionList.forEach(img => {
152
+ idImgSelectedList.push(parseInt(img.id_file));
153
+ });
154
+ this.updateProductImgSelection(idImgSelectedList);
155
+ // On variation tab, send event with img selected
156
+ }
157
+ else if (!this.isPhotosTab && imgSelectionList.length) {
158
+ this.eventService.sendImgSelectedToPage(imgSelectionList[0]);
159
+ }
160
+ });
161
+ this.subscriptions.push(imgSelectionSub);
162
+ }
163
+ updateProductImgSelection(idsImgList) {
164
+ if ((!this.productId || this.productId === "0") && Wizi._produit.global.PROD_ID) {
165
+ this.productId = Wizi._produit.global.PROD_ID.toString();
166
+ }
167
+ Wizi._produit._dataTmp['photos'].infos = {};
168
+ Wizi._produit._dataTmp['photos'].infos.files = idsImgList;
169
+ this.emitImgSelectionChange(idsImgList);
170
+ if (this.productId && this.productId !== "0") {
171
+ const submitProd1 = this.submitProductImg(idsImgList).subscribe();
172
+ this.subscriptions.push(submitProd1);
173
+ return;
174
+ }
175
+ const createProductSub = this.createProduct().subscribe((productId) => {
176
+ if (!productId) {
177
+ throw "No product id created. Can not link image(s) to the new product.";
178
+ }
179
+ Wizi._produit.global.PROD_ID = productId;
180
+ this.productId = productId.toString();
181
+ this.submitProductImg(idsImgList).subscribe();
182
+ });
183
+ this.subscriptions.push(createProductSub);
184
+ }
185
+ submitProductImg(idsImgList) {
186
+ const data = {
187
+ files: idsImgList,
188
+ couls: []
189
+ };
190
+ const formData = new FormData();
191
+ formData.append('rub', "photos");
192
+ formData.append('action', "save");
193
+ formData.append('newProd', this.isProductCreation ? "1" : "0");
194
+ formData.append('prodId', this.productId);
195
+ formData.append('_token', this.shopToken);
196
+ formData.append('_shid', this.shopId.toString());
197
+ formData.append('data', JSON.stringify(data));
198
+ return this.http.post(this.productSheetApiRoute, formData, this.getOptionsHeaders());
199
+ }
200
+ createProduct() {
201
+ const formData = new FormData();
202
+ formData.append('rub', "main");
203
+ formData.append('action', "createProd");
204
+ formData.append('_token', '');
205
+ formData.append('_shid', this.shopId.toString());
206
+ return this.http.post(this.productSheetApiRoute, formData, this.getOptionsHeaders());
207
+ }
208
+ /* Use to know where the img manager is displayed, and to close it when switching tab */
209
+ switchTabs() {
210
+ return fromEvent(document.getElementById('imgManagerModule'), "switchTab");
211
+ }
212
+ emitImgSelectionChange(idsImgList) {
213
+ const value = {
214
+ detail: {
215
+ idsImgList
216
+ }
217
+ };
218
+ const event = new CustomEvent('onImgSelectionChange', value);
219
+ const imgManagerModule = document.getElementById('imgManagerModule');
220
+ imgManagerModule?.dispatchEvent(event);
221
+ }
222
+ saveCurrentImgSelection(imgSelection) {
223
+ this.currentProductImgSelection = imgSelection ? imgSelection : JSON.parse(JSON.stringify(this.imgSelectionService.getImgSelection()));
224
+ }
225
+ applyCurrentImgSelection() {
226
+ this.imgSelectionService.setImgSelection(this.currentProductImgSelection);
227
+ // Hide the loader in img list selection
228
+ this.imgSelectionService.imgSelectedListLoading$.next(false);
229
+ }
230
+ getOptionsHeaders() {
231
+ const header = { headers: new HttpHeaders({
232
+ 'Access-Control-Allow-Origin': '*'
233
+ })
234
+ };
235
+ return header;
236
+ }
237
+ getOptionsHeadersWithBearer() {
238
+ const header = { headers: new HttpHeaders({
239
+ Authorization: 'Bearer ' + this.shopToken
240
+ })
241
+ };
242
+ return header;
243
+ }
244
+ ngOnDestroy() {
245
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
246
+ }
247
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FicheProductService, deps: [{ token: i1.HttpClient }, { token: i2.ImgSelectionService }, { token: i3.EventService }, { token: i2.CanvaService }, { token: i4.AuthCredentialsService }], target: i0.ɵɵFactoryTarget.Injectable });
248
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FicheProductService });
249
+ }
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FicheProductService, decorators: [{
251
+ type: Injectable
252
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ImgSelectionService }, { type: i3.EventService }, { type: i2.CanvaService }, { type: i4.AuthCredentialsService }] });
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmljaGVfcHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltZy1tYW5hZ2VyLXdlYmVsZW1lbnQvc3JjL2xpYi9zZXJ2aWNlcy9maWNoZV9wcm9kdWN0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBUTFELE1BQU0sT0FBTyxtQkFBbUI7SUF1QnBCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUF6QlYsb0JBQW9CLENBQVM7SUFDN0IsaUJBQWlCLEdBQVcsV0FBVyxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQztJQUMzRSxTQUFTLENBQVM7SUFDbEIsTUFBTSxDQUFTO0lBQ2YsU0FBUyxDQUFTO0lBQ2xCLFdBQVcsR0FBWSxLQUFLLENBQUMsQ0FBQyxpREFBaUQ7SUFDL0UsbUJBQW1CLEdBQVksS0FBSyxDQUFDO0lBQ3JDLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsdUJBQXVCLEdBQVcsS0FBSyxDQUFDO0lBQ3hDLDBCQUEwQixDQUFrQjtJQUM1QyxpQkFBaUIsQ0FBVTtJQUMzQixnQkFBZ0IsR0FBcUI7UUFDbkMsRUFBRSxFQUFFLEVBQUU7UUFDTixTQUFTLEVBQUUsRUFBRTtRQUNiLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFlBQVksRUFBRSxLQUFLO0tBQ3BCLENBQUE7SUFFTyxhQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUUzQyxZQUNV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LE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDeEMsNkJBQTZCLEVBQUMsR0FBRzthQUNoQyxDQUFDO1NBQ0gsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTywyQkFBMkI7UUFDakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3hDLGFBQWEsRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVM7YUFDeEMsQ0FBQztTQUNILENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQzt1R0E3UlUsbUJBQW1COzJHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICcuL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IEF1dGhDcmVkZW50aWFsc1NlcnZpY2UgfSBmcm9tICcuL2F1dGgtY3JlZGVudGlhbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEltZ1BpY3R1cmVEVE8sIEltZ1NlbGVjdGlvblNlcnZpY2UsIENhbnZhU2VydmljZSB9IGZyb20gJ0B3aXppc2hvcC9pbWctbWFuYWdlcic7XHJcbmltcG9ydCB7IFdpemlCbG9ja01lZGlhRHRvIH0gZnJvbSAnQHdpemlzaG9wL2ltZy1tYW5hZ2VyL2xpYi9kdG8vd2l6aS1ibG9jay1tZWRpYS5kdG8nO1xyXG5cclxuZGVjbGFyZSBjb25zdCBXaXppOiBhbnk7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBGaWNoZVByb2R1Y3RTZXJ2aWNlIHtcclxuXHJcbiAgcHJvZHVjdFNoZWV0QXBpUm91dGU6IHN0cmluZztcclxuICBpbWFnZV9tYW5hZ2VyX2FwaTogc3RyaW5nID0gZW52aXJvbm1lbnQud2l6aV9hcGkgKyBcIi9pbWFnZS1tYW5hZ2VyL3Nob3BzL1wiO1xyXG4gIHNob3BUb2tlbjogc3RyaW5nO1xyXG4gIHNob3BJZDogbnVtYmVyO1xyXG4gIHByb2R1Y3RJZDogc3RyaW5nO1xyXG4gIGlzUGhvdG9zVGFiOiBib29sZWFuID0gZmFsc2U7IC8vIFN0YXRlIG9mIHRoZSBQaG90b3MgdGFicyBpbiBmaWNoZSBwcm9kdWN0IHBhZ2VcclxuICBpc1ByZXZpb3VzVGFiUGhvdG9zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNWYXJpYW50c1RhYjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvYWRQcm9kdWN0SW1nU2VsZWN0aW9uOmJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJyZW50UHJvZHVjdEltZ1NlbGVjdGlvbjogSW1nUGljdHVyZURUT1tdO1xyXG4gIGlzUHJvZHVjdENyZWF0aW9uOiBib29sZWFuO1xyXG4gIGV4cGVjdGVkTWVkaWFEdG86V2l6aUJsb2NrTWVkaWFEdG8gPSB7XHJcbiAgICBpZDogJycsXHJcbiAgICBpbWFnZV91cmw6ICcnLFxyXG4gICAgaW1hZ2Vfd2lkdGg6ICc5MDAnLFxyXG4gICAgaW1hZ2VfaGVpZ2h0OiAnOTAwJyxcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGltZ1NlbGVjdGlvblNlcnZpY2U6IEltZ1NlbGVjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYW52YVNlcnZpY2U6IENhbnZhU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aENyZWRlbnRpYWxzU2VydmljZTogQXV0aENyZWRlbnRpYWxzU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2hvcElkID0gdGhpcy5hdXRoQ3JlZGVudGlhbHNTZXJ2aWNlLmdldFN5bmMoKS5kYXRhLnNob3BfaWQ7XHJcbiAgICAgIHRoaXMuc2hvcFRva2VuID0gdGhpcy5hdXRoQ3JlZGVudGlhbHNTZXJ2aWNlLmdldFN5bmMoKS5kYXRhLnRva2VuO1xyXG4gICAgfVxyXG5cclxuICBzZXRBcGlDb25maWcoKSB7XHJcbiAgICBjb25zdCBtYXRjaGVzID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKCAvXFwvKFxcdyspXFwvcHJvZHVjdHNcXC8oXFxkKylcXC9lZGl0Lyk7XHJcbiAgICBjb25zdCBsYW5nID0gbWF0Y2hlcyAmJiBtYXRjaGVzWzFdID8gbWF0Y2hlc1sxXSA6ICdmcic7XHJcbiAgICB0aGlzLnByb2R1Y3RTaGVldEFwaVJvdXRlID0gZW52aXJvbm1lbnQud2l6aV9hZG1pbl9hcGkgKyBsYW5nICsgZW52aXJvbm1lbnQucHJvZHVjdF9zaGVldF9lbmRwb2ludDtcclxuICAgIHRoaXMucHJvZHVjdElkID0gbWF0Y2hlcyAmJiBtYXRjaGVzWzJdID8gbWF0Y2hlc1syXSA6IFwiMFwiO1xyXG4gICAgdGhpcy5pc1Byb2R1Y3RDcmVhdGlvbiA9IC9cXC9wcm9kdWN0c1xcL2NyZWF0ZS8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgdGhpcyBpbWcgbWFuYWdlci5cclxuICAgKiBCdXQgaXQgaXMgY2FsbGVkIHdpdGggZGlmZmVyZW50IGNvbmZpZywgYnkgUGhvdG9zIHRhYiBhbmQgVmFyaWF0aW9uIHRhYiwgb24gZmljaGUgcHJvZHVjdCBwYWdlLlxyXG4gICAqIFRoZSBtZXRob2QgaGFuZGxlIHRoZSBzd2l0Y2ggY29uZmlnIGJldHdlZW4gUGhvdG9zIGFuZCBWYXJpYXRpb24gdGFiLlxyXG4gICAqIFJldHVybiBhbiBvYnNlcnZhYmxlIDogdHJ1ZSA9PiBQaG90b3MgdGFiIC8gZmFsc2UgPT4gVmFyaWF0aW9uIHRhYi5cclxuICAgKiAgKi9cclxuICBoYW5kbGVUYWJzKCk6T2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xyXG5cclxuICAgICAgY29uc3Qgc3dpdGNoVGFic1N1YiA9XHJcbiAgICAgICAgdGhpcy5zd2l0Y2hUYWJzKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG5cclxuICAgICAgICAgIGlmICghZGF0YSB8fCAhZGF0YVtcImRldGFpbFwiXSB8fCAhZGF0YVtcImRldGFpbFwiXVtcImN1cnJlbnRUYWJcIl0pIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIFJldHJpZXZlIGN1cnJlbnQgdGFiXHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50VGFiID0gZGF0YVtcImRldGFpbFwiXVtcImN1cnJlbnRUYWJcIl07XHJcbiAgICAgICAgICB0aGlzLmlzUHJldmlvdXNUYWJQaG90b3MgPSB0aGlzLmlzUGhvdG9zVGFiO1xyXG4gICAgICAgICAgdGhpcy5pc1Bob3Rvc1RhYiA9IGN1cnJlbnRUYWIgPT09ICdwaG90b3MnO1xyXG4gICAgICAgICAgdGhpcy5pc1ZhcmlhbnRzVGFiID0gY3VycmVudFRhYiA9PT0gJ3ZhcmlhdGlvbic7XHJcblxyXG4gICAgICAgICAgLy8gVGhlIHVzZXIgc3dpdGNoIHRvIFBob3RvcyB0YWJcclxuICAgICAgICAgIGlmICh0aGlzLmlzUGhvdG9zVGFiKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFByb2R1Y3RJbWdTZWxlY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRQcm9kdWN0SW1nU2VsZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRQcm9kdWN0SW1nU2VsZWN0aW9uLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5pdFByb2R1Y3RJbWdTZWxlY3Rpb24oKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmFwcGx5Q3VycmVudEltZ1NlbGVjdGlvbigpO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZFByb2R1Y3RJbWdTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1ByZXZpb3VzVGFiUGhvdG9zKSB7IC8vIFRoZSB1c2VyIHN3aXRjaCB0byBhbm90aGVyIHRhYlxyXG4gICAgICAgICAgICAvLyBTYXZlIGN1cnJlbnQgaW1nIHNlbGVjdGlvbiwgaW4gb3JkZXIgdG8gbm90IGxvc2UgdGhlIGltZyBzZWxlY3Rpb25cclxuICAgICAgICAgICAgdGhpcy5zYXZlQ3VycmVudEltZ1NlbGVjdGlvbigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLmlzUGhvdG9zVGFiKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzd2l0Y2hUYWJzU3ViKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2hvcEltZyhpZEZpbGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmltYWdlX21hbmFnZXJfYXBpfSR7dGhpcy5zaG9wSWR9L2ltYWdlcy8ke2lkRmlsZX1gLCB0aGlzLmdldE9wdGlvbnNIZWFkZXJzV2l0aEJlYXJlcigpKTtcclxuICB9XHJcblxyXG4gIGluaXRQcm9kdWN0SW1nU2VsZWN0aW9uKCkge1xyXG5cclxuICAgIC8vIERpc3BsYXkgdGhlIGxvYWRlciBpbiBpbWcgbGlzdCBzZWxlY3Rpb25cclxuICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5pbWdTZWxlY3RlZExpc3RMb2FkaW5nJC5uZXh0KHRydWUpO1xyXG5cclxuICAgIC8vIHJldHJpZXZlIGltZyBzZWxlY3Rpb25cclxuICAgIGNvbnN0IHJldHJpZXZlSW1nU2VsZWN0aW9uU3ViID1cclxuICAgICAgdGhpcy5yZXRyaWV2ZUltZ1NlbGVjdGlvbigpLnN1YnNjcmliZShkYXRhID0+IHtcclxuXHJcbiAgICAgICAgLy8gTm8gaW1hZ2Ugc2VsZWN0ZWRcclxuICAgICAgICBpZiAoIWRhdGEgfHwgIWRhdGFbXCJwaG90b3NcIl0gfHwgIWRhdGFbXCJwaG90b3NcIl1bXCJpbmZvc1wiXSB8fCAhZGF0YVtcInBob3Rvc1wiXVtcImluZm9zXCJdW1wiZmlsZXNcIl0gfHwgIWRhdGFbXCJwaG90b3NcIl1bXCJpbmZvc1wiXVtcImZpbGVzXCJdLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkUHJvZHVjdEltZ1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5pbWdTZWxlY3RlZExpc3RMb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGlkSW1nU2VsZWN0aW9uTGlzdDogbnVtYmVyW10gPSBkYXRhW1wicGhvdG9zXCJdW1wiaW5mb3NcIl1bXCJmaWxlc1wiXTtcclxuICAgICAgICBjb25zdCBvYnNJbWc6IE9ic2VydmFibGU8YW55PltdID0gW107XHJcblxyXG4gICAgICAgIGlkSW1nU2VsZWN0aW9uTGlzdC5mb3JFYWNoKGlkRmlsZSA9PlxyXG4gICAgICAgICAgb2JzSW1nLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U2hvcEltZyhpZEZpbGUudG9TdHJpbmcoKSkucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgICkpO1xyXG4gICAgICAgIGNvbnN0IGFsbEltZ1N1YiA9XHJcbiAgICAgICAgICBmb3JrSm9pbihvYnNJbWcpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChwaG90b3M6IEltZ1BpY3R1cmVEVE9bXSkgPT4ge1xyXG4gICAgICAgICAgICAvLyBUaGUgaW1nIHNlbGVjdGlvbiBtdXN0IGJlIHNhdmVkLCBvdGhlcndpc2UgaXQgaXMgbG9zdCB3aGVuIHRoZSB1c2VyIHN3aXRjaCBvbiB2YXJpYXRpb24gdGFiXHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZUN1cnJlbnRJbWdTZWxlY3Rpb24ocGhvdG9zKTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseUN1cnJlbnRJbWdTZWxlY3Rpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkUHJvZHVjdEltZ1NlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIC8vIEhpZGUgdGhlIGxvYWRlciBpbiBpbWcgbGlzdCBzZWxlY3Rpb25cclxuICAgICAgICAgICAgdGhpcy5sb2FkUHJvZHVjdEltZ1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLmltZ1NlbGVjdGVkTGlzdExvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfX0pO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGFsbEltZ1N1Yik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHJldHJpZXZlSW1nU2VsZWN0aW9uU3ViKTtcclxuICAgIHRoaXMuY2FudmFTZXJ2aWNlLmV4cGVjdGVkSW1nU2l6ZXNDaGFuZ2UodGhpcy5leHBlY3RlZE1lZGlhRHRvKTtcclxuICB9XHJcblxyXG4gIHJldHJpZXZlSW5mb1NlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ3J1YicsIFwibWFpblwiKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnYWN0aW9uJywgXCJnZXRJbmZvc1wiKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgncHJvZElkJywgdGhpcy5wcm9kdWN0SWQpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdfdG9rZW4nLCAnJyk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ19zaGlkJywgdGhpcy5zaG9wSWQudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMucHJvZHVjdFNoZWV0QXBpUm91dGUsIGZvcm1EYXRhLCB0aGlzLmdldE9wdGlvbnNIZWFkZXJzKCkpO1xyXG4gIH1cclxuXHJcbiAgcmV0cmlldmVJbWdTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdydWInLCBcIm1haW5cIik7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2FjdGlvbicsIFwiZ2V0QWxsSW5mb3NcIik7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ3Byb2RJZCcsIHRoaXMucHJvZHVjdElkKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnX3Rva2VuJywgJycpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdfc2hpZCcsIHRoaXMuc2hvcElkLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMucHJvZHVjdFNoZWV0QXBpUm91dGUsIGZvcm1EYXRhLCB0aGlzLmdldE9wdGlvbnNIZWFkZXJzKCkpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlSW1nU2VsZWN0aW9uT25DaGFuZ2UoKSB7XHJcbiAgICAvLyBsaXN0ZW4gdG8gdGhlIGltZyBtYW5hZ2VyIGNoYW5nZVxyXG4gICAgY29uc3QgaW1nU2VsZWN0aW9uU3ViID1cclxuICAgICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLmltZ1NlbGVjdGlvbiQuc3Vic2NyaWJlKGltZ1NlbGVjdGlvbkxpc3QgPT4ge1xyXG4gICAgICAgIGlmICghaW1nU2VsZWN0aW9uTGlzdCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2VuZCB0aGUgaW1nIHNlbGVjdGlvblxyXG4gICAgICAgIGlmICh0aGlzLmlzUGhvdG9zVGFiICYmICF0aGlzLmxvYWRQcm9kdWN0SW1nU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAvLyBSZXRyaWV2ZSBvbmx5IHRoZSBpbWcgaWRcclxuICAgICAgICAgIGNvbnN0IGlkSW1nU2VsZWN0ZWRMaXN0OiBudW1iZXJbXSA9IFtdO1xyXG4gICAgICAgICAgaW1nU2VsZWN0aW9uTGlzdC5mb3JFYWNoKGltZyA9PiB7XHJcbiAgICAgICAgICAgIGlkSW1nU2VsZWN0ZWRMaXN0LnB1c2gocGFyc2VJbnQoaW1nLmlkX2ZpbGUpKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMudXBkYXRlUHJvZHVjdEltZ1NlbGVjdGlvbihpZEltZ1NlbGVjdGVkTGlzdCk7XHJcblxyXG4gICAgICAgIC8vIE9uIHZhcmlhdGlvbiB0YWIsIHNlbmQgZXZlbnQgd2l0aCBpbWcgc2VsZWN0ZWRcclxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzUGhvdG9zVGFiICYmIGltZ1NlbGVjdGlvbkxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zZW5kSW1nU2VsZWN0ZWRUb1BhZ2UoaW1nU2VsZWN0aW9uTGlzdFswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGltZ1NlbGVjdGlvblN1Yik7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9kdWN0SW1nU2VsZWN0aW9uKGlkc0ltZ0xpc3Q6IG51bWJlcltdKSB7XHJcbiAgICBpZiAoKCF0aGlzLnByb2R1Y3RJZCB8fCB0aGlzLnByb2R1Y3RJZCA9PT0gXCIwXCIpICYmIFdpemkuX3Byb2R1aXQuZ2xvYmFsLlBST0RfSUQpIHtcclxuICAgICAgdGhpcy5wcm9kdWN0SWQgPSBXaXppLl9wcm9kdWl0Lmdsb2JhbC5QUk9EX0lELnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgV2l6aS5fcHJvZHVpdC5fZGF0YVRtcFsncGhvdG9zJ10uaW5mb3MgPSB7fTtcclxuICAgIFdpemkuX3Byb2R1aXQuX2RhdGFUbXBbJ3Bob3RvcyddLmluZm9zLmZpbGVzID0gaWRzSW1nTGlzdDtcclxuICAgIHRoaXMuZW1pdEltZ1NlbGVjdGlvbkNoYW5nZShpZHNJbWdMaXN0KTtcclxuXHJcbiAgICBpZiAodGhpcy5wcm9kdWN0SWQgJiYgdGhpcy5wcm9kdWN0SWQgIT09IFwiMFwiKSB7XHJcbiAgICAgIGNvbnN0IHN1Ym1pdFByb2QxID1cclxuICAgICAgICB0aGlzLnN1Ym1pdFByb2R1Y3RJbWcoaWRzSW1nTGlzdCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1Ym1pdFByb2QxKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3JlYXRlUHJvZHVjdFN1YiA9XHJcbiAgICAgIHRoaXMuY3JlYXRlUHJvZHVjdCgpLnN1YnNjcmliZShcclxuICAgICAgICAocHJvZHVjdElkOm51bWJlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKCFwcm9kdWN0SWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgXCJObyBwcm9kdWN0IGlkIGNyZWF0ZWQuIENhbiBub3QgbGluayBpbWFnZShzKSB0byB0aGUgbmV3IHByb2R1Y3QuXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBXaXppLl9wcm9kdWl0Lmdsb2JhbC5QUk9EX0lEID0gcHJvZHVjdElkO1xyXG5cclxuICAgICAgICAgIHRoaXMucHJvZHVjdElkID0gcHJvZHVjdElkLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdFByb2R1Y3RJbWcoaWRzSW1nTGlzdCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goY3JlYXRlUHJvZHVjdFN1Yik7XHJcblxyXG4gIH1cclxuXHJcbiAgc3VibWl0UHJvZHVjdEltZyhpZHNJbWdMaXN0OiBudW1iZXJbXSkge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgZmlsZXMgOiBpZHNJbWdMaXN0LFxyXG4gICAgICBjb3VsczogW11cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgncnViJywgXCJwaG90b3NcIik7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2FjdGlvbicsIFwic2F2ZVwiKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnbmV3UHJvZCcsIHRoaXMuaXNQcm9kdWN0Q3JlYXRpb24gPyBcIjFcIiA6IFwiMFwiKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgncHJvZElkJywgdGhpcy5wcm9kdWN0SWQpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdfdG9rZW4nLCB0aGlzLnNob3BUb2tlbik7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ19zaGlkJywgdGhpcy5zaG9wSWQudG9TdHJpbmcoKSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMucHJvZHVjdFNoZWV0QXBpUm91dGUsIGZvcm1EYXRhLCB0aGlzLmdldE9wdGlvbnNIZWFkZXJzKCkpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlUHJvZHVjdCgpIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ3J1YicsIFwibWFpblwiKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnYWN0aW9uJywgXCJjcmVhdGVQcm9kXCIpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdfdG9rZW4nLCAnJyk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ19zaGlkJywgdGhpcy5zaG9wSWQudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bWJlcj4odGhpcy5wcm9kdWN0U2hlZXRBcGlSb3V0ZSwgZm9ybURhdGEsIHRoaXMuZ2V0T3B0aW9uc0hlYWRlcnMoKSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyogVXNlIHRvIGtub3cgd2hlcmUgdGhlIGltZyBtYW5hZ2VyIGlzIGRpc3BsYXllZCwgYW5kIHRvIGNsb3NlIGl0IHdoZW4gc3dpdGNoaW5nIHRhYiAqL1xyXG4gIHN3aXRjaFRhYnMoKSB7XHJcbiAgICByZXR1cm4gZnJvbUV2ZW50PGFueT4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZ01hbmFnZXJNb2R1bGUnKSBhcyBhbnksIFwic3dpdGNoVGFiXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0SW1nU2VsZWN0aW9uQ2hhbmdlKGlkc0ltZ0xpc3Q6IG51bWJlcltdKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHtcclxuICAgICAgZGV0YWlsOiB7XHJcbiAgICAgICAgaWRzSW1nTGlzdFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdvbkltZ1NlbGVjdGlvbkNoYW5nZScsIHZhbHVlKTtcclxuICAgIGNvbnN0IGltZ01hbmFnZXJNb2R1bGU9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWdNYW5hZ2VyTW9kdWxlJyk7XHJcbiAgICBpbWdNYW5hZ2VyTW9kdWxlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZUN1cnJlbnRJbWdTZWxlY3Rpb24oaW1nU2VsZWN0aW9uPzogSW1nUGljdHVyZURUT1tdKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQcm9kdWN0SW1nU2VsZWN0aW9uID0gaW1nU2VsZWN0aW9uID8gaW1nU2VsZWN0aW9uIDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmltZ1NlbGVjdGlvblNlcnZpY2UuZ2V0SW1nU2VsZWN0aW9uKCkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDdXJyZW50SW1nU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLnNldEltZ1NlbGVjdGlvbih0aGlzLmN1cnJlbnRQcm9kdWN0SW1nU2VsZWN0aW9uKTtcclxuICAgIC8vIEhpZGUgdGhlIGxvYWRlciBpbiBpbWcgbGlzdCBzZWxlY3Rpb25cclxuICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5pbWdTZWxlY3RlZExpc3RMb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T3B0aW9uc0hlYWRlcnMoKSB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOicqJ1xyXG4gICAgICB9KVxyXG4gICAgfTtcclxuICAgIHJldHVybiBoZWFkZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE9wdGlvbnNIZWFkZXJzV2l0aEJlYXJlcigpIHtcclxuICAgIGNvbnN0IGhlYWRlciA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdGhpcy5zaG9wVG9rZW5cclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgICByZXR1cm4gaGVhZGVyO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,89 @@
1
+ import { HttpHeaders } from "@angular/common/http";
2
+ import { Injectable, inject } from "@angular/core";
3
+ import { map, tap } from "rxjs";
4
+ import { environment } from '../environments/environment';
5
+ import { AuthCredentialsService } from "./auth-credentials.service";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ export class WebelementImageManagerApiService {
9
+ http;
10
+ authCredentialsService = inject(AuthCredentialsService);
11
+ shopId = this.authCredentialsService.getSync().data.shop_id;
12
+ shopToken = this.authCredentialsService.getSync().data.token;
13
+ CONFIG = {
14
+ image_manager_route: environment.wizi_api + "/image-manager/shops/" + this.shopId,
15
+ canva_token: 'wdByHayF5v57nj2ZSLvu055O',
16
+ canva_url: 'https://sdk.canva.com/designbutton/v2/api.js',
17
+ pexels_token: environment.pexels_token,
18
+ pexels_route: 'https://api.pexels.com/v1',
19
+ shop_category: 'other', // The shop category is retrieve later with the setShopCategory methode
20
+ assets_route: environment.assets_route,
21
+ };
22
+ IMG_SIZE = {
23
+ url_raw_image: `${environment.CDN_URL}${this.shopId}/RAW-`,
24
+ url_100_image: `${environment.CDN_URL}${this.shopId}/m100-`,
25
+ url_200_image: `${environment.CDN_URL}${this.shopId}/cs200-`,
26
+ url_400_image: `${environment.CDN_URL}${this.shopId}/cs400-`,
27
+ url_800_image: `${environment.CDN_URL}${this.shopId}/cs800-`
28
+ };
29
+ constructor(http) {
30
+ this.http = http;
31
+ }
32
+ getOptionsHeaders(params) {
33
+ const header = { headers: new HttpHeaders({
34
+ Authorization: 'Bearer ' + this.shopToken
35
+ })
36
+ };
37
+ if (params) {
38
+ header['params'] = params;
39
+ }
40
+ return header;
41
+ }
42
+ getShopCategory() {
43
+ return 'other';
44
+ }
45
+ getShopImgList(params) {
46
+ return this.http.get(`${this.CONFIG.image_manager_route}/images`, this.getOptionsHeaders(params));
47
+ }
48
+ getShopTotalImgList(params) {
49
+ return this.http.get(`${this.CONFIG.image_manager_route}/total/images`, this.getOptionsHeaders(params)).pipe(map(res => res.totalRecords));
50
+ }
51
+ getShopImg(idFile) {
52
+ return this.http.get(`${this.CONFIG.image_manager_route}/images/${idFile}`, this.getOptionsHeaders());
53
+ }
54
+ uploadFile(formData) {
55
+ return this.http.post(`${this.CONFIG.image_manager_route}/images/template`, formData, this.getOptionsHeaders());
56
+ }
57
+ uploadFileByUrl(url, fileName) {
58
+ return this.http.post(`${this.CONFIG.image_manager_route}/images/template`, { url, fileName }, this.getOptionsHeaders());
59
+ }
60
+ replaceImg(imageBase64, id_file) {
61
+ const body = {
62
+ imageBase64,
63
+ type: "RAW"
64
+ };
65
+ return this.http.put(`${this.CONFIG.image_manager_route}/images/${id_file}/replace`, body, this.getOptionsHeaders());
66
+ }
67
+ changeImgName(fileName, id_file) {
68
+ return this.http.put(`${this.CONFIG.image_manager_route}/images/${id_file}?file_name=${fileName}`, null, this.getOptionsHeaders());
69
+ }
70
+ removeImg(id_file) {
71
+ return this.http.delete(`${this.CONFIG.image_manager_route}/images/${id_file}`, this.getOptionsHeaders());
72
+ }
73
+ removeMultipleImg(id_array) {
74
+ return this.http.post(`${this.CONFIG.image_manager_route}/images-multiple-delete`, { id_array }, this.getOptionsHeaders());
75
+ }
76
+ setShopCategory(shopId) {
77
+ return this.http.get(`${environment.wizi_api}/shops/${shopId}`, this.getOptionsHeaders()).pipe(tap((shop => {
78
+ if (shop && shop['category']) {
79
+ this.CONFIG.shop_category = shop['category'];
80
+ }
81
+ })));
82
+ }
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: WebelementImageManagerApiService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
84
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: WebelementImageManagerApiService });
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: WebelementImageManagerApiService, decorators: [{
87
+ type: Injectable
88
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViZWxlbWVudC1pbWFnZS1tYW5hZ2VyLWFwaS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbWctbWFuYWdlci13ZWJlbGVtZW50L3NyYy9saWIvc2VydmljZXMvd2ViZWxlbWVudC1pbWFnZS1tYW5hZ2VyLWFwaS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBR3BFLE1BQU0sT0FBTyxnQ0FBZ0M7SUF3QnJCO0lBdEJILHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM1RCxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFFN0QsTUFBTSxHQUFHO1FBQ0wsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsTUFBTTtRQUNqRixXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLFNBQVMsRUFBRSw4Q0FBOEM7UUFDekQsWUFBWSxFQUFFLFdBQVcsQ0FBQyxZQUFZO1FBQ3RDLFlBQVksRUFBRSwyQkFBMkI7UUFDekMsYUFBYSxFQUFFLE9BQU8sRUFBRSx1RUFBdUU7UUFDL0YsWUFBWSxF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OzJHQUFoQyxnQ0FBZ0M7OzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAsIHRhcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuaW1wb3J0IHsgQXBpU2VydmljZSwgSW1nUGljdHVyZXNEVE8sIEltZ1BpY3R1cmVEVE8gfSBmcm9tIFwiQHdpemlzaG9wL2ltZy1tYW5hZ2VyXCI7XHJcbmltcG9ydCB7IEF1dGhDcmVkZW50aWFsc1NlcnZpY2UgfSBmcm9tIFwiLi9hdXRoLWNyZWRlbnRpYWxzLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFdlYmVsZW1lbnRJbWFnZU1hbmFnZXJBcGlTZXJ2aWNlIGltcGxlbWVudHMgQXBpU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoQ3JlZGVudGlhbHNTZXJ2aWNlID0gaW5qZWN0KEF1dGhDcmVkZW50aWFsc1NlcnZpY2UpO1xyXG4gICAgc2hvcElkID0gdGhpcy5hdXRoQ3JlZGVudGlhbHNTZXJ2aWNlLmdldFN5bmMoKS5kYXRhLnNob3BfaWQ7XHJcbiAgICBzaG9wVG9rZW4gPSB0aGlzLmF1dGhDcmVkZW50aWFsc1NlcnZpY2UuZ2V0U3luYygpLmRhdGEudG9rZW47XHJcblxyXG4gICAgQ09ORklHID0ge1xyXG4gICAgICAgIGltYWdlX21hbmFnZXJfcm91dGU6IGVudmlyb25tZW50LndpemlfYXBpICsgXCIvaW1hZ2UtbWFuYWdlci9zaG9wcy9cIiArIHRoaXMuc2hvcElkLFxyXG4gICAgICAgIGNhbnZhX3Rva2VuOiAnd2RCeUhheUY1djU3bmoyWlNMdnUwNTVPJyxcclxuICAgICAgICBjYW52YV91cmw6ICdodHRwczovL3Nkay5jYW52YS5jb20vZGVzaWduYnV0dG9uL3YyL2FwaS5qcycsXHJcbiAgICAgICAgcGV4ZWxzX3Rva2VuOiBlbnZpcm9ubWVudC5wZXhlbHNfdG9rZW4sXHJcbiAgICAgICAgcGV4ZWxzX3JvdXRlOiAnaHR0cHM6Ly9hcGkucGV4ZWxzLmNvbS92MScsXHJcbiAgICAgICAgc2hvcF9jYXRlZ29yeTogJ290aGVyJywgLy8gVGhlIHNob3AgY2F0ZWdvcnkgaXMgcmV0cmlldmUgbGF0ZXIgd2l0aCB0aGUgc2V0U2hvcENhdGVnb3J5IG1ldGhvZGVcclxuICAgICAgICBhc3NldHNfcm91dGU6IGVudmlyb25tZW50LmFzc2V0c19yb3V0ZSxcclxuICAgIH1cclxuXHJcbiAgICBJTUdfU0laRSA9IHtcclxuICAgICAgICB1cmxfcmF3X2ltYWdlOiBgJHtlbnZpcm9ubWVudC5DRE5fVVJMfSR7dGhpcy5zaG9wSWR9L1JBVy1gLFxyXG4gICAgICAgIHVybF8xMDBfaW1hZ2U6IGAke2Vudmlyb25tZW50LkNETl9VUkx9JHt0aGlzLnNob3BJZH0vbTEwMC1gLFxyXG4gICAgICAgIHVybF8yMDBfaW1hZ2U6IGAke2Vudmlyb25tZW50LkNETl9VUkx9JHt0aGlzLnNob3BJZH0vY3MyMDAtYCxcclxuICAgICAgICB1cmxfNDAwX2ltYWdlOiBgJHtlbnZpcm9ubWVudC5DRE5fVVJMfSR7dGhpcy5zaG9wSWR9L2NzNDAwLWAsXHJcbiAgICAgICAgdXJsXzgwMF9pbWFnZTogYCR7ZW52aXJvbm1lbnQuQ0ROX1VSTH0ke3RoaXMuc2hvcElkfS9jczgwMC1gXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRPcHRpb25zSGVhZGVycyhwYXJhbXM/OiBIdHRwUGFyYW1zKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdGhpcy5zaG9wVG9rZW5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICBoZWFkZXJbJ3BhcmFtcyddID0gcGFyYW1zXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBoZWFkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hvcENhdGVnb3J5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICdvdGhlcic7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hvcEltZ0xpc3QocGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8SW1nUGljdHVyZXNEVE8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJbWdQaWN0dXJlc0RUTz4oYCR7dGhpcy5DT05GSUcuaW1hZ2VfbWFuYWdlcl9yb3V0ZX0vaW1hZ2VzYCwgdGhpcy5nZXRPcHRpb25zSGVhZGVycyhwYXJhbXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTaG9wVG90YWxJbWdMaXN0KHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDx7dG90YWxSZWNvcmRzOiBudW1iZXJ9PihgJHt0aGlzLkNPTkZJRy5pbWFnZV9tYW5hZ2VyX3JvdXRlfS90b3RhbC9pbWFnZXNgLCB0aGlzLmdldE9wdGlvbnNIZWFkZXJzKHBhcmFtcykpLnBpcGUobWFwKHJlcyA9PiByZXMudG90YWxSZWNvcmRzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hvcEltZyhpZEZpbGU6IHN0cmluZyk6IE9ic2VydmFibGU8SW1nUGljdHVyZURUTz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEltZ1BpY3R1cmVEVE8+KGAke3RoaXMuQ09ORklHLmltYWdlX21hbmFnZXJfcm91dGV9L2ltYWdlcy8ke2lkRmlsZX1gLCB0aGlzLmdldE9wdGlvbnNIZWFkZXJzKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwbG9hZEZpbGUoZm9ybURhdGE6IEZvcm1EYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEltZ1BpY3R1cmVEVE8+KGAke3RoaXMuQ09ORklHLmltYWdlX21hbmFnZXJfcm91dGV9L2ltYWdlcy90ZW1wbGF0ZWAsIGZvcm1EYXRhLCB0aGlzLmdldE9wdGlvbnNIZWFkZXJzKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwbG9hZEZpbGVCeVVybCh1cmw6IHN0cmluZywgZmlsZU5hbWU/OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SW1nUGljdHVyZURUTz4oYCR7dGhpcy5DT05GSUcuaW1hZ2VfbWFuYWdlcl9yb3V0ZX0vaW1hZ2VzL3RlbXBsYXRlYCwgeyB1cmwsIGZpbGVOYW1lIH0sIHRoaXMuZ2V0T3B0aW9uc0hlYWRlcnMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVwbGFjZUltZyhpbWFnZUJhc2U2NDogc3RyaW5nLCBpZF9maWxlOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBpbWFnZUJhc2U2NCxcclxuICAgICAgICAgICAgdHlwZSA6IFwiUkFXXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8SW1nUGljdHVyZURUTz4oYCR7dGhpcy5DT05GSUcuaW1hZ2VfbWFuYWdlcl9yb3V0ZX0vaW1hZ2VzLyR7aWRfZmlsZX0vcmVwbGFjZWAsIGJvZHksIHRoaXMuZ2V0T3B0aW9uc0hlYWRlcnMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlSW1nTmFtZShmaWxlTmFtZTogc3RyaW5nLCBpZF9maWxlOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxJbWdQaWN0dXJlRFRPPihgJHt0aGlzLkNPTkZJRy5pbWFnZV9tYW5hZ2VyX3JvdXRlfS9pbWFnZXMvJHtpZF9maWxlfT9maWxlX25hbWU9JHtmaWxlTmFtZX1gLCBudWxsLCB0aGlzLmdldE9wdGlvbnNIZWFkZXJzKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUltZyhpZF9maWxlOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxJbWdQaWN0dXJlRFRPPihgJHt0aGlzLkNPTkZJRy5pbWFnZV9tYW5hZ2VyX3JvdXRlfS9pbWFnZXMvJHtpZF9maWxlfWAsIHRoaXMuZ2V0T3B0aW9uc0hlYWRlcnMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlTXVsdGlwbGVJbWcoaWRfYXJyYXk6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEltZ1BpY3R1cmVEVE9bXT4oYCR7dGhpcy5DT05GSUcuaW1hZ2VfbWFuYWdlcl9yb3V0ZX0vaW1hZ2VzLW11bHRpcGxlLWRlbGV0ZWAsIHsgaWRfYXJyYXkgfSwgdGhpcy5nZXRPcHRpb25zSGVhZGVycygpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTaG9wQ2F0ZWdvcnkoc2hvcElkOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDx7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5OiBzdHJpbmdcclxuICAgICAgICB9PihgJHtlbnZpcm9ubWVudC53aXppX2FwaX0vc2hvcHMvJHtzaG9wSWR9YCwgdGhpcy5nZXRPcHRpb25zSGVhZGVycygpKS5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKHNob3AgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNob3AgJiYgc2hvcFsnY2F0ZWdvcnknXSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNPTkZJRy5zaG9wX2NhdGVnb3J5ID0gc2hvcFsnY2F0ZWdvcnknXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxufSJdfQ==
@@ -3,4 +3,4 @@
3
3
  */
4
4
  export * from './lib/img-manager-webelement.component';
5
5
  export * from './lib/img-manager-webelement.module';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ltZy1tYW5hZ2VyLXdlYmVsZW1lbnQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMscUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGltZy1tYW5hZ2VyLXdlYmVsZW1lbnRcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1nLW1hbmFnZXItd2ViZWxlbWVudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1nLW1hbmFnZXItd2ViZWxlbWVudC5tb2R1bGUnO1xuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ltZy1tYW5hZ2VyLXdlYmVsZW1lbnQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMscUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaW1nLW1hbmFnZXItd2ViZWxlbWVudFxyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1nLW1hbmFnZXItd2ViZWxlbWVudC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbWctbWFuYWdlci13ZWJlbGVtZW50Lm1vZHVsZSc7XHJcbiJdfQ==