@recursyve/nice-ui-kit.v2 13.2.0-beta.108 → 13.2.0-beta.110
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/esm2020/lib/components/assets-carousel/assets-carousel.component.mjs +20 -11
- package/esm2020/lib/directives/chip-list/chip-list.directive.mjs +6 -1
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs +24 -10
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs +24 -10
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/lib/components/assets-carousel/assets-carousel.component.d.ts +3 -1
- package/package.json +1 -1
- package/src/lib/components/assets-carousel/assets-carousel.theme.scss +15 -7
|
@@ -25,8 +25,10 @@ export class NiceAssetsCarouselComponent {
|
|
|
25
25
|
this.accept = ["image/*"];
|
|
26
26
|
this.customActions = [];
|
|
27
27
|
this.multipleUpload = false;
|
|
28
|
+
this.visiblePreviewAsset = 4;
|
|
28
29
|
this.showAddAssetContainer = true;
|
|
29
30
|
this.activeChange = new EventEmitter();
|
|
31
|
+
this.removedAsset = new EventEmitter();
|
|
30
32
|
this.listStyle = { transform: "translateX(0px)" };
|
|
31
33
|
if (!this.options) {
|
|
32
34
|
this.options = {
|
|
@@ -75,7 +77,7 @@ export class NiceAssetsCarouselComponent {
|
|
|
75
77
|
}
|
|
76
78
|
set activeTranslationPosition(position) {
|
|
77
79
|
this._activeTranslationPosition = position;
|
|
78
|
-
this.listStyle.transform = `translateX(${position}
|
|
80
|
+
this.listStyle.transform = `translateX(calc((var(--nice-assets-carousel-asset-width) + var(--nice-assets-carousel-asset-gap)) * ${position}))`;
|
|
79
81
|
}
|
|
80
82
|
set activeAsset(position) {
|
|
81
83
|
if (position < 0) {
|
|
@@ -84,7 +86,9 @@ export class NiceAssetsCarouselComponent {
|
|
|
84
86
|
this._active = position;
|
|
85
87
|
this._activeAsset = this._assets[this._active];
|
|
86
88
|
this._lastAsset = this._active === this._assets.length - 1 || !this._assets.length;
|
|
87
|
-
this._shouldTransform
|
|
89
|
+
this._shouldTransform
|
|
90
|
+
= ((this.edit && this.showAddAssetContainer) && this._active >= (this.visiblePreviewAsset - 1))
|
|
91
|
+
|| this._active >= this.visiblePreviewAsset;
|
|
88
92
|
this.activeChange.emit(this._active);
|
|
89
93
|
}
|
|
90
94
|
writeValue(assets) {
|
|
@@ -105,7 +109,7 @@ export class NiceAssetsCarouselComponent {
|
|
|
105
109
|
this.activeAsset = this._active - 1;
|
|
106
110
|
}
|
|
107
111
|
if (this._activeTranslationPosition < 0) {
|
|
108
|
-
this.activeTranslationPosition = this._activeTranslationPosition +
|
|
112
|
+
this.activeTranslationPosition = this._activeTranslationPosition + 1;
|
|
109
113
|
}
|
|
110
114
|
}
|
|
111
115
|
clickRight() {
|
|
@@ -114,23 +118,23 @@ export class NiceAssetsCarouselComponent {
|
|
|
114
118
|
}
|
|
115
119
|
this.activeAsset = this._active + 1;
|
|
116
120
|
if (this._shouldTransform) {
|
|
117
|
-
this.activeTranslationPosition = this._activeTranslationPosition -
|
|
121
|
+
this.activeTranslationPosition = this._activeTranslationPosition - 1;
|
|
118
122
|
}
|
|
119
123
|
}
|
|
120
124
|
clickAsset(index) {
|
|
121
|
-
let visibleAssets = this.edit ? 2 :
|
|
125
|
+
let visibleAssets = (this.edit && this.showAddAssetContainer) ? (this.visiblePreviewAsset - 2) : (this.visiblePreviewAsset - 1);
|
|
122
126
|
if (index < visibleAssets) {
|
|
123
127
|
visibleAssets = index;
|
|
124
128
|
}
|
|
125
129
|
if (index >= 0) {
|
|
126
|
-
this.activeTranslationPosition = (index - visibleAssets) * -
|
|
130
|
+
this.activeTranslationPosition = (index - visibleAssets) * -1;
|
|
127
131
|
}
|
|
128
132
|
this.activeAsset = index;
|
|
129
133
|
}
|
|
130
134
|
async onFilesChange(event) {
|
|
131
135
|
const files = event.target?.files;
|
|
132
136
|
await this.onFilesDrop(files);
|
|
133
|
-
this.inputElement.nativeElement.
|
|
137
|
+
this.inputElement.nativeElement.value = "";
|
|
134
138
|
}
|
|
135
139
|
async onFilesDrop(files) {
|
|
136
140
|
if (!files?.length) {
|
|
@@ -160,6 +164,7 @@ export class NiceAssetsCarouselComponent {
|
|
|
160
164
|
}
|
|
161
165
|
}
|
|
162
166
|
clickRemove() {
|
|
167
|
+
this.removedAsset.emit(this._assets[this._active]);
|
|
163
168
|
this._assets.splice(this._active, 1);
|
|
164
169
|
if (this._lastAsset) {
|
|
165
170
|
this.clickAsset(this._assets.length - 1);
|
|
@@ -181,13 +186,13 @@ export class NiceAssetsCarouselComponent {
|
|
|
181
186
|
}
|
|
182
187
|
}
|
|
183
188
|
NiceAssetsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAssetsCarouselComponent, deps: [{ token: NICE_ASSETS_CAROUSEL_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
184
|
-
NiceAssetsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceAssetsCarouselComponent, selector: "nice-assets-carousel", inputs: { color: "color", edit: "edit", accept: "accept", customActions: "customActions", multipleUpload: "multipleUpload", showAddAssetContainer: "showAddAssetContainer", assets: "assets" }, outputs: { activeChange: "activeChange" }, providers: [
|
|
189
|
+
NiceAssetsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceAssetsCarouselComponent, selector: "nice-assets-carousel", inputs: { color: "color", edit: "edit", accept: "accept", customActions: "customActions", multipleUpload: "multipleUpload", visiblePreviewAsset: "visiblePreviewAsset", showAddAssetContainer: "showAddAssetContainer", assets: "assets" }, outputs: { activeChange: "activeChange", removedAsset: "removedAsset" }, providers: [
|
|
185
190
|
{
|
|
186
191
|
provide: NG_VALUE_ACCESSOR,
|
|
187
192
|
useExisting: forwardRef(() => NiceAssetsCarouselComponent),
|
|
188
193
|
multi: true
|
|
189
194
|
}
|
|
190
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "activeVideoElement", first: true, predicate: ["activeVideo"], descendants: true }, { propertyName: "assetsElement", predicate: ["assets"], descendants: true }], ngImport: i0, template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click(); $event.stopPropagation()\"\n >\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)
|
|
195
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "activeVideoElement", first: true, predicate: ["activeVideo"], descendants: true }, { propertyName: "assetsElement", predicate: ["assets"], descendants: true }], ngImport: i0, template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click(); $event.stopPropagation()\"\n >\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click(); $event.stopPropagation()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)\"\n >\n <mat-icon *ngIf=\"action.icon.matIcon\">{{ action.icon.matIcon }}</mat-icon>\n <mat-icon [svgIcon]=\"action.icon.svgIcon\" *ngIf=\"action.icon.svgIcon\"></mat-icon>\n <span>{{ action.name | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"clickRemove()\">\n <mat-icon *ngIf=\"options.actionButtons.remove.matIcon\">{{ options.actionButtons.remove.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.remove.svgIcon\" [svgIcon]=\"options.actionButtons.remove.svgIcon\"></mat-icon>\n <span>{{ \"nice_ui_kit.assets_carousel.delete\" | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <div class=\"carousel\">\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button left-arrow\" mat-icon-button [disabled]=\"!_active\" (click)=\"clickLeft()\">\n <mat-icon *ngIf=\"options.leftArrow.matIcon\">{{ options.leftArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.leftArrow.svgIcon\" [svgIcon]=\"options.leftArrow.svgIcon\"></mat-icon>\n </button>\n <div class=\"asset-list-container\">\n <div *ngIf=\"showAddAssetContainer && edit\" class=\"add-asset-container\">\n <div class=\"add-asset\" matRipple (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.addPhoto.matIcon\">{{ options.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.addPhoto.svgIcon\" [svgIcon]=\"options.addPhoto.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div class=\"asset-list\" [ngStyle]=\"listStyle\">\n <div #assets class=\"asset\" *ngFor=\"let asset of _assets; let i = index\" (click)=\"clickAsset(i)\" [ngClass]=\"color\" [class.active]=\"_active === i\">\n <img *ngIf=\"asset.type === 'image'\" draggable=\"false\" [src]=\"asset.url ?? asset.base64\" alt=\"add-image\">\n <video *ngIf=\"asset.type === 'video'\" draggable=\"false\" loop [src]=\"asset.url ?? asset.base64\"></video>\n </div>\n </div>\n </div>\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button right-arrow\" mat-icon-button [disabled]=\"_lastAsset\" (click)=\"clickRight()\">\n <mat-icon *ngIf=\"options.rightArrow.matIcon\">{{ options.rightArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.rightArrow.svgIcon\" [svgIcon]=\"options.rightArrow.svgIcon\"></mat-icon>\n </button>\n </div>\n</div>\n\n<input #fileInput type=\"file\" hidden [accept]=\"accept\" (change)=\"onFilesChange($event)\" [multiple]=\"multipleUpload\">\n", styles: [":root{--nice-assets-carousel-asset-width: 90px;--nice-assets-carousel-asset-height: 60px;--nice-assets-carousel-asset-gap: .75rem}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i4.NiceDropzoneDirective, selector: "[niceDropzone]", outputs: ["filesDropped"] }, { type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i7.TranslatePipe }, animations: niceAnimations, encapsulation: i0.ViewEncapsulation.None });
|
|
191
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAssetsCarouselComponent, decorators: [{
|
|
192
197
|
type: Component,
|
|
193
198
|
args: [{ selector: "nice-assets-carousel", encapsulation: ViewEncapsulation.None, animations: niceAnimations, providers: [
|
|
@@ -196,7 +201,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
196
201
|
useExisting: forwardRef(() => NiceAssetsCarouselComponent),
|
|
197
202
|
multi: true
|
|
198
203
|
}
|
|
199
|
-
], template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click(); $event.stopPropagation()\"\n >\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)
|
|
204
|
+
], template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click(); $event.stopPropagation()\"\n >\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click(); $event.stopPropagation()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)\"\n >\n <mat-icon *ngIf=\"action.icon.matIcon\">{{ action.icon.matIcon }}</mat-icon>\n <mat-icon [svgIcon]=\"action.icon.svgIcon\" *ngIf=\"action.icon.svgIcon\"></mat-icon>\n <span>{{ action.name | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"clickRemove()\">\n <mat-icon *ngIf=\"options.actionButtons.remove.matIcon\">{{ options.actionButtons.remove.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.remove.svgIcon\" [svgIcon]=\"options.actionButtons.remove.svgIcon\"></mat-icon>\n <span>{{ \"nice_ui_kit.assets_carousel.delete\" | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <div class=\"carousel\">\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button left-arrow\" mat-icon-button [disabled]=\"!_active\" (click)=\"clickLeft()\">\n <mat-icon *ngIf=\"options.leftArrow.matIcon\">{{ options.leftArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.leftArrow.svgIcon\" [svgIcon]=\"options.leftArrow.svgIcon\"></mat-icon>\n </button>\n <div class=\"asset-list-container\">\n <div *ngIf=\"showAddAssetContainer && edit\" class=\"add-asset-container\">\n <div class=\"add-asset\" matRipple (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.addPhoto.matIcon\">{{ options.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.addPhoto.svgIcon\" [svgIcon]=\"options.addPhoto.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div class=\"asset-list\" [ngStyle]=\"listStyle\">\n <div #assets class=\"asset\" *ngFor=\"let asset of _assets; let i = index\" (click)=\"clickAsset(i)\" [ngClass]=\"color\" [class.active]=\"_active === i\">\n <img *ngIf=\"asset.type === 'image'\" draggable=\"false\" [src]=\"asset.url ?? asset.base64\" alt=\"add-image\">\n <video *ngIf=\"asset.type === 'video'\" draggable=\"false\" loop [src]=\"asset.url ?? asset.base64\"></video>\n </div>\n </div>\n </div>\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button right-arrow\" mat-icon-button [disabled]=\"_lastAsset\" (click)=\"clickRight()\">\n <mat-icon *ngIf=\"options.rightArrow.matIcon\">{{ options.rightArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.rightArrow.svgIcon\" [svgIcon]=\"options.rightArrow.svgIcon\"></mat-icon>\n </button>\n </div>\n</div>\n\n<input #fileInput type=\"file\" hidden [accept]=\"accept\" (change)=\"onFilesChange($event)\" [multiple]=\"multipleUpload\">\n", styles: [":root{--nice-assets-carousel-asset-width: 90px;--nice-assets-carousel-asset-height: 60px;--nice-assets-carousel-asset-gap: .75rem}\n"] }]
|
|
200
205
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
201
206
|
type: Optional
|
|
202
207
|
}, {
|
|
@@ -215,10 +220,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
215
220
|
type: Input
|
|
216
221
|
}], multipleUpload: [{
|
|
217
222
|
type: Input
|
|
223
|
+
}], visiblePreviewAsset: [{
|
|
224
|
+
type: Input
|
|
218
225
|
}], showAddAssetContainer: [{
|
|
219
226
|
type: Input
|
|
220
227
|
}], activeChange: [{
|
|
221
228
|
type: Output
|
|
229
|
+
}], removedAsset: [{
|
|
230
|
+
type: Output
|
|
222
231
|
}], activeVideoElement: [{
|
|
223
232
|
type: ViewChild,
|
|
224
233
|
args: ["activeVideo"]
|
|
@@ -228,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
228
237
|
}], assets: [{
|
|
229
238
|
type: Input
|
|
230
239
|
}] } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3NldHMtY2Fyb3VzZWwvYXNzZXRzLWNhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3NldHMtY2Fyb3VzZWwvYXNzZXRzLWNhcm91c2VsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQUUsU0FBUyxFQUNqQixTQUFTLEVBQUUsWUFBWSxFQUN2QixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUE0QzFFLE1BQU0sT0FBTywyQkFBMkI7SUFtRnBDLFlBQThFLE9BQWtDO1FBQWxDLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBbEZ6RywrQkFBMEIsR0FBRyxDQUFDLENBQUM7UUFDL0IsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBRTNCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR3pCLGlCQUFZLEdBQWlCLFNBQVMsQ0FBQztRQU12QyxVQUFL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LEtBQUs7Z0JBSUMscUJBQXFCO3NCQUQzQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLE1BQU07Z0JBVUksa0JBQWtCO3NCQUQ1QixTQUFTO3VCQUFDLGFBQWE7Z0JBV2IsYUFBYTtzQkFEdkIsWUFBWTt1QkFBQyxRQUFRO2dCQVdYLE1BQU07c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBDYW5Db2xvciwgVGhlbWVQYWxldHRlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IG5pY2VBbmltYXRpb25zIH0gZnJvbSBcIi4uLy4uL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IEZpbGVVdGlscyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgTklDRV9BU1NFVFNfQ0FST1VTRUxfT1BUSU9OUyB9IGZyb20gXCIuL2Fzc2V0cy1jYXJvdXNlbC5jb25zdGFudFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5pY2VBc3NldHMge1xuICAgIHR5cGU6IFwiaW1hZ2VcIiB8IFwidmlkZW9cIjtcbiAgICBpZD86IG51bWJlciB8IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgYmFzZTY0Pzogc3RyaW5nO1xuICAgIGZpbGU/OiBGaWxlO1xufVxuXG5leHBvcnQgdHlwZSBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uID0geyBtYXRJY29uOiBzdHJpbmc7IHN2Z0ljb24/OiBzdHJpbmc7IH0gfCB7IG1hdEljb24/OiBzdHJpbmc7IHN2Z0ljb246IHN0cmluZzsgfTtcblxuZXhwb3J0IGludGVyZmFjZSBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25zIHtcbiAgICBpY29uOiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3Rpb246IChhY3RpdmU6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOaWNlQXNzZXRzQ2Fyb3VzZWxPcHRpb25zIHtcbiAgICBhY3Rpb25CdXR0b25zPzoge1xuICAgICAgICBtb3JlT3B0aW9ucz86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG4gICAgICAgIGFkZFBob3RvPzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICAgICAgcmVtb3ZlPzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICB9O1xuICAgIGFkZFBob3RvPzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICBsZWZ0QXJyb3c/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgIHJpZ2h0QXJyb3c/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgIHVwbG9hZD86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtYXNzZXRzLWNhcm91c2VsXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiYXNzZXRzLWNhcm91c2VsLnRlbXBsYXRlLmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcImFzc2V0cy1jYXJvdXNlbC50aGVtZS5zY3NzXCJdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogbmljZUFuaW1hdGlvbnMsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmljZUFzc2V0c0Nhcm91c2VsQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VBc3NldHNDYXJvdXNlbENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBDYW5Db2xvciB7XG4gICAgcHVibGljIF9hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uID0gMDtcbiAgICBwdWJsaWMgX2FjdGl2ZSA9IDA7XG4gICAgcHVibGljIF9hc3NldHM6IE5pY2VBc3NldHNbXSA9IFtdO1xuICAgIHB1YmxpYyBfYWN0aXZlQXNzZXQ6IE5pY2VBc3NldHM7XG4gICAgcHVibGljIF9sYXN0QXNzZXQgPSB0cnVlO1xuICAgIHB1YmxpYyBfc2hvdWxkVHJhbnNmb3JtID0gZmFsc2U7XG4gICAgcHVibGljIF9hY3RpdmVWaWRlb0VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG4gICAgcHVibGljIF9hc3NldHNFbGVtZW50OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuICAgIHB1YmxpYyBkZWZhdWx0Q29sb3I6IFRoZW1lUGFsZXR0ZSA9IFwicHJpbWFyeVwiO1xuXG4gICAgQFZpZXdDaGlsZChcImZpbGVJbnB1dFwiKVxuICAgIHB1YmxpYyBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xvcjogVGhlbWVQYWxldHRlID0gdGhpcy5kZWZhdWx0Q29sb3I7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlZGl0ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHQ6IHN0cmluZ1tdID0gW1wiaW1hZ2UvKlwiXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUFjdGlvbnM6IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbnNbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGVVcGxvYWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dBZGRBc3NldENvbnRhaW5lciA9IHRydWU7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBwdWJsaWMgbGlzdFN0eWxlOiB7IHRyYW5zZm9ybTogc3RyaW5nIH0gPSB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDBweClcIiB9O1xuXG4gICAgcHVibGljIHNob3dPdmVybGF5OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGU6IChhc3NldHM6IE5pY2VBc3NldHNbXSkgPT4gdm9pZDtcblxuICAgIEBWaWV3Q2hpbGQoXCJhY3RpdmVWaWRlb1wiKVxuICAgIHB1YmxpYyBzZXQgYWN0aXZlVmlkZW9FbGVtZW50KGFjdGl2ZVZpZGVvRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50Pikge1xuICAgICAgICB0aGlzLl9hY3RpdmVWaWRlb0VsZW1lbnQgPSBhY3RpdmVWaWRlb0VsZW1lbnQ7XG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlVmlkZW9FbGVtZW50IHx8ICF0aGlzLl9hc3NldHNFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXJ0U3luY1ZpZGVvKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZHJlbihcImFzc2V0c1wiKVxuICAgIHB1YmxpYyBzZXQgYXNzZXRzRWxlbWVudChhc3NldHNFbGVtZW50OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KSB7XG4gICAgICAgIHRoaXMuX2Fzc2V0c0VsZW1lbnQgPSBhc3NldHNFbGVtZW50O1xuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZVZpZGVvRWxlbWVudCB8fCAhdGhpcy5fYXNzZXRzRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGFydFN5bmNWaWRlbygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhc3NldHMoYXNzZXRzOiBOaWNlQXNzZXRzW10pIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKGFzc2V0cyA/PyBbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXQgYWN0aXZlVHJhbnNsYXRpb25Qb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgdGhpcy5saXN0U3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtwb3NpdGlvbn1weClgO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0IGFjdGl2ZUFzc2V0KHBvc2l0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgICAgcG9zaXRpb24gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlID0gcG9zaXRpb247XG4gICAgICAgIHRoaXMuX2FjdGl2ZUFzc2V0ID0gdGhpcy5fYXNzZXRzW3RoaXMuX2FjdGl2ZV07XG4gICAgICAgIHRoaXMuX2xhc3RBc3NldCA9IHRoaXMuX2FjdGl2ZSA9PT0gdGhpcy5fYXNzZXRzLmxlbmd0aCAtIDEgfHwgIXRoaXMuX2Fzc2V0cy5sZW5ndGg7XG4gICAgICAgIHRoaXMuX3Nob3VsZFRyYW5zZm9ybSA9ICh0aGlzLmVkaXQgJiYgdGhpcy5fYWN0aXZlID49IDMpIHx8IHRoaXMuX2FjdGl2ZSA+PSA0O1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChOSUNFX0FTU0VUU19DQVJPVVNFTF9PUFRJT05TKSBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogTmljZUFzc2V0c0Nhcm91c2VsT3B0aW9ucykge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGFjdGlvbkJ1dHRvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkUGhvdG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwicGhvdG9fY2FtZXJhXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9yZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwibW9yZV92ZXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJY29uOiBcImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFkZFBob3RvOiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwicGhvdG9fY2FtZXJhXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxlZnRBcnJvdzoge1xuICAgICAgICAgICAgICAgICAgICBtYXRJY29uOiBcImNoZXZyb25fbGVmdFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByaWdodEFycm93OiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwiY2hldnJvbl9yaWdodFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1cGxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgbWF0SWNvbjogXCJmaWxlX3VwbG9hZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKGFzc2V0czogTmljZUFzc2V0c1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Fzc2V0cyA9IGFzc2V0cyA/PyBbXTtcbiAgICAgICAgaWYgKHRoaXMuX2Fzc2V0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVBc3NldCA9IHRoaXMuX2Fzc2V0c1t0aGlzLl9hY3RpdmVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbGFzdEFzc2V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoYXNzZXRzOiBOaWNlQXNzZXRzW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IChhc3NldHM6IE5pY2VBc3NldHNbXSkgPT4gdm9pZCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBjbGlja0xlZnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQXNzZXQgPSB0aGlzLl9hY3RpdmUgLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSB0aGlzLl9hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uICsgMTAyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrUmlnaHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9sYXN0QXNzZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlQXNzZXQgPSB0aGlzLl9hY3RpdmUgKyAxO1xuICAgICAgICBpZiAodGhpcy5fc2hvdWxkVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSB0aGlzLl9hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uIC0gMTAyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrQXNzZXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgdmlzaWJsZUFzc2V0cyA9IHRoaXMuZWRpdCA/IDIgOiAzO1xuICAgICAgICBpZiAoaW5kZXggPCB2aXNpYmxlQXNzZXRzKSB7XG4gICAgICAgICAgICB2aXNpYmxlQXNzZXRzID0gaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uID0gKGluZGV4IC0gdmlzaWJsZUFzc2V0cykgKiAtMTAyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVBc3NldCA9IGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvbkZpbGVzQ2hhbmdlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWxlcyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LmZpbGVzO1xuICAgICAgICBhd2FpdCB0aGlzLm9uRmlsZXNEcm9wKGZpbGVzKTtcblxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZpbGVzID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25GaWxlc0Ryb3AoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld0Fzc2V0c0FkZGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFjY2VwdC5zb21lKChhY2NlcHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0LmVuZHNXaXRoKFwiKlwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgoYWNjZXB0LnJlcGxhY2UoXCIqXCIsIFwiXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjZXB0ID09PSBmaWxlLnR5cGU7XG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBuZXdBc3NldHNBZGRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9hc3NldHMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUuc3BsaXQoXCIvXCIpLnNoaWZ0KCkgYXMgXCJpbWFnZVwiIHwgXCJ2aWRlb1wiLFxuICAgICAgICAgICAgICAgIGJhc2U2NDogYXdhaXQgRmlsZVV0aWxzLmdldERhdGFVcmwoZmlsZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0Fzc2V0c0FkZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrQXNzZXQodGhpcy5fYXNzZXRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGU/Lih0aGlzLl9hc3NldHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrUmVtb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hc3NldHMuc3BsaWNlKHRoaXMuX2FjdGl2ZSwgMSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2xhc3RBc3NldCkge1xuICAgICAgICAgICAgdGhpcy5jbGlja0Fzc2V0KHRoaXMuX2Fzc2V0cy5sZW5ndGggLSAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tBc3NldCh0aGlzLl9hY3RpdmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9wYWdhdGU/Lih0aGlzLl9hc3NldHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja0N1c3RvbShhY3Rpb246IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgYWN0aW9uLmFjdGlvbih0aGlzLl9hY3RpdmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydFN5bmNWaWRlbygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgKHRoaXMuX2Fzc2V0c0VsZW1lbnQuZ2V0KHRoaXMuX2FjdGl2ZSkubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MVmlkZW9FbGVtZW50KS5wYXVzZSgpO1xuICAgICAgICAodGhpcy5fYXNzZXRzRWxlbWVudC5nZXQodGhpcy5fYWN0aXZlKS5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxWaWRlb0VsZW1lbnQpLmN1cnJlbnRUaW1lID0gMDtcblxuICAgICAgICB0aGlzLl9hY3RpdmVWaWRlb0VsZW1lbnQubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSA9IDA7XG4gICAgICAgIGF3YWl0IHRoaXMuX2FjdGl2ZVZpZGVvRWxlbWVudC5uYXRpdmVFbGVtZW50LnBsYXkoKTtcbiAgICAgICAgYXdhaXQgKHRoaXMuX2Fzc2V0c0VsZW1lbnQuZ2V0KHRoaXMuX2FjdGl2ZSkubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MVmlkZW9FbGVtZW50KS5wbGF5KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcm91c2VsLWNvbnRhaW5lclwiIG5pY2VEcm9wem9uZSAoZmlsZXNEcm9wcGVkKT1cIm9uRmlsZXNEcm9wKCRldmVudClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aXZlLWltYWdlXCJcbiAgICAgICAgIG1hdFJpcHBsZVxuICAgICAgICAgW2NsYXNzLmVtcHR5LXN0YXRlXT1cIiFfYWN0aXZlQXNzZXRcIlxuICAgICAgICAgKGNsaWNrKT1cImVkaXQgJiYgZmlsZUlucHV0LmNsaWNrKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdJZj1cIl9hY3RpdmVBc3NldD8udHlwZSA9PT0gJ2ltYWdlJ1wiXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cInNob3dPdmVybGF5PXRydWVcIlxuICAgICAgICAgICAgW3NyY109XCJfYWN0aXZlQXNzZXQudXJsID8/IF9hY3RpdmVBc3NldC5iYXNlNjRcIlxuICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICBhbHQ9XCJhY3RpdmUtaW1hZ2VcIlxuICAgICAgICA+XG4gICAgICAgIDx2aWRlbyAjYWN0aXZlVmlkZW8gKm5nSWY9XCJfYWN0aXZlQXNzZXQ/LnR5cGUgPT09ICd2aWRlbydcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIGxvb3AgW3NyY109XCJfYWN0aXZlQXNzZXQudXJsID8/IF9hY3RpdmVBc3NldC5iYXNlNjRcIj48L3ZpZGVvPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZS1jb250ZW50XCIgKm5nSWY9XCIhX2FjdGl2ZUFzc2V0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLnVwbG9hZC5tYXRJY29uXCI+e3sgb3B0aW9ucy51cGxvYWQubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLnVwbG9hZC5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy51cGxvYWQuc3ZnSWNvblwiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAge3sgXCJuaWNlX3VpX2tpdC5hc3NldHNfY2Fyb3VzZWwudXBsb2FkX2hlcmVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJfYWN0aXZlQXNzZXQgJiYgc2hvd092ZXJsYXkgJiYgZWRpdFwiIGNsYXNzPVwiYWN0aXZlLWltYWdlLW92ZXJsYXlcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAobW91c2VvdXQpPVwic2hvd092ZXJsYXk9ZmFsc2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdy1mdWxsIGgtZnVsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy51cGxvYWQubWF0SWNvblwiPnt7IG9wdGlvbnMudXBsb2FkLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMudXBsb2FkLnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLnVwbG9hZC5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdFwiIGNsYXNzPVwiYWN0aXZlLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5hZGRQaG90by5tYXRJY29uXCI+e3sgb3B0aW9ucy5hY3Rpb25CdXR0b25zLmFkZFBob3RvLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5hZGRQaG90by5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLmFkZFBob3RvLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYXNzZXRBY3Rpb25zXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFtkaXNhYmxlZF09XCIhX2FjdGl2ZUFzc2V0XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLm1vcmVPcHRpb25zLm1hdEljb25cIj57eyBvcHRpb25zLmFjdGlvbkJ1dHRvbnMubW9yZU9wdGlvbnMubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLm1vcmVPcHRpb25zLnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMubW9yZU9wdGlvbnMuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1tZW51IGNsYXNzPVwibmljZS1hc3NldC1vcHRpb25zLW1lbnVcIiBbeFBvc2l0aW9uXT1cIidiZWZvcmUnXCIgI2Fzc2V0QWN0aW9ucz1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjdXN0b21BY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrQ3VzdG9tKGFjdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJhY3Rpb24uaWNvbi5tYXRJY29uXCI+e3sgYWN0aW9uLmljb24ubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJhY3Rpb24uaWNvbi5zdmdJY29uXCIgKm5nSWY9XCJhY3Rpb24uaWNvbi5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aW9uLm5hbWUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjbGlja1JlbW92ZSgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLnJlbW92ZS5tYXRJY29uXCI+e3sgb3B0aW9ucy5hY3Rpb25CdXR0b25zLnJlbW92ZS5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLnJlbW92ZS5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLnJlbW92ZS5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgXCJuaWNlX3VpX2tpdC5hc3NldHNfY2Fyb3VzZWwuZGVsZXRlXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbFwiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0FkZEFzc2V0Q29udGFpbmVyIHx8IF9hY3RpdmVBc3NldFwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvbiBsZWZ0LWFycm93XCIgbWF0LWljb24tYnV0dG9uIFtkaXNhYmxlZF09XCIhX2FjdGl2ZVwiIChjbGljayk9XCJjbGlja0xlZnQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5sZWZ0QXJyb3cubWF0SWNvblwiPnt7IG9wdGlvbnMubGVmdEFycm93Lm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXJyb3dzXCIgKm5nSWY9XCJvcHRpb25zLmxlZnRBcnJvdy5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy5sZWZ0QXJyb3cuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXQtbGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWRkQXNzZXRDb250YWluZXIgJiYgZWRpdFwiIGNsYXNzPVwiYWRkLWFzc2V0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtYXNzZXRcIiBtYXRSaXBwbGUgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWRkUGhvdG8ubWF0SWNvblwiPnt7IG9wdGlvbnMuYWRkUGhvdG8ubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWRkUGhvdG8uc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMuYWRkUGhvdG8uc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2V0LWxpc3RcIiBbbmdTdHlsZV09XCJsaXN0U3R5bGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNhc3NldHMgY2xhc3M9XCJhc3NldFwiICpuZ0Zvcj1cImxldCBhc3NldCBvZiBfYXNzZXRzOyBsZXQgaSA9IGluZGV4XCIgKGNsaWNrKT1cImNsaWNrQXNzZXQoaSlcIiBbbmdDbGFzc109XCJjb2xvclwiIFtjbGFzcy5hY3RpdmVdPVwiX2FjdGl2ZSA9PT0gaVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiYXNzZXQudHlwZSA9PT0gJ2ltYWdlJ1wiIGRyYWdnYWJsZT1cImZhbHNlXCIgW3NyY109XCJhc3NldC51cmwgPz8gYXNzZXQuYmFzZTY0XCIgYWx0PVwiYWRkLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2aWRlbyAqbmdJZj1cImFzc2V0LnR5cGUgPT09ICd2aWRlbydcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIGxvb3AgW3NyY109XCJhc3NldC51cmwgPz8gYXNzZXQuYmFzZTY0XCI+PC92aWRlbz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dBZGRBc3NldENvbnRhaW5lciB8fCBfYWN0aXZlQXNzZXRcIiBjbGFzcz1cImFjdGlvbi1idXR0b24gcmlnaHQtYXJyb3dcIiBtYXQtaWNvbi1idXR0b24gW2Rpc2FibGVkXT1cIl9sYXN0QXNzZXRcIiAoY2xpY2spPVwiY2xpY2tSaWdodCgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLnJpZ2h0QXJyb3cubWF0SWNvblwiPnt7IG9wdGlvbnMucmlnaHRBcnJvdy5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFycm93c1wiICpuZ0lmPVwib3B0aW9ucy5yaWdodEFycm93LnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLnJpZ2h0QXJyb3cuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxpbnB1dCAjZmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgaGlkZGVuIFthY2NlcHRdPVwiYWNjZXB0XCIgKGNoYW5nZSk9XCJvbkZpbGVzQ2hhbmdlKCRldmVudClcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVVcGxvYWRcIj5cbiJdfQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3NldHMtY2Fyb3VzZWwvYXNzZXRzLWNhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3NldHMtY2Fyb3VzZWwvYXNzZXRzLWNhcm91c2VsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQUUsU0FBUyxFQUNqQixTQUFTLEVBQUUsWUFBWSxFQUN2QixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUE0QzFFLE1BQU0sT0FBTywyQkFBMkI7SUEyRnBDLFlBQThFLE9BQWtDO1FBQWxDLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBMUZ6RywrQkFBMEIsR0FBRyxDQUFDLENBQUM7UUFDL0IsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBRTNCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR3pCLGlCQUFZLEdBQWlCLFNBQVMsQ0FBQztRQU12QyxVQUFL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QixpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLGNBQWMsYUFDZjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQzs0QkFDMUQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7OzBCQTZGWSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDRCQUE0Qjs0Q0EvRXJELFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsV0FBVztnQkFJZixLQUFLO3NCQURYLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsbUJBQW1CO3NCQUR6QixLQUFLO2dCQUlDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFJQyxZQUFZO3NCQURsQixNQUFNO2dCQUlBLFlBQVk7c0JBRGxCLE1BQU07Z0JBVUksa0JBQWtCO3NCQUQ1QixTQUFTO3VCQUFDLGFBQWE7Z0JBV2IsYUFBYTtzQkFEdkIsWUFBWTt1QkFBQyxRQUFRO2dCQVdYLE1BQU07c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBDYW5Db2xvciwgVGhlbWVQYWxldHRlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IG5pY2VBbmltYXRpb25zIH0gZnJvbSBcIi4uLy4uL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IEZpbGVVdGlscyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgTklDRV9BU1NFVFNfQ0FST1VTRUxfT1BUSU9OUyB9IGZyb20gXCIuL2Fzc2V0cy1jYXJvdXNlbC5jb25zdGFudFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5pY2VBc3NldHMge1xuICAgIHR5cGU6IFwiaW1hZ2VcIiB8IFwidmlkZW9cIjtcbiAgICBpZD86IG51bWJlciB8IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgYmFzZTY0Pzogc3RyaW5nO1xuICAgIGZpbGU/OiBGaWxlO1xufVxuXG5leHBvcnQgdHlwZSBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uID0geyBtYXRJY29uOiBzdHJpbmc7IHN2Z0ljb24/OiBzdHJpbmc7IH0gfCB7IG1hdEljb24/OiBzdHJpbmc7IHN2Z0ljb246IHN0cmluZzsgfTtcblxuZXhwb3J0IGludGVyZmFjZSBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25zIHtcbiAgICBpY29uOiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3Rpb246IChhY3RpdmU6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOaWNlQXNzZXRzQ2Fyb3VzZWxPcHRpb25zIHtcbiAgICBhY3Rpb25CdXR0b25zPzoge1xuICAgICAgICBtb3JlT3B0aW9ucz86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG4gICAgICAgIGFkZFBob3RvPzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICAgICAgcmVtb3ZlPzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICB9O1xuICAgIGFkZFBob3RvPzogTmljZUFzc2V0c0Nhcm91c2VsQWN0aW9uSWNvbjtcbiAgICBsZWZ0QXJyb3c/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgIHJpZ2h0QXJyb3c/OiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25JY29uO1xuICAgIHVwbG9hZD86IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbkljb247XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtYXNzZXRzLWNhcm91c2VsXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiYXNzZXRzLWNhcm91c2VsLnRlbXBsYXRlLmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcImFzc2V0cy1jYXJvdXNlbC50aGVtZS5zY3NzXCJdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogbmljZUFuaW1hdGlvbnMsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmljZUFzc2V0c0Nhcm91c2VsQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VBc3NldHNDYXJvdXNlbENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBDYW5Db2xvciB7XG4gICAgcHVibGljIF9hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uID0gMDtcbiAgICBwdWJsaWMgX2FjdGl2ZSA9IDA7XG4gICAgcHVibGljIF9hc3NldHM6IE5pY2VBc3NldHNbXSA9IFtdO1xuICAgIHB1YmxpYyBfYWN0aXZlQXNzZXQ6IE5pY2VBc3NldHM7XG4gICAgcHVibGljIF9sYXN0QXNzZXQgPSB0cnVlO1xuICAgIHB1YmxpYyBfc2hvdWxkVHJhbnNmb3JtID0gZmFsc2U7XG4gICAgcHVibGljIF9hY3RpdmVWaWRlb0VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG4gICAgcHVibGljIF9hc3NldHNFbGVtZW50OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuICAgIHB1YmxpYyBkZWZhdWx0Q29sb3I6IFRoZW1lUGFsZXR0ZSA9IFwicHJpbWFyeVwiO1xuXG4gICAgQFZpZXdDaGlsZChcImZpbGVJbnB1dFwiKVxuICAgIHB1YmxpYyBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xvcjogVGhlbWVQYWxldHRlID0gdGhpcy5kZWZhdWx0Q29sb3I7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlZGl0ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHQ6IHN0cmluZ1tdID0gW1wiaW1hZ2UvKlwiXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUFjdGlvbnM6IE5pY2VBc3NldHNDYXJvdXNlbEFjdGlvbnNbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGVVcGxvYWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpc2libGVQcmV2aWV3QXNzZXQgPSA0O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0FkZEFzc2V0Q29udGFpbmVyID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZW1vdmVkQXNzZXQgPSBuZXcgRXZlbnRFbWl0dGVyPE5pY2VBc3NldHM+KCk7XG5cbiAgICBwdWJsaWMgbGlzdFN0eWxlOiB7IHRyYW5zZm9ybTogc3RyaW5nIH0gPSB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDBweClcIiB9O1xuXG4gICAgcHVibGljIHNob3dPdmVybGF5OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGU6IChhc3NldHM6IE5pY2VBc3NldHNbXSkgPT4gdm9pZDtcblxuICAgIEBWaWV3Q2hpbGQoXCJhY3RpdmVWaWRlb1wiKVxuICAgIHB1YmxpYyBzZXQgYWN0aXZlVmlkZW9FbGVtZW50KGFjdGl2ZVZpZGVvRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50Pikge1xuICAgICAgICB0aGlzLl9hY3RpdmVWaWRlb0VsZW1lbnQgPSBhY3RpdmVWaWRlb0VsZW1lbnQ7XG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlVmlkZW9FbGVtZW50IHx8ICF0aGlzLl9hc3NldHNFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXJ0U3luY1ZpZGVvKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZHJlbihcImFzc2V0c1wiKVxuICAgIHB1YmxpYyBzZXQgYXNzZXRzRWxlbWVudChhc3NldHNFbGVtZW50OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KSB7XG4gICAgICAgIHRoaXMuX2Fzc2V0c0VsZW1lbnQgPSBhc3NldHNFbGVtZW50O1xuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZVZpZGVvRWxlbWVudCB8fCAhdGhpcy5fYXNzZXRzRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGFydFN5bmNWaWRlbygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhc3NldHMoYXNzZXRzOiBOaWNlQXNzZXRzW10pIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKGFzc2V0cyA/PyBbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXQgYWN0aXZlVHJhbnNsYXRpb25Qb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgdGhpcy5saXN0U3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoY2FsYygodmFyKC0tbmljZS1hc3NldHMtY2Fyb3VzZWwtYXNzZXQtd2lkdGgpICsgdmFyKC0tbmljZS1hc3NldHMtY2Fyb3VzZWwtYXNzZXQtZ2FwKSkgKiAke3Bvc2l0aW9ufSkpYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBhY3RpdmVBc3NldChwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHBvc2l0aW9uO1xuICAgICAgICB0aGlzLl9hY3RpdmVBc3NldCA9IHRoaXMuX2Fzc2V0c1t0aGlzLl9hY3RpdmVdO1xuICAgICAgICB0aGlzLl9sYXN0QXNzZXQgPSB0aGlzLl9hY3RpdmUgPT09IHRoaXMuX2Fzc2V0cy5sZW5ndGggLSAxIHx8ICF0aGlzLl9hc3NldHMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9zaG91bGRUcmFuc2Zvcm1cbiAgICAgICAgICAgID0gKCh0aGlzLmVkaXQgJiYgdGhpcy5zaG93QWRkQXNzZXRDb250YWluZXIpICYmIHRoaXMuX2FjdGl2ZSA+PSAodGhpcy52aXNpYmxlUHJldmlld0Fzc2V0IC0gMSkpXG4gICAgICAgICAgICB8fCB0aGlzLl9hY3RpdmUgPj0gdGhpcy52aXNpYmxlUHJldmlld0Fzc2V0O1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChOSUNFX0FTU0VUU19DQVJPVVNFTF9PUFRJT05TKSBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogTmljZUFzc2V0c0Nhcm91c2VsT3B0aW9ucykge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGFjdGlvbkJ1dHRvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkUGhvdG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwicGhvdG9fY2FtZXJhXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9yZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwibW9yZV92ZXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJY29uOiBcImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFkZFBob3RvOiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwicGhvdG9fY2FtZXJhXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxlZnRBcnJvdzoge1xuICAgICAgICAgICAgICAgICAgICBtYXRJY29uOiBcImNoZXZyb25fbGVmdFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByaWdodEFycm93OiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdEljb246IFwiY2hldnJvbl9yaWdodFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1cGxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgbWF0SWNvbjogXCJmaWxlX3VwbG9hZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKGFzc2V0czogTmljZUFzc2V0c1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Fzc2V0cyA9IGFzc2V0cyA/PyBbXTtcbiAgICAgICAgaWYgKHRoaXMuX2Fzc2V0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVBc3NldCA9IHRoaXMuX2Fzc2V0c1t0aGlzLl9hY3RpdmVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbGFzdEFzc2V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoYXNzZXRzOiBOaWNlQXNzZXRzW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IChhc3NldHM6IE5pY2VBc3NldHNbXSkgPT4gdm9pZCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBjbGlja0xlZnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQXNzZXQgPSB0aGlzLl9hY3RpdmUgLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSB0aGlzLl9hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uICsgMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja1JpZ2h0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbGFzdEFzc2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUFzc2V0ID0gdGhpcy5fYWN0aXZlICsgMTtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFRyYW5zZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFuc2xhdGlvblBvc2l0aW9uID0gdGhpcy5fYWN0aXZlVHJhbnNsYXRpb25Qb3NpdGlvbiAtIDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tBc3NldChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCB2aXNpYmxlQXNzZXRzID0gKHRoaXMuZWRpdCAmJiB0aGlzLnNob3dBZGRBc3NldENvbnRhaW5lcikgPyAodGhpcy52aXNpYmxlUHJldmlld0Fzc2V0IC0gMikgOiAodGhpcy52aXNpYmxlUHJldmlld0Fzc2V0IC0gMSk7XG4gICAgICAgIGlmIChpbmRleCA8IHZpc2libGVBc3NldHMpIHtcbiAgICAgICAgICAgIHZpc2libGVBc3NldHMgPSBpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uUG9zaXRpb24gPSAoaW5kZXggLSB2aXNpYmxlQXNzZXRzKSAqIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVBc3NldCA9IGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvbkZpbGVzQ2hhbmdlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWxlcyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LmZpbGVzO1xuICAgICAgICBhd2FpdCB0aGlzLm9uRmlsZXNEcm9wKGZpbGVzKTtcblxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25GaWxlc0Ryb3AoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld0Fzc2V0c0FkZGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFjY2VwdC5zb21lKChhY2NlcHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0LmVuZHNXaXRoKFwiKlwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgoYWNjZXB0LnJlcGxhY2UoXCIqXCIsIFwiXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjZXB0ID09PSBmaWxlLnR5cGU7XG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBuZXdBc3NldHNBZGRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9hc3NldHMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUuc3BsaXQoXCIvXCIpLnNoaWZ0KCkgYXMgXCJpbWFnZVwiIHwgXCJ2aWRlb1wiLFxuICAgICAgICAgICAgICAgIGJhc2U2NDogYXdhaXQgRmlsZVV0aWxzLmdldERhdGFVcmwoZmlsZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0Fzc2V0c0FkZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrQXNzZXQodGhpcy5fYXNzZXRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGU/Lih0aGlzLl9hc3NldHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrUmVtb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZWRBc3NldC5lbWl0KHRoaXMuX2Fzc2V0c1t0aGlzLl9hY3RpdmVdKTtcbiAgICAgICAgdGhpcy5fYXNzZXRzLnNwbGljZSh0aGlzLl9hY3RpdmUsIDEpO1xuXG4gICAgICAgIGlmICh0aGlzLl9sYXN0QXNzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tBc3NldCh0aGlzLl9hc3NldHMubGVuZ3RoIC0gMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrQXNzZXQodGhpcy5fYWN0aXZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlPy4odGhpcy5fYXNzZXRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tDdXN0b20oYWN0aW9uOiBOaWNlQXNzZXRzQ2Fyb3VzZWxBY3Rpb25zKTogdm9pZCB7XG4gICAgICAgIGFjdGlvbi5hY3Rpb24odGhpcy5fYWN0aXZlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc3RhcnRTeW5jVmlkZW8oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICh0aGlzLl9hc3NldHNFbGVtZW50LmdldCh0aGlzLl9hY3RpdmUpLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTFZpZGVvRWxlbWVudCkucGF1c2UoKTtcbiAgICAgICAgKHRoaXMuX2Fzc2V0c0VsZW1lbnQuZ2V0KHRoaXMuX2FjdGl2ZSkubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MVmlkZW9FbGVtZW50KS5jdXJyZW50VGltZSA9IDA7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlVmlkZW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUgPSAwO1xuICAgICAgICBhd2FpdCB0aGlzLl9hY3RpdmVWaWRlb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5KCk7XG4gICAgICAgIGF3YWl0ICh0aGlzLl9hc3NldHNFbGVtZW50LmdldCh0aGlzLl9hY3RpdmUpLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTFZpZGVvRWxlbWVudCkucGxheSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJvdXNlbC1jb250YWluZXJcIiBuaWNlRHJvcHpvbmUgKGZpbGVzRHJvcHBlZCk9XCJvbkZpbGVzRHJvcCgkZXZlbnQpXCI+XG4gICAgPGRpdiBjbGFzcz1cImFjdGl2ZS1pbWFnZVwiXG4gICAgICAgICBtYXRSaXBwbGVcbiAgICAgICAgIFtjbGFzcy5lbXB0eS1zdGF0ZV09XCIhX2FjdGl2ZUFzc2V0XCJcbiAgICAgICAgIChjbGljayk9XCJlZGl0ICYmIGZpbGVJbnB1dC5jbGljaygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgID5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgKm5nSWY9XCJfYWN0aXZlQXNzZXQ/LnR5cGUgPT09ICdpbWFnZSdcIlxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJzaG93T3ZlcmxheT10cnVlXCJcbiAgICAgICAgICAgIFtzcmNdPVwiX2FjdGl2ZUFzc2V0LnVybCA/PyBfYWN0aXZlQXNzZXQuYmFzZTY0XCJcbiAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgYWx0PVwiYWN0aXZlLWltYWdlXCJcbiAgICAgICAgPlxuICAgICAgICA8dmlkZW8gI2FjdGl2ZVZpZGVvICpuZ0lmPVwiX2FjdGl2ZUFzc2V0Py50eXBlID09PSAndmlkZW8nXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiBsb29wIFtzcmNdPVwiX2FjdGl2ZUFzc2V0LnVybCA/PyBfYWN0aXZlQXNzZXQuYmFzZTY0XCI+PC92aWRlbz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGUtY29udGVudFwiICpuZ0lmPVwiIV9hY3RpdmVBc3NldFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy51cGxvYWQubWF0SWNvblwiPnt7IG9wdGlvbnMudXBsb2FkLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy51cGxvYWQuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMudXBsb2FkLnN2Z0ljb25cIj48L21hdC1pY29uPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxuICAgICAgICAgICAgICAgIHt7IFwibmljZV91aV9raXQuYXNzZXRzX2Nhcm91c2VsLnVwbG9hZF9oZXJlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX2FjdGl2ZUFzc2V0ICYmIHNob3dPdmVybGF5ICYmIGVkaXRcIiBjbGFzcz1cImFjdGl2ZS1pbWFnZS1vdmVybGF5XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKG1vdXNlb3V0KT1cInNob3dPdmVybGF5PWZhbHNlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHctZnVsbCBoLWZ1bGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMudXBsb2FkLm1hdEljb25cIj57eyBvcHRpb25zLnVwbG9hZC5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLnVwbG9hZC5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy51cGxvYWQuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRcIiBjbGFzcz1cImFjdGl2ZS1idXR0b25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5hZGRQaG90by5tYXRJY29uXCI+e3sgb3B0aW9ucy5hY3Rpb25CdXR0b25zLmFkZFBob3RvLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMuYWN0aW9uQnV0dG9ucy5hZGRQaG90by5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLmFkZFBob3RvLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYXNzZXRBY3Rpb25zXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFtkaXNhYmxlZF09XCIhX2FjdGl2ZUFzc2V0XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLm1vcmVPcHRpb25zLm1hdEljb25cIj57eyBvcHRpb25zLmFjdGlvbkJ1dHRvbnMubW9yZU9wdGlvbnMubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hY3Rpb25CdXR0b25zLm1vcmVPcHRpb25zLnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMubW9yZU9wdGlvbnMuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1tZW51IGNsYXNzPVwibmljZS1hc3NldC1vcHRpb25zLW1lbnVcIiBbeFBvc2l0aW9uXT1cIidiZWZvcmUnXCIgI2Fzc2V0QWN0aW9ucz1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjdXN0b21BY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrQ3VzdG9tKGFjdGlvbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYWN0aW9uLmljb24ubWF0SWNvblwiPnt7IGFjdGlvbi5pY29uLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiYWN0aW9uLmljb24uc3ZnSWNvblwiICpuZ0lmPVwiYWN0aW9uLmljb24uc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFjdGlvbi5uYW1lIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2xpY2tSZW1vdmUoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMucmVtb3ZlLm1hdEljb25cIj57eyBvcHRpb25zLmFjdGlvbkJ1dHRvbnMucmVtb3ZlLm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMucmVtb3ZlLnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLmFjdGlvbkJ1dHRvbnMucmVtb3ZlLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBcIm5pY2VfdWlfa2l0LmFzc2V0c19jYXJvdXNlbC5kZWxldGVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNhcm91c2VsXCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93QWRkQXNzZXRDb250YWluZXIgfHwgX2FjdGl2ZUFzc2V0XCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uIGxlZnQtYXJyb3dcIiBtYXQtaWNvbi1idXR0b24gW2Rpc2FibGVkXT1cIiFfYWN0aXZlXCIgKGNsaWNrKT1cImNsaWNrTGVmdCgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb25zLmxlZnRBcnJvdy5tYXRJY29uXCI+e3sgb3B0aW9ucy5sZWZ0QXJyb3cubWF0SWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhcnJvd3NcIiAqbmdJZj1cIm9wdGlvbnMubGVmdEFycm93LnN2Z0ljb25cIiBbc3ZnSWNvbl09XCJvcHRpb25zLmxlZnRBcnJvdy5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhc3NldC1saXN0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBZGRBc3NldENvbnRhaW5lciAmJiBlZGl0XCIgY2xhc3M9XCJhZGQtYXNzZXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1hc3NldFwiIG1hdFJpcHBsZSAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hZGRQaG90by5tYXRJY29uXCI+e3sgb3B0aW9ucy5hZGRQaG90by5tYXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib3B0aW9ucy5hZGRQaG90by5zdmdJY29uXCIgW3N2Z0ljb25dPVwib3B0aW9ucy5hZGRQaG90by5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXQtbGlzdFwiIFtuZ1N0eWxlXT1cImxpc3RTdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgI2Fzc2V0cyBjbGFzcz1cImFzc2V0XCIgKm5nRm9yPVwibGV0IGFzc2V0IG9mIF9hc3NldHM7IGxldCBpID0gaW5kZXhcIiAoY2xpY2spPVwiY2xpY2tBc3NldChpKVwiIFtuZ0NsYXNzXT1cImNvbG9yXCIgW2NsYXNzLmFjdGl2ZV09XCJfYWN0aXZlID09PSBpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJhc3NldC50eXBlID09PSAnaW1hZ2UnXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiBbc3JjXT1cImFzc2V0LnVybCA/PyBhc3NldC5iYXNlNjRcIiBhbHQ9XCJhZGQtaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvICpuZ0lmPVwiYXNzZXQudHlwZSA9PT0gJ3ZpZGVvJ1wiIGRyYWdnYWJsZT1cImZhbHNlXCIgbG9vcCBbc3JjXT1cImFzc2V0LnVybCA/PyBhc3NldC5iYXNlNjRcIj48L3ZpZGVvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0FkZEFzc2V0Q29udGFpbmVyIHx8IF9hY3RpdmVBc3NldFwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvbiByaWdodC1hcnJvd1wiIG1hdC1pY29uLWJ1dHRvbiBbZGlzYWJsZWRdPVwiX2xhc3RBc3NldFwiIChjbGljayk9XCJjbGlja1JpZ2h0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnMucmlnaHRBcnJvdy5tYXRJY29uXCI+e3sgb3B0aW9ucy5yaWdodEFycm93Lm1hdEljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXJyb3dzXCIgKm5nSWY9XCJvcHRpb25zLnJpZ2h0QXJyb3cuc3ZnSWNvblwiIFtzdmdJY29uXT1cIm9wdGlvbnMucmlnaHRBcnJvdy5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBoaWRkZW4gW2FjY2VwdF09XCJhY2NlcHRcIiAoY2hhbmdlKT1cIm9uRmlsZXNDaGFuZ2UoJGV2ZW50KVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVVwbG9hZFwiPlxuIl19
|
|
@@ -85,6 +85,11 @@ export class NiceChipListDirective {
|
|
|
85
85
|
if (this._values.includes(value)) {
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
88
|
+
if (value instanceof NiceTypeaheadNewValue) {
|
|
89
|
+
if (this._values.some(x => x instanceof NiceTypeaheadNewValue && x.$new === value.$new)) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
88
93
|
this._values.push(value);
|
|
89
94
|
this.propagateChanges(this._values);
|
|
90
95
|
this.values$.next(this._values);
|
|
@@ -119,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
119
124
|
type: HostListener,
|
|
120
125
|
args: ["keydown", ["$event"]]
|
|
121
126
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1saXN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvZGlyZWN0aXZlcy9jaGlwLWxpc3QvY2hpcC1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUt6RixNQUFNLE9BQU8scUJBQXFCO0lBaUI5QixZQUN3QixjQUEyQyxFQUMzQyxTQUFvQixFQUNoQyxVQUF3QztRQUY1QixtQkFBYyxHQUFkLGNBQWMsQ0FBNkI7UUFDM0MsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtRQWY3QyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFdkIsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3RDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQyxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLHFCQUFnQixHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUUs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YyxDQUFDLFdBQVcsQ0FBQztZQUM1QixhQUFhLEVBQUUsSUFBSSxZQUFZLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztTQUMzRixDQUFDLENBQUM7SUFDUCxDQUFDOztrSEF2SFEscUJBQXFCO3NHQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseURBQXlEO2lCQUN0RTs7MEJBbUJRLFFBQVE7OzBCQUNSLFFBQVE7cUVBakJOLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQXdCQyxTQUFTO3NCQURmLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCwgTmljZVR5cGVhaGVhZE5ld1ZhbHVlIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IEtleWJvYXJkQ29kZXMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE5pY2VDaGlwTGlzdEl0ZW1zQ29tcG9uZW50IH0gZnJvbSBcIi4vY2hpcC1saXN0LWl0ZW1zL2NoaXAtbGlzdC1pdGVtcy5jb21wb25lbnRcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiaW5wdXRbbmljZUNoaXBMaXN0XSwgbmljZS1hc3luYy10eXBlYWhlYWRbbmljZUNoaXBMaXN0XVwiXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VDaGlwTGlzdERpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2l0aEl0ZW1MaXN0OiBOaWNlQ2hpcExpc3RJdGVtc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbG9hZE9uU2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZUFsbCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgdmFsdWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gICAgcHJpdmF0ZSBfdmFsdWVzOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlcyA9ICh2YWx1ZTogYW55W10pID0+IHt9O1xuXG4gICAgcHVibGljIGdldCB2YWx1ZXMoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVzO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGFzeW5jVHlwZWFoZWFkOiBOaWNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd25cIiwgW1wiJGV2ZW50XCJdKVxuICAgIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXN5bmNUeXBlYWhlYWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSBLZXlib2FyZENvZGVzLkVudGVyKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbGlkaXR5LnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFkZFZhbHVlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXN5bmNUeXBlYWhlYWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dXBBc3luY1R5cGVhaGVhZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwibWF0LWZvcm0tZmllbGQtaW5maXhcIikpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQuc3R5bGUuYWxpZ25JdGVtcyA9IFwiZmxleC1zdGFydFwiO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5zdHlsZS5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW4tcmV2ZXJzZVwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFwid2l0aEl0ZW1MaXN0XCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy53aXRoSXRlbUxpc3QuaXRlbXMkID0gdGhpcy52YWx1ZXMkO1xuICAgICAgICAgICAgdGhpcy53aXRoSXRlbUxpc3QucmVtb3ZlQ2hpcC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlQWxsJCkpLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMuc3BsaWNlKHgsIDEpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUeXBlYWhlYWRTZWFyY2hPcHRpb25zKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZXModGhpcy5fdmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlcyQubmV4dCh0aGlzLl92YWx1ZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IG9iaiA/PyBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVUeXBlYWhlYWRTZWFyY2hPcHRpb25zKCk7XG4gICAgICAgIHRoaXMudmFsdWVzJC5uZXh0KHRoaXMuX3ZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZXMgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge31cblxuICAgIHByaXZhdGUgc2V0dXBBc3luY1R5cGVhaGVhZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3luY1R5cGVhaGVhZC5zZWxlY3RlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHNlbGVjdGVkKSA9PiBzZWxlY3RlZClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmljZVR5cGVhaGVhZE5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVmFsdWUodGhpcy5hc3luY1R5cGVhaGVhZC5nZXRBY3RpdmUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5hc3luY1R5cGVhaGVhZC5zZWFyY2hPcHRpb25zID0geyAuLi4odGhpcy5hc3luY1R5cGVhaGVhZC5zZWFyY2hPcHRpb25zID8/IHt9KSwgaWdub3JlOiB0aGlzLl92YWx1ZXMgPz8gW10gfTtcbiAgICAgICAgICAgICAgICB0aGlzLmFzeW5jVHlwZWFoZWFkLm9uUmVtb3ZlKG51bGwsIHRoaXMucmVsb2FkT25TZWxlY3RlZCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2VzKHRoaXMuX3ZhbHVlcyk7XG4gICAgICAgIHRoaXMudmFsdWVzJC5uZXh0KHRoaXMuX3ZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUeXBlYWhlYWRTZWFyY2hPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYXN5bmNUeXBlYWhlYWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlYXJjaE9wdGlvbnMgPSB0aGlzLmFzeW5jVHlwZWFoZWFkLnNlYXJjaE9wdGlvbnM7XG4gICAgICAgIHRoaXMuYXN5bmNUeXBlYWhlYWQuc2VhcmNoT3B0aW9ucyA9IHsgLi4uKHNlYXJjaE9wdGlvbnMgPz8ge30pLCBpZ25vcmU6IHRoaXMuX3ZhbHVlcyA/PyBbXSB9O1xuICAgICAgICB0aGlzLmFzeW5jVHlwZWFoZWFkLm5nT25DaGFuZ2VzKHtcbiAgICAgICAgICAgIHNlYXJjaE9wdGlvbnM6IG5ldyBTaW1wbGVDaGFuZ2Uoc2VhcmNoT3B0aW9ucywgdGhpcy5hc3luY1R5cGVhaGVhZC5zZWFyY2hPcHRpb25zLCBmYWxzZSlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1saXN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvZGlyZWN0aXZlcy9jaGlwLWxpc3QvY2hpcC1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUt6RixNQUFNLE9BQU8scUJBQXFCO0lBaUI5QixZQUN3QixjQUEyQyxFQUMzQyxTQUFvQixFQUNoQyxVQUF3QztRQUY1QixtQkFBYyxHQUFkLGNBQWMsQ0FBNkI7UUFDM0MsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtRQWY3QyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFdkIsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3RDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQyxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLHFCQUFnQixHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUUs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TSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzdGLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO1lBQzVCLGFBQWEsRUFBRSxJQUFJLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDO1NBQzNGLENBQUMsQ0FBQztJQUNQLENBQUM7O2tIQTdIUSxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5REFBeUQ7aUJBQ3RFOzswQkFtQlEsUUFBUTs7MEJBQ1IsUUFBUTtxRUFqQk4sWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBd0JDLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPcHRpb25hbCwgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgTmljZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50LCBOaWNlVHlwZWFoZWFkTmV3VmFsdWUgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgS2V5Ym9hcmRDb2RlcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgTmljZUNoaXBMaXN0SXRlbXNDb21wb25lbnQgfSBmcm9tIFwiLi9jaGlwLWxpc3QtaXRlbXMvY2hpcC1saXN0LWl0ZW1zLmNvbXBvbmVudFwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogXCJpbnB1dFtuaWNlQ2hpcExpc3RdLCBuaWNlLWFzeW5jLXR5cGVhaGVhZFtuaWNlQ2hpcExpc3RdXCJcbn0pXG5leHBvcnQgY2xhc3MgTmljZUNoaXBMaXN0RGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aXRoSXRlbUxpc3Q6IE5pY2VDaGlwTGlzdEl0ZW1zQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVsb2FkT25TZWxlY3RlZCA9IHRydWU7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSB2YWx1ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgICBwcml2YXRlIF92YWx1ZXM6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2VzID0gKHZhbHVlOiBhbnlbXSkgPT4ge307XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlcygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYXN5bmNUeXBlYWhlYWQ6IE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hc3luY1R5cGVhaGVhZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09IEtleWJvYXJkQ29kZXMuRW50ZXIpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsaWRpdHkudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYWRkVmFsdWUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hc3luY1R5cGVhaGVhZCkge1xuICAgICAgICAgICAgdGhpcy5zZXR1cEFzeW5jVHlwZWFoZWFkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJtYXQtZm9ybS1maWVsZC1pbmZpeFwiKSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5zdHlsZS5hbGlnbkl0ZW1zID0gXCJmbGV4LXN0YXJ0XCI7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcImNvbHVtbi1yZXZlcnNlXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXCJ3aXRoSXRlbUxpc3RcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhJdGVtTGlzdC5pdGVtcyQgPSB0aGlzLnZhbHVlcyQ7XG4gICAgICAgICAgICB0aGlzLndpdGhJdGVtTGlzdC5yZW1vdmVDaGlwLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSkuc3Vic2NyaWJlKHggPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5zcGxpY2UoeCwgMSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR5cGVhaGVhZFNlYXJjaE9wdGlvbnMoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlcyh0aGlzLl92YWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzJC5uZXh0KHRoaXMuX3ZhbHVlcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWVzID0gb2JqID8/IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZVR5cGVhaGVhZFNlYXJjaE9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy52YWx1ZXMkLm5leHQodGhpcy5fdmFsdWVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlcyA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7fVxuXG4gICAgcHJpdmF0ZSBzZXR1cEFzeW5jVHlwZWFoZWFkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFzeW5jVHlwZWFoZWFkLnNlbGVjdGVkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoc2VsZWN0ZWQpID0+IHNlbGVjdGVkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRWYWx1ZSh0aGlzLmFzeW5jVHlwZWFoZWFkLmdldEFjdGl2ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFzeW5jVHlwZWFoZWFkLnNlYXJjaE9wdGlvbnMgPSB7IC4uLih0aGlzLmFzeW5jVHlwZWFoZWFkLnNlYXJjaE9wdGlvbnMgPz8ge30pLCBpZ25vcmU6IHRoaXMuX3ZhbHVlcyA/PyBbXSB9O1xuICAgICAgICAgICAgICAgIHRoaXMuYXN5bmNUeXBlYWhlYWQub25SZW1vdmUobnVsbCwgdGhpcy5yZWxvYWRPblNlbGVjdGVkKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmljZVR5cGVhaGVhZE5ld1ZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fdmFsdWVzLnNvbWUoeCA9PiB4IGluc3RhbmNlb2YgTmljZVR5cGVhaGVhZE5ld1ZhbHVlICYmIHguJG5ldyA9PT0gdmFsdWUuJG5ldykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl92YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlcyh0aGlzLl92YWx1ZXMpO1xuICAgICAgICB0aGlzLnZhbHVlcyQubmV4dCh0aGlzLl92YWx1ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVHlwZWFoZWFkU2VhcmNoT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFzeW5jVHlwZWFoZWFkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWFyY2hPcHRpb25zID0gdGhpcy5hc3luY1R5cGVhaGVhZC5zZWFyY2hPcHRpb25zO1xuICAgICAgICB0aGlzLmFzeW5jVHlwZWFoZWFkLnNlYXJjaE9wdGlvbnMgPSB7IC4uLihzZWFyY2hPcHRpb25zID8/IHt9KSwgaWdub3JlOiB0aGlzLl92YWx1ZXMgPz8gW10gfTtcbiAgICAgICAgdGhpcy5hc3luY1R5cGVhaGVhZC5uZ09uQ2hhbmdlcyh7XG4gICAgICAgICAgICBzZWFyY2hPcHRpb25zOiBuZXcgU2ltcGxlQ2hhbmdlKHNlYXJjaE9wdGlvbnMsIHRoaXMuYXN5bmNUeXBlYWhlYWQuc2VhcmNoT3B0aW9ucywgZmFsc2UpXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1683,8 +1683,10 @@ class NiceAssetsCarouselComponent {
|
|
|
1683
1683
|
this.accept = ["image/*"];
|
|
1684
1684
|
this.customActions = [];
|
|
1685
1685
|
this.multipleUpload = false;
|
|
1686
|
+
this.visiblePreviewAsset = 4;
|
|
1686
1687
|
this.showAddAssetContainer = true;
|
|
1687
1688
|
this.activeChange = new EventEmitter();
|
|
1689
|
+
this.removedAsset = new EventEmitter();
|
|
1688
1690
|
this.listStyle = { transform: "translateX(0px)" };
|
|
1689
1691
|
if (!this.options) {
|
|
1690
1692
|
this.options = {
|
|
@@ -1733,7 +1735,7 @@ class NiceAssetsCarouselComponent {
|
|
|
1733
1735
|
}
|
|
1734
1736
|
set activeTranslationPosition(position) {
|
|
1735
1737
|
this._activeTranslationPosition = position;
|
|
1736
|
-
this.listStyle.transform = `translateX(${position}
|
|
1738
|
+
this.listStyle.transform = `translateX(calc((var(--nice-assets-carousel-asset-width) + var(--nice-assets-carousel-asset-gap)) * ${position}))`;
|
|
1737
1739
|
}
|
|
1738
1740
|
set activeAsset(position) {
|
|
1739
1741
|
if (position < 0) {
|
|
@@ -1742,7 +1744,9 @@ class NiceAssetsCarouselComponent {
|
|
|
1742
1744
|
this._active = position;
|
|
1743
1745
|
this._activeAsset = this._assets[this._active];
|
|
1744
1746
|
this._lastAsset = this._active === this._assets.length - 1 || !this._assets.length;
|
|
1745
|
-
this._shouldTransform
|
|
1747
|
+
this._shouldTransform
|
|
1748
|
+
= ((this.edit && this.showAddAssetContainer) && this._active >= (this.visiblePreviewAsset - 1))
|
|
1749
|
+
|| this._active >= this.visiblePreviewAsset;
|
|
1746
1750
|
this.activeChange.emit(this._active);
|
|
1747
1751
|
}
|
|
1748
1752
|
writeValue(assets) {
|
|
@@ -1764,7 +1768,7 @@ class NiceAssetsCarouselComponent {
|
|
|
1764
1768
|
this.activeAsset = this._active - 1;
|
|
1765
1769
|
}
|
|
1766
1770
|
if (this._activeTranslationPosition < 0) {
|
|
1767
|
-
this.activeTranslationPosition = this._activeTranslationPosition +
|
|
1771
|
+
this.activeTranslationPosition = this._activeTranslationPosition + 1;
|
|
1768
1772
|
}
|
|
1769
1773
|
}
|
|
1770
1774
|
clickRight() {
|
|
@@ -1773,16 +1777,16 @@ class NiceAssetsCarouselComponent {
|
|
|
1773
1777
|
}
|
|
1774
1778
|
this.activeAsset = this._active + 1;
|
|
1775
1779
|
if (this._shouldTransform) {
|
|
1776
|
-
this.activeTranslationPosition = this._activeTranslationPosition -
|
|
1780
|
+
this.activeTranslationPosition = this._activeTranslationPosition - 1;
|
|
1777
1781
|
}
|
|
1778
1782
|
}
|
|
1779
1783
|
clickAsset(index) {
|
|
1780
|
-
let visibleAssets = this.edit ? 2 :
|
|
1784
|
+
let visibleAssets = (this.edit && this.showAddAssetContainer) ? (this.visiblePreviewAsset - 2) : (this.visiblePreviewAsset - 1);
|
|
1781
1785
|
if (index < visibleAssets) {
|
|
1782
1786
|
visibleAssets = index;
|
|
1783
1787
|
}
|
|
1784
1788
|
if (index >= 0) {
|
|
1785
|
-
this.activeTranslationPosition = (index - visibleAssets) * -
|
|
1789
|
+
this.activeTranslationPosition = (index - visibleAssets) * -1;
|
|
1786
1790
|
}
|
|
1787
1791
|
this.activeAsset = index;
|
|
1788
1792
|
}
|
|
@@ -1791,7 +1795,7 @@ class NiceAssetsCarouselComponent {
|
|
|
1791
1795
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1792
1796
|
const files = (_a = event.target) === null || _a === void 0 ? void 0 : _a.files;
|
|
1793
1797
|
yield this.onFilesDrop(files);
|
|
1794
|
-
this.inputElement.nativeElement.
|
|
1798
|
+
this.inputElement.nativeElement.value = "";
|
|
1795
1799
|
});
|
|
1796
1800
|
}
|
|
1797
1801
|
onFilesDrop(files) {
|
|
@@ -1826,6 +1830,7 @@ class NiceAssetsCarouselComponent {
|
|
|
1826
1830
|
}
|
|
1827
1831
|
clickRemove() {
|
|
1828
1832
|
var _a;
|
|
1833
|
+
this.removedAsset.emit(this._assets[this._active]);
|
|
1829
1834
|
this._assets.splice(this._active, 1);
|
|
1830
1835
|
if (this._lastAsset) {
|
|
1831
1836
|
this.clickAsset(this._assets.length - 1);
|
|
@@ -1849,13 +1854,13 @@ class NiceAssetsCarouselComponent {
|
|
|
1849
1854
|
}
|
|
1850
1855
|
}
|
|
1851
1856
|
NiceAssetsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAssetsCarouselComponent, deps: [{ token: NICE_ASSETS_CAROUSEL_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1852
|
-
NiceAssetsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceAssetsCarouselComponent, selector: "nice-assets-carousel", inputs: { color: "color", edit: "edit", accept: "accept", customActions: "customActions", multipleUpload: "multipleUpload", showAddAssetContainer: "showAddAssetContainer", assets: "assets" }, outputs: { activeChange: "activeChange" }, providers: [
|
|
1857
|
+
NiceAssetsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceAssetsCarouselComponent, selector: "nice-assets-carousel", inputs: { color: "color", edit: "edit", accept: "accept", customActions: "customActions", multipleUpload: "multipleUpload", visiblePreviewAsset: "visiblePreviewAsset", showAddAssetContainer: "showAddAssetContainer", assets: "assets" }, outputs: { activeChange: "activeChange", removedAsset: "removedAsset" }, providers: [
|
|
1853
1858
|
{
|
|
1854
1859
|
provide: NG_VALUE_ACCESSOR,
|
|
1855
1860
|
useExisting: forwardRef(() => NiceAssetsCarouselComponent),
|
|
1856
1861
|
multi: true
|
|
1857
1862
|
}
|
|
1858
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "activeVideoElement", first: true, predicate: ["activeVideo"], descendants: true }, { propertyName: "assetsElement", predicate: ["assets"], descendants: true }], ngImport: i0, template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click(); $event.stopPropagation()\"\n >\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)
|
|
1863
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "activeVideoElement", first: true, predicate: ["activeVideo"], descendants: true }, { propertyName: "assetsElement", predicate: ["assets"], descendants: true }], ngImport: i0, template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click(); $event.stopPropagation()\"\n >\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click(); $event.stopPropagation()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)\"\n >\n <mat-icon *ngIf=\"action.icon.matIcon\">{{ action.icon.matIcon }}</mat-icon>\n <mat-icon [svgIcon]=\"action.icon.svgIcon\" *ngIf=\"action.icon.svgIcon\"></mat-icon>\n <span>{{ action.name | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"clickRemove()\">\n <mat-icon *ngIf=\"options.actionButtons.remove.matIcon\">{{ options.actionButtons.remove.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.remove.svgIcon\" [svgIcon]=\"options.actionButtons.remove.svgIcon\"></mat-icon>\n <span>{{ \"nice_ui_kit.assets_carousel.delete\" | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <div class=\"carousel\">\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button left-arrow\" mat-icon-button [disabled]=\"!_active\" (click)=\"clickLeft()\">\n <mat-icon *ngIf=\"options.leftArrow.matIcon\">{{ options.leftArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.leftArrow.svgIcon\" [svgIcon]=\"options.leftArrow.svgIcon\"></mat-icon>\n </button>\n <div class=\"asset-list-container\">\n <div *ngIf=\"showAddAssetContainer && edit\" class=\"add-asset-container\">\n <div class=\"add-asset\" matRipple (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.addPhoto.matIcon\">{{ options.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.addPhoto.svgIcon\" [svgIcon]=\"options.addPhoto.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div class=\"asset-list\" [ngStyle]=\"listStyle\">\n <div #assets class=\"asset\" *ngFor=\"let asset of _assets; let i = index\" (click)=\"clickAsset(i)\" [ngClass]=\"color\" [class.active]=\"_active === i\">\n <img *ngIf=\"asset.type === 'image'\" draggable=\"false\" [src]=\"asset.url ?? asset.base64\" alt=\"add-image\">\n <video *ngIf=\"asset.type === 'video'\" draggable=\"false\" loop [src]=\"asset.url ?? asset.base64\"></video>\n </div>\n </div>\n </div>\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button right-arrow\" mat-icon-button [disabled]=\"_lastAsset\" (click)=\"clickRight()\">\n <mat-icon *ngIf=\"options.rightArrow.matIcon\">{{ options.rightArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.rightArrow.svgIcon\" [svgIcon]=\"options.rightArrow.svgIcon\"></mat-icon>\n </button>\n </div>\n</div>\n\n<input #fileInput type=\"file\" hidden [accept]=\"accept\" (change)=\"onFilesChange($event)\" [multiple]=\"multipleUpload\">\n", styles: [":root{--nice-assets-carousel-asset-width: 90px;--nice-assets-carousel-asset-height: 60px;--nice-assets-carousel-asset-gap: .75rem}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i2$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: NiceDropzoneDirective, selector: "[niceDropzone]", outputs: ["filesDropped"] }, { type: i2$2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i1.TranslatePipe }, animations: niceAnimations, encapsulation: i0.ViewEncapsulation.None });
|
|
1859
1864
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAssetsCarouselComponent, decorators: [{
|
|
1860
1865
|
type: Component,
|
|
1861
1866
|
args: [{ selector: "nice-assets-carousel", encapsulation: ViewEncapsulation.None, animations: niceAnimations, providers: [
|
|
@@ -1864,7 +1869,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
1864
1869
|
useExisting: forwardRef(() => NiceAssetsCarouselComponent),
|
|
1865
1870
|
multi: true
|
|
1866
1871
|
}
|
|
1867
|
-
], template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click(); $event.stopPropagation()\"\n >\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)
|
|
1872
|
+
], template: "<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click(); $event.stopPropagation()\"\n >\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click(); $event.stopPropagation()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)\"\n >\n <mat-icon *ngIf=\"action.icon.matIcon\">{{ action.icon.matIcon }}</mat-icon>\n <mat-icon [svgIcon]=\"action.icon.svgIcon\" *ngIf=\"action.icon.svgIcon\"></mat-icon>\n <span>{{ action.name | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"clickRemove()\">\n <mat-icon *ngIf=\"options.actionButtons.remove.matIcon\">{{ options.actionButtons.remove.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.remove.svgIcon\" [svgIcon]=\"options.actionButtons.remove.svgIcon\"></mat-icon>\n <span>{{ \"nice_ui_kit.assets_carousel.delete\" | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <div class=\"carousel\">\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button left-arrow\" mat-icon-button [disabled]=\"!_active\" (click)=\"clickLeft()\">\n <mat-icon *ngIf=\"options.leftArrow.matIcon\">{{ options.leftArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.leftArrow.svgIcon\" [svgIcon]=\"options.leftArrow.svgIcon\"></mat-icon>\n </button>\n <div class=\"asset-list-container\">\n <div *ngIf=\"showAddAssetContainer && edit\" class=\"add-asset-container\">\n <div class=\"add-asset\" matRipple (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.addPhoto.matIcon\">{{ options.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.addPhoto.svgIcon\" [svgIcon]=\"options.addPhoto.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div class=\"asset-list\" [ngStyle]=\"listStyle\">\n <div #assets class=\"asset\" *ngFor=\"let asset of _assets; let i = index\" (click)=\"clickAsset(i)\" [ngClass]=\"color\" [class.active]=\"_active === i\">\n <img *ngIf=\"asset.type === 'image'\" draggable=\"false\" [src]=\"asset.url ?? asset.base64\" alt=\"add-image\">\n <video *ngIf=\"asset.type === 'video'\" draggable=\"false\" loop [src]=\"asset.url ?? asset.base64\"></video>\n </div>\n </div>\n </div>\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button right-arrow\" mat-icon-button [disabled]=\"_lastAsset\" (click)=\"clickRight()\">\n <mat-icon *ngIf=\"options.rightArrow.matIcon\">{{ options.rightArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.rightArrow.svgIcon\" [svgIcon]=\"options.rightArrow.svgIcon\"></mat-icon>\n </button>\n </div>\n</div>\n\n<input #fileInput type=\"file\" hidden [accept]=\"accept\" (change)=\"onFilesChange($event)\" [multiple]=\"multipleUpload\">\n", styles: [":root{--nice-assets-carousel-asset-width: 90px;--nice-assets-carousel-asset-height: 60px;--nice-assets-carousel-asset-gap: .75rem}\n"] }]
|
|
1868
1873
|
}], ctorParameters: function () {
|
|
1869
1874
|
return [{ type: undefined, decorators: [{
|
|
1870
1875
|
type: Optional
|
|
@@ -1885,10 +1890,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
1885
1890
|
type: Input
|
|
1886
1891
|
}], multipleUpload: [{
|
|
1887
1892
|
type: Input
|
|
1893
|
+
}], visiblePreviewAsset: [{
|
|
1894
|
+
type: Input
|
|
1888
1895
|
}], showAddAssetContainer: [{
|
|
1889
1896
|
type: Input
|
|
1890
1897
|
}], activeChange: [{
|
|
1891
1898
|
type: Output
|
|
1899
|
+
}], removedAsset: [{
|
|
1900
|
+
type: Output
|
|
1892
1901
|
}], activeVideoElement: [{
|
|
1893
1902
|
type: ViewChild,
|
|
1894
1903
|
args: ["activeVideo"]
|
|
@@ -9023,6 +9032,11 @@ class NiceChipListDirective {
|
|
|
9023
9032
|
if (this._values.includes(value)) {
|
|
9024
9033
|
return;
|
|
9025
9034
|
}
|
|
9035
|
+
if (value instanceof NiceTypeaheadNewValue) {
|
|
9036
|
+
if (this._values.some(x => x instanceof NiceTypeaheadNewValue && x.$new === value.$new)) {
|
|
9037
|
+
return;
|
|
9038
|
+
}
|
|
9039
|
+
}
|
|
9026
9040
|
this._values.push(value);
|
|
9027
9041
|
this.propagateChanges(this._values);
|
|
9028
9042
|
this.values$.next(this._values);
|