@wizishop/img-manager 15.2.5 → 15.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -119
- package/assets/i18n/en.json +1 -1
- package/assets/i18n/fr.json +1 -1
- package/esm2020/lib/components/images-view/images-view.component.mjs +11 -8
- package/esm2020/lib/components/img-selection/img-selection.component.mjs +9 -10
- package/esm2020/lib/services/api.service.mjs +1 -1
- package/esm2020/lib/services/canva.service.mjs +2 -2
- package/esm2020/lib/services/img-manager.service.mjs +6 -9
- package/esm2020/lib/services/img-selection.service.mjs +1 -1
- package/esm2020/lib/services/upload.service.mjs +5 -3
- package/esm2020/lib/wz-img-manager.component.mjs +14 -10
- package/fesm2015/wizishop-img-manager.mjs +37 -37
- package/fesm2015/wizishop-img-manager.mjs.map +1 -1
- package/fesm2020/wizishop-img-manager.mjs +35 -35
- package/fesm2020/wizishop-img-manager.mjs.map +1 -1
- package/lib/components/img-selection/img-selection.component.d.ts +7 -6
- package/lib/services/api.service.d.ts +4 -3
- package/lib/services/img-manager.service.d.ts +1 -1
- package/lib/services/upload.service.d.ts +5 -2
- package/lib/wz-img-manager.component.d.ts +5 -2
- package/package.json +1 -1
- package/wizishop-img-manager-15.2.7.tgz +0 -0
- package/wizishop-img-manager-15.2.5.tgz +0 -0
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { Injectable, inject } from '@angular/core';
|
|
2
2
|
import { ApiService } from './api.service';
|
|
3
|
+
import { Subject, tap } from 'rxjs';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export class UploadService {
|
|
5
6
|
constructor() {
|
|
7
|
+
this.imageUploaded$ = new Subject();
|
|
6
8
|
this.apiService = inject(ApiService);
|
|
7
9
|
}
|
|
8
10
|
uploadFile(formData) {
|
|
9
|
-
return this.apiService.uploadFile(formData);
|
|
11
|
+
return this.apiService.uploadFile(formData).pipe(tap((img) => this.imageUploaded$.next(img)));
|
|
10
12
|
}
|
|
11
13
|
uploadFileByUrl(url, fileName) {
|
|
12
|
-
return this.apiService.uploadFileByUrl(url, fileName);
|
|
14
|
+
return this.apiService.uploadFileByUrl(url, fileName).pipe(tap((img) => this.imageUploaded$.next(img)));
|
|
13
15
|
}
|
|
14
16
|
}
|
|
15
17
|
UploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -17,4 +19,4 @@ UploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
|
|
|
17
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UploadService, decorators: [{
|
|
18
20
|
type: Injectable
|
|
19
21
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXBDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBR0ksbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUU5QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBY25DO0lBWkcsVUFBVSxDQUFDLFFBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUM1QyxHQUFHLENBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM3RCxDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFXLEVBQUUsUUFBaUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM3RCxDQUFDO0lBQ04sQ0FBQzs7MEdBaEJRLGFBQWE7OEdBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEltZ1BpY3R1cmVEVE8gfSBmcm9tICcuLi9kdG8vaW1nLW1hbmFnZXIuZHRvJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVwbG9hZFNlcnZpY2Uge1xuXG4gICAgaW1hZ2VVcGxvYWRlZCQgPSBuZXcgU3ViamVjdDxJbWdQaWN0dXJlRFRPPigpO1xuXG4gICAgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcblxuICAgIHVwbG9hZEZpbGUoZm9ybURhdGE6IEZvcm1EYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UudXBsb2FkRmlsZShmb3JtRGF0YSkucGlwZShcbiAgICAgICAgICAgIHRhcCgoaW1nOiBJbWdQaWN0dXJlRFRPKSA9PiB0aGlzLmltYWdlVXBsb2FkZWQkLm5leHQoaW1nKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGxvYWRGaWxlQnlVcmwodXJsOiBzdHJpbmcsIGZpbGVOYW1lPzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UudXBsb2FkRmlsZUJ5VXJsKHVybCwgZmlsZU5hbWUpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGltZzogSW1nUGljdHVyZURUTykgPT4gdGhpcy5pbWFnZVVwbG9hZGVkJC5uZXh0KGltZykpXG4gICAgICAgICk7XG4gICAgfVxuXG59Il19
|
|
@@ -5,31 +5,34 @@ import { CanvaService } from './services/canva.service';
|
|
|
5
5
|
import { ImgEventService } from './services/img-event.service';
|
|
6
6
|
import { DomService } from './services/dom.service';
|
|
7
7
|
import { HostListener } from '@angular/core';
|
|
8
|
+
import { UploadService } from './services/upload.service';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "./services/img-selection.service";
|
|
10
11
|
import * as i2 from "./services/user-settings.service";
|
|
11
12
|
import * as i3 from "./services/canva.service";
|
|
12
13
|
import * as i4 from "./services/img-event.service";
|
|
13
14
|
import * as i5 from "./services/dom.service";
|
|
14
|
-
import * as i6 from "
|
|
15
|
-
import * as i7 from "
|
|
16
|
-
import * as i8 from "./components/img-
|
|
15
|
+
import * as i6 from "./services/upload.service";
|
|
16
|
+
import * as i7 from "@angular/common";
|
|
17
|
+
import * as i8 from "./components/img-tabs/img-tabs.component";
|
|
18
|
+
import * as i9 from "./components/img-selection/img-selection.component";
|
|
17
19
|
export class WzImgManagerComponent {
|
|
18
|
-
constructor(imgSelectionService, userSettingsService, canvaService, imgEventService, domService) {
|
|
20
|
+
constructor(imgSelectionService, userSettingsService, canvaService, imgEventService, domService, uploadService) {
|
|
19
21
|
this.imgSelectionService = imgSelectionService;
|
|
20
22
|
this.userSettingsService = userSettingsService;
|
|
21
23
|
this.canvaService = canvaService;
|
|
22
24
|
this.imgEventService = imgEventService;
|
|
23
25
|
this.domService = domService;
|
|
26
|
+
this.uploadService = uploadService;
|
|
24
27
|
this.showSelection = false;
|
|
25
28
|
this.imgManagerClosed = new EventEmitter();
|
|
26
29
|
this._multipleImgMode = false;
|
|
27
30
|
this._showImgManagerModule = false;
|
|
28
31
|
this.imgSelectionChange = this.imgSelectionService.imgSelection$;
|
|
32
|
+
this.imageUploaded = this.uploadService.imageUploaded$;
|
|
29
33
|
this.close = false;
|
|
30
34
|
this.listDisplayed = false;
|
|
31
35
|
this.hideTab = false;
|
|
32
|
-
console.log('WzImgManagerComponent');
|
|
33
36
|
}
|
|
34
37
|
// If forceToOpenCanva is true : Canva will open with the canvaService.expectedImgSizesChange
|
|
35
38
|
// If forceToOpenCanva is a WiziBlockMediaDto, Canva open immediatly
|
|
@@ -62,7 +65,6 @@ export class WzImgManagerComponent {
|
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
ngOnInit() {
|
|
65
|
-
console.log('WzImgManagerComponent');
|
|
66
68
|
this.imgSelectionService.setMultipleImgMode(this._multipleImgMode);
|
|
67
69
|
this.imgSelectionService.initImgSelectedList(null);
|
|
68
70
|
this.selectImgEvent = this.imgSelectionService.imgSelection$.subscribe(imgSelection => {
|
|
@@ -158,12 +160,12 @@ export class WzImgManagerComponent {
|
|
|
158
160
|
this.listDisplayedEvent.unsubscribe();
|
|
159
161
|
}
|
|
160
162
|
}
|
|
161
|
-
WzImgManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WzImgManagerComponent, deps: [{ token: i1.ImgSelectionService }, { token: i2.UserSettingsService }, { token: i3.CanvaService }, { token: i4.ImgEventService }, { token: i5.DomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
162
|
-
WzImgManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: WzImgManagerComponent, selector: "wz-img-manager", inputs: { stateDisplayed: "stateDisplayed", showSelection: "showSelection", forceToOpenCanva: "forceToOpenCanva", multipleImgMode: "multipleImgMode", showImgManagerModule: "showImgManagerModule" }, outputs: { imgManagerClosed: "imgManagerClosed", imgSelectionChange: "imgSelectionChange" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type:
|
|
163
|
+
WzImgManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WzImgManagerComponent, deps: [{ token: i1.ImgSelectionService }, { token: i2.UserSettingsService }, { token: i3.CanvaService }, { token: i4.ImgEventService }, { token: i5.DomService }, { token: i6.UploadService }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
+
WzImgManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: WzImgManagerComponent, selector: "wz-img-manager", inputs: { stateDisplayed: "stateDisplayed", showSelection: "showSelection", forceToOpenCanva: "forceToOpenCanva", multipleImgMode: "multipleImgMode", showImgManagerModule: "showImgManagerModule" }, outputs: { imgManagerClosed: "imgManagerClosed", imgSelectionChange: "imgSelectionChange", imageUploaded: "imageUploaded" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.ImgTabsComponent, selector: "img-tabs", inputs: ["multipleImgMode", "stateDisplayed", "listDisplayed"], outputs: ["imgManagerClosed", "currentTab", "switchDisplayWindow"] }, { kind: "component", type: i9.ImgSelectionComponent, selector: "img-selection", inputs: ["tabDisplayed"], outputs: ["imgManagerClosed"] }] });
|
|
163
165
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WzImgManagerComponent, decorators: [{
|
|
164
166
|
type: Component,
|
|
165
167
|
args: [{ selector: 'wz-img-manager', template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n" }]
|
|
166
|
-
}], ctorParameters: function () { return [{ type: i1.ImgSelectionService }, { type: i2.UserSettingsService }, { type: i3.CanvaService }, { type: i4.ImgEventService }, { type: i5.DomService }]; }, propDecorators: { stateDisplayed: [{
|
|
168
|
+
}], ctorParameters: function () { return [{ type: i1.ImgSelectionService }, { type: i2.UserSettingsService }, { type: i3.CanvaService }, { type: i4.ImgEventService }, { type: i5.DomService }, { type: i6.UploadService }]; }, propDecorators: { stateDisplayed: [{
|
|
167
169
|
type: Input
|
|
168
170
|
}], showSelection: [{
|
|
169
171
|
type: Input
|
|
@@ -180,5 +182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
180
182
|
args: ['document:keydown.escape', ['$event']]
|
|
181
183
|
}], imgSelectionChange: [{
|
|
182
184
|
type: Output
|
|
185
|
+
}], imageUploaded: [{
|
|
186
|
+
type: Output
|
|
183
187
|
}] } });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3otaW1nLW1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi93ei1pbWctbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL3d6LWltZy1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQU83QyxNQUFNLE9BQU8scUJBQXFCO0lBeURoQyxZQUNVLG1CQUF3QyxFQUN4QyxtQkFBd0MsRUFDeEMsWUFBMEIsRUFDMUIsZUFBZ0MsRUFDaEMsVUFBc0I7UUFKdEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBNUR2QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQWM5QixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FB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UUFDOUIsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFO1lBQzNDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7a0hBbkxVLHFCQUFxQjtzR0FBckIscUJBQXFCLHlhQ2RsQywrd0RBdUNBOzJGRHpCYSxxQkFBcUI7a0JBSmpDLFNBQVM7K0JBQ0UsZ0JBQWdCOzhOQUlqQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBSU8sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQVVJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFHTSxlQUFlO3NCQUEzQixLQUFLO2dCQVVPLG9CQUFvQjtzQkFBaEMsS0FBSztnQkFXK0MsZ0JBQWdCO3NCQUFwRSxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU16QyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWdTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9pbWctc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FudmFTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jYW52YS5zZXJ2aWNlJztcbmltcG9ydCB7IEltZ0V2ZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaW1nLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZG9tLnNlcnZpY2UnO1xuaW1wb3J0IHsgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaXppQmxvY2tNZWRpYUR0byB9IGZyb20gJy4vZHRvL3dpemktYmxvY2stbWVkaWEuZHRvJztcbmltcG9ydCB7IHN0YXRlRGlzcGxheWVkIH0gZnJvbSAnLi9kdG8vc3RhdGVEaXNwbGF5ZWQuZHRvJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3d6LWltZy1tYW5hZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3d6LWltZy1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXekltZ01hbmFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzdGF0ZURpc3BsYXllZDogc3RhdGVEaXNwbGF5ZWQ7XG4gIEBJbnB1dCgpIHNob3dTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBJZiBmb3JjZVRvT3BlbkNhbnZhIGlzIHRydWUgOiBDYW52YSB3aWxsIG9wZW4gd2l0aCB0aGUgY2FudmFTZXJ2aWNlLmV4cGVjdGVkSW1nU2l6ZXNDaGFuZ2VcbiAgLy8gSWYgZm9yY2VUb09wZW5DYW52YSBpcyBhIFdpemlCbG9ja01lZGlhRHRvLCBDYW52YSBvcGVuIGltbWVkaWF0bHlcbiAgQElucHV0KCkgc2V0IGZvcmNlVG9PcGVuQ2FudmEoZm9yY2VUb09wZW5DYW52YTogYm9vbGVhbnxXaXppQmxvY2tNZWRpYUR0bykge1xuICAgIHRoaXMuY2FudmFTZXJ2aWNlLmZvcmNlVG9PcGVuQ2FudmEgPSAhIWZvcmNlVG9PcGVuQ2FudmE7XG5cbiAgICBpZiAodHlwZW9mIGZvcmNlVG9PcGVuQ2FudmEgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2FudmFTZXJ2aWNlLmV4cGVjdGVkSW1nU2l6ZXNDaGFuZ2UoZm9yY2VUb09wZW5DYW52YSk7XG4gIH1cblxuICBAT3V0cHV0KCkgaW1nTWFuYWdlckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBfbXVsdGlwbGVJbWdNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IG11bHRpcGxlSW1nTW9kZShhY3RpdmF0ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX211bHRpcGxlSW1nTW9kZSA9IGFjdGl2YXRlO1xuICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5zZXRNdWx0aXBsZUltZ01vZGUodGhpcy5fbXVsdGlwbGVJbWdNb2RlKTtcbiAgfVxuXG4gIGdldCBtdWx0aXBsZUltZ01vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlSW1nTW9kZTtcbiAgfVxuXG4gIF9zaG93SW1nTWFuYWdlck1vZHVsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgc2hvd0ltZ01hbmFnZXJNb2R1bGUoYWN0aXZhdGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93SW1nTWFuYWdlck1vZHVsZSA9IGFjdGl2YXRlO1xuICAgIGlmIChhY3RpdmF0ZSkge1xuICAgICAgdGhpcy5kaXNwbGF5U21hbGwoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0ltZ01hbmFnZXJNb2R1bGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlSW1nTW9kZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnN0YXRlRGlzcGxheWVkICYmIHRoaXMuc3RhdGVEaXNwbGF5ZWQgIT09ICd3aW5kb3cnKSB7XG4gICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgaW1nU2VsZWN0aW9uQ2hhbmdlID0gdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLmltZ1NlbGVjdGlvbiQ7XG5cbiAgY2xvc2U6IGJvb2xlYW4gPSBmYWxzZVxuICBzZWxlY3RJbWdFdmVudDogU3Vic2NyaXB0aW9uO1xuICBsaXN0RGlzcGxheWVkOiBib29sZWFuID0gZmFsc2U7XG4gIGxpc3REaXNwbGF5ZWRFdmVudDogU3Vic2NyaXB0aW9uO1xuICBoaWRlVGFiOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIFNhdmUgdGhlIGRlZmF1bHQgb3ZlcmZsb3cgYXBwbHkgdG8gaHRtbCB0YWcsIHdoZW4gdGhlIG1vZHVsZSBpcyBmdWxsIG9wZW5cbiAgcHJpdmF0ZSBvdmVyZmxvd0hUTUw6IHN0cmluZztcbiAgcHJpdmF0ZSBib2R5UGFkZGluZzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW1nU2VsZWN0aW9uU2VydmljZTogSW1nU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXR0aW5nc1NlcnZpY2U6IFVzZXJTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYW52YVNlcnZpY2U6IENhbnZhU2VydmljZSxcbiAgICBwcml2YXRlIGltZ0V2ZW50U2VydmljZTogSW1nRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9tU2VydmljZTogRG9tU2VydmljZSxcbiAgKSB7XG4gICAgY29uc29sZS5sb2coJ1d6SW1nTWFuYWdlckNvbXBvbmVudCcpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1d6SW1nTWFuYWdlckNvbXBvbmVudCcpO1xuICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5zZXRNdWx0aXBsZUltZ01vZGUodGhpcy5fbXVsdGlwbGVJbWdNb2RlKTtcbiAgICB0aGlzLmltZ1NlbGVjdGlvblNlcnZpY2UuaW5pdEltZ1NlbGVjdGVkTGlzdChudWxsKTtcbiAgICB0aGlzLnNlbGVjdEltZ0V2ZW50ID0gdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLmltZ1NlbGVjdGlvbiQuc3Vic2NyaWJlKGltZ1NlbGVjdGlvbiA9PntcblxuICAgICAgaWYgKGltZ1NlbGVjdGlvbiAmJiBpbWdTZWxlY3Rpb24ubGVuZ3RoICYmIHRoaXMuY2hlY2tDbG9zZUltZ01hbmFnZXIoKSkge1xuICAgICAgICAvLyBDbG9zZSB0aGUgaW1nIG1hbmFnZXJcbiAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jaGVja1VzZXJEaXNwbGF5UHJlZmVyZW5jZSgpO1xuICAgIC8vIFVzZSB3aGVuIHRoZSBpbWcgbWFuYWdlciBpcyBmdWxsIG9wZW4gb3Igb3BlbiBpbiBwYWdlLiBUaGlzIGRpc3BsYXkgdGhlIHVzZXIgcHJlZmVyZW5jZSBkaXNwbGF5LCBtb3NhaWMgb3IgbGlzdC5cbiAgICB0aGlzLmxpc3REaXNwbGF5ZWRFdmVudCA9IHRoaXMuaW1nRXZlbnRTZXJ2aWNlLmdldGxpc3REaXNwbGF5ZWRDaGFuZ2UoKS5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5saXN0RGlzcGxheWVkID0gdmFsdWUpO1xuICAgIC8vIFJlZ2lzdGVyIGRvbSBzZXJ2aWNlIHRvIGxpc3RlbiBvbiBhbGwgZXZlbnQgb24gdGhlIGJvZHkgdG8gYXZvaWQgaGF2aW5nIG11bHRpcGxlIGluc3RhbmNlIG9mIHRoZSBzYW1lIHRoaW5nIGV2ZXJ5IHdoZXJlXG4gICAgdGhpcy5kb21TZXJ2aWNlLnNldERvY3VtZW50RXZlbnRMaXN0ZW5lcigpO1xuICB9XG5cbiAgY2hlY2tVc2VyRGlzcGxheVByZWZlcmVuY2UoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGVEaXNwbGF5ZWQgPT09ICd3aW5kb3cnIHx8IHRoaXMuc3RhdGVEaXNwbGF5ZWQgPT09ICdmdWxsJykge1xuICAgICAgdGhpcy5saXN0RGlzcGxheWVkID0gdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLmdldFVzZXJEaXNwbGF5UHJlZmVyZW5jZSgpO1xuICAgIH1cbiAgfVxuXG4gIHNldEN1cnJlbnRUYWIoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgPT09ICdpbWctZWRpdGlvbicpIHtcbiAgICAgIHRoaXMuaGlkZVRhYiA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGlkZVRhYiA9IGZhbHNlO1xuICB9XG5cbiAgZGlzcGxheVNtYWxsKCkge1xuICAgIGlmICh0aGlzLnN0YXRlRGlzcGxheWVkICE9PSAnd2luZG93Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGVEaXNwbGF5ZWQgPSAnc21hbGwnO1xuICAgICAgICB0aGlzLmFkZEJvZHlCb3R0b21QYWRkaW5nRm9yTW9kdWxlKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfVxuICB9XG5cbiAgb3BlblNtYWxsKCkge1xuICAgIHRoaXMuc3RhdGVEaXNwbGF5ZWQgPSAnc21hbGwnO1xuICAgIHRoaXMuc2V0Qm9keU1haW5TY3JvbGwoKTtcbiAgICB0aGlzLmxpc3REaXNwbGF5ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9wZW5GdWxsKCkge1xuICAgIHRoaXMuc3RhdGVEaXNwbGF5ZWQgPSAnZnVsbCc7XG4gICAgdGhpcy5jaGVja1VzZXJEaXNwbGF5UHJlZmVyZW5jZSgpO1xuICAgIHRoaXMuaGlkZUJvZHlNYWluU2Nyb2xsKCk7XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuc3RhdGVEaXNwbGF5ZWQgPSAnY2xvc2VkJztcbiAgICB0aGlzLmhpZGVUYWIgPSBmYWxzZTtcbiAgICB0aGlzLnNldEJvZHlNYWluU2Nyb2xsKCk7XG4gICAgdGhpcy5yZW1vdmVCb2R5Qm90dG9tUGFkZGluZ0Zvck1vZHVsZSgpO1xuICAgIC8vIFdhaXQgdGhlIGVuZCBvZiB0aGUgY2xvc2luZyBhbm5pbWF0aW9uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmltZ01hbmFnZXJDbG9zZWQuZW1pdCgpO1xuICAgIH0sIDI1MCk7XG4gIH1cblxuICBvbkltZ01hbmFnZXJDbG9zZWQoKSB7XG4gICAgdGhpcy5vbkNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGltZyBtYW5hZ2VyIGFmdGVyIG9uZSBpbWcgaXMgc2VsZWN0ZWQsIGlmIG5vdCBpbiBtdWx0aXBsZSBpbWcgdG8gc2VsZWN0XG4gICAqL1xuICBjaGVja0Nsb3NlSW1nTWFuYWdlcigpIHtcbiAgICByZXR1cm4gIXRoaXMubXVsdGlwbGVJbWdNb2RlICYmIHRoaXMuc3RhdGVEaXNwbGF5ZWQgIT09ICd3aW5kb3cnID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgaGlkZUJvZHlNYWluU2Nyb2xsKCkge1xuICAgIGNvbnN0IGh0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuXG4gICAgaWYgKCF0aGlzLm92ZXJmbG93SFRNTCkge1xuICAgICAgdGhpcy5vdmVyZmxvd0hUTUwgPSBodG1sLnN0eWxlLm92ZXJmbG93WTtcbiAgICB9XG5cbiAgICBodG1sLnN0eWxlLm92ZXJmbG93WSA9IFwiaGlkZGVuXCI7XG4gIH1cblxuICBzZXRCb2R5TWFpblNjcm9sbCgpIHtcbiAgICBjb25zdCBodG1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICBodG1sLnN0eWxlLm92ZXJmbG93WSA9IHRoaXMub3ZlcmZsb3dIVE1MID8gdGhpcy5vdmVyZmxvd0hUTUwgOiBcInNjcm9sbFwiO1xuICB9XG5cbiAgYWRkQm9keUJvdHRvbVBhZGRpbmdGb3JNb2R1bGUoKSB7XG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF07XG4gICAgdGhpcy5ib2R5UGFkZGluZyA9IHRoaXMuYm9keVBhZGRpbmcgPyBwYXJzZUludChib2R5LnN0eWxlLnBhZGRpbmdCb3R0b20pIDogMDtcbiAgICBib2R5LnN0eWxlLnBhZGRpbmdCb3R0b20gPSB0aGlzLmJvZHlQYWRkaW5nICsgMzAwICsgJ3B4JztcbiAgfVxuXG4gIHJlbW92ZUJvZHlCb3R0b21QYWRkaW5nRm9yTW9kdWxlKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5ib2R5UGFkZGluZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdO1xuICAgICAgYm9keS5zdHlsZS5wYWRkaW5nQm90dG9tID0gdGhpcy5ib2R5UGFkZGluZyArICdweCc7XG4gICAgICB0aGlzLmJvZHlQYWRkaW5nID0gMDtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VEaXNwbGF5VGFiKCkge1xuICAgIHRoaXMuc3RhdGVEaXNwbGF5ZWQgPSAnZnVsbCc7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlbGVjdEltZ0V2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jYW52YVNlcnZpY2UuZXhwZWN0ZWRJbWdTaXplc0NoYW5nZShudWxsKTtcbiAgICB0aGlzLmxpc3REaXNwbGF5ZWRFdmVudC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid3otaW1nLW1hbmFnZXJcIj5cbiAgPCEtLSBJbWcgc2xlY3Rpb24gaGFuZGxlciAtLT5cbiAgPGRpdiBjbGFzcz1cInd6LWltZy1tYW5hZ2VyX19zZWxlY3Rpb25IYW5kbGVyXCIgKm5nSWY9XCJzaG93U2VsZWN0aW9uXCI+XG4gICAgPGltZy1zZWxlY3Rpb24+PC9pbWctc2VsZWN0aW9uPlxuICA8L2Rpdj5cblxuICA8IS0tIEltZyBtYW5hZ2VyIG1vZHVsZSAtLT5cbiAgPGRpdlxuICAgICpuZ0lmPVwiX3Nob3dJbWdNYW5hZ2VyTW9kdWxlXCJcbiAgICBjbGFzcz1cInd6LWltZy1tYW5hZ2VyX19tb2R1bGVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICd3ei1pbWctbWFuYWdlcl9fbW9kdWxlLS1zbWFsbCc6IHN0YXRlRGlzcGxheWVkID09PSAnc21hbGwnLFxuICAgICAgJ3d6LWltZy1tYW5hZ2VyX19tb2R1bGUtLWZ1bGwnOiBzdGF0ZURpc3BsYXllZCA9PT0gJ2Z1bGwnLFxuICAgICAgJ3d6LWltZy1tYW5hZ2VyX19tb2R1bGUtLXdpbmRvdyc6IHN0YXRlRGlzcGxheWVkID09PSAnd2luZG93JyxcbiAgICAgICd3ei1pbWctbWFuYWdlcl9fbW9kdWxlLS1lZGl0JzogaGlkZVRhYn1cIlxuICA+XG5cbiAgICA8ZGl2IGNsYXNzPVwid3otaW1nLW1hbmFnZXJfX21vZHVsZV9faGVhZGVyXCIgKm5nSWY9XCJzdGF0ZURpc3BsYXllZCAhPT0gJ3dpbmRvdydcIj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9wZW5TbWFsbCgpXCIgKm5nSWY9XCJzdGF0ZURpc3BsYXllZCA9PT0gJ2Z1bGwnXCIgdHlwZT1cImJ1dHRvblwiPjxzcGFuPkV4cGFuZDwvc3Bhbj48aSBjbGFzcz1cImZhbCBmYS1jb21wcmVzcy1hbHRcIj48L2k+PC9idXR0b24+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuU21hbGwoKVwiICpuZ0lmPVwic3RhdGVEaXNwbGF5ZWQgPT09ICdjbG9zZWQnXCIgdHlwZT1cImJ1dHRvblwiPjxzcGFuPkV4cGFuZDwvc3Bhbj48aSBjbGFzcz1cImZhbCBmYS1leHBhbmQtYWx0XCI+PC9pPjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3BlbkZ1bGwoKVwiICpuZ0lmPVwic3RhdGVEaXNwbGF5ZWQgPT09ICdzbWFsbCdcIiB0eXBlPVwiYnV0dG9uXCI+PHNwYW4+RXhwYW5kPC9zcGFuPjxpIGNsYXNzPVwiZmFsIGZhLWV4cGFuZC1hbHRcIj48L2k+PC9idXR0b24+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNsb3NlKClcIiAqbmdJZj1cInN0YXRlRGlzcGxheWVkICE9PSAnY2xvc2VkJ1wiIHR5cGU9XCJidXR0b25cIj48c3Bhbj5DbG9zZTwvc3Bhbj48aSBjbGFzcz1cImZhbCBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwid3otaW1nLW1hbmFnZXJfX21vZHVsZV9fY29udGVudCB3ei1ibG9ja1wiXG4gICAgICBbbmdDbGFzc109XCJ7J3d6LWJsb2NrLS13aW5kb3cnOiBzdGF0ZURpc3BsYXllZCA9PT0gJ3dpbmRvdyd9XCI+XG4gICAgICA8aW1nLXRhYnNcbiAgICAgICAgW3N0YXRlRGlzcGxheWVkXT1cInN0YXRlRGlzcGxheWVkXCJcbiAgICAgICAgW211bHRpcGxlSW1nTW9kZV09XCJtdWx0aXBsZUltZ01vZGVcIlxuICAgICAgICBbbGlzdERpc3BsYXllZF09XCJsaXN0RGlzcGxheWVkXCJcbiAgICAgICAgKGltZ01hbmFnZXJDbG9zZWQpPVwib25JbWdNYW5hZ2VyQ2xvc2VkKClcIlxuICAgICAgICAoc3dpdGNoRGlzcGxheVdpbmRvdyk9XCJjaGFuZ2VEaXNwbGF5VGFiKClcIlxuICAgICAgICAoY3VycmVudFRhYik9XCJzZXRDdXJyZW50VGFiKCRldmVudClcIj5cbiAgICAgIDwvaW1nLXRhYnM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3otaW1nLW1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi93ei1pbWctbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL3d6LWltZy1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7O0FBSzFELE1BQU0sT0FBTyxxQkFBcUI7SUEyRGhDLFlBQ1UsbUJBQXdDLEVBQ3hDLG1CQUF3QyxFQUN4QyxZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxVQUFzQixFQUN0QixhQUE0QjtRQUw1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsa0JBQWEs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RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1nU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaW1nLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENhbnZhU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2FudmEuc2VydmljZSc7XG5pbXBvcnQgeyBJbWdFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ltZy1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcbmltcG9ydCB7IEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2l6aUJsb2NrTWVkaWFEdG8gfSBmcm9tICcuL2R0by93aXppLWJsb2NrLW1lZGlhLmR0byc7XG5pbXBvcnQgeyBzdGF0ZURpc3BsYXllZCB9IGZyb20gJy4vZHRvL3N0YXRlRGlzcGxheWVkLmR0byc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91cGxvYWQuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3ei1pbWctbWFuYWdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93ei1pbWctbWFuYWdlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV3pJbWdNYW5hZ2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc3RhdGVEaXNwbGF5ZWQ6IHN0YXRlRGlzcGxheWVkO1xuICBASW5wdXQoKSBzaG93U2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gSWYgZm9yY2VUb09wZW5DYW52YSBpcyB0cnVlIDogQ2FudmEgd2lsbCBvcGVuIHdpdGggdGhlIGNhbnZhU2VydmljZS5leHBlY3RlZEltZ1NpemVzQ2hhbmdlXG4gIC8vIElmIGZvcmNlVG9PcGVuQ2FudmEgaXMgYSBXaXppQmxvY2tNZWRpYUR0bywgQ2FudmEgb3BlbiBpbW1lZGlhdGx5XG4gIEBJbnB1dCgpIHNldCBmb3JjZVRvT3BlbkNhbnZhKGZvcmNlVG9PcGVuQ2FudmE6IGJvb2xlYW58V2l6aUJsb2NrTWVkaWFEdG8pIHtcbiAgICB0aGlzLmNhbnZhU2VydmljZS5mb3JjZVRvT3BlbkNhbnZhID0gISFmb3JjZVRvT3BlbkNhbnZhO1xuXG4gICAgaWYgKHR5cGVvZiBmb3JjZVRvT3BlbkNhbnZhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNhbnZhU2VydmljZS5leHBlY3RlZEltZ1NpemVzQ2hhbmdlKGZvcmNlVG9PcGVuQ2FudmEpO1xuICB9XG5cbiAgQE91dHB1dCgpIGltZ01hbmFnZXJDbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgX211bHRpcGxlSW1nTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldCBtdWx0aXBsZUltZ01vZGUoYWN0aXZhdGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZUltZ01vZGUgPSBhY3RpdmF0ZTtcbiAgICB0aGlzLmltZ1NlbGVjdGlvblNlcnZpY2Uuc2V0TXVsdGlwbGVJbWdNb2RlKHRoaXMuX211bHRpcGxlSW1nTW9kZSk7XG4gIH1cblxuICBnZXQgbXVsdGlwbGVJbWdNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZUltZ01vZGU7XG4gIH1cblxuICBfc2hvd0ltZ01hbmFnZXJNb2R1bGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNob3dJbWdNYW5hZ2VyTW9kdWxlKGFjdGl2YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0ltZ01hbmFnZXJNb2R1bGUgPSBhY3RpdmF0ZTtcbiAgICBpZiAoYWN0aXZhdGUpIHtcbiAgICAgIHRoaXMuZGlzcGxheVNtYWxsKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3dJbWdNYW5hZ2VyTW9kdWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZUltZ01vZGU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zdGF0ZURpc3BsYXllZCAmJiB0aGlzLnN0YXRlRGlzcGxheWVkICE9PSAnd2luZG93Jykge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIGltZ1NlbGVjdGlvbkNoYW5nZSA9IHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5pbWdTZWxlY3Rpb24kO1xuXG4gIEBPdXRwdXQoKSBpbWFnZVVwbG9hZGVkID0gdGhpcy51cGxvYWRTZXJ2aWNlLmltYWdlVXBsb2FkZWQkO1xuXG4gIGNsb3NlOiBib29sZWFuID0gZmFsc2VcbiAgc2VsZWN0SW1nRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgbGlzdERpc3BsYXllZDogYm9vbGVhbiA9IGZhbHNlO1xuICBsaXN0RGlzcGxheWVkRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgaGlkZVRhYjogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBTYXZlIHRoZSBkZWZhdWx0IG92ZXJmbG93IGFwcGx5IHRvIGh0bWwgdGFnLCB3aGVuIHRoZSBtb2R1bGUgaXMgZnVsbCBvcGVuXG4gIHByaXZhdGUgb3ZlcmZsb3dIVE1MOiBzdHJpbmc7XG4gIHByaXZhdGUgYm9keVBhZGRpbmc6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGltZ1NlbGVjdGlvblNlcnZpY2U6IEltZ1NlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2V0dGluZ3NTZXJ2aWNlOiBVc2VyU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FudmFTZXJ2aWNlOiBDYW52YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWdFdmVudFNlcnZpY2U6IEltZ0V2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLnNldE11bHRpcGxlSW1nTW9kZSh0aGlzLl9tdWx0aXBsZUltZ01vZGUpO1xuICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5pbml0SW1nU2VsZWN0ZWRMaXN0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0SW1nRXZlbnQgPSB0aGlzLmltZ1NlbGVjdGlvblNlcnZpY2UuaW1nU2VsZWN0aW9uJC5zdWJzY3JpYmUoaW1nU2VsZWN0aW9uID0+e1xuXG4gICAgICBpZiAoaW1nU2VsZWN0aW9uICYmIGltZ1NlbGVjdGlvbi5sZW5ndGggJiYgdGhpcy5jaGVja0Nsb3NlSW1nTWFuYWdlcigpKSB7XG4gICAgICAgIC8vIENsb3NlIHRoZSBpbWcgbWFuYWdlclxuICAgICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNoZWNrVXNlckRpc3BsYXlQcmVmZXJlbmNlKCk7XG4gICAgLy8gVXNlIHdoZW4gdGhlIGltZyBtYW5hZ2VyIGlzIGZ1bGwgb3BlbiBvciBvcGVuIGluIHBhZ2UuIFRoaXMgZGlzcGxheSB0aGUgdXNlciBwcmVmZXJlbmNlIGRpc3BsYXksIG1vc2FpYyBvciBsaXN0LlxuICAgIHRoaXMubGlzdERpc3BsYXllZEV2ZW50ID0gdGhpcy5pbWdFdmVudFNlcnZpY2UuZ2V0bGlzdERpc3BsYXllZENoYW5nZSgpLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLmxpc3REaXNwbGF5ZWQgPSB2YWx1ZSk7XG4gICAgLy8gUmVnaXN0ZXIgZG9tIHNlcnZpY2UgdG8gbGlzdGVuIG9uIGFsbCBldmVudCBvbiB0aGUgYm9keSB0byBhdm9pZCBoYXZpbmcgbXVsdGlwbGUgaW5zdGFuY2Ugb2YgdGhlIHNhbWUgdGhpbmcgZXZlcnkgd2hlcmVcbiAgICB0aGlzLmRvbVNlcnZpY2Uuc2V0RG9jdW1lbnRFdmVudExpc3RlbmVyKCk7XG4gIH1cblxuICBjaGVja1VzZXJEaXNwbGF5UHJlZmVyZW5jZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZURpc3BsYXllZCA9PT0gJ3dpbmRvdycgfHwgdGhpcy5zdGF0ZURpc3BsYXllZCA9PT0gJ2Z1bGwnKSB7XG4gICAgICB0aGlzLmxpc3REaXNwbGF5ZWQgPSB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UuZ2V0VXNlckRpc3BsYXlQcmVmZXJlbmNlKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q3VycmVudFRhYihldmVudCkge1xuICAgIGlmIChldmVudCA9PT0gJ2ltZy1lZGl0aW9uJykge1xuICAgICAgdGhpcy5oaWRlVGFiID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oaWRlVGFiID0gZmFsc2U7XG4gIH1cblxuICBkaXNwbGF5U21hbGwoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGVEaXNwbGF5ZWQgIT09ICd3aW5kb3cnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZURpc3BsYXllZCA9ICdzbWFsbCc7XG4gICAgICAgIHRoaXMuYWRkQm9keUJvdHRvbVBhZGRpbmdGb3JNb2R1bGUoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9XG4gIH1cblxuICBvcGVuU21hbGwoKSB7XG4gICAgdGhpcy5zdGF0ZURpc3BsYXllZCA9ICdzbWFsbCc7XG4gICAgdGhpcy5zZXRCb2R5TWFpblNjcm9sbCgpO1xuICAgIHRoaXMubGlzdERpc3BsYXllZCA9IGZhbHNlO1xuICB9XG5cbiAgb3BlbkZ1bGwoKSB7XG4gICAgdGhpcy5zdGF0ZURpc3BsYXllZCA9ICdmdWxsJztcbiAgICB0aGlzLmNoZWNrVXNlckRpc3BsYXlQcmVmZXJlbmNlKCk7XG4gICAgdGhpcy5oaWRlQm9keU1haW5TY3JvbGwoKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5zdGF0ZURpc3BsYXllZCA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVRhYiA9IGZhbHNlO1xuICAgIHRoaXMuc2V0Qm9keU1haW5TY3JvbGwoKTtcbiAgICB0aGlzLnJlbW92ZUJvZHlCb3R0b21QYWRkaW5nRm9yTW9kdWxlKCk7XG4gICAgLy8gV2FpdCB0aGUgZW5kIG9mIHRoZSBjbG9zaW5nIGFubmltYXRpb25cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaW1nTWFuYWdlckNsb3NlZC5lbWl0KCk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIG9uSW1nTWFuYWdlckNsb3NlZCgpIHtcbiAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgaW1nIG1hbmFnZXIgYWZ0ZXIgb25lIGltZyBpcyBzZWxlY3RlZCwgaWYgbm90IGluIG11bHRpcGxlIGltZyB0byBzZWxlY3RcbiAgICovXG4gIGNoZWNrQ2xvc2VJbWdNYW5hZ2VyKCkge1xuICAgIHJldHVybiAhdGhpcy5tdWx0aXBsZUltZ01vZGUgJiYgdGhpcy5zdGF0ZURpc3BsYXllZCAhPT0gJ3dpbmRvdycgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBoaWRlQm9keU1haW5TY3JvbGwoKSB7XG4gICAgY29uc3QgaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG5cbiAgICBpZiAoIXRoaXMub3ZlcmZsb3dIVE1MKSB7XG4gICAgICB0aGlzLm92ZXJmbG93SFRNTCA9IGh0bWwuc3R5bGUub3ZlcmZsb3dZO1xuICAgIH1cblxuICAgIGh0bWwuc3R5bGUub3ZlcmZsb3dZID0gXCJoaWRkZW5cIjtcbiAgfVxuXG4gIHNldEJvZHlNYWluU2Nyb2xsKCkge1xuICAgIGNvbnN0IGh0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgIGh0bWwuc3R5bGUub3ZlcmZsb3dZID0gdGhpcy5vdmVyZmxvd0hUTUwgPyB0aGlzLm92ZXJmbG93SFRNTCA6IFwic2Nyb2xsXCI7XG4gIH1cblxuICBhZGRCb2R5Qm90dG9tUGFkZGluZ0Zvck1vZHVsZSgpIHtcbiAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXTtcbiAgICB0aGlzLmJvZHlQYWRkaW5nID0gdGhpcy5ib2R5UGFkZGluZyA/IHBhcnNlSW50KGJvZHkuc3R5bGUucGFkZGluZ0JvdHRvbSkgOiAwO1xuICAgIGJvZHkuc3R5bGUucGFkZGluZ0JvdHRvbSA9IHRoaXMuYm9keVBhZGRpbmcgKyAzMDAgKyAncHgnO1xuICB9XG5cbiAgcmVtb3ZlQm9keUJvdHRvbVBhZGRpbmdGb3JNb2R1bGUoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmJvZHlQYWRkaW5nICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF07XG4gICAgICBib2R5LnN0eWxlLnBhZGRpbmdCb3R0b20gPSB0aGlzLmJvZHlQYWRkaW5nICsgJ3B4JztcbiAgICAgIHRoaXMuYm9keVBhZGRpbmcgPSAwO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZURpc3BsYXlUYWIoKSB7XG4gICAgdGhpcy5zdGF0ZURpc3BsYXllZCA9ICdmdWxsJztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2VsZWN0SW1nRXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNhbnZhU2VydmljZS5leHBlY3RlZEltZ1NpemVzQ2hhbmdlKG51bGwpO1xuICAgIHRoaXMubGlzdERpc3BsYXllZEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3ei1pbWctbWFuYWdlclwiPlxuICA8IS0tIEltZyBzbGVjdGlvbiBoYW5kbGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwid3otaW1nLW1hbmFnZXJfX3NlbGVjdGlvbkhhbmRsZXJcIiAqbmdJZj1cInNob3dTZWxlY3Rpb25cIj5cbiAgICA8aW1nLXNlbGVjdGlvbj48L2ltZy1zZWxlY3Rpb24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gSW1nIG1hbmFnZXIgbW9kdWxlIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJfc2hvd0ltZ01hbmFnZXJNb2R1bGVcIlxuICAgIGNsYXNzPVwid3otaW1nLW1hbmFnZXJfX21vZHVsZVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3d6LWltZy1tYW5hZ2VyX19tb2R1bGUtLXNtYWxsJzogc3RhdGVEaXNwbGF5ZWQgPT09ICdzbWFsbCcsXG4gICAgICAnd3otaW1nLW1hbmFnZXJfX21vZHVsZS0tZnVsbCc6IHN0YXRlRGlzcGxheWVkID09PSAnZnVsbCcsXG4gICAgICAnd3otaW1nLW1hbmFnZXJfX21vZHVsZS0td2luZG93Jzogc3RhdGVEaXNwbGF5ZWQgPT09ICd3aW5kb3cnLFxuICAgICAgJ3d6LWltZy1tYW5hZ2VyX19tb2R1bGUtLWVkaXQnOiBoaWRlVGFifVwiXG4gID5cblxuICAgIDxkaXYgY2xhc3M9XCJ3ei1pbWctbWFuYWdlcl9fbW9kdWxlX19oZWFkZXJcIiAqbmdJZj1cInN0YXRlRGlzcGxheWVkICE9PSAnd2luZG93J1wiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3BlblNtYWxsKClcIiAqbmdJZj1cInN0YXRlRGlzcGxheWVkID09PSAnZnVsbCdcIiB0eXBlPVwiYnV0dG9uXCI+PHNwYW4+RXhwYW5kPC9zcGFuPjxpIGNsYXNzPVwiZmFsIGZhLWNvbXByZXNzLWFsdFwiPjwvaT48L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9wZW5TbWFsbCgpXCIgKm5nSWY9XCJzdGF0ZURpc3BsYXllZCA9PT0gJ2Nsb3NlZCdcIiB0eXBlPVwiYnV0dG9uXCI+PHNwYW4+RXhwYW5kPC9zcGFuPjxpIGNsYXNzPVwiZmFsIGZhLWV4cGFuZC1hbHRcIj48L2k+PC9idXR0b24+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuRnVsbCgpXCIgKm5nSWY9XCJzdGF0ZURpc3BsYXllZCA9PT0gJ3NtYWxsJ1wiIHR5cGU9XCJidXR0b25cIj48c3Bhbj5FeHBhbmQ8L3NwYW4+PGkgY2xhc3M9XCJmYWwgZmEtZXhwYW5kLWFsdFwiPjwvaT48L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uQ2xvc2UoKVwiICpuZ0lmPVwic3RhdGVEaXNwbGF5ZWQgIT09ICdjbG9zZWQnXCIgdHlwZT1cImJ1dHRvblwiPjxzcGFuPkNsb3NlPC9zcGFuPjxpIGNsYXNzPVwiZmFsIGZhLXRpbWVzXCI+PC9pPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ3ei1pbWctbWFuYWdlcl9fbW9kdWxlX19jb250ZW50IHd6LWJsb2NrXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnd3otYmxvY2stLXdpbmRvdyc6IHN0YXRlRGlzcGxheWVkID09PSAnd2luZG93J31cIj5cbiAgICAgIDxpbWctdGFic1xuICAgICAgICBbc3RhdGVEaXNwbGF5ZWRdPVwic3RhdGVEaXNwbGF5ZWRcIlxuICAgICAgICBbbXVsdGlwbGVJbWdNb2RlXT1cIm11bHRpcGxlSW1nTW9kZVwiXG4gICAgICAgIFtsaXN0RGlzcGxheWVkXT1cImxpc3REaXNwbGF5ZWRcIlxuICAgICAgICAoaW1nTWFuYWdlckNsb3NlZCk9XCJvbkltZ01hbmFnZXJDbG9zZWQoKVwiXG4gICAgICAgIChzd2l0Y2hEaXNwbGF5V2luZG93KT1cImNoYW5nZURpc3BsYXlUYWIoKVwiXG4gICAgICAgIChjdXJyZW50VGFiKT1cInNldEN1cnJlbnRUYWIoJGV2ZW50KVwiPlxuICAgICAgPC9pbWctdGFicz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, inject, Component, ViewEncapsulation, Input, EventEmitter, Directive, Output, HostBinding, HostListener, ViewChild, Pipe, Inject, NgModule } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, Subject, Observable, forkJoin, of, delay,
|
|
4
|
-
import { take, map, takeUntil, debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';
|
|
3
|
+
import { BehaviorSubject, Subject, tap, Observable, forkJoin, of, delay, combineLatest } from 'rxjs';
|
|
4
|
+
import { take, map, takeUntil, debounceTime, distinctUntilChanged, tap as tap$1 } from 'rxjs/operators';
|
|
5
5
|
import * as i1 from '@wizishop/ng-wizi-bulma';
|
|
6
6
|
import { NwbAllModule } from '@wizishop/ng-wizi-bulma';
|
|
7
7
|
import * as i3 from '@ngx-translate/core';
|
|
@@ -213,13 +213,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
213
213
|
|
|
214
214
|
class UploadService {
|
|
215
215
|
constructor() {
|
|
216
|
+
this.imageUploaded$ = new Subject();
|
|
216
217
|
this.apiService = inject(ApiService);
|
|
217
218
|
}
|
|
218
219
|
uploadFile(formData) {
|
|
219
|
-
return this.apiService.uploadFile(formData);
|
|
220
|
+
return this.apiService.uploadFile(formData).pipe(tap((img) => this.imageUploaded$.next(img)));
|
|
220
221
|
}
|
|
221
222
|
uploadFileByUrl(url, fileName) {
|
|
222
|
-
return this.apiService.uploadFileByUrl(url, fileName);
|
|
223
|
+
return this.apiService.uploadFileByUrl(url, fileName).pipe(tap((img) => this.imageUploaded$.next(img)));
|
|
223
224
|
}
|
|
224
225
|
}
|
|
225
226
|
UploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -252,7 +253,7 @@ class CanvaService {
|
|
|
252
253
|
return this.apiService.CONFIG.canva_token;
|
|
253
254
|
}
|
|
254
255
|
getCanvaLogo() {
|
|
255
|
-
return this.apiService.CONFIG.
|
|
256
|
+
return this.apiService.CONFIG.assets_route + "canva/icon_canva.svg";
|
|
256
257
|
}
|
|
257
258
|
bindEventExepectedImgSizeChange() {
|
|
258
259
|
return this.bindExpectedSizeDone;
|
|
@@ -674,7 +675,7 @@ class AbstractDebounceDirective {
|
|
|
674
675
|
}
|
|
675
676
|
ngOnInit() {
|
|
676
677
|
this.emitEvent$
|
|
677
|
-
.pipe(takeUntil(this.subscription$), debounceTime(this.debounceTime), distinctUntilChanged(), tap(value => this.emitChange(value)))
|
|
678
|
+
.pipe(takeUntil(this.subscription$), debounceTime(this.debounceTime), distinctUntilChanged(), tap$1(value => this.emitChange(value)))
|
|
678
679
|
.subscribe();
|
|
679
680
|
}
|
|
680
681
|
emitChange(value) {
|
|
@@ -1111,20 +1112,16 @@ class ImgManagerService {
|
|
|
1111
1112
|
&& this.previousParams.search === params.search) {
|
|
1112
1113
|
return of(this.shopImgList).pipe(delay(0));
|
|
1113
1114
|
}
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
}
|
|
1117
|
-
return this.apiService.getShopImgList(params).pipe(tap$1((shopImgList) => {
|
|
1115
|
+
const httpParams = params ? this.resetParams(params) : undefined;
|
|
1116
|
+
return this.apiService.getShopImgList(httpParams).pipe(tap((shopImgList) => {
|
|
1118
1117
|
this.shopImgList = shopImgList;
|
|
1119
1118
|
this.previousParams = params;
|
|
1120
1119
|
}));
|
|
1121
1120
|
;
|
|
1122
1121
|
}
|
|
1123
1122
|
getShopTotalImgList(params) {
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
}
|
|
1127
|
-
return this.apiService.getShopTotalImgList(params);
|
|
1123
|
+
const httpParams = params ? this.resetParams(params) : undefined;
|
|
1124
|
+
return this.apiService.getShopTotalImgList(httpParams);
|
|
1128
1125
|
}
|
|
1129
1126
|
getShopImg(idFile) {
|
|
1130
1127
|
return this.apiService.getShopImg(idFile);
|
|
@@ -1138,6 +1135,7 @@ class ImgManagerService {
|
|
|
1138
1135
|
if (params.search) {
|
|
1139
1136
|
this.params = this.params.set('display_name:contains', params.search);
|
|
1140
1137
|
}
|
|
1138
|
+
return this.params;
|
|
1141
1139
|
}
|
|
1142
1140
|
replaceImg(imageBase64, id_file) {
|
|
1143
1141
|
return this.apiService.replaceImg(imageBase64, id_file);
|
|
@@ -3243,14 +3241,17 @@ class ImagesViewComponent {
|
|
|
3243
3241
|
}
|
|
3244
3242
|
}
|
|
3245
3243
|
getImg(id_file) {
|
|
3246
|
-
this.imgManager.getShopImg(id_file).pipe(take(1)).subscribe(
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3244
|
+
this.imgManager.getShopImg(id_file).pipe(take(1)).subscribe({
|
|
3245
|
+
next: (picture) => {
|
|
3246
|
+
if (!this.imgAlreadyExist(picture.id_file)) {
|
|
3247
|
+
// check the img is not already present
|
|
3248
|
+
this.picturesList.unshift(picture);
|
|
3249
|
+
this.length += 1;
|
|
3250
|
+
}
|
|
3251
|
+
},
|
|
3252
|
+
error: () => {
|
|
3253
|
+
this.alertService.openAlert(this.errorGetImg);
|
|
3251
3254
|
}
|
|
3252
|
-
}, error => {
|
|
3253
|
-
this.alertService.openAlert(this.errorGetImg);
|
|
3254
3255
|
});
|
|
3255
3256
|
}
|
|
3256
3257
|
imgAlreadyExist(id_file) {
|
|
@@ -3655,26 +3656,24 @@ class ImgSelectionComponent {
|
|
|
3655
3656
|
constructor(imgSelectionService) {
|
|
3656
3657
|
this.imgSelectionService = imgSelectionService;
|
|
3657
3658
|
this.imgManagerClosed = new EventEmitter();
|
|
3658
|
-
this.imgSelectedList =
|
|
3659
|
+
this.imgSelectedList$ = this.imgSelectionService.imgSelection$;
|
|
3659
3660
|
this.removingAll = false;
|
|
3660
3661
|
this.cancellingAll = false;
|
|
3661
3662
|
this.importingAll = false;
|
|
3662
3663
|
this.dragStart = false;
|
|
3663
3664
|
this.isLoading$ = this.imgSelectionService.imgSelectedListLoading$;
|
|
3665
|
+
this.vm$ = combineLatest({
|
|
3666
|
+
tableList: this.imgSelectedList$,
|
|
3667
|
+
isLoading: this.isLoading$
|
|
3668
|
+
});
|
|
3664
3669
|
this.trashPositionIndex = 0;
|
|
3665
3670
|
this.trashPositionLeft = '-5px';
|
|
3666
3671
|
}
|
|
3667
|
-
ngOnInit() {
|
|
3668
|
-
this.getImgSelected();
|
|
3669
|
-
}
|
|
3670
3672
|
init() {
|
|
3671
3673
|
this.removingAll = false;
|
|
3672
3674
|
this.cancellingAll = false;
|
|
3673
3675
|
this.importingAll = false;
|
|
3674
3676
|
}
|
|
3675
|
-
getImgSelected() {
|
|
3676
|
-
this.imgSelectedList = this.imgSelectionService.getImgSelection();
|
|
3677
|
-
}
|
|
3678
3677
|
removeImg(index) {
|
|
3679
3678
|
this.imgSelectionService.removeImgSelectedByIndex(index);
|
|
3680
3679
|
}
|
|
@@ -3688,10 +3687,10 @@ class ImgSelectionComponent {
|
|
|
3688
3687
|
}
|
|
3689
3688
|
}
|
|
3690
3689
|
ImgSelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ImgSelectionComponent, deps: [{ token: ImgSelectionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3691
|
-
ImgSelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ImgSelectionComponent, selector: "img-selection", inputs: { tabDisplayed: "tabDisplayed" }, outputs: { imgManagerClosed: "imgManagerClosed" }, ngImport: i0, template: "<div\n class=\"trash\"\n cdkDropList\n #unSelectList=\"cdkDropList\"\n (cdkDropListDropped)=\"removeImgFromSelection($event)\">\n <p>{{'ImgManager.ImgSelection.unselect' | translate}}</p>\n</div>\n\n<div\n class=\"img-selection\"\n [ngClass]=\"{'img-selection--visible' : imgSelectedList && imgSelectedList.length}\"\n
|
|
3690
|
+
ImgSelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ImgSelectionComponent, selector: "img-selection", inputs: { tabDisplayed: "tabDisplayed" }, outputs: { imgManagerClosed: "imgManagerClosed" }, ngImport: i0, template: "<div\n class=\"trash\"\n cdkDropList\n #unSelectList=\"cdkDropList\"\n (cdkDropListDropped)=\"removeImgFromSelection($event)\">\n <p>{{'ImgManager.ImgSelection.unselect' | translate}}</p>\n</div>\n\n<div\n class=\"img-selection\"\n *ngIf=\"(imgSelectedList$ | async) as imgSelectedList; else Loading\"\n [ngClass]=\"{'img-selection--visible' : imgSelectedList && imgSelectedList.length}\"\n\n >\n\n <div\n cdkDropList\n #selectionList=\"cdkDropList\"\n cdkDropListOrientation=\"horizontal\"\n class=\"list_img_selection\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListConnectedTo]=\"[unSelectList]\"\n >\n\n <div\n class=\"img_box\"\n *ngFor=\"let picture of imgSelectedList; let index = index\"\n cdkDrag\n (cdkDragStarted)=\"dragStart = true;\"\n (cdkDragEnded)=\"dragStart = false;\"\n >\n\n <img\n *ngIf=\"index < 1\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [title]=\"picture.display_name\"\n />\n\n <img\n *ngIf=\"index > 0\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '200'\"\n [title]=\"picture.display_name\"\n />\n\n <div class=\"delete-btn\" (click)=\"removeImg(index)\">{{'ImgManager.ImgSelection.deleteImg' | translate}}</div>\n\n <span class=\"drag__tooltips\">{{'ImgManager.ImgSelection.tooltips' | translate}}</span>\n\n </div>\n </div>\n</div>\n\n<!-- Loader -->\n<ng-template #Loading>\n <wz-loader></wz-loader>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: LoaderComponent, selector: "wz-loader", inputs: ["text", "small", "position"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: ImageSrcPipe, name: "imgSrc" }] });
|
|
3692
3691
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ImgSelectionComponent, decorators: [{
|
|
3693
3692
|
type: Component,
|
|
3694
|
-
args: [{ selector: 'img-selection', template: "<div\n class=\"trash\"\n cdkDropList\n #unSelectList=\"cdkDropList\"\n (cdkDropListDropped)=\"removeImgFromSelection($event)\">\n <p>{{'ImgManager.ImgSelection.unselect' | translate}}</p>\n</div>\n\n<div\n class=\"img-selection\"\n [ngClass]=\"{'img-selection--visible' : imgSelectedList && imgSelectedList.length}\"\n
|
|
3693
|
+
args: [{ selector: 'img-selection', template: "<div\n class=\"trash\"\n cdkDropList\n #unSelectList=\"cdkDropList\"\n (cdkDropListDropped)=\"removeImgFromSelection($event)\">\n <p>{{'ImgManager.ImgSelection.unselect' | translate}}</p>\n</div>\n\n<div\n class=\"img-selection\"\n *ngIf=\"(imgSelectedList$ | async) as imgSelectedList; else Loading\"\n [ngClass]=\"{'img-selection--visible' : imgSelectedList && imgSelectedList.length}\"\n\n >\n\n <div\n cdkDropList\n #selectionList=\"cdkDropList\"\n cdkDropListOrientation=\"horizontal\"\n class=\"list_img_selection\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListConnectedTo]=\"[unSelectList]\"\n >\n\n <div\n class=\"img_box\"\n *ngFor=\"let picture of imgSelectedList; let index = index\"\n cdkDrag\n (cdkDragStarted)=\"dragStart = true;\"\n (cdkDragEnded)=\"dragStart = false;\"\n >\n\n <img\n *ngIf=\"index < 1\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [title]=\"picture.display_name\"\n />\n\n <img\n *ngIf=\"index > 0\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '200'\"\n [title]=\"picture.display_name\"\n />\n\n <div class=\"delete-btn\" (click)=\"removeImg(index)\">{{'ImgManager.ImgSelection.deleteImg' | translate}}</div>\n\n <span class=\"drag__tooltips\">{{'ImgManager.ImgSelection.tooltips' | translate}}</span>\n\n </div>\n </div>\n</div>\n\n<!-- Loader -->\n<ng-template #Loading>\n <wz-loader></wz-loader>\n</ng-template>\n" }]
|
|
3695
3694
|
}], ctorParameters: function () { return [{ type: ImgSelectionService }]; }, propDecorators: { tabDisplayed: [{
|
|
3696
3695
|
type: Input
|
|
3697
3696
|
}], imgManagerClosed: [{
|
|
@@ -3699,21 +3698,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
3699
3698
|
}] } });
|
|
3700
3699
|
|
|
3701
3700
|
class WzImgManagerComponent {
|
|
3702
|
-
constructor(imgSelectionService, userSettingsService, canvaService, imgEventService, domService) {
|
|
3701
|
+
constructor(imgSelectionService, userSettingsService, canvaService, imgEventService, domService, uploadService) {
|
|
3703
3702
|
this.imgSelectionService = imgSelectionService;
|
|
3704
3703
|
this.userSettingsService = userSettingsService;
|
|
3705
3704
|
this.canvaService = canvaService;
|
|
3706
3705
|
this.imgEventService = imgEventService;
|
|
3707
3706
|
this.domService = domService;
|
|
3707
|
+
this.uploadService = uploadService;
|
|
3708
3708
|
this.showSelection = false;
|
|
3709
3709
|
this.imgManagerClosed = new EventEmitter();
|
|
3710
3710
|
this._multipleImgMode = false;
|
|
3711
3711
|
this._showImgManagerModule = false;
|
|
3712
3712
|
this.imgSelectionChange = this.imgSelectionService.imgSelection$;
|
|
3713
|
+
this.imageUploaded = this.uploadService.imageUploaded$;
|
|
3713
3714
|
this.close = false;
|
|
3714
3715
|
this.listDisplayed = false;
|
|
3715
3716
|
this.hideTab = false;
|
|
3716
|
-
console.log('WzImgManagerComponent');
|
|
3717
3717
|
}
|
|
3718
3718
|
// If forceToOpenCanva is true : Canva will open with the canvaService.expectedImgSizesChange
|
|
3719
3719
|
// If forceToOpenCanva is a WiziBlockMediaDto, Canva open immediatly
|
|
@@ -3746,7 +3746,6 @@ class WzImgManagerComponent {
|
|
|
3746
3746
|
}
|
|
3747
3747
|
}
|
|
3748
3748
|
ngOnInit() {
|
|
3749
|
-
console.log('WzImgManagerComponent');
|
|
3750
3749
|
this.imgSelectionService.setMultipleImgMode(this._multipleImgMode);
|
|
3751
3750
|
this.imgSelectionService.initImgSelectedList(null);
|
|
3752
3751
|
this.selectImgEvent = this.imgSelectionService.imgSelection$.subscribe(imgSelection => {
|
|
@@ -3842,12 +3841,12 @@ class WzImgManagerComponent {
|
|
|
3842
3841
|
this.listDisplayedEvent.unsubscribe();
|
|
3843
3842
|
}
|
|
3844
3843
|
}
|
|
3845
|
-
WzImgManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WzImgManagerComponent, deps: [{ token: ImgSelectionService }, { token: UserSettingsService }, { token: CanvaService }, { token: ImgEventService }, { token: DomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3846
|
-
WzImgManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: WzImgManagerComponent, selector: "wz-img-manager", inputs: { stateDisplayed: "stateDisplayed", showSelection: "showSelection", forceToOpenCanva: "forceToOpenCanva", multipleImgMode: "multipleImgMode", showImgManagerModule: "showImgManagerModule" }, outputs: { imgManagerClosed: "imgManagerClosed", imgSelectionChange: "imgSelectionChange" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ImgTabsComponent, selector: "img-tabs", inputs: ["multipleImgMode", "stateDisplayed", "listDisplayed"], outputs: ["imgManagerClosed", "currentTab", "switchDisplayWindow"] }, { kind: "component", type: ImgSelectionComponent, selector: "img-selection", inputs: ["tabDisplayed"], outputs: ["imgManagerClosed"] }] });
|
|
3844
|
+
WzImgManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WzImgManagerComponent, deps: [{ token: ImgSelectionService }, { token: UserSettingsService }, { token: CanvaService }, { token: ImgEventService }, { token: DomService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3845
|
+
WzImgManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: WzImgManagerComponent, selector: "wz-img-manager", inputs: { stateDisplayed: "stateDisplayed", showSelection: "showSelection", forceToOpenCanva: "forceToOpenCanva", multipleImgMode: "multipleImgMode", showImgManagerModule: "showImgManagerModule" }, outputs: { imgManagerClosed: "imgManagerClosed", imgSelectionChange: "imgSelectionChange", imageUploaded: "imageUploaded" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ImgTabsComponent, selector: "img-tabs", inputs: ["multipleImgMode", "stateDisplayed", "listDisplayed"], outputs: ["imgManagerClosed", "currentTab", "switchDisplayWindow"] }, { kind: "component", type: ImgSelectionComponent, selector: "img-selection", inputs: ["tabDisplayed"], outputs: ["imgManagerClosed"] }] });
|
|
3847
3846
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WzImgManagerComponent, decorators: [{
|
|
3848
3847
|
type: Component,
|
|
3849
3848
|
args: [{ selector: 'wz-img-manager', template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n" }]
|
|
3850
|
-
}], ctorParameters: function () { return [{ type: ImgSelectionService }, { type: UserSettingsService }, { type: CanvaService }, { type: ImgEventService }, { type: DomService }]; }, propDecorators: { stateDisplayed: [{
|
|
3849
|
+
}], ctorParameters: function () { return [{ type: ImgSelectionService }, { type: UserSettingsService }, { type: CanvaService }, { type: ImgEventService }, { type: DomService }, { type: UploadService }]; }, propDecorators: { stateDisplayed: [{
|
|
3851
3850
|
type: Input
|
|
3852
3851
|
}], showSelection: [{
|
|
3853
3852
|
type: Input
|
|
@@ -3864,6 +3863,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
3864
3863
|
args: ['document:keydown.escape', ['$event']]
|
|
3865
3864
|
}], imgSelectionChange: [{
|
|
3866
3865
|
type: Output
|
|
3866
|
+
}], imageUploaded: [{
|
|
3867
|
+
type: Output
|
|
3867
3868
|
}] } });
|
|
3868
3869
|
|
|
3869
3870
|
class SnackBarService {
|
|
@@ -4106,4 +4107,3 @@ class ImgManagerConfigDto {
|
|
|
4106
4107
|
|
|
4107
4108
|
export { ApiService, CanvaButtonApi, CanvaService, ImgApiDto, ImgManagerConfigDto, ImgManagerService, ImgSelectionService, RenamePictureService, WzImgManagerComponent, WzImgManagerModule };
|
|
4108
4109
|
//# sourceMappingURL=wizishop-img-manager.mjs.map
|
|
4109
|
-
//# sourceMappingURL=wizishop-img-manager.mjs.map
|