uitec-ng-upload-order 1.0.16 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/ui-upload-order.component.mjs +38 -6
- package/esm2020/lib/ui-upload-order.module.mjs +8 -4
- package/fesm2015/uitec-ng-upload-order.mjs +48 -10
- package/fesm2015/uitec-ng-upload-order.mjs.map +1 -1
- package/fesm2020/uitec-ng-upload-order.mjs +44 -8
- package/fesm2020/uitec-ng-upload-order.mjs.map +1 -1
- package/lib/ui-upload-order.component.d.ts +12 -2
- package/lib/ui-upload-order.module.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
|
|
1
|
+
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild } from "@angular/core";
|
|
2
2
|
import { FilePondComponent } from "ngx-filepond";
|
|
3
3
|
import { Lightbox } from "ngx-lightbox";
|
|
4
4
|
import { Observable } from "rxjs";
|
|
@@ -9,6 +9,7 @@ import * as i1 from "ngx-lightbox";
|
|
|
9
9
|
import * as i2 from "@angular/common/http";
|
|
10
10
|
import * as i3 from "@angular/common";
|
|
11
11
|
import * as i4 from "ngx-filepond";
|
|
12
|
+
import * as i5 from "uitec-ng-icon";
|
|
12
13
|
export class UiUploadOrderComponent {
|
|
13
14
|
constructor(_lightbox, http) {
|
|
14
15
|
this._lightbox = _lightbox;
|
|
@@ -18,6 +19,9 @@ export class UiUploadOrderComponent {
|
|
|
18
19
|
this.maxFiles = 10;
|
|
19
20
|
this.lightBox = true;
|
|
20
21
|
this.instantUpload = true;
|
|
22
|
+
this.errorPosition = 'right';
|
|
23
|
+
this.circle = false;
|
|
24
|
+
this.onPreviewRemove = new EventEmitter();
|
|
21
25
|
this.onRemove = new EventEmitter();
|
|
22
26
|
this.onAdded = new EventEmitter();
|
|
23
27
|
this.onAllAdded = new EventEmitter();
|
|
@@ -31,6 +35,11 @@ export class UiUploadOrderComponent {
|
|
|
31
35
|
// public pondFiles: FilePondOptions["files"] = [];
|
|
32
36
|
this.pondFiles = [];
|
|
33
37
|
this.album = [];
|
|
38
|
+
this.removerPreview = () => {
|
|
39
|
+
this.control?.setValue(null);
|
|
40
|
+
this.control?.markAsDirty();
|
|
41
|
+
this.onPreviewRemove.emit();
|
|
42
|
+
};
|
|
34
43
|
}
|
|
35
44
|
ngOnInit() {
|
|
36
45
|
this.pondOptions = {
|
|
@@ -54,6 +63,7 @@ export class UiUploadOrderComponent {
|
|
|
54
63
|
styleItemPanelAspectRatio: "0.75",
|
|
55
64
|
itemInsertLocation: "after",
|
|
56
65
|
credits: false,
|
|
66
|
+
beforeRemoveFile: this.beforeRemove ? (file) => this.beforeRemove(file) : undefined,
|
|
57
67
|
server: {
|
|
58
68
|
process: (fieldName, file, metadata, load, error, progress, abort) => {
|
|
59
69
|
const formData = new FormData();
|
|
@@ -176,8 +186,8 @@ export class UiUploadOrderComponent {
|
|
|
176
186
|
this.onUploadError.emit();
|
|
177
187
|
}
|
|
178
188
|
pondHandleInit(event) {
|
|
179
|
-
this.onInit.emit(this.pondFiles);
|
|
180
189
|
this.pond = event.pond;
|
|
190
|
+
this.onInit.emit(this.pondFiles);
|
|
181
191
|
}
|
|
182
192
|
pondHandleAddFile(event) {
|
|
183
193
|
this.onAdded.emit(event);
|
|
@@ -268,19 +278,28 @@ export class UiUploadOrderComponent {
|
|
|
268
278
|
const files = this.pond.getFiles();
|
|
269
279
|
files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();
|
|
270
280
|
}
|
|
281
|
+
get totalFiles() {
|
|
282
|
+
return this.pond ? this.pond.getFiles().length : this.pondFiles.length;
|
|
283
|
+
}
|
|
284
|
+
get control() {
|
|
285
|
+
return this.form?.get(this.controlName);
|
|
286
|
+
}
|
|
271
287
|
isErrorMessage() {
|
|
272
|
-
let control = this.
|
|
288
|
+
let control = this.control;
|
|
273
289
|
if (control?.errors?.required && (!this.pond || this.pond.getFiles().length === 0)) {
|
|
274
290
|
return "Obrigatório";
|
|
275
291
|
}
|
|
276
292
|
return null;
|
|
277
293
|
}
|
|
294
|
+
isPreviewVisible() {
|
|
295
|
+
return !this.multiple && !!this.previewUrl;
|
|
296
|
+
}
|
|
278
297
|
}
|
|
279
298
|
UiUploadOrderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, deps: [{ token: i1.Lightbox }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
280
|
-
UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { uploadObservable: "uploadObservable", form: "form", controlName: "controlName", url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox", instantUpload: "instantUpload" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onAllAdded: "onAllAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected", noFilesAdded: "noFilesAdded", onUploadError: "onUploadError" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "
|
|
299
|
+
UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { uploadObservable: "uploadObservable", form: "form", controlName: "controlName", url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox", instantUpload: "instantUpload", errorPosition: "errorPosition", beforeRemove: "beforeRemove", previewUrl: "previewUrl", circle: "circle" }, outputs: { onPreviewRemove: "onPreviewRemove", onRemove: "onRemove", onAdded: "onAdded", onAllAdded: "onAllAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected", noFilesAdded: "noFilesAdded", onUploadError: "onUploadError" }, queries: [{ propertyName: "previewTemplate", first: true, predicate: ["preview"], descendants: true }], viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isPreviewVisible(); else uploader\" class=\"upload-preview\" [class.upload-preview-circle]=\"circle\">\n <ng-container *ngIf=\"previewTemplate; else previewPadrao\"\n [ngTemplateOutlet]=\"previewTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: previewUrl, remover: removerPreview }\">\n </ng-container>\n\n <ng-template #previewPadrao>\n <img class=\"upload-preview-imagem\" [src]=\"previewUrl\" alt=\"\">\n <a href=\"javascript:void(0)\" class=\"btn btn-sm btn-icon upload-preview-remover\" (click)=\"removerPreview()\">\n <ui-icon icon=\"delete_forever\"></ui-icon>Remover imagem\n </a>\n </ng-template>\n</div>\n\n<ng-template #uploader>\n <div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\"\n [class.file-pond-reorder]=\"reorder\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\n (onerror)=\"pondHandleError()\"/>\n\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\n *ngIf=\"isErrorMessage()\">\n {{isErrorMessage()}}\n </div>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .filepond--list-scroller{width:calc(100% - 25px);margin:auto;padding-bottom:20px}:host ::ng-deep .filepond--drop-label{color:#555;justify-content:flex-start;margin-left:20px}:host ::ng-deep .filepond--label-action{color:var(--theme-default);text-decoration-color:var(--theme-default)}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed;height:12%}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:var(--theme-secondary);display:none}:host ::ng-deep .file-pont-transparent .filepond--image-preview,:host ::ng-deep .file-pont-transparent .filepond--item-panel{background:transparent!important}:host ::ng-deep .file-pont-transparent .filepond--file-info{display:none}:host ::ng-deep .file-pont-transparent .filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:none}:host ::ng-deep .file-pont-transparent .filepond--item{border:1px solid rgba(173,181,189,.4);border-radius:8px;overflow:hidden}:host ::ng-deep .file-pont-transparent.file-pond-reorder .filepond--item{cursor:grab}:host ::ng-deep .filepond--file:hover .filepond--file-action-button{display:block}@media (max-width: 800px){:host ::ng-deep .filepond--panel-root{height:5%}}@media (max-width: 480px){:host ::ng-deep .filepond--panel-root{height:2%}}::ng-deep .ng-submitted .upload-invalid .filepond--panel-root{border-color:#fc4438}::ng-deep .ng-submitted .upload-invalid .invalid-tooltip{display:block;transform:translate(-50%,-50%);top:0;right:0}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}.upload-preview{position:relative;display:flex;flex-direction:column;align-items:flex-start}.upload-preview .upload-preview-imagem{max-height:100px;width:auto;margin:1rem 0;object-fit:cover}.upload-preview.upload-preview-circle .upload-preview-imagem{width:100px;height:100px;border-radius:50%}.upload-preview .upload-preview-remover{color:var(--ui-placeholder)}.upload-preview .upload-preview-remover:hover{color:var(--ui-text-danger, #dc3545)}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(25% - 7px)}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.FilePondComponent, selector: "file-pond", inputs: ["options", "files"], outputs: ["oninit", "onwarning", "onerror", "oninitfile", "onactivatefile", "onaddfilestart", "onaddfileprogress", "onaddfile", "onprocessfilestart", "onprocessfileprogress", "onprocessfileabort", "onprocessfilerevert", "onprocessfile", "onprocessfiles", "onremovefile", "onpreparefile", "onupdatefiles", "onreorderfiles"] }, { kind: "component", type: i5.UiIconComponent, selector: "ui-icon", inputs: ["icon", "size", "class"] }] });
|
|
281
300
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
|
|
282
301
|
type: Component,
|
|
283
|
-
args: [{ selector: "ui-upload-order", template: "
|
|
302
|
+
args: [{ selector: "ui-upload-order", template: "<div *ngIf=\"isPreviewVisible(); else uploader\" class=\"upload-preview\" [class.upload-preview-circle]=\"circle\">\n <ng-container *ngIf=\"previewTemplate; else previewPadrao\"\n [ngTemplateOutlet]=\"previewTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: previewUrl, remover: removerPreview }\">\n </ng-container>\n\n <ng-template #previewPadrao>\n <img class=\"upload-preview-imagem\" [src]=\"previewUrl\" alt=\"\">\n <a href=\"javascript:void(0)\" class=\"btn btn-sm btn-icon upload-preview-remover\" (click)=\"removerPreview()\">\n <ui-icon icon=\"delete_forever\"></ui-icon>Remover imagem\n </a>\n </ng-template>\n</div>\n\n<ng-template #uploader>\n <div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\"\n [class.file-pond-reorder]=\"reorder\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\n (onerror)=\"pondHandleError()\"/>\n\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\n *ngIf=\"isErrorMessage()\">\n {{isErrorMessage()}}\n </div>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .filepond--list-scroller{width:calc(100% - 25px);margin:auto;padding-bottom:20px}:host ::ng-deep .filepond--drop-label{color:#555;justify-content:flex-start;margin-left:20px}:host ::ng-deep .filepond--label-action{color:var(--theme-default);text-decoration-color:var(--theme-default)}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed;height:12%}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:var(--theme-secondary);display:none}:host ::ng-deep .file-pont-transparent .filepond--image-preview,:host ::ng-deep .file-pont-transparent .filepond--item-panel{background:transparent!important}:host ::ng-deep .file-pont-transparent .filepond--file-info{display:none}:host ::ng-deep .file-pont-transparent .filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:none}:host ::ng-deep .file-pont-transparent .filepond--item{border:1px solid rgba(173,181,189,.4);border-radius:8px;overflow:hidden}:host ::ng-deep .file-pont-transparent.file-pond-reorder .filepond--item{cursor:grab}:host ::ng-deep .filepond--file:hover .filepond--file-action-button{display:block}@media (max-width: 800px){:host ::ng-deep .filepond--panel-root{height:5%}}@media (max-width: 480px){:host ::ng-deep .filepond--panel-root{height:2%}}::ng-deep .ng-submitted .upload-invalid .filepond--panel-root{border-color:#fc4438}::ng-deep .ng-submitted .upload-invalid .invalid-tooltip{display:block;transform:translate(-50%,-50%);top:0;right:0}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}.upload-preview{position:relative;display:flex;flex-direction:column;align-items:flex-start}.upload-preview .upload-preview-imagem{max-height:100px;width:auto;margin:1rem 0;object-fit:cover}.upload-preview.upload-preview-circle .upload-preview-imagem{width:100px;height:100px;border-radius:50%}.upload-preview .upload-preview-remover{color:var(--ui-placeholder)}.upload-preview .upload-preview-remover:hover{color:var(--ui-text-danger, #dc3545)}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(25% - 7px)}}\n"] }]
|
|
284
303
|
}], ctorParameters: function () { return [{ type: i1.Lightbox }, { type: i2.HttpClient }]; }, propDecorators: { uploadObservable: [{
|
|
285
304
|
type: Input
|
|
286
305
|
}], form: [{
|
|
@@ -303,6 +322,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
303
322
|
type: Input
|
|
304
323
|
}], instantUpload: [{
|
|
305
324
|
type: Input
|
|
325
|
+
}], errorPosition: [{
|
|
326
|
+
type: Input
|
|
327
|
+
}], beforeRemove: [{
|
|
328
|
+
type: Input
|
|
329
|
+
}], previewUrl: [{
|
|
330
|
+
type: Input
|
|
331
|
+
}], circle: [{
|
|
332
|
+
type: Input
|
|
333
|
+
}], onPreviewRemove: [{
|
|
334
|
+
type: Output
|
|
306
335
|
}], onRemove: [{
|
|
307
336
|
type: Output
|
|
308
337
|
}], onAdded: [{
|
|
@@ -326,5 +355,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
326
355
|
}], myPond: [{
|
|
327
356
|
type: ViewChild,
|
|
328
357
|
args: ["myPond"]
|
|
358
|
+
}], previewTemplate: [{
|
|
359
|
+
type: ContentChild,
|
|
360
|
+
args: ["preview"]
|
|
329
361
|
}] } });
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXVwbG9hZC1vcmRlci9zcmMvbGliL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS11cGxvYWQtb3JkZXIvc3JjL2xpYi91aS11cGxvYWQtb3JkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRCxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQU9qRSxNQUFNLE9BQU8sc0JBQXNCO0lBNkIvQixZQUFvQixTQUFtQixFQUFVLElBQWdCO1FBQTdDLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBcEJ4RCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUV0QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRTdCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3RDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxJQUFJLFlBQVks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QVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRmlsZVBvbmRDb21wb25lbnQgfSBmcm9tIFwibmd4LWZpbGVwb25kXCI7XHJcbmltcG9ydCB7IEZpbGVQb25kLCBGaWxlUG9uZEZpbGUsIEZpbGVQb25kSW5pdGlhbEZpbGUsIEZpbGVQb25kT3B0aW9ucyB9IGZyb20gXCJmaWxlcG9uZFwiO1xyXG5pbXBvcnQgeyBJQWxidW0sIExpZ2h0Ym94IH0gZnJvbSBcIm5neC1saWdodGJveFwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwidWktdXBsb2FkLW9yZGVyXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpVXBsb2FkT3JkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIHVwbG9hZE9ic2VydmFibGU6IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICBwcml2YXRlIGV2ZW50c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIEBJbnB1dCgpIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgICBASW5wdXQoKSBjb250cm9sTmFtZTogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIHVybDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaW5pdGlhbEZpbGVzOiBzdHJpbmdbXTtcclxuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIHJlb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgbWF4RmlsZXM6IG51bWJlciA9IDEwO1xyXG4gICAgQElucHV0KCkgdHJhbnNwYXJlbnQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBsaWdodEJveDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBpbnN0YW50VXBsb2FkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25BbGxBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25BY3RpdmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVBvbmRGaWxlPigpO1xyXG4gICAgQE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVBvbmRPcHRpb25zW1wiZmlsZXNcIl0+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25NYXhSZWFjaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25SZU9yZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9uZEZpbGVbXT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgbm9GaWxlc0FkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25VcGxvYWRFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoXCJteVBvbmRcIikgbXlQb25kOiBGaWxlUG9uZENvbXBvbmVudDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9saWdodGJveDogTGlnaHRib3gsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cclxuXHJcbiAgICBwdWJsaWMgcG9uZDogRmlsZVBvbmQ7XHJcbiAgICBwdWJsaWMgcG9uZE9wdGlvbnM6IEZpbGVQb25kT3B0aW9ucztcclxuICAgIC8vIHB1YmxpYyBwb25kRmlsZXM6IEZpbGVQb25kT3B0aW9uc1tcImZpbGVzXCJdID0gW107XHJcbiAgICBwdWJsaWMgcG9uZEZpbGVzOiBGaWxlUG9uZEluaXRpYWxGaWxlW10gPSBbXTtcclxuICAgIHB1YmxpYyBhbGJ1bTogSUFsYnVtW10gPSBbXTtcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBvbmRPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBhbGxvd011bHRpcGxlOiB0aGlzLm11bHRpcGxlLFxyXG4gICAgICAgICAgICBsYWJlbElkbGU6XHJcbiAgICAgICAgICAgICAgICAnQXJyYXN0ZSBzZXVzIGFycXVpdm9zIG91IDxzcGFuIGNsYXNzPVwiZmlsZXBvbmQtLWxhYmVsLWFjdGlvblwiPmNsaXF1ZSBhcXVpPC9zcGFuPiBwYXJhIHNlbGVjaW9uYXIuJyxcclxuICAgICAgICAgICAgYWxsb3dSZW9yZGVyOiB0aGlzLnJlb3JkZXIsXHJcbiAgICAgICAgICAgIG1heEZpbGVzOiB0aGlzLm1heEZpbGVzLFxyXG4gICAgICAgICAgICBhY2NlcHRlZEZpbGVUeXBlczogW1wiaW1hZ2UvKlwiXSxcclxuICAgICAgICAgICAgaW5zdGFudFVwbG9hZDogdGhpcy5pbnN0YW50VXBsb2FkLFxyXG4gICAgICAgICAgICBhbGxvd1Byb2Nlc3M6IHRoaXMuaW5zdGFudFVwbG9hZCxcclxuICAgICAgICAgICAgZHJvcFZhbGlkYXRpb246IHRydWUsXHJcbiAgICAgICAgICAgIGljb25SZW1vdmU6IGA8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTUgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPG1hc2sgaWQ9XCJtYXNrMF8zNzA2N18zNDE0NlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE2XCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCIwLjEzMDg1OVwiIHk9XCIwLjYzMTU5MlwiIHdpZHRoPVwiMTQuNzM2OFwiIGhlaWdodD1cIjE0LjczNjhcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cclxuICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICA8ZyBtYXNrPVwidXJsKCNtYXNrMF8zNzA2N18zNDE0NilcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk00LjQzIDEzLjUyNjNDNC4wOTIyOCAxMy41MjYzIDMuODAzMTcgMTMuNDA2IDMuNTYyNjcgMTMuMTY1NUMzLjMyMjE3IDEyLjkyNSAzLjIwMTkzIDEyLjYzNTkgMy4yMDE5MyAxMi4yOTgyVjQuMzE1NzRDMy4wMjc5NSA0LjMxNTc0IDIuODgyMTIgNC4yNTY4OSAyLjc2NDQzIDQuMTM5MkMyLjY0Njc0IDQuMDIxNTEgMi41ODc4OSAzLjg3NTY4IDIuNTg3ODkgMy43MDE3QzIuNTg3ODkgMy41Mjc3MyAyLjY0Njc0IDMuMzgxODkgMi43NjQ0MyAzLjI2NDJDMi44ODIxMiAzLjE0NjUxIDMuMDI3OTUgMy4wODc2NyAzLjIwMTkzIDMuMDg3NjdINS42NTgwN0M1LjY1ODA3IDIuOTEzNjkgNS43MTY5MSAyLjc2Nzg2IDUuODM0NiAyLjY1MDE3QzUuOTUyMjkgMi41MzI0OCA2LjA5ODEyIDIuNDczNjMgNi4yNzIxIDIuNDczNjNIOC43MjgyNEM4LjkwMjIyIDIuNDczNjMgOS4wNDgwNSAyLjUzMjQ4IDkuMTY1NzQgMi42NTAxN0M5LjI4MzQzIDIuNzY3ODYgOS4zNDIyOCAyLjkxMzY5IDkuMzQyMjggMy4wODc2N0gxMS43OTg0QzExLjk3MjQgMy4wODc2NyAxMi4xMTgyIDMuMTQ2NTEgMTIuMjM1OSAzLjI2NDJDMTIuMzUzNiAzLjM4MTg5IDEyLjQxMjUgMy41Mjc3MyAxMi40MTI1IDMuNzAxN0MxMi40MTI1IDMuODc1NjggMTIuMzUzNiA0LjAyMTUxIDEyLjIzNTkgNC4xMzkyQzEyLjExODIgNC4yNTY4OSAxMS45NzI0IDQuMzE1NzQgMTEuNzk4NCA0LjMxNTc0VjEyLjI5ODJDMTEuNzk4NCAxMi42MzU5IDExLjY3ODIgMTIuOTI1IDExLjQzNzcgMTMuMTY1NUMxMS4xOTcyIDEzLjQwNiAxMC45MDgxIDEzLjUyNjMgMTAuNTcwMyAxMy41MjYzSDQuNDNaTTQuNDMgNC4zMTU3NFYxMi4yOTgySDEwLjU3MDNWNC4zMTU3NEg0LjQzWk03LjUwMDE3IDkuMTY2NjJMOC42NjY4NCAxMC4zMzMzQzguNzg5NjUgMTAuNDQ1OSA4LjkzNTQ4IDEwLjUwMjEgOS4xMDQzNCAxMC41MDIxQzkuMjczMiAxMC41MDIxIDkuNDEzOTEgMTAuNDQ1OSA5LjUyNjQ5IDEwLjMzMzNDOS42NDkyOSAxMC4yMTA1IDkuNzEwNyAxMC4wNjQ2IDkuNzEwNyA5Ljg5NTc4QzkuNzEwNyA5LjcyNjkyIDkuNjQ5MjkgOS41ODYyMSA5LjUyNjQ5IDkuNDczNjNMOC4zNTk4MiA4LjMwNjk3TDkuNTI2NDkgNy4xNDAzQzkuNjQ5MjkgNy4wMTc0OSA5LjcxMDcgNi44NzE2NiA5LjcxMDcgNi43MDI4QzkuNzEwNyA2LjUzMzk0IDkuNjQ5MjkgNi4zOTMyMiA5LjUyNjQ5IDYuMjgwNjVDOS40MTM5MSA2LjE1Nzg0IDkuMjczMiA2LjA5NjQ0IDkuMTA0MzQgNi4wOTY0NEM4LjkzNTQ4IDYuMDk2NDQgOC43ODk2NSA2LjE1Nzg0IDguNjY2ODQgNi4yODA2NUw3LjUwMDE3IDcuNDQ3MzJMNi4zMzM1IDYuMjgwNjVDNi4yMjA5MyA2LjE1Nzg0IDYuMDgwMjIgNi4wOTY0NCA1LjkxMTM2IDYuMDk2NDRDNS43NDI1IDYuMDk2NDQgNS41OTY2NiA2LjE1Nzg0IDUuNDczODYgNi4yODA2NUM1LjM2MTI4IDYuMzkzMjIgNS4zMDUgNi41MzM5NCA1LjMwNSA2LjcwMjhDNS4zMDUgNi44NzE2NiA1LjM2MTI4IDcuMDE3NDkgNS40NzM4NiA3LjE0MDNMNi42NDA1MiA4LjMwNjk3TDUuNDczODYgOS40NzM2M0M1LjM2MTI4IDkuNTg2MjEgNS4zMDUgOS43MjY5MiA1LjMwNSA5Ljg5NTc4QzUuMzA1IDEwLjA2NDYgNS4zNjEyOCAxMC4yMTA1IDUuNDczODYgMTAuMzMzM0M1LjU5NjY2IDEwLjQ0NTkgNS43NDI1IDEwLjUwMjEgNS45MTEzNiAxMC41MDIxQzYuMDgwMjIgMTAuNTAyMSA2LjIyMDkzIDEwLjQ0NTkgNi4zMzM1IDEwLjMzMzNMNy41MDAxNyA5LjE2NjYyWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgPC9nPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHN0eWxlQnV0dG9uUmVtb3ZlSXRlbVBvc2l0aW9uOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgICAgIGltYWdlUmVzaXplTW9kZTogXCJjb250YWluXCIsXHJcbiAgICAgICAgICAgIHN0eWxlSXRlbVBhbmVsQXNwZWN0UmF0aW86IFwiMC43NVwiLFxyXG4gICAgICAgICAgICBpdGVtSW5zZXJ0TG9jYXRpb246IFwiYWZ0ZXJcIixcclxuICAgICAgICAgICAgY3JlZGl0czogZmFsc2UsXHJcbiAgICAgICAgICAgIHNlcnZlcjoge1xyXG4gICAgICAgICAgICAgICAgcHJvY2VzczogKGZpZWxkTmFtZSwgZmlsZSwgbWV0YWRhdGEsIGxvYWQsIGVycm9yLCBwcm9ncmVzcywgYWJvcnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmaWVsZE5hbWUsIGZpbGUsIGZpbGUubmFtZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmh0dHBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy51cmwsIGZvcm1EYXRhLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmU6IFwiZXZlbnRzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyhldmVudC5sZW5ndGhDb21wdXRhYmxlLCBldmVudC5sb2FkZWQsIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gZXZlbnQuYm9keTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZXJ2ZXJJZDogc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzcG9uc2UpICYmIHJlc3BvbnNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJJZCA9IHJlc3BvbnNlWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZSAmJiAocmVzcG9uc2Uuc2VydmVySWQgfHwgcmVzcG9uc2UuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVySWQgPSByZXNwb25zZS5zZXJ2ZXJJZCB8fCByZXNwb25zZS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJSZXNwb3N0YSBkbyBzZXJ2aWRvciBpbnbDoWxpZGE6IHNlcnZlcklkIG7Do28gZW5jb250cmFkb1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkKHNlcnZlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm8gYW8gcHJvY2Vzc2FyIHJlc3Bvc3RhIGRvIHNlcnZpZG9yOlwiLCBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFwiRXJybyBhbyBwcm9jZXNzYXIgcmVzcG9zdGEgZG8gc2Vydmlkb3JcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihcIkVycm8gbm8gdXBsb2FkOiBcIiArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbG9hZDogKHNvdXJjZSwgbG9hZCwgZXJyb3IsIHByb2dyZXNzLCBhYm9ydCwgaGVhZGVycykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG15UmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2gobXlSZXF1ZXN0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJybyBhbyBjYXJyZWdhciBpbWFnZW06XCIsIHJlc3BvbnNlLnN0YXR1cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJFcnJvIGFvIGNhcnJlZ2FyIGEgaW1hZ2VtXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmFycmF5QnVmZmVyKCkudGhlbigoYnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcImNvbnRlbnQtdHlwZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gc291cmNlLnNwbGl0KFwiLlwiKS5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW1lVHlwZU1hcCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicDogXCJpbWFnZS93ZWJwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpwZzogXCJpbWFnZS9qcGVnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpwZWc6IFwiaW1hZ2UvanBlZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmc6IFwiaW1hZ2UvcG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlVHlwZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlTWFwW2ZpbGVFeHRlbnNpb25dIHx8IGNvbnRlbnRUeXBlIHx8IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG15QmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6IGZpbGVUeXBlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQobXlCbG9iKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm8gbm8gc2VydmVyLmxvYWQ6XCIsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihcIkVycm8gYW8gY2FycmVnYXIgYSBpbWFnZW1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlbW92ZTogKHNvdXJjZSwgbG9hZCwgZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihcIk5vbWUgZG8gYXJxdWl2byBuw6NvIGZvcm5lY2lkb1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHNvdXJjZS5zcGxpdChcIi9cIikucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmUuZW1pdChmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmV2ZXJ0OiAodW5pcXVlRmlsZUlkLCBsb2FkLCBlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdW5pcXVlRmlsZUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFwiTm9tZSBkbyBhcnF1aXZvIG7Do28gZm9ybmVjaWRvXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQodW5pcXVlRmlsZUlkKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbnRVcGxvYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudHNTdWJzY3JpcHRpb24gPSB0aGlzLnVwbG9hZE9ic2VydmFibGUuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBsb2FkRmlsZXMoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLnBvbmRGaWxlcyA9IHRoaXMuaW5pdGlhbEZpbGVzLm1hcCgoaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogaXRlbSxcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibG9jYWxcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pbnN0YW50VXBsb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVFcnJvcigpIHtcclxuICAgICAgICB0aGlzLm9uVXBsb2FkRXJyb3IuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVJbml0KGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uSW5pdC5lbWl0KHRoaXMucG9uZEZpbGVzKTtcclxuXHJcbiAgICAgICAgdGhpcy5wb25kID0gZXZlbnQucG9uZDtcclxuICAgIH1cclxuXHJcbiAgICBwb25kSGFuZGxlQWRkRmlsZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5vbkFkZGVkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vU8OzIGZ1bmNpb25hIHF1YW5kbyBuw6NvIHRlbSBhcnF1aXZvcyBpbmljaWFpc1xyXG4gICAgcG9uZEhhbmRsZUFsbEZpbGVzQWRkZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBjb25zdCBmaWxlcyA9IGV2ZW50LnBvbmQuZ2V0RmlsZXMoKTtcclxuXHJcbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZTogRmlsZVBvbmRGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmb3JtYXR0ZWROYW1lID0gZmlsZS5zZXJ2ZXJJZD8ucmVwbGFjZSgvW1wiXFxbXFxdXS9nLCBcIlwiKTtcclxuICAgICAgICAgICAgZmlsZXNMaXN0LnB1c2goZm9ybWF0dGVkTmFtZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMub25BbGxBZGRlZC5lbWl0KGZpbGVzTGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9uZEhhbmRsZUFjdGl2YXRlRmlsZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5vbkFjdGl2YXRlLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIHRoaXMubGlnaHRCb3ggJiYgdGhpcy5vcGVuTGlnaHRCb3goZXZlbnQuZmlsZS5maWxlbmFtZVdpdGhvdXRFeHRlbnNpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVVcGRhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZmlsbEFsYnVtKGV2ZW50Lml0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwb25kSGFuZGxlUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBsZXQgZmlsZU5hbWU6IHN0cmluZztcclxuICAgICAgICBpZiAoZXZlbnQuZmlsZS5zb3VyY2UgaW5zdGFuY2VvZiBGaWxlKSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lID0gZXZlbnQuZmlsZS5zZXJ2ZXJJZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWxlTmFtZSA9IGV2ZW50LmZpbGUuc291cmNlLmluY2x1ZGVzKFwiL1wiKSA/IGV2ZW50LmZpbGUuc291cmNlLnNwbGl0KFwiL1wiKS5wb3AoKSA6IGV2ZW50LmZpbGUuc291cmNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQoZmlsZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUmVvcmRlckZpbGVzKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmZpbGxBbGJ1bShldmVudC5pdGVtcywgdHJ1ZSk7XHJcbiAgICAgICAgbGV0IGl0ZW1zTGlzdCA9IGV2ZW50Lml0ZW1zLm1hcCgoaXRlbTogRmlsZVBvbmRGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnNlcnZlcklkLnJlcGxhY2UoL1tcIlxcW1xcXV0vZywgXCJcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5maWxlbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMub25SZU9yZGVyLmVtaXQoaXRlbXNMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICB3YXJuaW5nKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBpZiAoZXZlbnQuZXJyb3IuY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25NYXhSZWFjaGVkLmVtaXQoXHJcbiAgICAgICAgICAgICAgICBgTGltaXRlIGRlIEFycXVpdm9zIGF0aW5naWRvLiBWb2PDqiBwb2RlIGluc2VyaXIgdW0gdG90YWwgZGUgJHt0aGlzLm1heEZpbGVzfSBhcnF1aXZvcy5gXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5MaWdodEJveChmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5hbGJ1bVxyXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5jYXB0aW9uO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuaW5kZXhPZihmaWxlTmFtZSk7XHJcbiAgICAgICAgdGhpcy5fbGlnaHRib3gub3Blbih0aGlzLmFsYnVtLCBpbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsbEFsYnVtKGZpbGVzOiBbXSwgcmVPcmRlcj86IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoZmlsZXMubGVuZ3RoICE9PSB0aGlzLmFsYnVtLmxlbmd0aCB8fCByZU9yZGVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZUFsYnVtID0gYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICBmaWxlcy5tYXAoYXN5bmMgKGZpbGU6IEZpbGVQb25kRmlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlVXJsOiBzdHJpbmc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVVybCA9IGF3YWl0IHRoaXMucmVhZEZpbGVBc3luYyhmaWxlLnNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVVybCA9IGZpbGUuc291cmNlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGZpbGVVcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb246IGZpbGUuZmlsZW5hbWVXaXRob3V0RXh0ZW5zaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHVtYjogXCJcIixcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWxidW0gPSBwcmVBbGJ1bTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVhZEZpbGVBc3luYyhmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhVXJsID0gcmVhZGVyLnJlc3VsdDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVVcmwgPSBkYXRhVXJsLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZpbGVVcmwpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwbG9hZEZpbGVzKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5wb25kLmdldEZpbGVzKCk7XHJcbiAgICAgICAgZmlsZXMubGVuZ3RoID4gMCA/IHRoaXMucG9uZC5wcm9jZXNzRmlsZXMoKSA6IHRoaXMubm9GaWxlc0FkZGVkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0Vycm9yTWVzc2FnZSgpIHtcclxuICAgICAgICBsZXQgY29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KHRoaXMuY29udHJvbE5hbWUpO1xyXG5cclxuICAgICAgICBpZiAoY29udHJvbD8uZXJyb3JzPy5yZXF1aXJlZCAmJiAoIXRoaXMucG9uZCB8fCB0aGlzLnBvbmQuZ2V0RmlsZXMoKS5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIk9icmlnYXTDs3Jpb1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iLCI8IS0tIGFwcC5jb21wb25lbnQuaHRtbCAtLT5cclxuPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgW2NsYXNzLnVwbG9hZC1pbnZhbGlkXT1cImlzRXJyb3JNZXNzYWdlKClcIj5cclxuICAgIDxmaWxlLXBvbmQgI215UG9uZCBuYW1lPSdVcGxvYWRGb3JtW2ltYWdlbV1bXScgW2NsYXNzLmZpbGUtcG9udC10cmFuc3BhcmVudF09XCJ0cmFuc3BhcmVudFwiIFtvcHRpb25zXT1cInBvbmRPcHRpb25zXCJcclxuICAgICAgICAob25pbml0KT1cInBvbmRIYW5kbGVJbml0KCRldmVudClcIiBbZmlsZXNdPVwicG9uZEZpbGVzXCIgKG9udXBkYXRlZmlsZXMpPVwicG9uZEhhbmRsZVVwZGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAob25hY3RpdmF0ZWZpbGUpPVwicG9uZEhhbmRsZUFjdGl2YXRlRmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAob25yZW9yZGVyZmlsZXMpPVwib25SZW9yZGVyRmlsZXMoJGV2ZW50KVwiIChvbndhcm5pbmcpPVwid2FybmluZygkZXZlbnQpXCJcclxuICAgICAgICAob25wcm9jZXNzZmlsZXMpPVwicG9uZEhhbmRsZUFsbEZpbGVzQWRkZWQoJGV2ZW50KVwiIChvbnByb2Nlc3NmaWxlKT1cInBvbmRIYW5kbGVBZGRGaWxlKCRldmVudClcIlxyXG4gICAgICAgIChvbmVycm9yKT1cInBvbmRIYW5kbGVFcnJvcigpXCIvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLXRvb2x0aXBcIiBbY2xhc3NdPVwiJ3Rvb2x0aXAtJyArIGVycm9yUG9zaXRpb25cIiBbY2xhc3MudG91Y2hlZF09XCJjb250cm9sPy50b3VjaGVkXCJcclxuICAgICAgICAqbmdJZj1cImlzRXJyb3JNZXNzYWdlKClcIj5cclxuICAgICAgICB7e2lzRXJyb3JNZXNzYWdlKCl9fVxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXVwbG9hZC1vcmRlci9zcmMvbGliL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS11cGxvYWQtb3JkZXIvc3JjL2xpYi91aS11cGxvYWQtb3JkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpELE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sc0JBQXNCO0lBdUMvQixZQUFvQixTQUFtQixFQUFVLElBQWdCO1FBQTdDLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBOUJ4RCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUV0QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGtCQUFhLEdBQVcsT0FBTyxDQUFDO1FBTWhDLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFdkIsb0JBQWUsR0FBRyxJQUFJLFlB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QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRWMsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNNLGVBQWU7c0JBQXZDLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGaWxlUG9uZENvbXBvbmVudCB9IGZyb20gXCJuZ3gtZmlsZXBvbmRcIjtcclxuaW1wb3J0IHsgRmlsZVBvbmQsIEZpbGVQb25kRmlsZSwgRmlsZVBvbmRJbml0aWFsRmlsZSwgRmlsZVBvbmRPcHRpb25zIH0gZnJvbSBcImZpbGVwb25kXCI7XHJcbmltcG9ydCB7IElBbGJ1bSwgTGlnaHRib3ggfSBmcm9tIFwibmd4LWxpZ2h0Ym94XCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ1aS11cGxvYWQtb3JkZXJcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vdWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vdWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlVcGxvYWRPcmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgdXBsb2FkT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTx2b2lkPjtcclxuICAgIHByaXZhdGUgZXZlbnRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIGNvbnRyb2xOYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KCkgdXJsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpbml0aWFsRmlsZXM6IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcmVvcmRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBtYXhGaWxlczogbnVtYmVyID0gMTA7XHJcbiAgICBASW5wdXQoKSB0cmFuc3BhcmVudDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGxpZ2h0Qm94OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGluc3RhbnRVcGxvYWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZXJyb3JQb3NpdGlvbjogc3RyaW5nID0gJ3JpZ2h0JztcclxuICAgIC8vIFJldG9ybmFyIGZhbHNlIChvdSB1bWEgUHJvbWlzZSBxdWUgcmVzb2x2ZSBmYWxzZSkgY2FuY2VsYSBhIHJlbW/Dp8OjbywgZXguOiBjb25maXJtYcOnw6NvIGNvbSBvIHVzdcOhcmlvLlxyXG4gICAgQElucHV0KCkgYmVmb3JlUmVtb3ZlOiAoZmlsZTogRmlsZVBvbmRGaWxlKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcclxuXHJcbiAgICAvLyBDb20gbXVsdGlwbGU9ZmFsc2UgZSB1bWEgaW1hZ2VtIGrDoSBzYWx2YSwgbW9zdHJhIG8gcHJldmlldyBubyBsdWdhciBkYSDDoXJlYSBkZSB1cGxvYWQuXHJcbiAgICBASW5wdXQoKSBwcmV2aWV3VXJsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjaXJjbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25QcmV2aWV3UmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvblJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIG9uQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkFsbEFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkFjdGl2YXRlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9uZEZpbGU+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9uZE9wdGlvbnNbXCJmaWxlc1wiXT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbk1heFJlYWNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvblJlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVQb25kRmlsZVtdPigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBub0ZpbGVzQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblVwbG9hZEVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcIm15UG9uZFwiKSBteVBvbmQ6IEZpbGVQb25kQ29tcG9uZW50O1xyXG4gICAgQENvbnRlbnRDaGlsZChcInByZXZpZXdcIikgcHJldmlld1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xpZ2h0Ym94OiBMaWdodGJveCwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuICAgIHB1YmxpYyBwb25kOiBGaWxlUG9uZDtcclxuICAgIHB1YmxpYyBwb25kT3B0aW9uczogRmlsZVBvbmRPcHRpb25zO1xyXG4gICAgLy8gcHVibGljIHBvbmRGaWxlczogRmlsZVBvbmRPcHRpb25zW1wiZmlsZXNcIl0gPSBbXTtcclxuICAgIHB1YmxpYyBwb25kRmlsZXM6IEZpbGVQb25kSW5pdGlhbEZpbGVbXSA9IFtdO1xyXG4gICAgcHVibGljIGFsYnVtOiBJQWxidW1bXSA9IFtdO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucG9uZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGU6IHRoaXMubXVsdGlwbGUsXHJcbiAgICAgICAgICAgIGxhYmVsSWRsZTpcclxuICAgICAgICAgICAgICAgICdBcnJhc3RlIHNldXMgYXJxdWl2b3Mgb3UgPHNwYW4gY2xhc3M9XCJmaWxlcG9uZC0tbGFiZWwtYWN0aW9uXCI+Y2xpcXVlIGFxdWk8L3NwYW4+IHBhcmEgc2VsZWNpb25hci4nLFxyXG4gICAgICAgICAgICBhbGxvd1Jlb3JkZXI6IHRoaXMucmVvcmRlcixcclxuICAgICAgICAgICAgbWF4RmlsZXM6IHRoaXMubWF4RmlsZXMsXHJcbiAgICAgICAgICAgIGFjY2VwdGVkRmlsZVR5cGVzOiBbXCJpbWFnZS8qXCJdLFxyXG4gICAgICAgICAgICBpbnN0YW50VXBsb2FkOiB0aGlzLmluc3RhbnRVcGxvYWQsXHJcbiAgICAgICAgICAgIGFsbG93UHJvY2VzczogdGhpcy5pbnN0YW50VXBsb2FkLFxyXG4gICAgICAgICAgICBkcm9wVmFsaWRhdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgaWNvblJlbW92ZTogYDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNSAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzM3MDY3XzM0MTQ2XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTZcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjAuMTMwODU5XCIgeT1cIjAuNjMxNTkyXCIgd2lkdGg9XCIxNC43MzY4XCIgaGVpZ2h0PVwiMTQuNzM2OFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxyXG4gICAgICAgICAgICA8L21hc2s+XHJcbiAgICAgICAgICAgIDxnIG1hc2s9XCJ1cmwoI21hc2swXzM3MDY3XzM0MTQ2KVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTQuNDMgMTMuNTI2M0M0LjA5MjI4IDEzLjUyNjMgMy44MDMxNyAxMy40MDYgMy41NjI2NyAxMy4xNjU1QzMuMzIyMTcgMTIuOTI1IDMuMjAxOTMgMTIuNjM1OSAzLjIwMTkzIDEyLjI5ODJWNC4zMTU3NEMzLjAyNzk1IDQuMzE1NzQgMi44ODIxMiA0LjI1Njg5IDIuNzY0NDMgNC4xMzkyQzIuNjQ2NzQgNC4wMjE1MSAyLjU4Nzg5IDMuODc1NjggMi41ODc4OSAzLjcwMTdDMi41ODc4OSAzLjUyNzczIDIuNjQ2NzQgMy4zODE4OSAyLjc2NDQzIDMuMjY0MkMyLjg4MjEyIDMuMTQ2NTEgMy4wMjc5NSAzLjA4NzY3IDMuMjAxOTMgMy4wODc2N0g1LjY1ODA3QzUuNjU4MDcgMi45MTM2OSA1LjcxNjkxIDIuNzY3ODYgNS44MzQ2IDIuNjUwMTdDNS45NTIyOSAyLjUzMjQ4IDYuMDk4MTIgMi40NzM2MyA2LjI3MjEgMi40NzM2M0g4LjcyODI0QzguOTAyMjIgMi40NzM2MyA5LjA0ODA1IDIuNTMyNDggOS4xNjU3NCAyLjY1MDE3QzkuMjgzNDMgMi43Njc4NiA5LjM0MjI4IDIuOTEzNjkgOS4zNDIyOCAzLjA4NzY3SDExLjc5ODRDMTEuOTcyNCAzLjA4NzY3IDEyLjExODIgMy4xNDY1MSAxMi4yMzU5IDMuMjY0MkMxMi4zNTM2IDMuMzgxODkgMTIuNDEyNSAzLjUyNzczIDEyLjQxMjUgMy43MDE3QzEyLjQxMjUgMy44NzU2OCAxMi4zNTM2IDQuMDIxNTEgMTIuMjM1OSA0LjEzOTJDMTIuMTE4MiA0LjI1Njg5IDExLjk3MjQgNC4zMTU3NCAxMS43OTg0IDQuMzE1NzRWMTIuMjk4MkMxMS43OTg0IDEyLjYzNTkgMTEuNjc4MiAxMi45MjUgMTEuNDM3NyAxMy4xNjU1QzExLjE5NzIgMTMuNDA2IDEwLjkwODEgMTMuNTI2MyAxMC41NzAzIDEzLjUyNjNINC40M1pNNC40MyA0LjMxNTc0VjEyLjI5ODJIMTAuNTcwM1Y0LjMxNTc0SDQuNDNaTTcuNTAwMTcgOS4xNjY2Mkw4LjY2Njg0IDEwLjMzMzNDOC43ODk2NSAxMC40NDU5IDguOTM1NDggMTAuNTAyMSA5LjEwNDM0IDEwLjUwMjFDOS4yNzMyIDEwLjUwMjEgOS40MTM5MSAxMC40NDU5IDkuNTI2NDkgMTAuMzMzM0M5LjY0OTI5IDEwLjIxMDUgOS43MTA3IDEwLjA2NDYgOS43MTA3IDkuODk1NzhDOS43MTA3IDkuNzI2OTIgOS42NDkyOSA5LjU4NjIxIDkuNTI2NDkgOS40NzM2M0w4LjM1OTgyIDguMzA2OTdMOS41MjY0OSA3LjE0MDNDOS42NDkyOSA3LjAxNzQ5IDkuNzEwNyA2Ljg3MTY2IDkuNzEwNyA2LjcwMjhDOS43MTA3IDYuNTMzOTQgOS42NDkyOSA2LjM5MzIyIDkuNTI2NDkgNi4yODA2NUM5LjQxMzkxIDYuMTU3ODQgOS4yNzMyIDYuMDk2NDQgOS4xMDQzNCA2LjA5NjQ0QzguOTM1NDggNi4wOTY0NCA4Ljc4OTY1IDYuMTU3ODQgOC42NjY4NCA2LjI4MDY1TDcuNTAwMTcgNy40NDczMkw2LjMzMzUgNi4yODA2NUM2LjIyMDkzIDYuMTU3ODQgNi4wODAyMiA2LjA5NjQ0IDUuOTExMzYgNi4wOTY0NEM1Ljc0MjUgNi4wOTY0NCA1LjU5NjY2IDYuMTU3ODQgNS40NzM4NiA2LjI4MDY1QzUuMzYxMjggNi4zOTMyMiA1LjMwNSA2LjUzMzk0IDUuMzA1IDYuNzAyOEM1LjMwNSA2Ljg3MTY2IDUuMzYxMjggNy4wMTc0OSA1LjQ3Mzg2IDcuMTQwM0w2LjY0MDUyIDguMzA2OTdMNS40NzM4NiA5LjQ3MzYzQzUuMzYxMjggOS41ODYyMSA1LjMwNSA5LjcyNjkyIDUuMzA1IDkuODk1NzhDNS4zMDUgMTAuMDY0NiA1LjM2MTI4IDEwLjIxMDUgNS40NzM4NiAxMC4zMzMzQzUuNTk2NjYgMTAuNDQ1OSA1Ljc0MjUgMTAuNTAyMSA1LjkxMTM2IDEwLjUwMjFDNi4wODAyMiAxMC41MDIxIDYuMjIwOTMgMTAuNDQ1OSA2LjMzMzUgMTAuMzMzM0w3LjUwMDE3IDkuMTY2NjJaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICA8L2c+PC9zdmc+YCxcclxuICAgICAgICAgICAgc3R5bGVCdXR0b25SZW1vdmVJdGVtUG9zaXRpb246IFwicmlnaHRcIixcclxuICAgICAgICAgICAgaW1hZ2VSZXNpemVNb2RlOiBcImNvbnRhaW5cIixcclxuICAgICAgICAgICAgc3R5bGVJdGVtUGFuZWxBc3BlY3RSYXRpbzogXCIwLjc1XCIsXHJcbiAgICAgICAgICAgIGl0ZW1JbnNlcnRMb2NhdGlvbjogXCJhZnRlclwiLFxyXG4gICAgICAgICAgICBjcmVkaXRzOiBmYWxzZSxcclxuICAgICAgICAgICAgYmVmb3JlUmVtb3ZlRmlsZTogdGhpcy5iZWZvcmVSZW1vdmUgPyAoZmlsZSkgPT4gdGhpcy5iZWZvcmVSZW1vdmUoZmlsZSkgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHNlcnZlcjoge1xyXG4gICAgICAgICAgICAgICAgcHJvY2VzczogKGZpZWxkTmFtZSwgZmlsZSwgbWV0YWRhdGEsIGxvYWQsIGVycm9yLCBwcm9ncmVzcywgYWJvcnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmaWVsZE5hbWUsIGZpbGUsIGZpbGUubmFtZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmh0dHBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy51cmwsIGZvcm1EYXRhLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmU6IFwiZXZlbnRzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyhldmVudC5sZW5ndGhDb21wdXRhYmxlLCBldmVudC5sb2FkZWQsIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gZXZlbnQuYm9keTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZXJ2ZXJJZDogc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzcG9uc2UpICYmIHJlc3BvbnNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJJZCA9IHJlc3BvbnNlWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZSAmJiAocmVzcG9uc2Uuc2VydmVySWQgfHwgcmVzcG9uc2UuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVySWQgPSByZXNwb25zZS5zZXJ2ZXJJZCB8fCByZXNwb25zZS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJSZXNwb3N0YSBkbyBzZXJ2aWRvciBpbnbDoWxpZGE6IHNlcnZlcklkIG7Do28gZW5jb250cmFkb1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkKHNlcnZlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm8gYW8gcHJvY2Vzc2FyIHJlc3Bvc3RhIGRvIHNlcnZpZG9yOlwiLCBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFwiRXJybyBhbyBwcm9jZXNzYXIgcmVzcG9zdGEgZG8gc2Vydmlkb3JcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihcIkVycm8gbm8gdXBsb2FkOiBcIiArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbG9hZDogKHNvdXJjZSwgbG9hZCwgZXJyb3IsIHByb2dyZXNzLCBhYm9ydCwgaGVhZGVycykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG15UmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2gobXlSZXF1ZXN0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJybyBhbyBjYXJyZWdhciBpbWFnZW06XCIsIHJlc3BvbnNlLnN0YXR1cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJFcnJvIGFvIGNhcnJlZ2FyIGEgaW1hZ2VtXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmFycmF5QnVmZmVyKCkudGhlbigoYnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcImNvbnRlbnQtdHlwZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gc291cmNlLnNwbGl0KFwiLlwiKS5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW1lVHlwZU1hcCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicDogXCJpbWFnZS93ZWJwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpwZzogXCJpbWFnZS9qcGVnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpwZWc6IFwiaW1hZ2UvanBlZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmc6IFwiaW1hZ2UvcG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlVHlwZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlTWFwW2ZpbGVFeHRlbnNpb25dIHx8IGNvbnRlbnRUeXBlIHx8IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG15QmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6IGZpbGVUeXBlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQobXlCbG9iKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm8gbm8gc2VydmVyLmxvYWQ6XCIsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihcIkVycm8gYW8gY2FycmVnYXIgYSBpbWFnZW1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlbW92ZTogKHNvdXJjZSwgbG9hZCwgZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihcIk5vbWUgZG8gYXJxdWl2byBuw6NvIGZvcm5lY2lkb1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHNvdXJjZS5zcGxpdChcIi9cIikucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmUuZW1pdChmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmV2ZXJ0OiAodW5pcXVlRmlsZUlkLCBsb2FkLCBlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdW5pcXVlRmlsZUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFwiTm9tZSBkbyBhcnF1aXZvIG7Do28gZm9ybmVjaWRvXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQodW5pcXVlRmlsZUlkKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbnRVcGxvYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudHNTdWJzY3JpcHRpb24gPSB0aGlzLnVwbG9hZE9ic2VydmFibGUuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBsb2FkRmlsZXMoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLnBvbmRGaWxlcyA9IHRoaXMuaW5pdGlhbEZpbGVzLm1hcCgoaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogaXRlbSxcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibG9jYWxcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pbnN0YW50VXBsb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVFcnJvcigpIHtcclxuICAgICAgICB0aGlzLm9uVXBsb2FkRXJyb3IuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVJbml0KGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLnBvbmQgPSBldmVudC5wb25kO1xyXG5cclxuICAgICAgICB0aGlzLm9uSW5pdC5lbWl0KHRoaXMucG9uZEZpbGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwb25kSGFuZGxlQWRkRmlsZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5vbkFkZGVkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vU8OzIGZ1bmNpb25hIHF1YW5kbyBuw6NvIHRlbSBhcnF1aXZvcyBpbmljaWFpc1xyXG4gICAgcG9uZEhhbmRsZUFsbEZpbGVzQWRkZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBjb25zdCBmaWxlcyA9IGV2ZW50LnBvbmQuZ2V0RmlsZXMoKTtcclxuXHJcbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZTogRmlsZVBvbmRGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmb3JtYXR0ZWROYW1lID0gZmlsZS5zZXJ2ZXJJZD8ucmVwbGFjZSgvW1wiXFxbXFxdXS9nLCBcIlwiKTtcclxuICAgICAgICAgICAgZmlsZXNMaXN0LnB1c2goZm9ybWF0dGVkTmFtZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMub25BbGxBZGRlZC5lbWl0KGZpbGVzTGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9uZEhhbmRsZUFjdGl2YXRlRmlsZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5vbkFjdGl2YXRlLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIHRoaXMubGlnaHRCb3ggJiYgdGhpcy5vcGVuTGlnaHRCb3goZXZlbnQuZmlsZS5maWxlbmFtZVdpdGhvdXRFeHRlbnNpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVVcGRhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZmlsbEFsYnVtKGV2ZW50Lml0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwb25kSGFuZGxlUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBsZXQgZmlsZU5hbWU6IHN0cmluZztcclxuICAgICAgICBpZiAoZXZlbnQuZmlsZS5zb3VyY2UgaW5zdGFuY2VvZiBGaWxlKSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lID0gZXZlbnQuZmlsZS5zZXJ2ZXJJZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWxlTmFtZSA9IGV2ZW50LmZpbGUuc291cmNlLmluY2x1ZGVzKFwiL1wiKSA/IGV2ZW50LmZpbGUuc291cmNlLnNwbGl0KFwiL1wiKS5wb3AoKSA6IGV2ZW50LmZpbGUuc291cmNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQoZmlsZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUmVvcmRlckZpbGVzKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmZpbGxBbGJ1bShldmVudC5pdGVtcywgdHJ1ZSk7XHJcbiAgICAgICAgbGV0IGl0ZW1zTGlzdCA9IGV2ZW50Lml0ZW1zLm1hcCgoaXRlbTogRmlsZVBvbmRGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnNlcnZlcklkLnJlcGxhY2UoL1tcIlxcW1xcXV0vZywgXCJcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5maWxlbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMub25SZU9yZGVyLmVtaXQoaXRlbXNMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICB3YXJuaW5nKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBpZiAoZXZlbnQuZXJyb3IuY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25NYXhSZWFjaGVkLmVtaXQoXHJcbiAgICAgICAgICAgICAgICBgTGltaXRlIGRlIEFycXVpdm9zIGF0aW5naWRvLiBWb2PDqiBwb2RlIGluc2VyaXIgdW0gdG90YWwgZGUgJHt0aGlzLm1heEZpbGVzfSBhcnF1aXZvcy5gXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5MaWdodEJveChmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5hbGJ1bVxyXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5jYXB0aW9uO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuaW5kZXhPZihmaWxlTmFtZSk7XHJcbiAgICAgICAgdGhpcy5fbGlnaHRib3gub3Blbih0aGlzLmFsYnVtLCBpbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsbEFsYnVtKGZpbGVzOiBbXSwgcmVPcmRlcj86IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoZmlsZXMubGVuZ3RoICE9PSB0aGlzLmFsYnVtLmxlbmd0aCB8fCByZU9yZGVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZUFsYnVtID0gYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICBmaWxlcy5tYXAoYXN5bmMgKGZpbGU6IEZpbGVQb25kRmlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlVXJsOiBzdHJpbmc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVVybCA9IGF3YWl0IHRoaXMucmVhZEZpbGVBc3luYyhmaWxlLnNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVVybCA9IGZpbGUuc291cmNlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGZpbGVVcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb246IGZpbGUuZmlsZW5hbWVXaXRob3V0RXh0ZW5zaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHVtYjogXCJcIixcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWxidW0gPSBwcmVBbGJ1bTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVhZEZpbGVBc3luYyhmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhVXJsID0gcmVhZGVyLnJlc3VsdDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVVcmwgPSBkYXRhVXJsLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZpbGVVcmwpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwbG9hZEZpbGVzKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5wb25kLmdldEZpbGVzKCk7XHJcbiAgICAgICAgZmlsZXMubGVuZ3RoID4gMCA/IHRoaXMucG9uZC5wcm9jZXNzRmlsZXMoKSA6IHRoaXMubm9GaWxlc0FkZGVkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdG90YWxGaWxlcygpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvbmQgPyB0aGlzLnBvbmQuZ2V0RmlsZXMoKS5sZW5ndGggOiB0aGlzLnBvbmRGaWxlcy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbnRyb2woKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KHRoaXMuY29udHJvbE5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRXJyb3JNZXNzYWdlKCkge1xyXG4gICAgICAgIGxldCBjb250cm9sID0gdGhpcy5jb250cm9sO1xyXG5cclxuICAgICAgICBpZiAoY29udHJvbD8uZXJyb3JzPy5yZXF1aXJlZCAmJiAoIXRoaXMucG9uZCB8fCB0aGlzLnBvbmQuZ2V0RmlsZXMoKS5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIk9icmlnYXTDs3Jpb1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpc1ByZXZpZXdWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5tdWx0aXBsZSAmJiAhIXRoaXMucHJldmlld1VybDtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVyUHJldmlldyA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB0aGlzLm9uUHJldmlld1JlbW92ZS5lbWl0KCk7XHJcbiAgICB9O1xyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJpc1ByZXZpZXdWaXNpYmxlKCk7IGVsc2UgdXBsb2FkZXJcIiBjbGFzcz1cInVwbG9hZC1wcmV2aWV3XCIgW2NsYXNzLnVwbG9hZC1wcmV2aWV3LWNpcmNsZV09XCJjaXJjbGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJldmlld1RlbXBsYXRlOyBlbHNlIHByZXZpZXdQYWRyYW9cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwcmV2aWV3VGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHByZXZpZXdVcmwsIHJlbW92ZXI6IHJlbW92ZXJQcmV2aWV3IH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjcHJldmlld1BhZHJhbz5cbiAgICAgICAgPGltZyBjbGFzcz1cInVwbG9hZC1wcmV2aWV3LWltYWdlbVwiIFtzcmNdPVwicHJldmlld1VybFwiIGFsdD1cIlwiPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIHVwbG9hZC1wcmV2aWV3LXJlbW92ZXJcIiAoY2xpY2spPVwicmVtb3ZlclByZXZpZXcoKVwiPlxuICAgICAgICAgICAgPHVpLWljb24gaWNvbj1cImRlbGV0ZV9mb3JldmVyXCI+PC91aS1pY29uPlJlbW92ZXIgaW1hZ2VtXG4gICAgICAgIDwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdXBsb2FkZXI+XG4gICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgW2NsYXNzLnVwbG9hZC1pbnZhbGlkXT1cImlzRXJyb3JNZXNzYWdlKClcIj5cbiAgICAgICAgPGZpbGUtcG9uZCAjbXlQb25kIG5hbWU9J1VwbG9hZEZvcm1baW1hZ2VtXVtdJyBbY2xhc3MuZmlsZS1wb250LXRyYW5zcGFyZW50XT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIFtjbGFzcy5maWxlLXBvbmQtcmVvcmRlcl09XCJyZW9yZGVyXCIgW29wdGlvbnNdPVwicG9uZE9wdGlvbnNcIlxuICAgICAgICAgICAgKG9uaW5pdCk9XCJwb25kSGFuZGxlSW5pdCgkZXZlbnQpXCIgW2ZpbGVzXT1cInBvbmRGaWxlc1wiIChvbnVwZGF0ZWZpbGVzKT1cInBvbmRIYW5kbGVVcGRhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25hY3RpdmF0ZWZpbGUpPVwicG9uZEhhbmRsZUFjdGl2YXRlRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbnJlb3JkZXJmaWxlcyk9XCJvblJlb3JkZXJGaWxlcygkZXZlbnQpXCIgKG9ud2FybmluZyk9XCJ3YXJuaW5nKCRldmVudClcIlxuICAgICAgICAgICAgKG9ucHJvY2Vzc2ZpbGVzKT1cInBvbmRIYW5kbGVBbGxGaWxlc0FkZGVkKCRldmVudClcIiAob25wcm9jZXNzZmlsZSk9XCJwb25kSGFuZGxlQWRkRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbmVycm9yKT1cInBvbmRIYW5kbGVFcnJvcigpXCIvPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLXRvb2x0aXBcIiBbY2xhc3NdPVwiJ3Rvb2x0aXAtJyArIGVycm9yUG9zaXRpb25cIiBbY2xhc3MudG91Y2hlZF09XCJjb250cm9sPy50b3VjaGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNFcnJvck1lc3NhZ2UoKVwiPlxuICAgICAgICAgICAge3tpc0Vycm9yTWVzc2FnZSgpfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { UiUploadOrderComponent } from './ui-upload-order.component';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import { LightboxModule } from 'ngx-lightbox';
|
|
5
|
+
import { UiIconModule } from 'uitec-ng-icon';
|
|
5
6
|
// import filepond module
|
|
6
7
|
import { FilePondModule, registerPlugin } from "ngx-filepond";
|
|
7
8
|
// import and register filepond plugins
|
|
@@ -18,10 +19,12 @@ export class UiUploadOrderModule {
|
|
|
18
19
|
UiUploadOrderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
19
20
|
UiUploadOrderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, declarations: [UiUploadOrderComponent], imports: [CommonModule,
|
|
20
21
|
FilePondModule,
|
|
21
|
-
LightboxModule
|
|
22
|
+
LightboxModule,
|
|
23
|
+
UiIconModule], exports: [UiUploadOrderComponent] });
|
|
22
24
|
UiUploadOrderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, imports: [CommonModule,
|
|
23
25
|
FilePondModule,
|
|
24
|
-
LightboxModule
|
|
26
|
+
LightboxModule,
|
|
27
|
+
UiIconModule] });
|
|
25
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, decorators: [{
|
|
26
29
|
type: NgModule,
|
|
27
30
|
args: [{
|
|
@@ -31,11 +34,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
31
34
|
imports: [
|
|
32
35
|
CommonModule,
|
|
33
36
|
FilePondModule,
|
|
34
|
-
LightboxModule
|
|
37
|
+
LightboxModule,
|
|
38
|
+
UiIconModule
|
|
35
39
|
],
|
|
36
40
|
exports: [
|
|
37
41
|
UiUploadOrderComponent
|
|
38
42
|
]
|
|
39
43
|
}]
|
|
40
44
|
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdXBsb2FkLW9yZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXVwbG9hZC1vcmRlci9zcmMvbGliL3VpLXVwbG9hZC1vcmRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLHlCQUF5QjtBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RCx1Q0FBdUM7QUFDdkMsT0FBTyw4QkFBOEIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLDBCQUEwQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sa0NBQWtDLE1BQU0sd0NBQXdDLENBQUM7QUFDeEYsT0FBTyw4QkFBOEIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLHVCQUF1QixNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8seUJBQXlCLE1BQU0sOEJBQThCLENBQUM7O0FBRXJFLGNBQWMsQ0FDViw4QkFBOEIsRUFDOUIsMEJBQTBCLEVBQzFCLGtDQUFrQyxFQUNsQyw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixDQUM1QixDQUFDO0FBZ0JGLE1BQU0sT0FBTyxtQkFBbUI7O2lIQUFuQixtQkFBbUI7a0hBQW5CLG1CQUFtQixpQkFaeEIsc0JBQXNCLGFBR3RCLFlBQVk7UUFDWixjQUFjO1FBQ2QsY0FBYztRQUNkLFlBQVksYUFHWixzQkFBc0I7a0hBR2pCLG1CQUFtQixZQVR4QixZQUFZO1FBQ1osY0FBYztRQUNkLGNBQWM7UUFDZCxZQUFZOzRGQU1QLG1CQUFtQjtrQkFkL0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1Ysc0JBQXNCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsWUFBWTtxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsc0JBQXNCO3FCQUN6QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVpVXBsb2FkT3JkZXJDb21wb25lbnQgfSBmcm9tICcuL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBMaWdodGJveE1vZHVsZSB9IGZyb20gJ25neC1saWdodGJveCc7XHJcbmltcG9ydCB7IFVpSWNvbk1vZHVsZSB9IGZyb20gJ3VpdGVjLW5nLWljb24nO1xyXG5cclxuLy8gaW1wb3J0IGZpbGVwb25kIG1vZHVsZVxyXG5pbXBvcnQgeyBGaWxlUG9uZE1vZHVsZSwgcmVnaXN0ZXJQbHVnaW4gfSBmcm9tIFwibmd4LWZpbGVwb25kXCI7XHJcblxyXG4vLyBpbXBvcnQgYW5kIHJlZ2lzdGVyIGZpbGVwb25kIHBsdWdpbnNcclxuaW1wb3J0IEZpbGVQb25kUGx1Z2luRmlsZVZhbGlkYXRlVHlwZSBmcm9tIFwiZmlsZXBvbmQtcGx1Z2luLWZpbGUtdmFsaWRhdGUtdHlwZVwiO1xyXG5pbXBvcnQgRmlsZVBvbmRQbHVnaW5JbWFnZVByZXZpZXcgZnJvbSAnZmlsZXBvbmQtcGx1Z2luLWltYWdlLXByZXZpZXcnO1xyXG5pbXBvcnQgRmlsZVBvbmRQbHVnaW5JbWFnZUV4aWZPcmllbnRhdGlvbiBmcm9tICdmaWxlcG9uZC1wbHVnaW4taW1hZ2UtZXhpZi1vcmllbnRhdGlvbic7XHJcbmltcG9ydCBGaWxlUG9uZFBsdWdpbkZpbGVWYWxpZGF0ZVNpemUgZnJvbSAnZmlsZXBvbmQtcGx1Z2luLWZpbGUtdmFsaWRhdGUtc2l6ZSc7XHJcbmltcG9ydCBGaWxlUG9uZFBsdWdpbkltYWdlQ3JvcCBmcm9tICdmaWxlcG9uZC1wbHVnaW4taW1hZ2UtY3JvcCc7XHJcbmltcG9ydCBGaWxlUG9uZFBsdWdpbkltYWdlUmVzaXplIGZyb20gJ2ZpbGVwb25kLXBsdWdpbi1pbWFnZS1yZXNpemUnO1xyXG5cclxucmVnaXN0ZXJQbHVnaW4oXHJcbiAgICBGaWxlUG9uZFBsdWdpbkZpbGVWYWxpZGF0ZVR5cGUsXHJcbiAgICBGaWxlUG9uZFBsdWdpbkltYWdlUHJldmlldyxcclxuICAgIEZpbGVQb25kUGx1Z2luSW1hZ2VFeGlmT3JpZW50YXRpb24sXHJcbiAgICBGaWxlUG9uZFBsdWdpbkZpbGVWYWxpZGF0ZVNpemUsXHJcbiAgICBGaWxlUG9uZFBsdWdpbkltYWdlQ3JvcCxcclxuICAgIEZpbGVQb25kUGx1Z2luSW1hZ2VSZXNpemVcclxuKTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtcclxuICAgICAgICBVaVVwbG9hZE9yZGVyQ29tcG9uZW50XHJcbiAgICBdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBGaWxlUG9uZE1vZHVsZSxcclxuICAgICAgICBMaWdodGJveE1vZHVsZSxcclxuICAgICAgICBVaUljb25Nb2R1bGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgICAgVWlVcGxvYWRPcmRlckNvbXBvbmVudFxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlVcGxvYWRPcmRlck1vZHVsZSB7IH1cclxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { EventEmitter, Component, Input, Output, ViewChild, NgModule } from '@angular/core';
|
|
3
|
+
import { EventEmitter, Component, Input, Output, ViewChild, ContentChild, NgModule } from '@angular/core';
|
|
4
4
|
import * as i2 from '@angular/common/http';
|
|
5
5
|
import { HttpEventType } from '@angular/common/http';
|
|
6
6
|
import * as i1 from 'ngx-lightbox';
|
|
@@ -9,6 +9,8 @@ import * as i3 from '@angular/common';
|
|
|
9
9
|
import { CommonModule } from '@angular/common';
|
|
10
10
|
import * as i4 from 'ngx-filepond';
|
|
11
11
|
import { registerPlugin, FilePondModule } from 'ngx-filepond';
|
|
12
|
+
import * as i5 from 'uitec-ng-icon';
|
|
13
|
+
import { UiIconModule } from 'uitec-ng-icon';
|
|
12
14
|
import FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';
|
|
13
15
|
import FilePondPluginImagePreview from 'filepond-plugin-image-preview';
|
|
14
16
|
import FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';
|
|
@@ -25,6 +27,9 @@ class UiUploadOrderComponent {
|
|
|
25
27
|
this.maxFiles = 10;
|
|
26
28
|
this.lightBox = true;
|
|
27
29
|
this.instantUpload = true;
|
|
30
|
+
this.errorPosition = 'right';
|
|
31
|
+
this.circle = false;
|
|
32
|
+
this.onPreviewRemove = new EventEmitter();
|
|
28
33
|
this.onRemove = new EventEmitter();
|
|
29
34
|
this.onAdded = new EventEmitter();
|
|
30
35
|
this.onAllAdded = new EventEmitter();
|
|
@@ -38,6 +43,12 @@ class UiUploadOrderComponent {
|
|
|
38
43
|
// public pondFiles: FilePondOptions["files"] = [];
|
|
39
44
|
this.pondFiles = [];
|
|
40
45
|
this.album = [];
|
|
46
|
+
this.removerPreview = () => {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
(_a = this.control) === null || _a === void 0 ? void 0 : _a.setValue(null);
|
|
49
|
+
(_b = this.control) === null || _b === void 0 ? void 0 : _b.markAsDirty();
|
|
50
|
+
this.onPreviewRemove.emit();
|
|
51
|
+
};
|
|
41
52
|
}
|
|
42
53
|
ngOnInit() {
|
|
43
54
|
this.pondOptions = {
|
|
@@ -61,6 +72,7 @@ class UiUploadOrderComponent {
|
|
|
61
72
|
styleItemPanelAspectRatio: "0.75",
|
|
62
73
|
itemInsertLocation: "after",
|
|
63
74
|
credits: false,
|
|
75
|
+
beforeRemoveFile: this.beforeRemove ? (file) => this.beforeRemove(file) : undefined,
|
|
64
76
|
server: {
|
|
65
77
|
process: (fieldName, file, metadata, load, error, progress, abort) => {
|
|
66
78
|
const formData = new FormData();
|
|
@@ -183,8 +195,8 @@ class UiUploadOrderComponent {
|
|
|
183
195
|
this.onUploadError.emit();
|
|
184
196
|
}
|
|
185
197
|
pondHandleInit(event) {
|
|
186
|
-
this.onInit.emit(this.pondFiles);
|
|
187
198
|
this.pond = event.pond;
|
|
199
|
+
this.onInit.emit(this.pondFiles);
|
|
188
200
|
}
|
|
189
201
|
pondHandleAddFile(event) {
|
|
190
202
|
this.onAdded.emit(event);
|
|
@@ -278,20 +290,30 @@ class UiUploadOrderComponent {
|
|
|
278
290
|
const files = this.pond.getFiles();
|
|
279
291
|
files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();
|
|
280
292
|
}
|
|
293
|
+
get totalFiles() {
|
|
294
|
+
return this.pond ? this.pond.getFiles().length : this.pondFiles.length;
|
|
295
|
+
}
|
|
296
|
+
get control() {
|
|
297
|
+
var _a;
|
|
298
|
+
return (_a = this.form) === null || _a === void 0 ? void 0 : _a.get(this.controlName);
|
|
299
|
+
}
|
|
281
300
|
isErrorMessage() {
|
|
282
|
-
var _a
|
|
283
|
-
let control =
|
|
284
|
-
if (((
|
|
301
|
+
var _a;
|
|
302
|
+
let control = this.control;
|
|
303
|
+
if (((_a = control === null || control === void 0 ? void 0 : control.errors) === null || _a === void 0 ? void 0 : _a.required) && (!this.pond || this.pond.getFiles().length === 0)) {
|
|
285
304
|
return "Obrigatório";
|
|
286
305
|
}
|
|
287
306
|
return null;
|
|
288
307
|
}
|
|
308
|
+
isPreviewVisible() {
|
|
309
|
+
return !this.multiple && !!this.previewUrl;
|
|
310
|
+
}
|
|
289
311
|
}
|
|
290
312
|
UiUploadOrderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, deps: [{ token: i1.Lightbox }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
291
|
-
UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { uploadObservable: "uploadObservable", form: "form", controlName: "controlName", url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox", instantUpload: "instantUpload" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onAllAdded: "onAllAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected", noFilesAdded: "noFilesAdded", onUploadError: "onUploadError" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "
|
|
313
|
+
UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { uploadObservable: "uploadObservable", form: "form", controlName: "controlName", url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox", instantUpload: "instantUpload", errorPosition: "errorPosition", beforeRemove: "beforeRemove", previewUrl: "previewUrl", circle: "circle" }, outputs: { onPreviewRemove: "onPreviewRemove", onRemove: "onRemove", onAdded: "onAdded", onAllAdded: "onAllAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected", noFilesAdded: "noFilesAdded", onUploadError: "onUploadError" }, queries: [{ propertyName: "previewTemplate", first: true, predicate: ["preview"], descendants: true }], viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isPreviewVisible(); else uploader\" class=\"upload-preview\" [class.upload-preview-circle]=\"circle\">\n <ng-container *ngIf=\"previewTemplate; else previewPadrao\"\n [ngTemplateOutlet]=\"previewTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: previewUrl, remover: removerPreview }\">\n </ng-container>\n\n <ng-template #previewPadrao>\n <img class=\"upload-preview-imagem\" [src]=\"previewUrl\" alt=\"\">\n <a href=\"javascript:void(0)\" class=\"btn btn-sm btn-icon upload-preview-remover\" (click)=\"removerPreview()\">\n <ui-icon icon=\"delete_forever\"></ui-icon>Remover imagem\n </a>\n </ng-template>\n</div>\n\n<ng-template #uploader>\n <div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\"\n [class.file-pond-reorder]=\"reorder\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\n (onerror)=\"pondHandleError()\"/>\n\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\n *ngIf=\"isErrorMessage()\">\n {{isErrorMessage()}}\n </div>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .filepond--list-scroller{width:calc(100% - 25px);margin:auto;padding-bottom:20px}:host ::ng-deep .filepond--drop-label{color:#555;justify-content:flex-start;margin-left:20px}:host ::ng-deep .filepond--label-action{color:var(--theme-default);text-decoration-color:var(--theme-default)}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed;height:12%}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:var(--theme-secondary);display:none}:host ::ng-deep .file-pont-transparent .filepond--image-preview,:host ::ng-deep .file-pont-transparent .filepond--item-panel{background:transparent!important}:host ::ng-deep .file-pont-transparent .filepond--file-info{display:none}:host ::ng-deep .file-pont-transparent .filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:none}:host ::ng-deep .file-pont-transparent .filepond--item{border:1px solid rgba(173,181,189,.4);border-radius:8px;overflow:hidden}:host ::ng-deep .file-pont-transparent.file-pond-reorder .filepond--item{cursor:grab}:host ::ng-deep .filepond--file:hover .filepond--file-action-button{display:block}@media (max-width: 800px){:host ::ng-deep .filepond--panel-root{height:5%}}@media (max-width: 480px){:host ::ng-deep .filepond--panel-root{height:2%}}::ng-deep .ng-submitted .upload-invalid .filepond--panel-root{border-color:#fc4438}::ng-deep .ng-submitted .upload-invalid .invalid-tooltip{display:block;transform:translate(-50%,-50%);top:0;right:0}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}.upload-preview{position:relative;display:flex;flex-direction:column;align-items:flex-start}.upload-preview .upload-preview-imagem{max-height:100px;width:auto;margin:1rem 0;object-fit:cover}.upload-preview.upload-preview-circle .upload-preview-imagem{width:100px;height:100px;border-radius:50%}.upload-preview .upload-preview-remover{color:var(--ui-placeholder)}.upload-preview .upload-preview-remover:hover{color:var(--ui-text-danger, #dc3545)}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(25% - 7px)}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.FilePondComponent, selector: "file-pond", inputs: ["options", "files"], outputs: ["oninit", "onwarning", "onerror", "oninitfile", "onactivatefile", "onaddfilestart", "onaddfileprogress", "onaddfile", "onprocessfilestart", "onprocessfileprogress", "onprocessfileabort", "onprocessfilerevert", "onprocessfile", "onprocessfiles", "onremovefile", "onpreparefile", "onupdatefiles", "onreorderfiles"] }, { kind: "component", type: i5.UiIconComponent, selector: "ui-icon", inputs: ["icon", "size", "class"] }] });
|
|
292
314
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
|
|
293
315
|
type: Component,
|
|
294
|
-
args: [{ selector: "ui-upload-order", template: "
|
|
316
|
+
args: [{ selector: "ui-upload-order", template: "<div *ngIf=\"isPreviewVisible(); else uploader\" class=\"upload-preview\" [class.upload-preview-circle]=\"circle\">\n <ng-container *ngIf=\"previewTemplate; else previewPadrao\"\n [ngTemplateOutlet]=\"previewTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: previewUrl, remover: removerPreview }\">\n </ng-container>\n\n <ng-template #previewPadrao>\n <img class=\"upload-preview-imagem\" [src]=\"previewUrl\" alt=\"\">\n <a href=\"javascript:void(0)\" class=\"btn btn-sm btn-icon upload-preview-remover\" (click)=\"removerPreview()\">\n <ui-icon icon=\"delete_forever\"></ui-icon>Remover imagem\n </a>\n </ng-template>\n</div>\n\n<ng-template #uploader>\n <div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\"\n [class.file-pond-reorder]=\"reorder\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\n (onerror)=\"pondHandleError()\"/>\n\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\n *ngIf=\"isErrorMessage()\">\n {{isErrorMessage()}}\n </div>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .filepond--list-scroller{width:calc(100% - 25px);margin:auto;padding-bottom:20px}:host ::ng-deep .filepond--drop-label{color:#555;justify-content:flex-start;margin-left:20px}:host ::ng-deep .filepond--label-action{color:var(--theme-default);text-decoration-color:var(--theme-default)}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed;height:12%}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:var(--theme-secondary);display:none}:host ::ng-deep .file-pont-transparent .filepond--image-preview,:host ::ng-deep .file-pont-transparent .filepond--item-panel{background:transparent!important}:host ::ng-deep .file-pont-transparent .filepond--file-info{display:none}:host ::ng-deep .file-pont-transparent .filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:none}:host ::ng-deep .file-pont-transparent .filepond--item{border:1px solid rgba(173,181,189,.4);border-radius:8px;overflow:hidden}:host ::ng-deep .file-pont-transparent.file-pond-reorder .filepond--item{cursor:grab}:host ::ng-deep .filepond--file:hover .filepond--file-action-button{display:block}@media (max-width: 800px){:host ::ng-deep .filepond--panel-root{height:5%}}@media (max-width: 480px){:host ::ng-deep .filepond--panel-root{height:2%}}::ng-deep .ng-submitted .upload-invalid .filepond--panel-root{border-color:#fc4438}::ng-deep .ng-submitted .upload-invalid .invalid-tooltip{display:block;transform:translate(-50%,-50%);top:0;right:0}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}.upload-preview{position:relative;display:flex;flex-direction:column;align-items:flex-start}.upload-preview .upload-preview-imagem{max-height:100px;width:auto;margin:1rem 0;object-fit:cover}.upload-preview.upload-preview-circle .upload-preview-imagem{width:100px;height:100px;border-radius:50%}.upload-preview .upload-preview-remover{color:var(--ui-placeholder)}.upload-preview .upload-preview-remover:hover{color:var(--ui-text-danger, #dc3545)}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(25% - 7px)}}\n"] }]
|
|
295
317
|
}], ctorParameters: function () { return [{ type: i1.Lightbox }, { type: i2.HttpClient }]; }, propDecorators: { uploadObservable: [{
|
|
296
318
|
type: Input
|
|
297
319
|
}], form: [{
|
|
@@ -314,6 +336,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
314
336
|
type: Input
|
|
315
337
|
}], instantUpload: [{
|
|
316
338
|
type: Input
|
|
339
|
+
}], errorPosition: [{
|
|
340
|
+
type: Input
|
|
341
|
+
}], beforeRemove: [{
|
|
342
|
+
type: Input
|
|
343
|
+
}], previewUrl: [{
|
|
344
|
+
type: Input
|
|
345
|
+
}], circle: [{
|
|
346
|
+
type: Input
|
|
347
|
+
}], onPreviewRemove: [{
|
|
348
|
+
type: Output
|
|
317
349
|
}], onRemove: [{
|
|
318
350
|
type: Output
|
|
319
351
|
}], onAdded: [{
|
|
@@ -337,6 +369,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
337
369
|
}], myPond: [{
|
|
338
370
|
type: ViewChild,
|
|
339
371
|
args: ["myPond"]
|
|
372
|
+
}], previewTemplate: [{
|
|
373
|
+
type: ContentChild,
|
|
374
|
+
args: ["preview"]
|
|
340
375
|
}] } });
|
|
341
376
|
|
|
342
377
|
registerPlugin(FilePondPluginFileValidateType, FilePondPluginImagePreview, FilePondPluginImageExifOrientation, FilePondPluginFileValidateSize, FilePondPluginImageCrop, FilePondPluginImageResize);
|
|
@@ -345,10 +380,12 @@ class UiUploadOrderModule {
|
|
|
345
380
|
UiUploadOrderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
346
381
|
UiUploadOrderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, declarations: [UiUploadOrderComponent], imports: [CommonModule,
|
|
347
382
|
FilePondModule,
|
|
348
|
-
LightboxModule
|
|
383
|
+
LightboxModule,
|
|
384
|
+
UiIconModule], exports: [UiUploadOrderComponent] });
|
|
349
385
|
UiUploadOrderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, imports: [CommonModule,
|
|
350
386
|
FilePondModule,
|
|
351
|
-
LightboxModule
|
|
387
|
+
LightboxModule,
|
|
388
|
+
UiIconModule] });
|
|
352
389
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, decorators: [{
|
|
353
390
|
type: NgModule,
|
|
354
391
|
args: [{
|
|
@@ -358,7 +395,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
358
395
|
imports: [
|
|
359
396
|
CommonModule,
|
|
360
397
|
FilePondModule,
|
|
361
|
-
LightboxModule
|
|
398
|
+
LightboxModule,
|
|
399
|
+
UiIconModule
|
|
362
400
|
],
|
|
363
401
|
exports: [
|
|
364
402
|
UiUploadOrderComponent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uitec-ng-upload-order.mjs","sources":["../../../projects/ui-upload-order/src/lib/ui-upload-order.component.ts","../../../projects/ui-upload-order/src/lib/ui-upload-order.component.html","../../../projects/ui-upload-order/src/lib/ui-upload-order.module.ts","../../../projects/ui-upload-order/src/public-api.ts","../../../projects/ui-upload-order/src/uitec-ng-upload-order.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FilePondComponent } from \"ngx-filepond\";\r\nimport { FilePond, FilePondFile, FilePondInitialFile, FilePondOptions } from \"filepond\";\r\nimport { IAlbum, Lightbox } from \"ngx-lightbox\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\nimport { HttpClient, HttpEventType } from \"@angular/common/http\";\r\n\r\n@Component({\r\n selector: \"ui-upload-order\",\r\n templateUrl: \"./ui-upload-order.component.html\",\r\n styleUrls: [\"./ui-upload-order.component.scss\"],\r\n})\r\nexport class UiUploadOrderComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() uploadObservable: Observable<void>;\r\n private eventsSubscription: Subscription;\r\n\r\n @Input() form: UntypedFormGroup;\r\n @Input() controlName: string;\r\n\r\n @Input() url: string;\r\n @Input() initialFiles: string[];\r\n @Input() multiple: boolean = true;\r\n @Input() reorder: boolean = true;\r\n @Input() maxFiles: number = 10;\r\n @Input() transparent: boolean;\r\n @Input() lightBox: boolean = true;\r\n @Input() instantUpload: boolean = true;\r\n\r\n @Output() onRemove = new EventEmitter<string>();\r\n @Output() onAdded = new EventEmitter<string>();\r\n @Output() onAllAdded = new EventEmitter<string[]>();\r\n @Output() onActivate = new EventEmitter<FilePondFile>();\r\n @Output() onInit = new EventEmitter<FilePondOptions[\"files\"]>();\r\n @Output() onMaxReached = new EventEmitter<string>();\r\n @Output() onReOrder = new EventEmitter<FilePondFile[]>();\r\n @Output() onSelected = new EventEmitter<any>();\r\n @Output() noFilesAdded = new EventEmitter<any>();\r\n @Output() onUploadError = new EventEmitter<any>();\r\n\r\n @ViewChild(\"myPond\") myPond: FilePondComponent;\r\n\r\n constructor(private _lightbox: Lightbox, private http: HttpClient) {}\r\n\r\n public pond: FilePond;\r\n public pondOptions: FilePondOptions;\r\n // public pondFiles: FilePondOptions[\"files\"] = [];\r\n public pondFiles: FilePondInitialFile[] = [];\r\n public album: IAlbum[] = [];\r\n\r\n ngOnInit(): void {\r\n this.pondOptions = {\r\n allowMultiple: this.multiple,\r\n labelIdle:\r\n 'Arraste seus arquivos ou <span class=\"filepond--label-action\">clique aqui</span> para selecionar.',\r\n allowReorder: this.reorder,\r\n maxFiles: this.maxFiles,\r\n acceptedFileTypes: [\"image/*\"],\r\n instantUpload: this.instantUpload,\r\n allowProcess: this.instantUpload,\r\n dropValidation: true,\r\n iconRemove: `<svg width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <mask id=\"mask0_37067_34146\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"15\" height=\"16\">\r\n <rect x=\"0.130859\" y=\"0.631592\" width=\"14.7368\" height=\"14.7368\" fill=\"#D9D9D9\"/>\r\n </mask>\r\n <g mask=\"url(#mask0_37067_34146)\">\r\n <path d=\"M4.43 13.5263C4.09228 13.5263 3.80317 13.406 3.56267 13.1655C3.32217 12.925 3.20193 12.6359 3.20193 12.2982V4.31574C3.02795 4.31574 2.88212 4.25689 2.76443 4.1392C2.64674 4.02151 2.58789 3.87568 2.58789 3.7017C2.58789 3.52773 2.64674 3.38189 2.76443 3.2642C2.88212 3.14651 3.02795 3.08767 3.20193 3.08767H5.65807C5.65807 2.91369 5.71691 2.76786 5.8346 2.65017C5.95229 2.53248 6.09812 2.47363 6.2721 2.47363H8.72824C8.90222 2.47363 9.04805 2.53248 9.16574 2.65017C9.28343 2.76786 9.34228 2.91369 9.34228 3.08767H11.7984C11.9724 3.08767 12.1182 3.14651 12.2359 3.2642C12.3536 3.38189 12.4125 3.52773 12.4125 3.7017C12.4125 3.87568 12.3536 4.02151 12.2359 4.1392C12.1182 4.25689 11.9724 4.31574 11.7984 4.31574V12.2982C11.7984 12.6359 11.6782 12.925 11.4377 13.1655C11.1972 13.406 10.9081 13.5263 10.5703 13.5263H4.43ZM4.43 4.31574V12.2982H10.5703V4.31574H4.43ZM7.50017 9.16662L8.66684 10.3333C8.78965 10.4459 8.93548 10.5021 9.10434 10.5021C9.2732 10.5021 9.41391 10.4459 9.52649 10.3333C9.64929 10.2105 9.7107 10.0646 9.7107 9.89578C9.7107 9.72692 9.64929 9.58621 9.52649 9.47363L8.35982 8.30697L9.52649 7.1403C9.64929 7.01749 9.7107 6.87166 9.7107 6.7028C9.7107 6.53394 9.64929 6.39322 9.52649 6.28065C9.41391 6.15784 9.2732 6.09644 9.10434 6.09644C8.93548 6.09644 8.78965 6.15784 8.66684 6.28065L7.50017 7.44732L6.3335 6.28065C6.22093 6.15784 6.08022 6.09644 5.91136 6.09644C5.7425 6.09644 5.59666 6.15784 5.47386 6.28065C5.36128 6.39322 5.305 6.53394 5.305 6.7028C5.305 6.87166 5.36128 7.01749 5.47386 7.1403L6.64052 8.30697L5.47386 9.47363C5.36128 9.58621 5.305 9.72692 5.305 9.89578C5.305 10.0646 5.36128 10.2105 5.47386 10.3333C5.59666 10.4459 5.7425 10.5021 5.91136 10.5021C6.08022 10.5021 6.22093 10.4459 6.3335 10.3333L7.50017 9.16662Z\" fill=\"white\"/>\r\n </g></svg>`,\r\n styleButtonRemoveItemPosition: \"right\",\r\n imageResizeMode: \"contain\",\r\n styleItemPanelAspectRatio: \"0.75\",\r\n itemInsertLocation: \"after\",\r\n credits: false,\r\n server: {\r\n process: (fieldName, file, metadata, load, error, progress, abort) => {\r\n const formData = new FormData();\r\n formData.append(fieldName, file, file.name);\r\n\r\n const request = this.http\r\n .post(this.url, formData, {\r\n reportProgress: true,\r\n observe: \"events\",\r\n })\r\n .subscribe({\r\n next: (event: any) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n progress(event.lengthComputable, event.loaded, event.total);\r\n } else if (event.type === HttpEventType.Response) {\r\n try {\r\n const response = event.body;\r\n let serverId: string;\r\n if (Array.isArray(response) && response.length > 0) {\r\n serverId = response[0];\r\n } else if (response && (response.serverId || response.id)) {\r\n serverId = response.serverId || response.id;\r\n } else {\r\n error(\"Resposta do servidor inválida: serverId não encontrado\");\r\n return;\r\n }\r\n load(serverId);\r\n } catch (e) {\r\n console.error(\"Erro ao processar resposta do servidor:\", e);\r\n error(\"Erro ao processar resposta do servidor\");\r\n }\r\n }\r\n },\r\n error: (err) => {\r\n error(\"Erro no upload: \" + err.message);\r\n },\r\n complete: () => {\r\n request.unsubscribe();\r\n },\r\n });\r\n return {\r\n abort: () => {\r\n request.unsubscribe();\r\n abort();\r\n },\r\n };\r\n },\r\n load: (source, load, error, progress, abort, headers) => {\r\n const myRequest = new Request(source);\r\n fetch(myRequest)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(\"Erro ao carregar imagem:\", response.status);\r\n error(\"Erro ao carregar a imagem\");\r\n return;\r\n }\r\n response.arrayBuffer().then((buffer) => {\r\n const contentType = response.headers.get(\"content-type\");\r\n const fileExtension = source.split(\".\").pop();\r\n const mimeTypeMap = {\r\n webp: \"image/webp\",\r\n jpg: \"image/jpeg\",\r\n jpeg: \"image/jpeg\",\r\n png: \"image/png\",\r\n };\r\n const fileType =\r\n mimeTypeMap[fileExtension] || contentType || \"application/octet-stream\";\r\n\r\n const myBlob = new Blob([buffer], { type: fileType });\r\n load(myBlob);\r\n });\r\n })\r\n .catch((err) => {\r\n console.error(\"Erro no server.load:\", err);\r\n error(\"Erro ao carregar a imagem\");\r\n });\r\n },\r\n remove: (source, load, error) => {\r\n if (!source) {\r\n error(\"Nome do arquivo não fornecido\");\r\n return;\r\n }\r\n const fileName = source.split(\"/\").pop();\r\n load();\r\n this.onRemove.emit(fileName);\r\n },\r\n revert: (uniqueFileId, load, error) => {\r\n if (!uniqueFileId) {\r\n error(\"Nome do arquivo não fornecido\");\r\n return;\r\n }\r\n load();\r\n this.onRemove.emit(uniqueFileId);\r\n },\r\n },\r\n };\r\n\r\n if (!this.instantUpload) {\r\n this.eventsSubscription = this.uploadObservable.subscribe(() => this.uploadFiles());\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.initialFiles) {\r\n this.pondFiles = this.initialFiles.map((item: string) => {\r\n return {\r\n source: item,\r\n options: {\r\n type: \"local\",\r\n },\r\n };\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this.instantUpload) {\r\n this.eventsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n pondHandleError() {\r\n this.onUploadError.emit();\r\n }\r\n\r\n pondHandleInit(event: any) {\r\n this.onInit.emit(this.pondFiles);\r\n\r\n this.pond = event.pond;\r\n }\r\n\r\n pondHandleAddFile(event: any) {\r\n this.onAdded.emit(event);\r\n }\r\n\r\n //Só funciona quando não tem arquivos iniciais\r\n pondHandleAllFilesAdded(event: any) {\r\n const filesList: string[] = [];\r\n const files = event.pond.getFiles();\r\n\r\n files.forEach((file: FilePondFile) => {\r\n let formattedName = file.serverId?.replace(/[\"\\[\\]]/g, \"\");\r\n filesList.push(formattedName);\r\n });\r\n\r\n this.onAllAdded.emit(filesList);\r\n }\r\n\r\n pondHandleActivateFile(event: any) {\r\n this.onActivate.emit(event);\r\n this.lightBox && this.openLightBox(event.file.filenameWithoutExtension);\r\n }\r\n\r\n pondHandleUpdate(event: any) {\r\n this.fillAlbum(event.items);\r\n }\r\n\r\n pondHandleRemove(event: any) {\r\n let fileName: string;\r\n if (event.file.source instanceof File) {\r\n fileName = event.file.serverId;\r\n } else {\r\n fileName = event.file.source.includes(\"/\") ? event.file.source.split(\"/\").pop() : event.file.source;\r\n }\r\n this.onRemove.emit(fileName);\r\n }\r\n\r\n onReorderFiles(event: any) {\r\n this.fillAlbum(event.items, true);\r\n let itemsList = event.items.map((item: FilePondFile) => {\r\n if (item.source instanceof File) {\r\n return item.serverId.replace(/[\"\\[\\]]/g, \"\");\r\n } else {\r\n return item.filename;\r\n }\r\n });\r\n this.onReOrder.emit(itemsList);\r\n }\r\n\r\n warning(event: any) {\r\n if (event.error.code == 0) {\r\n this.onMaxReached.emit(\r\n `Limite de Arquivos atingido. Você pode inserir um total de ${this.maxFiles} arquivos.`\r\n );\r\n }\r\n }\r\n\r\n openLightBox(fileName: string): void {\r\n let index = this.album\r\n .map(function (e) {\r\n return e.caption;\r\n })\r\n .indexOf(fileName);\r\n this._lightbox.open(this.album, index);\r\n }\r\n\r\n async fillAlbum(files: [], reOrder?: boolean) {\r\n if (files.length !== this.album.length || reOrder) {\r\n const preAlbum = await Promise.all(\r\n files.map(async (file: FilePondFile) => {\r\n let fileUrl: string;\r\n\r\n if (file.source instanceof File) {\r\n fileUrl = await this.readFileAsync(file.source);\r\n } else {\r\n fileUrl = file.source.toString();\r\n }\r\n\r\n return {\r\n src: fileUrl,\r\n caption: file.filenameWithoutExtension,\r\n thumb: \"\",\r\n };\r\n })\r\n );\r\n\r\n this.album = preAlbum;\r\n }\r\n }\r\n\r\n readFileAsync(file: File): Promise<string> {\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n const dataUrl = reader.result;\r\n const fileUrl = dataUrl.toString();\r\n resolve(fileUrl);\r\n };\r\n });\r\n }\r\n\r\n uploadFiles() {\r\n const files = this.pond.getFiles();\r\n files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();\r\n }\r\n\r\n isErrorMessage() {\r\n let control = this.form?.get(this.controlName);\r\n\r\n if (control?.errors?.required && (!this.pond || this.pond.getFiles().length === 0)) {\r\n return \"Obrigatório\";\r\n }\r\n return null;\r\n }\r\n}\r\n","<!-- app.component.html -->\r\n<div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\r\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\r\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\r\n (onerror)=\"pondHandleError()\"/>\r\n\r\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\r\n *ngIf=\"isErrorMessage()\">\r\n {{isErrorMessage()}}\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { UiUploadOrderComponent } from './ui-upload-order.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxModule } from 'ngx-lightbox';\r\n\r\n// import filepond module\r\nimport { FilePondModule, registerPlugin } from \"ngx-filepond\";\r\n\r\n// import and register filepond plugins\r\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImageCrop from 'filepond-plugin-image-crop';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\n\r\nregisterPlugin(\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginImageCrop,\r\n FilePondPluginImageResize\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n UiUploadOrderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FilePondModule,\r\n LightboxModule\r\n ],\r\n exports: [\r\n UiUploadOrderComponent\r\n ]\r\n})\r\nexport class UiUploadOrderModule { }\r\n","/*\r\n * Public API Surface of ui-upload-order\r\n */\r\n\r\nexport * from './lib/ui-upload-order.component';\r\nexport * from './lib/ui-upload-order.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uitec-ng-upload-order.mjs","sources":["../../../projects/ui-upload-order/src/lib/ui-upload-order.component.ts","../../../projects/ui-upload-order/src/lib/ui-upload-order.component.html","../../../projects/ui-upload-order/src/lib/ui-upload-order.module.ts","../../../projects/ui-upload-order/src/public-api.ts","../../../projects/ui-upload-order/src/uitec-ng-upload-order.ts"],"sourcesContent":["import { Component, ContentChild, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { FilePondComponent } from \"ngx-filepond\";\r\nimport { FilePond, FilePondFile, FilePondInitialFile, FilePondOptions } from \"filepond\";\r\nimport { IAlbum, Lightbox } from \"ngx-lightbox\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\nimport { HttpClient, HttpEventType } from \"@angular/common/http\";\r\n\r\n@Component({\r\n selector: \"ui-upload-order\",\r\n templateUrl: \"./ui-upload-order.component.html\",\r\n styleUrls: [\"./ui-upload-order.component.scss\"],\r\n})\r\nexport class UiUploadOrderComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() uploadObservable: Observable<void>;\r\n private eventsSubscription: Subscription;\r\n\r\n @Input() form: UntypedFormGroup;\r\n @Input() controlName: string;\r\n\r\n @Input() url: string;\r\n @Input() initialFiles: string[];\r\n @Input() multiple: boolean = true;\r\n @Input() reorder: boolean = true;\r\n @Input() maxFiles: number = 10;\r\n @Input() transparent: boolean;\r\n @Input() lightBox: boolean = true;\r\n @Input() instantUpload: boolean = true;\r\n @Input() errorPosition: string = 'right';\r\n // Retornar false (ou uma Promise que resolve false) cancela a remoção, ex.: confirmação com o usuário.\r\n @Input() beforeRemove: (file: FilePondFile) => boolean | Promise<boolean>;\r\n\r\n // Com multiple=false e uma imagem já salva, mostra o preview no lugar da área de upload.\r\n @Input() previewUrl: string;\r\n @Input() circle: boolean = false;\r\n\r\n @Output() onPreviewRemove = new EventEmitter<void>();\r\n\r\n @Output() onRemove = new EventEmitter<string>();\r\n @Output() onAdded = new EventEmitter<string>();\r\n @Output() onAllAdded = new EventEmitter<string[]>();\r\n @Output() onActivate = new EventEmitter<FilePondFile>();\r\n @Output() onInit = new EventEmitter<FilePondOptions[\"files\"]>();\r\n @Output() onMaxReached = new EventEmitter<string>();\r\n @Output() onReOrder = new EventEmitter<FilePondFile[]>();\r\n @Output() onSelected = new EventEmitter<any>();\r\n @Output() noFilesAdded = new EventEmitter<any>();\r\n @Output() onUploadError = new EventEmitter<any>();\r\n\r\n @ViewChild(\"myPond\") myPond: FilePondComponent;\r\n @ContentChild(\"preview\") previewTemplate: TemplateRef<any>;\r\n\r\n constructor(private _lightbox: Lightbox, private http: HttpClient) {}\r\n\r\n public pond: FilePond;\r\n public pondOptions: FilePondOptions;\r\n // public pondFiles: FilePondOptions[\"files\"] = [];\r\n public pondFiles: FilePondInitialFile[] = [];\r\n public album: IAlbum[] = [];\r\n\r\n ngOnInit(): void {\r\n this.pondOptions = {\r\n allowMultiple: this.multiple,\r\n labelIdle:\r\n 'Arraste seus arquivos ou <span class=\"filepond--label-action\">clique aqui</span> para selecionar.',\r\n allowReorder: this.reorder,\r\n maxFiles: this.maxFiles,\r\n acceptedFileTypes: [\"image/*\"],\r\n instantUpload: this.instantUpload,\r\n allowProcess: this.instantUpload,\r\n dropValidation: true,\r\n iconRemove: `<svg width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <mask id=\"mask0_37067_34146\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"15\" height=\"16\">\r\n <rect x=\"0.130859\" y=\"0.631592\" width=\"14.7368\" height=\"14.7368\" fill=\"#D9D9D9\"/>\r\n </mask>\r\n <g mask=\"url(#mask0_37067_34146)\">\r\n <path d=\"M4.43 13.5263C4.09228 13.5263 3.80317 13.406 3.56267 13.1655C3.32217 12.925 3.20193 12.6359 3.20193 12.2982V4.31574C3.02795 4.31574 2.88212 4.25689 2.76443 4.1392C2.64674 4.02151 2.58789 3.87568 2.58789 3.7017C2.58789 3.52773 2.64674 3.38189 2.76443 3.2642C2.88212 3.14651 3.02795 3.08767 3.20193 3.08767H5.65807C5.65807 2.91369 5.71691 2.76786 5.8346 2.65017C5.95229 2.53248 6.09812 2.47363 6.2721 2.47363H8.72824C8.90222 2.47363 9.04805 2.53248 9.16574 2.65017C9.28343 2.76786 9.34228 2.91369 9.34228 3.08767H11.7984C11.9724 3.08767 12.1182 3.14651 12.2359 3.2642C12.3536 3.38189 12.4125 3.52773 12.4125 3.7017C12.4125 3.87568 12.3536 4.02151 12.2359 4.1392C12.1182 4.25689 11.9724 4.31574 11.7984 4.31574V12.2982C11.7984 12.6359 11.6782 12.925 11.4377 13.1655C11.1972 13.406 10.9081 13.5263 10.5703 13.5263H4.43ZM4.43 4.31574V12.2982H10.5703V4.31574H4.43ZM7.50017 9.16662L8.66684 10.3333C8.78965 10.4459 8.93548 10.5021 9.10434 10.5021C9.2732 10.5021 9.41391 10.4459 9.52649 10.3333C9.64929 10.2105 9.7107 10.0646 9.7107 9.89578C9.7107 9.72692 9.64929 9.58621 9.52649 9.47363L8.35982 8.30697L9.52649 7.1403C9.64929 7.01749 9.7107 6.87166 9.7107 6.7028C9.7107 6.53394 9.64929 6.39322 9.52649 6.28065C9.41391 6.15784 9.2732 6.09644 9.10434 6.09644C8.93548 6.09644 8.78965 6.15784 8.66684 6.28065L7.50017 7.44732L6.3335 6.28065C6.22093 6.15784 6.08022 6.09644 5.91136 6.09644C5.7425 6.09644 5.59666 6.15784 5.47386 6.28065C5.36128 6.39322 5.305 6.53394 5.305 6.7028C5.305 6.87166 5.36128 7.01749 5.47386 7.1403L6.64052 8.30697L5.47386 9.47363C5.36128 9.58621 5.305 9.72692 5.305 9.89578C5.305 10.0646 5.36128 10.2105 5.47386 10.3333C5.59666 10.4459 5.7425 10.5021 5.91136 10.5021C6.08022 10.5021 6.22093 10.4459 6.3335 10.3333L7.50017 9.16662Z\" fill=\"white\"/>\r\n </g></svg>`,\r\n styleButtonRemoveItemPosition: \"right\",\r\n imageResizeMode: \"contain\",\r\n styleItemPanelAspectRatio: \"0.75\",\r\n itemInsertLocation: \"after\",\r\n credits: false,\r\n beforeRemoveFile: this.beforeRemove ? (file) => this.beforeRemove(file) : undefined,\r\n server: {\r\n process: (fieldName, file, metadata, load, error, progress, abort) => {\r\n const formData = new FormData();\r\n formData.append(fieldName, file, file.name);\r\n\r\n const request = this.http\r\n .post(this.url, formData, {\r\n reportProgress: true,\r\n observe: \"events\",\r\n })\r\n .subscribe({\r\n next: (event: any) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n progress(event.lengthComputable, event.loaded, event.total);\r\n } else if (event.type === HttpEventType.Response) {\r\n try {\r\n const response = event.body;\r\n let serverId: string;\r\n if (Array.isArray(response) && response.length > 0) {\r\n serverId = response[0];\r\n } else if (response && (response.serverId || response.id)) {\r\n serverId = response.serverId || response.id;\r\n } else {\r\n error(\"Resposta do servidor inválida: serverId não encontrado\");\r\n return;\r\n }\r\n load(serverId);\r\n } catch (e) {\r\n console.error(\"Erro ao processar resposta do servidor:\", e);\r\n error(\"Erro ao processar resposta do servidor\");\r\n }\r\n }\r\n },\r\n error: (err) => {\r\n error(\"Erro no upload: \" + err.message);\r\n },\r\n complete: () => {\r\n request.unsubscribe();\r\n },\r\n });\r\n return {\r\n abort: () => {\r\n request.unsubscribe();\r\n abort();\r\n },\r\n };\r\n },\r\n load: (source, load, error, progress, abort, headers) => {\r\n const myRequest = new Request(source);\r\n fetch(myRequest)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(\"Erro ao carregar imagem:\", response.status);\r\n error(\"Erro ao carregar a imagem\");\r\n return;\r\n }\r\n response.arrayBuffer().then((buffer) => {\r\n const contentType = response.headers.get(\"content-type\");\r\n const fileExtension = source.split(\".\").pop();\r\n const mimeTypeMap = {\r\n webp: \"image/webp\",\r\n jpg: \"image/jpeg\",\r\n jpeg: \"image/jpeg\",\r\n png: \"image/png\",\r\n };\r\n const fileType =\r\n mimeTypeMap[fileExtension] || contentType || \"application/octet-stream\";\r\n\r\n const myBlob = new Blob([buffer], { type: fileType });\r\n load(myBlob);\r\n });\r\n })\r\n .catch((err) => {\r\n console.error(\"Erro no server.load:\", err);\r\n error(\"Erro ao carregar a imagem\");\r\n });\r\n },\r\n remove: (source, load, error) => {\r\n if (!source) {\r\n error(\"Nome do arquivo não fornecido\");\r\n return;\r\n }\r\n const fileName = source.split(\"/\").pop();\r\n load();\r\n this.onRemove.emit(fileName);\r\n },\r\n revert: (uniqueFileId, load, error) => {\r\n if (!uniqueFileId) {\r\n error(\"Nome do arquivo não fornecido\");\r\n return;\r\n }\r\n load();\r\n this.onRemove.emit(uniqueFileId);\r\n },\r\n },\r\n };\r\n\r\n if (!this.instantUpload) {\r\n this.eventsSubscription = this.uploadObservable.subscribe(() => this.uploadFiles());\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.initialFiles) {\r\n this.pondFiles = this.initialFiles.map((item: string) => {\r\n return {\r\n source: item,\r\n options: {\r\n type: \"local\",\r\n },\r\n };\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this.instantUpload) {\r\n this.eventsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n pondHandleError() {\r\n this.onUploadError.emit();\r\n }\r\n\r\n pondHandleInit(event: any) {\r\n this.pond = event.pond;\r\n\r\n this.onInit.emit(this.pondFiles);\r\n }\r\n\r\n pondHandleAddFile(event: any) {\r\n this.onAdded.emit(event);\r\n }\r\n\r\n //Só funciona quando não tem arquivos iniciais\r\n pondHandleAllFilesAdded(event: any) {\r\n const filesList: string[] = [];\r\n const files = event.pond.getFiles();\r\n\r\n files.forEach((file: FilePondFile) => {\r\n let formattedName = file.serverId?.replace(/[\"\\[\\]]/g, \"\");\r\n filesList.push(formattedName);\r\n });\r\n\r\n this.onAllAdded.emit(filesList);\r\n }\r\n\r\n pondHandleActivateFile(event: any) {\r\n this.onActivate.emit(event);\r\n this.lightBox && this.openLightBox(event.file.filenameWithoutExtension);\r\n }\r\n\r\n pondHandleUpdate(event: any) {\r\n this.fillAlbum(event.items);\r\n }\r\n\r\n pondHandleRemove(event: any) {\r\n let fileName: string;\r\n if (event.file.source instanceof File) {\r\n fileName = event.file.serverId;\r\n } else {\r\n fileName = event.file.source.includes(\"/\") ? event.file.source.split(\"/\").pop() : event.file.source;\r\n }\r\n this.onRemove.emit(fileName);\r\n }\r\n\r\n onReorderFiles(event: any) {\r\n this.fillAlbum(event.items, true);\r\n let itemsList = event.items.map((item: FilePondFile) => {\r\n if (item.source instanceof File) {\r\n return item.serverId.replace(/[\"\\[\\]]/g, \"\");\r\n } else {\r\n return item.filename;\r\n }\r\n });\r\n this.onReOrder.emit(itemsList);\r\n }\r\n\r\n warning(event: any) {\r\n if (event.error.code == 0) {\r\n this.onMaxReached.emit(\r\n `Limite de Arquivos atingido. Você pode inserir um total de ${this.maxFiles} arquivos.`\r\n );\r\n }\r\n }\r\n\r\n openLightBox(fileName: string): void {\r\n let index = this.album\r\n .map(function (e) {\r\n return e.caption;\r\n })\r\n .indexOf(fileName);\r\n this._lightbox.open(this.album, index);\r\n }\r\n\r\n async fillAlbum(files: [], reOrder?: boolean) {\r\n if (files.length !== this.album.length || reOrder) {\r\n const preAlbum = await Promise.all(\r\n files.map(async (file: FilePondFile) => {\r\n let fileUrl: string;\r\n\r\n if (file.source instanceof File) {\r\n fileUrl = await this.readFileAsync(file.source);\r\n } else {\r\n fileUrl = file.source.toString();\r\n }\r\n\r\n return {\r\n src: fileUrl,\r\n caption: file.filenameWithoutExtension,\r\n thumb: \"\",\r\n };\r\n })\r\n );\r\n\r\n this.album = preAlbum;\r\n }\r\n }\r\n\r\n readFileAsync(file: File): Promise<string> {\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n const dataUrl = reader.result;\r\n const fileUrl = dataUrl.toString();\r\n resolve(fileUrl);\r\n };\r\n });\r\n }\r\n\r\n uploadFiles() {\r\n const files = this.pond.getFiles();\r\n files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();\r\n }\r\n\r\n get totalFiles(): number {\r\n return this.pond ? this.pond.getFiles().length : this.pondFiles.length;\r\n }\r\n\r\n get control() {\r\n return this.form?.get(this.controlName);\r\n }\r\n\r\n isErrorMessage() {\r\n let control = this.control;\r\n\r\n if (control?.errors?.required && (!this.pond || this.pond.getFiles().length === 0)) {\r\n return \"Obrigatório\";\r\n }\r\n return null;\r\n }\r\n\r\n isPreviewVisible(): boolean {\r\n return !this.multiple && !!this.previewUrl;\r\n }\r\n\r\n removerPreview = (): void => {\r\n this.control?.setValue(null);\r\n this.control?.markAsDirty();\r\n this.onPreviewRemove.emit();\r\n };\r\n}\r\n","<div *ngIf=\"isPreviewVisible(); else uploader\" class=\"upload-preview\" [class.upload-preview-circle]=\"circle\">\n <ng-container *ngIf=\"previewTemplate; else previewPadrao\"\n [ngTemplateOutlet]=\"previewTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: previewUrl, remover: removerPreview }\">\n </ng-container>\n\n <ng-template #previewPadrao>\n <img class=\"upload-preview-imagem\" [src]=\"previewUrl\" alt=\"\">\n <a href=\"javascript:void(0)\" class=\"btn btn-sm btn-icon upload-preview-remover\" (click)=\"removerPreview()\">\n <ui-icon icon=\"delete_forever\"></ui-icon>Remover imagem\n </a>\n </ng-template>\n</div>\n\n<ng-template #uploader>\n <div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\"\n [class.file-pond-reorder]=\"reorder\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\n (onerror)=\"pondHandleError()\"/>\n\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\n *ngIf=\"isErrorMessage()\">\n {{isErrorMessage()}}\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\r\nimport { UiUploadOrderComponent } from './ui-upload-order.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxModule } from 'ngx-lightbox';\r\nimport { UiIconModule } from 'uitec-ng-icon';\r\n\r\n// import filepond module\r\nimport { FilePondModule, registerPlugin } from \"ngx-filepond\";\r\n\r\n// import and register filepond plugins\r\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImageCrop from 'filepond-plugin-image-crop';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\n\r\nregisterPlugin(\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginImageCrop,\r\n FilePondPluginImageResize\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n UiUploadOrderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FilePondModule,\r\n LightboxModule,\r\n UiIconModule\r\n ],\r\n exports: [\r\n UiUploadOrderComponent\r\n ]\r\n})\r\nexport class UiUploadOrderModule { }\r\n","/*\r\n * Public API Surface of ui-upload-order\r\n */\r\n\r\nexport * from './lib/ui-upload-order.component';\r\nexport * from './lib/ui-upload-order.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, ViewChild, NgModule } from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output, ViewChild, ContentChild, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from 'ngx-filepond';
|
|
4
4
|
import { registerPlugin, FilePondModule } from 'ngx-filepond';
|
|
5
5
|
import * as i1 from 'ngx-lightbox';
|
|
@@ -10,6 +10,8 @@ import * as i2 from '@angular/common/http';
|
|
|
10
10
|
import { HttpEventType } from '@angular/common/http';
|
|
11
11
|
import * as i3 from '@angular/common';
|
|
12
12
|
import { CommonModule } from '@angular/common';
|
|
13
|
+
import * as i5 from 'uitec-ng-icon';
|
|
14
|
+
import { UiIconModule } from 'uitec-ng-icon';
|
|
13
15
|
import FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';
|
|
14
16
|
import FilePondPluginImagePreview from 'filepond-plugin-image-preview';
|
|
15
17
|
import FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';
|
|
@@ -26,6 +28,9 @@ class UiUploadOrderComponent {
|
|
|
26
28
|
this.maxFiles = 10;
|
|
27
29
|
this.lightBox = true;
|
|
28
30
|
this.instantUpload = true;
|
|
31
|
+
this.errorPosition = 'right';
|
|
32
|
+
this.circle = false;
|
|
33
|
+
this.onPreviewRemove = new EventEmitter();
|
|
29
34
|
this.onRemove = new EventEmitter();
|
|
30
35
|
this.onAdded = new EventEmitter();
|
|
31
36
|
this.onAllAdded = new EventEmitter();
|
|
@@ -39,6 +44,11 @@ class UiUploadOrderComponent {
|
|
|
39
44
|
// public pondFiles: FilePondOptions["files"] = [];
|
|
40
45
|
this.pondFiles = [];
|
|
41
46
|
this.album = [];
|
|
47
|
+
this.removerPreview = () => {
|
|
48
|
+
this.control?.setValue(null);
|
|
49
|
+
this.control?.markAsDirty();
|
|
50
|
+
this.onPreviewRemove.emit();
|
|
51
|
+
};
|
|
42
52
|
}
|
|
43
53
|
ngOnInit() {
|
|
44
54
|
this.pondOptions = {
|
|
@@ -62,6 +72,7 @@ class UiUploadOrderComponent {
|
|
|
62
72
|
styleItemPanelAspectRatio: "0.75",
|
|
63
73
|
itemInsertLocation: "after",
|
|
64
74
|
credits: false,
|
|
75
|
+
beforeRemoveFile: this.beforeRemove ? (file) => this.beforeRemove(file) : undefined,
|
|
65
76
|
server: {
|
|
66
77
|
process: (fieldName, file, metadata, load, error, progress, abort) => {
|
|
67
78
|
const formData = new FormData();
|
|
@@ -184,8 +195,8 @@ class UiUploadOrderComponent {
|
|
|
184
195
|
this.onUploadError.emit();
|
|
185
196
|
}
|
|
186
197
|
pondHandleInit(event) {
|
|
187
|
-
this.onInit.emit(this.pondFiles);
|
|
188
198
|
this.pond = event.pond;
|
|
199
|
+
this.onInit.emit(this.pondFiles);
|
|
189
200
|
}
|
|
190
201
|
pondHandleAddFile(event) {
|
|
191
202
|
this.onAdded.emit(event);
|
|
@@ -276,19 +287,28 @@ class UiUploadOrderComponent {
|
|
|
276
287
|
const files = this.pond.getFiles();
|
|
277
288
|
files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();
|
|
278
289
|
}
|
|
290
|
+
get totalFiles() {
|
|
291
|
+
return this.pond ? this.pond.getFiles().length : this.pondFiles.length;
|
|
292
|
+
}
|
|
293
|
+
get control() {
|
|
294
|
+
return this.form?.get(this.controlName);
|
|
295
|
+
}
|
|
279
296
|
isErrorMessage() {
|
|
280
|
-
let control = this.
|
|
297
|
+
let control = this.control;
|
|
281
298
|
if (control?.errors?.required && (!this.pond || this.pond.getFiles().length === 0)) {
|
|
282
299
|
return "Obrigatório";
|
|
283
300
|
}
|
|
284
301
|
return null;
|
|
285
302
|
}
|
|
303
|
+
isPreviewVisible() {
|
|
304
|
+
return !this.multiple && !!this.previewUrl;
|
|
305
|
+
}
|
|
286
306
|
}
|
|
287
307
|
UiUploadOrderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, deps: [{ token: i1.Lightbox }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
288
|
-
UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { uploadObservable: "uploadObservable", form: "form", controlName: "controlName", url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox", instantUpload: "instantUpload" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onAllAdded: "onAllAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected", noFilesAdded: "noFilesAdded", onUploadError: "onUploadError" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "
|
|
308
|
+
UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { uploadObservable: "uploadObservable", form: "form", controlName: "controlName", url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox", instantUpload: "instantUpload", errorPosition: "errorPosition", beforeRemove: "beforeRemove", previewUrl: "previewUrl", circle: "circle" }, outputs: { onPreviewRemove: "onPreviewRemove", onRemove: "onRemove", onAdded: "onAdded", onAllAdded: "onAllAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected", noFilesAdded: "noFilesAdded", onUploadError: "onUploadError" }, queries: [{ propertyName: "previewTemplate", first: true, predicate: ["preview"], descendants: true }], viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isPreviewVisible(); else uploader\" class=\"upload-preview\" [class.upload-preview-circle]=\"circle\">\n <ng-container *ngIf=\"previewTemplate; else previewPadrao\"\n [ngTemplateOutlet]=\"previewTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: previewUrl, remover: removerPreview }\">\n </ng-container>\n\n <ng-template #previewPadrao>\n <img class=\"upload-preview-imagem\" [src]=\"previewUrl\" alt=\"\">\n <a href=\"javascript:void(0)\" class=\"btn btn-sm btn-icon upload-preview-remover\" (click)=\"removerPreview()\">\n <ui-icon icon=\"delete_forever\"></ui-icon>Remover imagem\n </a>\n </ng-template>\n</div>\n\n<ng-template #uploader>\n <div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\"\n [class.file-pond-reorder]=\"reorder\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\n (onerror)=\"pondHandleError()\"/>\n\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\n *ngIf=\"isErrorMessage()\">\n {{isErrorMessage()}}\n </div>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .filepond--list-scroller{width:calc(100% - 25px);margin:auto;padding-bottom:20px}:host ::ng-deep .filepond--drop-label{color:#555;justify-content:flex-start;margin-left:20px}:host ::ng-deep .filepond--label-action{color:var(--theme-default);text-decoration-color:var(--theme-default)}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed;height:12%}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:var(--theme-secondary);display:none}:host ::ng-deep .file-pont-transparent .filepond--image-preview,:host ::ng-deep .file-pont-transparent .filepond--item-panel{background:transparent!important}:host ::ng-deep .file-pont-transparent .filepond--file-info{display:none}:host ::ng-deep .file-pont-transparent .filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:none}:host ::ng-deep .file-pont-transparent .filepond--item{border:1px solid rgba(173,181,189,.4);border-radius:8px;overflow:hidden}:host ::ng-deep .file-pont-transparent.file-pond-reorder .filepond--item{cursor:grab}:host ::ng-deep .filepond--file:hover .filepond--file-action-button{display:block}@media (max-width: 800px){:host ::ng-deep .filepond--panel-root{height:5%}}@media (max-width: 480px){:host ::ng-deep .filepond--panel-root{height:2%}}::ng-deep .ng-submitted .upload-invalid .filepond--panel-root{border-color:#fc4438}::ng-deep .ng-submitted .upload-invalid .invalid-tooltip{display:block;transform:translate(-50%,-50%);top:0;right:0}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}.upload-preview{position:relative;display:flex;flex-direction:column;align-items:flex-start}.upload-preview .upload-preview-imagem{max-height:100px;width:auto;margin:1rem 0;object-fit:cover}.upload-preview.upload-preview-circle .upload-preview-imagem{width:100px;height:100px;border-radius:50%}.upload-preview .upload-preview-remover{color:var(--ui-placeholder)}.upload-preview .upload-preview-remover:hover{color:var(--ui-text-danger, #dc3545)}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(25% - 7px)}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.FilePondComponent, selector: "file-pond", inputs: ["options", "files"], outputs: ["oninit", "onwarning", "onerror", "oninitfile", "onactivatefile", "onaddfilestart", "onaddfileprogress", "onaddfile", "onprocessfilestart", "onprocessfileprogress", "onprocessfileabort", "onprocessfilerevert", "onprocessfile", "onprocessfiles", "onremovefile", "onpreparefile", "onupdatefiles", "onreorderfiles"] }, { kind: "component", type: i5.UiIconComponent, selector: "ui-icon", inputs: ["icon", "size", "class"] }] });
|
|
289
309
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
|
|
290
310
|
type: Component,
|
|
291
|
-
args: [{ selector: "ui-upload-order", template: "
|
|
311
|
+
args: [{ selector: "ui-upload-order", template: "<div *ngIf=\"isPreviewVisible(); else uploader\" class=\"upload-preview\" [class.upload-preview-circle]=\"circle\">\n <ng-container *ngIf=\"previewTemplate; else previewPadrao\"\n [ngTemplateOutlet]=\"previewTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: previewUrl, remover: removerPreview }\">\n </ng-container>\n\n <ng-template #previewPadrao>\n <img class=\"upload-preview-imagem\" [src]=\"previewUrl\" alt=\"\">\n <a href=\"javascript:void(0)\" class=\"btn btn-sm btn-icon upload-preview-remover\" (click)=\"removerPreview()\">\n <ui-icon icon=\"delete_forever\"></ui-icon>Remover imagem\n </a>\n </ng-template>\n</div>\n\n<ng-template #uploader>\n <div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\"\n [class.file-pond-reorder]=\"reorder\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\n (onerror)=\"pondHandleError()\"/>\n\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\n *ngIf=\"isErrorMessage()\">\n {{isErrorMessage()}}\n </div>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .filepond--list-scroller{width:calc(100% - 25px);margin:auto;padding-bottom:20px}:host ::ng-deep .filepond--drop-label{color:#555;justify-content:flex-start;margin-left:20px}:host ::ng-deep .filepond--label-action{color:var(--theme-default);text-decoration-color:var(--theme-default)}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed;height:12%}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:var(--theme-secondary);display:none}:host ::ng-deep .file-pont-transparent .filepond--image-preview,:host ::ng-deep .file-pont-transparent .filepond--item-panel{background:transparent!important}:host ::ng-deep .file-pont-transparent .filepond--file-info{display:none}:host ::ng-deep .file-pont-transparent .filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:none}:host ::ng-deep .file-pont-transparent .filepond--item{border:1px solid rgba(173,181,189,.4);border-radius:8px;overflow:hidden}:host ::ng-deep .file-pont-transparent.file-pond-reorder .filepond--item{cursor:grab}:host ::ng-deep .filepond--file:hover .filepond--file-action-button{display:block}@media (max-width: 800px){:host ::ng-deep .filepond--panel-root{height:5%}}@media (max-width: 480px){:host ::ng-deep .filepond--panel-root{height:2%}}::ng-deep .ng-submitted .upload-invalid .filepond--panel-root{border-color:#fc4438}::ng-deep .ng-submitted .upload-invalid .invalid-tooltip{display:block;transform:translate(-50%,-50%);top:0;right:0}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}.upload-preview{position:relative;display:flex;flex-direction:column;align-items:flex-start}.upload-preview .upload-preview-imagem{max-height:100px;width:auto;margin:1rem 0;object-fit:cover}.upload-preview.upload-preview-circle .upload-preview-imagem{width:100px;height:100px;border-radius:50%}.upload-preview .upload-preview-remover{color:var(--ui-placeholder)}.upload-preview .upload-preview-remover:hover{color:var(--ui-text-danger, #dc3545)}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(25% - 7px)}}\n"] }]
|
|
292
312
|
}], ctorParameters: function () { return [{ type: i1.Lightbox }, { type: i2.HttpClient }]; }, propDecorators: { uploadObservable: [{
|
|
293
313
|
type: Input
|
|
294
314
|
}], form: [{
|
|
@@ -311,6 +331,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
311
331
|
type: Input
|
|
312
332
|
}], instantUpload: [{
|
|
313
333
|
type: Input
|
|
334
|
+
}], errorPosition: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}], beforeRemove: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], previewUrl: [{
|
|
339
|
+
type: Input
|
|
340
|
+
}], circle: [{
|
|
341
|
+
type: Input
|
|
342
|
+
}], onPreviewRemove: [{
|
|
343
|
+
type: Output
|
|
314
344
|
}], onRemove: [{
|
|
315
345
|
type: Output
|
|
316
346
|
}], onAdded: [{
|
|
@@ -334,6 +364,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
334
364
|
}], myPond: [{
|
|
335
365
|
type: ViewChild,
|
|
336
366
|
args: ["myPond"]
|
|
367
|
+
}], previewTemplate: [{
|
|
368
|
+
type: ContentChild,
|
|
369
|
+
args: ["preview"]
|
|
337
370
|
}] } });
|
|
338
371
|
|
|
339
372
|
registerPlugin(FilePondPluginFileValidateType, FilePondPluginImagePreview, FilePondPluginImageExifOrientation, FilePondPluginFileValidateSize, FilePondPluginImageCrop, FilePondPluginImageResize);
|
|
@@ -342,10 +375,12 @@ class UiUploadOrderModule {
|
|
|
342
375
|
UiUploadOrderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
343
376
|
UiUploadOrderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, declarations: [UiUploadOrderComponent], imports: [CommonModule,
|
|
344
377
|
FilePondModule,
|
|
345
|
-
LightboxModule
|
|
378
|
+
LightboxModule,
|
|
379
|
+
UiIconModule], exports: [UiUploadOrderComponent] });
|
|
346
380
|
UiUploadOrderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, imports: [CommonModule,
|
|
347
381
|
FilePondModule,
|
|
348
|
-
LightboxModule
|
|
382
|
+
LightboxModule,
|
|
383
|
+
UiIconModule] });
|
|
349
384
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderModule, decorators: [{
|
|
350
385
|
type: NgModule,
|
|
351
386
|
args: [{
|
|
@@ -355,7 +390,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
355
390
|
imports: [
|
|
356
391
|
CommonModule,
|
|
357
392
|
FilePondModule,
|
|
358
|
-
LightboxModule
|
|
393
|
+
LightboxModule,
|
|
394
|
+
UiIconModule
|
|
359
395
|
],
|
|
360
396
|
exports: [
|
|
361
397
|
UiUploadOrderComponent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uitec-ng-upload-order.mjs","sources":["../../../projects/ui-upload-order/src/lib/ui-upload-order.component.ts","../../../projects/ui-upload-order/src/lib/ui-upload-order.component.html","../../../projects/ui-upload-order/src/lib/ui-upload-order.module.ts","../../../projects/ui-upload-order/src/public-api.ts","../../../projects/ui-upload-order/src/uitec-ng-upload-order.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FilePondComponent } from \"ngx-filepond\";\r\nimport { FilePond, FilePondFile, FilePondInitialFile, FilePondOptions } from \"filepond\";\r\nimport { IAlbum, Lightbox } from \"ngx-lightbox\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\nimport { HttpClient, HttpEventType } from \"@angular/common/http\";\r\n\r\n@Component({\r\n selector: \"ui-upload-order\",\r\n templateUrl: \"./ui-upload-order.component.html\",\r\n styleUrls: [\"./ui-upload-order.component.scss\"],\r\n})\r\nexport class UiUploadOrderComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() uploadObservable: Observable<void>;\r\n private eventsSubscription: Subscription;\r\n\r\n @Input() form: UntypedFormGroup;\r\n @Input() controlName: string;\r\n\r\n @Input() url: string;\r\n @Input() initialFiles: string[];\r\n @Input() multiple: boolean = true;\r\n @Input() reorder: boolean = true;\r\n @Input() maxFiles: number = 10;\r\n @Input() transparent: boolean;\r\n @Input() lightBox: boolean = true;\r\n @Input() instantUpload: boolean = true;\r\n\r\n @Output() onRemove = new EventEmitter<string>();\r\n @Output() onAdded = new EventEmitter<string>();\r\n @Output() onAllAdded = new EventEmitter<string[]>();\r\n @Output() onActivate = new EventEmitter<FilePondFile>();\r\n @Output() onInit = new EventEmitter<FilePondOptions[\"files\"]>();\r\n @Output() onMaxReached = new EventEmitter<string>();\r\n @Output() onReOrder = new EventEmitter<FilePondFile[]>();\r\n @Output() onSelected = new EventEmitter<any>();\r\n @Output() noFilesAdded = new EventEmitter<any>();\r\n @Output() onUploadError = new EventEmitter<any>();\r\n\r\n @ViewChild(\"myPond\") myPond: FilePondComponent;\r\n\r\n constructor(private _lightbox: Lightbox, private http: HttpClient) {}\r\n\r\n public pond: FilePond;\r\n public pondOptions: FilePondOptions;\r\n // public pondFiles: FilePondOptions[\"files\"] = [];\r\n public pondFiles: FilePondInitialFile[] = [];\r\n public album: IAlbum[] = [];\r\n\r\n ngOnInit(): void {\r\n this.pondOptions = {\r\n allowMultiple: this.multiple,\r\n labelIdle:\r\n 'Arraste seus arquivos ou <span class=\"filepond--label-action\">clique aqui</span> para selecionar.',\r\n allowReorder: this.reorder,\r\n maxFiles: this.maxFiles,\r\n acceptedFileTypes: [\"image/*\"],\r\n instantUpload: this.instantUpload,\r\n allowProcess: this.instantUpload,\r\n dropValidation: true,\r\n iconRemove: `<svg width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <mask id=\"mask0_37067_34146\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"15\" height=\"16\">\r\n <rect x=\"0.130859\" y=\"0.631592\" width=\"14.7368\" height=\"14.7368\" fill=\"#D9D9D9\"/>\r\n </mask>\r\n <g mask=\"url(#mask0_37067_34146)\">\r\n <path d=\"M4.43 13.5263C4.09228 13.5263 3.80317 13.406 3.56267 13.1655C3.32217 12.925 3.20193 12.6359 3.20193 12.2982V4.31574C3.02795 4.31574 2.88212 4.25689 2.76443 4.1392C2.64674 4.02151 2.58789 3.87568 2.58789 3.7017C2.58789 3.52773 2.64674 3.38189 2.76443 3.2642C2.88212 3.14651 3.02795 3.08767 3.20193 3.08767H5.65807C5.65807 2.91369 5.71691 2.76786 5.8346 2.65017C5.95229 2.53248 6.09812 2.47363 6.2721 2.47363H8.72824C8.90222 2.47363 9.04805 2.53248 9.16574 2.65017C9.28343 2.76786 9.34228 2.91369 9.34228 3.08767H11.7984C11.9724 3.08767 12.1182 3.14651 12.2359 3.2642C12.3536 3.38189 12.4125 3.52773 12.4125 3.7017C12.4125 3.87568 12.3536 4.02151 12.2359 4.1392C12.1182 4.25689 11.9724 4.31574 11.7984 4.31574V12.2982C11.7984 12.6359 11.6782 12.925 11.4377 13.1655C11.1972 13.406 10.9081 13.5263 10.5703 13.5263H4.43ZM4.43 4.31574V12.2982H10.5703V4.31574H4.43ZM7.50017 9.16662L8.66684 10.3333C8.78965 10.4459 8.93548 10.5021 9.10434 10.5021C9.2732 10.5021 9.41391 10.4459 9.52649 10.3333C9.64929 10.2105 9.7107 10.0646 9.7107 9.89578C9.7107 9.72692 9.64929 9.58621 9.52649 9.47363L8.35982 8.30697L9.52649 7.1403C9.64929 7.01749 9.7107 6.87166 9.7107 6.7028C9.7107 6.53394 9.64929 6.39322 9.52649 6.28065C9.41391 6.15784 9.2732 6.09644 9.10434 6.09644C8.93548 6.09644 8.78965 6.15784 8.66684 6.28065L7.50017 7.44732L6.3335 6.28065C6.22093 6.15784 6.08022 6.09644 5.91136 6.09644C5.7425 6.09644 5.59666 6.15784 5.47386 6.28065C5.36128 6.39322 5.305 6.53394 5.305 6.7028C5.305 6.87166 5.36128 7.01749 5.47386 7.1403L6.64052 8.30697L5.47386 9.47363C5.36128 9.58621 5.305 9.72692 5.305 9.89578C5.305 10.0646 5.36128 10.2105 5.47386 10.3333C5.59666 10.4459 5.7425 10.5021 5.91136 10.5021C6.08022 10.5021 6.22093 10.4459 6.3335 10.3333L7.50017 9.16662Z\" fill=\"white\"/>\r\n </g></svg>`,\r\n styleButtonRemoveItemPosition: \"right\",\r\n imageResizeMode: \"contain\",\r\n styleItemPanelAspectRatio: \"0.75\",\r\n itemInsertLocation: \"after\",\r\n credits: false,\r\n server: {\r\n process: (fieldName, file, metadata, load, error, progress, abort) => {\r\n const formData = new FormData();\r\n formData.append(fieldName, file, file.name);\r\n\r\n const request = this.http\r\n .post(this.url, formData, {\r\n reportProgress: true,\r\n observe: \"events\",\r\n })\r\n .subscribe({\r\n next: (event: any) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n progress(event.lengthComputable, event.loaded, event.total);\r\n } else if (event.type === HttpEventType.Response) {\r\n try {\r\n const response = event.body;\r\n let serverId: string;\r\n if (Array.isArray(response) && response.length > 0) {\r\n serverId = response[0];\r\n } else if (response && (response.serverId || response.id)) {\r\n serverId = response.serverId || response.id;\r\n } else {\r\n error(\"Resposta do servidor inválida: serverId não encontrado\");\r\n return;\r\n }\r\n load(serverId);\r\n } catch (e) {\r\n console.error(\"Erro ao processar resposta do servidor:\", e);\r\n error(\"Erro ao processar resposta do servidor\");\r\n }\r\n }\r\n },\r\n error: (err) => {\r\n error(\"Erro no upload: \" + err.message);\r\n },\r\n complete: () => {\r\n request.unsubscribe();\r\n },\r\n });\r\n return {\r\n abort: () => {\r\n request.unsubscribe();\r\n abort();\r\n },\r\n };\r\n },\r\n load: (source, load, error, progress, abort, headers) => {\r\n const myRequest = new Request(source);\r\n fetch(myRequest)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(\"Erro ao carregar imagem:\", response.status);\r\n error(\"Erro ao carregar a imagem\");\r\n return;\r\n }\r\n response.arrayBuffer().then((buffer) => {\r\n const contentType = response.headers.get(\"content-type\");\r\n const fileExtension = source.split(\".\").pop();\r\n const mimeTypeMap = {\r\n webp: \"image/webp\",\r\n jpg: \"image/jpeg\",\r\n jpeg: \"image/jpeg\",\r\n png: \"image/png\",\r\n };\r\n const fileType =\r\n mimeTypeMap[fileExtension] || contentType || \"application/octet-stream\";\r\n\r\n const myBlob = new Blob([buffer], { type: fileType });\r\n load(myBlob);\r\n });\r\n })\r\n .catch((err) => {\r\n console.error(\"Erro no server.load:\", err);\r\n error(\"Erro ao carregar a imagem\");\r\n });\r\n },\r\n remove: (source, load, error) => {\r\n if (!source) {\r\n error(\"Nome do arquivo não fornecido\");\r\n return;\r\n }\r\n const fileName = source.split(\"/\").pop();\r\n load();\r\n this.onRemove.emit(fileName);\r\n },\r\n revert: (uniqueFileId, load, error) => {\r\n if (!uniqueFileId) {\r\n error(\"Nome do arquivo não fornecido\");\r\n return;\r\n }\r\n load();\r\n this.onRemove.emit(uniqueFileId);\r\n },\r\n },\r\n };\r\n\r\n if (!this.instantUpload) {\r\n this.eventsSubscription = this.uploadObservable.subscribe(() => this.uploadFiles());\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.initialFiles) {\r\n this.pondFiles = this.initialFiles.map((item: string) => {\r\n return {\r\n source: item,\r\n options: {\r\n type: \"local\",\r\n },\r\n };\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this.instantUpload) {\r\n this.eventsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n pondHandleError() {\r\n this.onUploadError.emit();\r\n }\r\n\r\n pondHandleInit(event: any) {\r\n this.onInit.emit(this.pondFiles);\r\n\r\n this.pond = event.pond;\r\n }\r\n\r\n pondHandleAddFile(event: any) {\r\n this.onAdded.emit(event);\r\n }\r\n\r\n //Só funciona quando não tem arquivos iniciais\r\n pondHandleAllFilesAdded(event: any) {\r\n const filesList: string[] = [];\r\n const files = event.pond.getFiles();\r\n\r\n files.forEach((file: FilePondFile) => {\r\n let formattedName = file.serverId?.replace(/[\"\\[\\]]/g, \"\");\r\n filesList.push(formattedName);\r\n });\r\n\r\n this.onAllAdded.emit(filesList);\r\n }\r\n\r\n pondHandleActivateFile(event: any) {\r\n this.onActivate.emit(event);\r\n this.lightBox && this.openLightBox(event.file.filenameWithoutExtension);\r\n }\r\n\r\n pondHandleUpdate(event: any) {\r\n this.fillAlbum(event.items);\r\n }\r\n\r\n pondHandleRemove(event: any) {\r\n let fileName: string;\r\n if (event.file.source instanceof File) {\r\n fileName = event.file.serverId;\r\n } else {\r\n fileName = event.file.source.includes(\"/\") ? event.file.source.split(\"/\").pop() : event.file.source;\r\n }\r\n this.onRemove.emit(fileName);\r\n }\r\n\r\n onReorderFiles(event: any) {\r\n this.fillAlbum(event.items, true);\r\n let itemsList = event.items.map((item: FilePondFile) => {\r\n if (item.source instanceof File) {\r\n return item.serverId.replace(/[\"\\[\\]]/g, \"\");\r\n } else {\r\n return item.filename;\r\n }\r\n });\r\n this.onReOrder.emit(itemsList);\r\n }\r\n\r\n warning(event: any) {\r\n if (event.error.code == 0) {\r\n this.onMaxReached.emit(\r\n `Limite de Arquivos atingido. Você pode inserir um total de ${this.maxFiles} arquivos.`\r\n );\r\n }\r\n }\r\n\r\n openLightBox(fileName: string): void {\r\n let index = this.album\r\n .map(function (e) {\r\n return e.caption;\r\n })\r\n .indexOf(fileName);\r\n this._lightbox.open(this.album, index);\r\n }\r\n\r\n async fillAlbum(files: [], reOrder?: boolean) {\r\n if (files.length !== this.album.length || reOrder) {\r\n const preAlbum = await Promise.all(\r\n files.map(async (file: FilePondFile) => {\r\n let fileUrl: string;\r\n\r\n if (file.source instanceof File) {\r\n fileUrl = await this.readFileAsync(file.source);\r\n } else {\r\n fileUrl = file.source.toString();\r\n }\r\n\r\n return {\r\n src: fileUrl,\r\n caption: file.filenameWithoutExtension,\r\n thumb: \"\",\r\n };\r\n })\r\n );\r\n\r\n this.album = preAlbum;\r\n }\r\n }\r\n\r\n readFileAsync(file: File): Promise<string> {\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n const dataUrl = reader.result;\r\n const fileUrl = dataUrl.toString();\r\n resolve(fileUrl);\r\n };\r\n });\r\n }\r\n\r\n uploadFiles() {\r\n const files = this.pond.getFiles();\r\n files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();\r\n }\r\n\r\n isErrorMessage() {\r\n let control = this.form?.get(this.controlName);\r\n\r\n if (control?.errors?.required && (!this.pond || this.pond.getFiles().length === 0)) {\r\n return \"Obrigatório\";\r\n }\r\n return null;\r\n }\r\n}\r\n","<!-- app.component.html -->\r\n<div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\r\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\r\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\r\n (onerror)=\"pondHandleError()\"/>\r\n\r\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\r\n *ngIf=\"isErrorMessage()\">\r\n {{isErrorMessage()}}\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { UiUploadOrderComponent } from './ui-upload-order.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxModule } from 'ngx-lightbox';\r\n\r\n// import filepond module\r\nimport { FilePondModule, registerPlugin } from \"ngx-filepond\";\r\n\r\n// import and register filepond plugins\r\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImageCrop from 'filepond-plugin-image-crop';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\n\r\nregisterPlugin(\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginImageCrop,\r\n FilePondPluginImageResize\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n UiUploadOrderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FilePondModule,\r\n LightboxModule\r\n ],\r\n exports: [\r\n UiUploadOrderComponent\r\n ]\r\n})\r\nexport class UiUploadOrderModule { }\r\n","/*\r\n * Public API Surface of ui-upload-order\r\n */\r\n\r\nexport * from './lib/ui-upload-order.component';\r\nexport * from './lib/ui-upload-order.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uitec-ng-upload-order.mjs","sources":["../../../projects/ui-upload-order/src/lib/ui-upload-order.component.ts","../../../projects/ui-upload-order/src/lib/ui-upload-order.component.html","../../../projects/ui-upload-order/src/lib/ui-upload-order.module.ts","../../../projects/ui-upload-order/src/public-api.ts","../../../projects/ui-upload-order/src/uitec-ng-upload-order.ts"],"sourcesContent":["import { Component, ContentChild, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { FilePondComponent } from \"ngx-filepond\";\r\nimport { FilePond, FilePondFile, FilePondInitialFile, FilePondOptions } from \"filepond\";\r\nimport { IAlbum, Lightbox } from \"ngx-lightbox\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\nimport { HttpClient, HttpEventType } from \"@angular/common/http\";\r\n\r\n@Component({\r\n selector: \"ui-upload-order\",\r\n templateUrl: \"./ui-upload-order.component.html\",\r\n styleUrls: [\"./ui-upload-order.component.scss\"],\r\n})\r\nexport class UiUploadOrderComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() uploadObservable: Observable<void>;\r\n private eventsSubscription: Subscription;\r\n\r\n @Input() form: UntypedFormGroup;\r\n @Input() controlName: string;\r\n\r\n @Input() url: string;\r\n @Input() initialFiles: string[];\r\n @Input() multiple: boolean = true;\r\n @Input() reorder: boolean = true;\r\n @Input() maxFiles: number = 10;\r\n @Input() transparent: boolean;\r\n @Input() lightBox: boolean = true;\r\n @Input() instantUpload: boolean = true;\r\n @Input() errorPosition: string = 'right';\r\n // Retornar false (ou uma Promise que resolve false) cancela a remoção, ex.: confirmação com o usuário.\r\n @Input() beforeRemove: (file: FilePondFile) => boolean | Promise<boolean>;\r\n\r\n // Com multiple=false e uma imagem já salva, mostra o preview no lugar da área de upload.\r\n @Input() previewUrl: string;\r\n @Input() circle: boolean = false;\r\n\r\n @Output() onPreviewRemove = new EventEmitter<void>();\r\n\r\n @Output() onRemove = new EventEmitter<string>();\r\n @Output() onAdded = new EventEmitter<string>();\r\n @Output() onAllAdded = new EventEmitter<string[]>();\r\n @Output() onActivate = new EventEmitter<FilePondFile>();\r\n @Output() onInit = new EventEmitter<FilePondOptions[\"files\"]>();\r\n @Output() onMaxReached = new EventEmitter<string>();\r\n @Output() onReOrder = new EventEmitter<FilePondFile[]>();\r\n @Output() onSelected = new EventEmitter<any>();\r\n @Output() noFilesAdded = new EventEmitter<any>();\r\n @Output() onUploadError = new EventEmitter<any>();\r\n\r\n @ViewChild(\"myPond\") myPond: FilePondComponent;\r\n @ContentChild(\"preview\") previewTemplate: TemplateRef<any>;\r\n\r\n constructor(private _lightbox: Lightbox, private http: HttpClient) {}\r\n\r\n public pond: FilePond;\r\n public pondOptions: FilePondOptions;\r\n // public pondFiles: FilePondOptions[\"files\"] = [];\r\n public pondFiles: FilePondInitialFile[] = [];\r\n public album: IAlbum[] = [];\r\n\r\n ngOnInit(): void {\r\n this.pondOptions = {\r\n allowMultiple: this.multiple,\r\n labelIdle:\r\n 'Arraste seus arquivos ou <span class=\"filepond--label-action\">clique aqui</span> para selecionar.',\r\n allowReorder: this.reorder,\r\n maxFiles: this.maxFiles,\r\n acceptedFileTypes: [\"image/*\"],\r\n instantUpload: this.instantUpload,\r\n allowProcess: this.instantUpload,\r\n dropValidation: true,\r\n iconRemove: `<svg width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <mask id=\"mask0_37067_34146\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"15\" height=\"16\">\r\n <rect x=\"0.130859\" y=\"0.631592\" width=\"14.7368\" height=\"14.7368\" fill=\"#D9D9D9\"/>\r\n </mask>\r\n <g mask=\"url(#mask0_37067_34146)\">\r\n <path d=\"M4.43 13.5263C4.09228 13.5263 3.80317 13.406 3.56267 13.1655C3.32217 12.925 3.20193 12.6359 3.20193 12.2982V4.31574C3.02795 4.31574 2.88212 4.25689 2.76443 4.1392C2.64674 4.02151 2.58789 3.87568 2.58789 3.7017C2.58789 3.52773 2.64674 3.38189 2.76443 3.2642C2.88212 3.14651 3.02795 3.08767 3.20193 3.08767H5.65807C5.65807 2.91369 5.71691 2.76786 5.8346 2.65017C5.95229 2.53248 6.09812 2.47363 6.2721 2.47363H8.72824C8.90222 2.47363 9.04805 2.53248 9.16574 2.65017C9.28343 2.76786 9.34228 2.91369 9.34228 3.08767H11.7984C11.9724 3.08767 12.1182 3.14651 12.2359 3.2642C12.3536 3.38189 12.4125 3.52773 12.4125 3.7017C12.4125 3.87568 12.3536 4.02151 12.2359 4.1392C12.1182 4.25689 11.9724 4.31574 11.7984 4.31574V12.2982C11.7984 12.6359 11.6782 12.925 11.4377 13.1655C11.1972 13.406 10.9081 13.5263 10.5703 13.5263H4.43ZM4.43 4.31574V12.2982H10.5703V4.31574H4.43ZM7.50017 9.16662L8.66684 10.3333C8.78965 10.4459 8.93548 10.5021 9.10434 10.5021C9.2732 10.5021 9.41391 10.4459 9.52649 10.3333C9.64929 10.2105 9.7107 10.0646 9.7107 9.89578C9.7107 9.72692 9.64929 9.58621 9.52649 9.47363L8.35982 8.30697L9.52649 7.1403C9.64929 7.01749 9.7107 6.87166 9.7107 6.7028C9.7107 6.53394 9.64929 6.39322 9.52649 6.28065C9.41391 6.15784 9.2732 6.09644 9.10434 6.09644C8.93548 6.09644 8.78965 6.15784 8.66684 6.28065L7.50017 7.44732L6.3335 6.28065C6.22093 6.15784 6.08022 6.09644 5.91136 6.09644C5.7425 6.09644 5.59666 6.15784 5.47386 6.28065C5.36128 6.39322 5.305 6.53394 5.305 6.7028C5.305 6.87166 5.36128 7.01749 5.47386 7.1403L6.64052 8.30697L5.47386 9.47363C5.36128 9.58621 5.305 9.72692 5.305 9.89578C5.305 10.0646 5.36128 10.2105 5.47386 10.3333C5.59666 10.4459 5.7425 10.5021 5.91136 10.5021C6.08022 10.5021 6.22093 10.4459 6.3335 10.3333L7.50017 9.16662Z\" fill=\"white\"/>\r\n </g></svg>`,\r\n styleButtonRemoveItemPosition: \"right\",\r\n imageResizeMode: \"contain\",\r\n styleItemPanelAspectRatio: \"0.75\",\r\n itemInsertLocation: \"after\",\r\n credits: false,\r\n beforeRemoveFile: this.beforeRemove ? (file) => this.beforeRemove(file) : undefined,\r\n server: {\r\n process: (fieldName, file, metadata, load, error, progress, abort) => {\r\n const formData = new FormData();\r\n formData.append(fieldName, file, file.name);\r\n\r\n const request = this.http\r\n .post(this.url, formData, {\r\n reportProgress: true,\r\n observe: \"events\",\r\n })\r\n .subscribe({\r\n next: (event: any) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n progress(event.lengthComputable, event.loaded, event.total);\r\n } else if (event.type === HttpEventType.Response) {\r\n try {\r\n const response = event.body;\r\n let serverId: string;\r\n if (Array.isArray(response) && response.length > 0) {\r\n serverId = response[0];\r\n } else if (response && (response.serverId || response.id)) {\r\n serverId = response.serverId || response.id;\r\n } else {\r\n error(\"Resposta do servidor inválida: serverId não encontrado\");\r\n return;\r\n }\r\n load(serverId);\r\n } catch (e) {\r\n console.error(\"Erro ao processar resposta do servidor:\", e);\r\n error(\"Erro ao processar resposta do servidor\");\r\n }\r\n }\r\n },\r\n error: (err) => {\r\n error(\"Erro no upload: \" + err.message);\r\n },\r\n complete: () => {\r\n request.unsubscribe();\r\n },\r\n });\r\n return {\r\n abort: () => {\r\n request.unsubscribe();\r\n abort();\r\n },\r\n };\r\n },\r\n load: (source, load, error, progress, abort, headers) => {\r\n const myRequest = new Request(source);\r\n fetch(myRequest)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(\"Erro ao carregar imagem:\", response.status);\r\n error(\"Erro ao carregar a imagem\");\r\n return;\r\n }\r\n response.arrayBuffer().then((buffer) => {\r\n const contentType = response.headers.get(\"content-type\");\r\n const fileExtension = source.split(\".\").pop();\r\n const mimeTypeMap = {\r\n webp: \"image/webp\",\r\n jpg: \"image/jpeg\",\r\n jpeg: \"image/jpeg\",\r\n png: \"image/png\",\r\n };\r\n const fileType =\r\n mimeTypeMap[fileExtension] || contentType || \"application/octet-stream\";\r\n\r\n const myBlob = new Blob([buffer], { type: fileType });\r\n load(myBlob);\r\n });\r\n })\r\n .catch((err) => {\r\n console.error(\"Erro no server.load:\", err);\r\n error(\"Erro ao carregar a imagem\");\r\n });\r\n },\r\n remove: (source, load, error) => {\r\n if (!source) {\r\n error(\"Nome do arquivo não fornecido\");\r\n return;\r\n }\r\n const fileName = source.split(\"/\").pop();\r\n load();\r\n this.onRemove.emit(fileName);\r\n },\r\n revert: (uniqueFileId, load, error) => {\r\n if (!uniqueFileId) {\r\n error(\"Nome do arquivo não fornecido\");\r\n return;\r\n }\r\n load();\r\n this.onRemove.emit(uniqueFileId);\r\n },\r\n },\r\n };\r\n\r\n if (!this.instantUpload) {\r\n this.eventsSubscription = this.uploadObservable.subscribe(() => this.uploadFiles());\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.initialFiles) {\r\n this.pondFiles = this.initialFiles.map((item: string) => {\r\n return {\r\n source: item,\r\n options: {\r\n type: \"local\",\r\n },\r\n };\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this.instantUpload) {\r\n this.eventsSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n pondHandleError() {\r\n this.onUploadError.emit();\r\n }\r\n\r\n pondHandleInit(event: any) {\r\n this.pond = event.pond;\r\n\r\n this.onInit.emit(this.pondFiles);\r\n }\r\n\r\n pondHandleAddFile(event: any) {\r\n this.onAdded.emit(event);\r\n }\r\n\r\n //Só funciona quando não tem arquivos iniciais\r\n pondHandleAllFilesAdded(event: any) {\r\n const filesList: string[] = [];\r\n const files = event.pond.getFiles();\r\n\r\n files.forEach((file: FilePondFile) => {\r\n let formattedName = file.serverId?.replace(/[\"\\[\\]]/g, \"\");\r\n filesList.push(formattedName);\r\n });\r\n\r\n this.onAllAdded.emit(filesList);\r\n }\r\n\r\n pondHandleActivateFile(event: any) {\r\n this.onActivate.emit(event);\r\n this.lightBox && this.openLightBox(event.file.filenameWithoutExtension);\r\n }\r\n\r\n pondHandleUpdate(event: any) {\r\n this.fillAlbum(event.items);\r\n }\r\n\r\n pondHandleRemove(event: any) {\r\n let fileName: string;\r\n if (event.file.source instanceof File) {\r\n fileName = event.file.serverId;\r\n } else {\r\n fileName = event.file.source.includes(\"/\") ? event.file.source.split(\"/\").pop() : event.file.source;\r\n }\r\n this.onRemove.emit(fileName);\r\n }\r\n\r\n onReorderFiles(event: any) {\r\n this.fillAlbum(event.items, true);\r\n let itemsList = event.items.map((item: FilePondFile) => {\r\n if (item.source instanceof File) {\r\n return item.serverId.replace(/[\"\\[\\]]/g, \"\");\r\n } else {\r\n return item.filename;\r\n }\r\n });\r\n this.onReOrder.emit(itemsList);\r\n }\r\n\r\n warning(event: any) {\r\n if (event.error.code == 0) {\r\n this.onMaxReached.emit(\r\n `Limite de Arquivos atingido. Você pode inserir um total de ${this.maxFiles} arquivos.`\r\n );\r\n }\r\n }\r\n\r\n openLightBox(fileName: string): void {\r\n let index = this.album\r\n .map(function (e) {\r\n return e.caption;\r\n })\r\n .indexOf(fileName);\r\n this._lightbox.open(this.album, index);\r\n }\r\n\r\n async fillAlbum(files: [], reOrder?: boolean) {\r\n if (files.length !== this.album.length || reOrder) {\r\n const preAlbum = await Promise.all(\r\n files.map(async (file: FilePondFile) => {\r\n let fileUrl: string;\r\n\r\n if (file.source instanceof File) {\r\n fileUrl = await this.readFileAsync(file.source);\r\n } else {\r\n fileUrl = file.source.toString();\r\n }\r\n\r\n return {\r\n src: fileUrl,\r\n caption: file.filenameWithoutExtension,\r\n thumb: \"\",\r\n };\r\n })\r\n );\r\n\r\n this.album = preAlbum;\r\n }\r\n }\r\n\r\n readFileAsync(file: File): Promise<string> {\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n const dataUrl = reader.result;\r\n const fileUrl = dataUrl.toString();\r\n resolve(fileUrl);\r\n };\r\n });\r\n }\r\n\r\n uploadFiles() {\r\n const files = this.pond.getFiles();\r\n files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();\r\n }\r\n\r\n get totalFiles(): number {\r\n return this.pond ? this.pond.getFiles().length : this.pondFiles.length;\r\n }\r\n\r\n get control() {\r\n return this.form?.get(this.controlName);\r\n }\r\n\r\n isErrorMessage() {\r\n let control = this.control;\r\n\r\n if (control?.errors?.required && (!this.pond || this.pond.getFiles().length === 0)) {\r\n return \"Obrigatório\";\r\n }\r\n return null;\r\n }\r\n\r\n isPreviewVisible(): boolean {\r\n return !this.multiple && !!this.previewUrl;\r\n }\r\n\r\n removerPreview = (): void => {\r\n this.control?.setValue(null);\r\n this.control?.markAsDirty();\r\n this.onPreviewRemove.emit();\r\n };\r\n}\r\n","<div *ngIf=\"isPreviewVisible(); else uploader\" class=\"upload-preview\" [class.upload-preview-circle]=\"circle\">\n <ng-container *ngIf=\"previewTemplate; else previewPadrao\"\n [ngTemplateOutlet]=\"previewTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: previewUrl, remover: removerPreview }\">\n </ng-container>\n\n <ng-template #previewPadrao>\n <img class=\"upload-preview-imagem\" [src]=\"previewUrl\" alt=\"\">\n <a href=\"javascript:void(0)\" class=\"btn btn-sm btn-icon upload-preview-remover\" (click)=\"removerPreview()\">\n <ui-icon icon=\"delete_forever\"></ui-icon>Remover imagem\n </a>\n </ng-template>\n</div>\n\n<ng-template #uploader>\n <div class=\"position-relative\" [class.upload-invalid]=\"isErrorMessage()\">\n <file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\"\n [class.file-pond-reorder]=\"reorder\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit($event)\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfiles)=\"pondHandleAllFilesAdded($event)\" (onprocessfile)=\"pondHandleAddFile($event)\"\n (onerror)=\"pondHandleError()\"/>\n\n <div class=\"invalid-tooltip\" [class]=\"'tooltip-' + errorPosition\" [class.touched]=\"control?.touched\"\n *ngIf=\"isErrorMessage()\">\n {{isErrorMessage()}}\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\r\nimport { UiUploadOrderComponent } from './ui-upload-order.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxModule } from 'ngx-lightbox';\r\nimport { UiIconModule } from 'uitec-ng-icon';\r\n\r\n// import filepond module\r\nimport { FilePondModule, registerPlugin } from \"ngx-filepond\";\r\n\r\n// import and register filepond plugins\r\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImageCrop from 'filepond-plugin-image-crop';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\n\r\nregisterPlugin(\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginImageCrop,\r\n FilePondPluginImageResize\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n UiUploadOrderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FilePondModule,\r\n LightboxModule,\r\n UiIconModule\r\n ],\r\n exports: [\r\n UiUploadOrderComponent\r\n ]\r\n})\r\nexport class UiUploadOrderModule { }\r\n","/*\r\n * Public API Surface of ui-upload-order\r\n */\r\n\r\nexport * from './lib/ui-upload-order.component';\r\nexport * from './lib/ui-upload-order.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventEmitter, OnChanges, OnDestroy, OnInit } from "@angular/core";
|
|
1
|
+
import { EventEmitter, OnChanges, OnDestroy, OnInit, TemplateRef } from "@angular/core";
|
|
2
2
|
import { FilePondComponent } from "ngx-filepond";
|
|
3
3
|
import { FilePond, FilePondFile, FilePondInitialFile, FilePondOptions } from "filepond";
|
|
4
4
|
import { IAlbum, Lightbox } from "ngx-lightbox";
|
|
@@ -21,6 +21,11 @@ export declare class UiUploadOrderComponent implements OnInit, OnChanges, OnDest
|
|
|
21
21
|
transparent: boolean;
|
|
22
22
|
lightBox: boolean;
|
|
23
23
|
instantUpload: boolean;
|
|
24
|
+
errorPosition: string;
|
|
25
|
+
beforeRemove: (file: FilePondFile) => boolean | Promise<boolean>;
|
|
26
|
+
previewUrl: string;
|
|
27
|
+
circle: boolean;
|
|
28
|
+
onPreviewRemove: EventEmitter<void>;
|
|
24
29
|
onRemove: EventEmitter<string>;
|
|
25
30
|
onAdded: EventEmitter<string>;
|
|
26
31
|
onAllAdded: EventEmitter<string[]>;
|
|
@@ -32,6 +37,7 @@ export declare class UiUploadOrderComponent implements OnInit, OnChanges, OnDest
|
|
|
32
37
|
noFilesAdded: EventEmitter<any>;
|
|
33
38
|
onUploadError: EventEmitter<any>;
|
|
34
39
|
myPond: FilePondComponent;
|
|
40
|
+
previewTemplate: TemplateRef<any>;
|
|
35
41
|
constructor(_lightbox: Lightbox, http: HttpClient);
|
|
36
42
|
pond: FilePond;
|
|
37
43
|
pondOptions: FilePondOptions;
|
|
@@ -53,7 +59,11 @@ export declare class UiUploadOrderComponent implements OnInit, OnChanges, OnDest
|
|
|
53
59
|
fillAlbum(files: [], reOrder?: boolean): Promise<void>;
|
|
54
60
|
readFileAsync(file: File): Promise<string>;
|
|
55
61
|
uploadFiles(): void;
|
|
62
|
+
get totalFiles(): number;
|
|
63
|
+
get control(): import("@angular/forms").AbstractControl<any, any>;
|
|
56
64
|
isErrorMessage(): string;
|
|
65
|
+
isPreviewVisible(): boolean;
|
|
66
|
+
removerPreview: () => void;
|
|
57
67
|
static ɵfac: i0.ɵɵFactoryDeclaration<UiUploadOrderComponent, never>;
|
|
58
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<UiUploadOrderComponent, "ui-upload-order", never, { "uploadObservable": "uploadObservable"; "form": "form"; "controlName": "controlName"; "url": "url"; "initialFiles": "initialFiles"; "multiple": "multiple"; "reorder": "reorder"; "maxFiles": "maxFiles"; "transparent": "transparent"; "lightBox": "lightBox"; "instantUpload": "instantUpload"; }, { "onRemove": "onRemove"; "onAdded": "onAdded"; "onAllAdded": "onAllAdded"; "onActivate": "onActivate"; "onInit": "onInit"; "onMaxReached": "onMaxReached"; "onReOrder": "onReOrder"; "onSelected": "onSelected"; "noFilesAdded": "noFilesAdded"; "onUploadError": "onUploadError"; },
|
|
68
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiUploadOrderComponent, "ui-upload-order", never, { "uploadObservable": "uploadObservable"; "form": "form"; "controlName": "controlName"; "url": "url"; "initialFiles": "initialFiles"; "multiple": "multiple"; "reorder": "reorder"; "maxFiles": "maxFiles"; "transparent": "transparent"; "lightBox": "lightBox"; "instantUpload": "instantUpload"; "errorPosition": "errorPosition"; "beforeRemove": "beforeRemove"; "previewUrl": "previewUrl"; "circle": "circle"; }, { "onPreviewRemove": "onPreviewRemove"; "onRemove": "onRemove"; "onAdded": "onAdded"; "onAllAdded": "onAllAdded"; "onActivate": "onActivate"; "onInit": "onInit"; "onMaxReached": "onMaxReached"; "onReOrder": "onReOrder"; "onSelected": "onSelected"; "noFilesAdded": "noFilesAdded"; "onUploadError": "onUploadError"; }, ["previewTemplate"], never, false, never>;
|
|
59
69
|
}
|
|
@@ -3,8 +3,9 @@ import * as i1 from "./ui-upload-order.component";
|
|
|
3
3
|
import * as i2 from "@angular/common";
|
|
4
4
|
import * as i3 from "ngx-filepond";
|
|
5
5
|
import * as i4 from "ngx-lightbox";
|
|
6
|
+
import * as i5 from "uitec-ng-icon";
|
|
6
7
|
export declare class UiUploadOrderModule {
|
|
7
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<UiUploadOrderModule, never>;
|
|
8
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<UiUploadOrderModule, [typeof i1.UiUploadOrderComponent], [typeof i2.CommonModule, typeof i3.FilePondModule, typeof i4.LightboxModule], [typeof i1.UiUploadOrderComponent]>;
|
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<UiUploadOrderModule, [typeof i1.UiUploadOrderComponent], [typeof i2.CommonModule, typeof i3.FilePondModule, typeof i4.LightboxModule, typeof i5.UiIconModule], [typeof i1.UiUploadOrderComponent]>;
|
|
9
10
|
static ɵinj: i0.ɵɵInjectorDeclaration<UiUploadOrderModule>;
|
|
10
11
|
}
|