uitec-ng-upload-order 1.1.0 → 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.
@@ -63,6 +63,7 @@ export class UiUploadOrderComponent {
63
63
  styleItemPanelAspectRatio: "0.75",
64
64
  itemInsertLocation: "after",
65
65
  credits: false,
66
+ beforeRemoveFile: this.beforeRemove ? (file) => this.beforeRemove(file) : undefined,
66
67
  server: {
67
68
  process: (fieldName, file, metadata, load, error, progress, abort) => {
68
69
  const formData = new FormData();
@@ -185,8 +186,8 @@ export class UiUploadOrderComponent {
185
186
  this.onUploadError.emit();
186
187
  }
187
188
  pondHandleInit(event) {
188
- this.onInit.emit(this.pondFiles);
189
189
  this.pond = event.pond;
190
+ this.onInit.emit(this.pondFiles);
190
191
  }
191
192
  pondHandleAddFile(event) {
192
193
  this.onAdded.emit(event);
@@ -277,6 +278,9 @@ export class UiUploadOrderComponent {
277
278
  const files = this.pond.getFiles();
278
279
  files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();
279
280
  }
281
+ get totalFiles() {
282
+ return this.pond ? this.pond.getFiles().length : this.pondFiles.length;
283
+ }
280
284
  get control() {
281
285
  return this.form?.get(this.controlName);
282
286
  }
@@ -292,10 +296,10 @@ export class UiUploadOrderComponent {
292
296
  }
293
297
  }
294
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 });
295
- 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", 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\" [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 .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"] }] });
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"] }] });
296
300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
297
301
  type: Component,
298
- 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\" [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 .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"] }]
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"] }]
299
303
  }], ctorParameters: function () { return [{ type: i1.Lightbox }, { type: i2.HttpClient }]; }, propDecorators: { uploadObservable: [{
300
304
  type: Input
301
305
  }], form: [{
@@ -320,6 +324,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
320
324
  type: Input
321
325
  }], errorPosition: [{
322
326
  type: Input
327
+ }], beforeRemove: [{
328
+ type: Input
323
329
  }], previewUrl: [{
324
330
  type: Input
325
331
  }], circle: [{
@@ -353,4 +359,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
353
359
  type: ContentChild,
354
360
  args: ["preview"]
355
361
  }] } });
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXVwbG9hZC1vcmRlci9zcmMvbGliL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS11cGxvYWQtb3JkZXIvc3JjL2xpYi91aS11cGxvYWQtb3JkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpELE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sc0JBQXNCO0lBcUMvQixZQUFvQixTQUFtQixFQUFVLElBQWdCO1FBQTdDLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBNUJ4RCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUV0QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGtCQUFhLEdBQVcsT0FBTyxDQUFDO1FBSWhDLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFdkIsb0JBQWUsR0FBRyxJQUFJLFlB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IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGaWxlUG9uZENvbXBvbmVudCB9IGZyb20gXCJuZ3gtZmlsZXBvbmRcIjtcclxuaW1wb3J0IHsgRmlsZVBvbmQsIEZpbGVQb25kRmlsZSwgRmlsZVBvbmRJbml0aWFsRmlsZSwgRmlsZVBvbmRPcHRpb25zIH0gZnJvbSBcImZpbGVwb25kXCI7XHJcbmltcG9ydCB7IElBbGJ1bSwgTGlnaHRib3ggfSBmcm9tIFwibmd4LWxpZ2h0Ym94XCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ1aS11cGxvYWQtb3JkZXJcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vdWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vdWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlVcGxvYWRPcmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgdXBsb2FkT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTx2b2lkPjtcclxuICAgIHByaXZhdGUgZXZlbnRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIGNvbnRyb2xOYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KCkgdXJsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpbml0aWFsRmlsZXM6IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcmVvcmRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBtYXhGaWxlczogbnVtYmVyID0gMTA7XHJcbiAgICBASW5wdXQoKSB0cmFuc3BhcmVudDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGxpZ2h0Qm94OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGluc3RhbnRVcGxvYWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZXJyb3JQb3NpdGlvbjogc3RyaW5nID0gJ3JpZ2h0JztcclxuXHJcbiAgICAvLyBDb20gbXVsdGlwbGU9ZmFsc2UgZSB1bWEgaW1hZ2VtIGrDoSBzYWx2YSwgbW9zdHJhIG8gcHJldmlldyBubyBsdWdhciBkYSDDoXJlYSBkZSB1cGxvYWQuXHJcbiAgICBASW5wdXQoKSBwcmV2aWV3VXJsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjaXJjbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25QcmV2aWV3UmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvblJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIG9uQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkFsbEFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkFjdGl2YXRlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9uZEZpbGU+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9uZE9wdGlvbnNbXCJmaWxlc1wiXT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbk1heFJlYWNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvblJlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVQb25kRmlsZVtdPigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBub0ZpbGVzQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblVwbG9hZEVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcIm15UG9uZFwiKSBteVBvbmQ6IEZpbGVQb25kQ29tcG9uZW50O1xyXG4gICAgQENvbnRlbnRDaGlsZChcInByZXZpZXdcIikgcHJldmlld1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xpZ2h0Ym94OiBMaWdodGJveCwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuICAgIHB1YmxpYyBwb25kOiBGaWxlUG9uZDtcclxuICAgIHB1YmxpYyBwb25kT3B0aW9uczogRmlsZVBvbmRPcHRpb25zO1xyXG4gICAgLy8gcHVibGljIHBvbmRGaWxlczogRmlsZVBvbmRPcHRpb25zW1wiZmlsZXNcIl0gPSBbXTtcclxuICAgIHB1YmxpYyBwb25kRmlsZXM6IEZpbGVQb25kSW5pdGlhbEZpbGVbXSA9IFtdO1xyXG4gICAgcHVibGljIGFsYnVtOiBJQWxidW1bXSA9IFtdO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucG9uZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGU6IHRoaXMubXVsdGlwbGUsXHJcbiAgICAgICAgICAgIGxhYmVsSWRsZTpcclxuICAgICAgICAgICAgICAgICdBcnJhc3RlIHNldXMgYXJxdWl2b3Mgb3UgPHNwYW4gY2xhc3M9XCJmaWxlcG9uZC0tbGFiZWwtYWN0aW9uXCI+Y2xpcXVlIGFxdWk8L3NwYW4+IHBhcmEgc2VsZWNpb25hci4nLFxyXG4gICAgICAgICAgICBhbGxvd1Jlb3JkZXI6IHRoaXMucmVvcmRlcixcclxuICAgICAgICAgICAgbWF4RmlsZXM6IHRoaXMubWF4RmlsZXMsXHJcbiAgICAgICAgICAgIGFjY2VwdGVkRmlsZVR5cGVzOiBbXCJpbWFnZS8qXCJdLFxyXG4gICAgICAgICAgICBpbnN0YW50VXBsb2FkOiB0aGlzLmluc3RhbnRVcGxvYWQsXHJcbiAgICAgICAgICAgIGFsbG93UHJvY2VzczogdGhpcy5pbnN0YW50VXBsb2FkLFxyXG4gICAgICAgICAgICBkcm9wVmFsaWRhdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgaWNvblJlbW92ZTogYDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNSAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzM3MDY3XzM0MTQ2XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTZcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjAuMTMwODU5XCIgeT1cIjAuNjMxNTkyXCIgd2lkdGg9XCIxNC43MzY4XCIgaGVpZ2h0PVwiMTQuNzM2OFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxyXG4gICAgICAgICAgICA8L21hc2s+XHJcbiAgICAgICAgICAgIDxnIG1hc2s9XCJ1cmwoI21hc2swXzM3MDY3XzM0MTQ2KVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTQuNDMgMTMuNTI2M0M0LjA5MjI4IDEzLjUyNjMgMy44MDMxNyAxMy40MDYgMy41NjI2NyAxMy4xNjU1QzMuMzIyMTcgMTIuOTI1IDMuMjAxOTMgMTIuNjM1OSAzLjIwMTkzIDEyLjI5ODJWNC4zMTU3NEMzLjAyNzk1IDQuMzE1NzQgMi44ODIxMiA0LjI1Njg5IDIuNzY0NDMgNC4xMzkyQzIuNjQ2NzQgNC4wMjE1MSAyLjU4Nzg5IDMuODc1NjggMi41ODc4OSAzLjcwMTdDMi41ODc4OSAzLjUyNzczIDIuNjQ2NzQgMy4zODE4OSAyLjc2NDQzIDMuMjY0MkMyLjg4MjEyIDMuMTQ2NTEgMy4wMjc5NSAzLjA4NzY3IDMuMjAxOTMgMy4wODc2N0g1LjY1ODA3QzUuNjU4MDcgMi45MTM2OSA1LjcxNjkxIDIuNzY3ODYgNS44MzQ2IDIuNjUwMTdDNS45NTIyOSAyLjUzMjQ4IDYuMDk4MTIgMi40NzM2MyA2LjI3MjEgMi40NzM2M0g4LjcyODI0QzguOTAyMjIgMi40NzM2MyA5LjA0ODA1IDIuNTMyNDggOS4xNjU3NCAyLjY1MDE3QzkuMjgzNDMgMi43Njc4NiA5LjM0MjI4IDIuOTEzNjkgOS4zNDIyOCAzLjA4NzY3SDExLjc5ODRDMTEuOTcyNCAzLjA4NzY3IDEyLjExODIgMy4xNDY1MSAxMi4yMzU5IDMuMjY0MkMxMi4zNTM2IDMuMzgxODkgMTIuNDEyNSAzLjUyNzczIDEyLjQxMjUgMy43MDE3QzEyLjQxMjUgMy44NzU2OCAxMi4zNTM2IDQuMDIxNTEgMTIuMjM1OSA0LjEzOTJDMTIuMTE4MiA0LjI1Njg5IDExLjk3MjQgNC4zMTU3NCAxMS43OTg0IDQuMzE1NzRWMTIuMjk4MkMxMS43OTg0IDEyLjYzNTkgMTEuNjc4MiAxMi45MjUgMTEuNDM3NyAxMy4xNjU1QzExLjE5NzIgMTMuNDA2IDEwLjkwODEgMTMuNTI2MyAxMC41NzAzIDEzLjUyNjNINC40M1pNNC40MyA0LjMxNTc0VjEyLjI5ODJIMTAuNTcwM1Y0LjMxNTc0SDQuNDNaTTcuNTAwMTcgOS4xNjY2Mkw4LjY2Njg0IDEwLjMzMzNDOC43ODk2NSAxMC40NDU5IDguOTM1NDggMTAuNTAyMSA5LjEwNDM0IDEwLjUwMjFDOS4yNzMyIDEwLjUwMjEgOS40MTM5MSAxMC40NDU5IDkuNTI2NDkgMTAuMzMzM0M5LjY0OTI5IDEwLjIxMDUgOS43MTA3IDEwLjA2NDYgOS43MTA3IDkuODk1NzhDOS43MTA3IDkuNzI2OTIgOS42NDkyOSA5LjU4NjIxIDkuNTI2NDkgOS40NzM2M0w4LjM1OTgyIDguMzA2OTdMOS41MjY0OSA3LjE0MDNDOS42NDkyOSA3LjAxNzQ5IDkuNzEwNyA2Ljg3MTY2IDkuNzEwNyA2LjcwMjhDOS43MTA3IDYuNTMzOTQgOS42NDkyOSA2LjM5MzIyIDkuNTI2NDkgNi4yODA2NUM5LjQxMzkxIDYuMTU3ODQgOS4yNzMyIDYuMDk2NDQgOS4xMDQzNCA2LjA5NjQ0QzguOTM1NDggNi4wOTY0NCA4Ljc4OTY1IDYuMTU3ODQgOC42NjY4NCA2LjI4MDY1TDcuNTAwMTcgNy40NDczMkw2LjMzMzUgNi4yODA2NUM2LjIyMDkzIDYuMTU3ODQgNi4wODAyMiA2LjA5NjQ0IDUuOTExMzYgNi4wOTY0NEM1Ljc0MjUgNi4wOTY0NCA1LjU5NjY2IDYuMTU3ODQgNS40NzM4NiA2LjI4MDY1QzUuMzYxMjggNi4zOTMyMiA1LjMwNSA2LjUzMzk0IDUuMzA1IDYuNzAyOEM1LjMwNSA2Ljg3MTY2IDUuMzYxMjggNy4wMTc0OSA1LjQ3Mzg2IDcuMTQwM0w2LjY0MDUyIDguMzA2OTdMNS40NzM4NiA5LjQ3MzYzQzUuMzYxMjggOS41ODYyMSA1LjMwNSA5LjcyNjkyIDUuMzA1IDkuODk1NzhDNS4zMDUgMTAuMDY0NiA1LjM2MTI4IDEwLjIxMDUgNS40NzM4NiAxMC4zMzMzQzUuNTk2NjYgMTAuNDQ1OSA1Ljc0MjUgMTAuNTAyMSA1LjkxMTM2IDEwLjUwMjFDNi4wODAyMiAxMC41MDIxIDYuMjIwOTMgMTAuNDQ1OSA2LjMzMzUgMTAuMzMzM0w3LjUwMDE3IDkuMTY2NjJaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICA8L2c+PC9zdmc+YCxcclxuICAgICAgICAgICAgc3R5bGVCdXR0b25SZW1vdmVJdGVtUG9zaXRpb246IFwicmlnaHRcIixcclxuICAgICAgICAgICAgaW1hZ2VSZXNpemVNb2RlOiBcImNvbnRhaW5cIixcclxuICAgICAgICAgICAgc3R5bGVJdGVtUGFuZWxBc3BlY3RSYXRpbzogXCIwLjc1XCIsXHJcbiAgICAgICAgICAgIGl0ZW1JbnNlcnRMb2NhdGlvbjogXCJhZnRlclwiLFxyXG4gICAgICAgICAgICBjcmVkaXRzOiBmYWxzZSxcclxuICAgICAgICAgICAgc2VydmVyOiB7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzOiAoZmllbGROYW1lLCBmaWxlLCBtZXRhZGF0YSwgbG9hZCwgZXJyb3IsIHByb2dyZXNzLCBhYm9ydCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpZWxkTmFtZSwgZmlsZSwgZmlsZS5uYW1lKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLnVybCwgZm9ybURhdGEsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogXCJldmVudHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzKGV2ZW50Lmxlbmd0aENvbXB1dGFibGUsIGV2ZW50LmxvYWRlZCwgZXZlbnQudG90YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBldmVudC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlcnZlcklkOiBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNwb25zZSkgJiYgcmVzcG9uc2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcklkID0gcmVzcG9uc2VbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlICYmIChyZXNwb25zZS5zZXJ2ZXJJZCB8fCByZXNwb25zZS5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJJZCA9IHJlc3BvbnNlLnNlcnZlcklkIHx8IHJlc3BvbnNlLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihcIlJlc3Bvc3RhIGRvIHNlcnZpZG9yIGludsOhbGlkYTogc2VydmVySWQgbsOjbyBlbmNvbnRyYWRvXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQoc2VydmVySWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJybyBhbyBwcm9jZXNzYXIgcmVzcG9zdGEgZG8gc2Vydmlkb3I6XCIsIGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJFcnJvIGFvIHByb2Nlc3NhciByZXNwb3N0YSBkbyBzZXJ2aWRvclwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFwiRXJybyBubyB1cGxvYWQ6IFwiICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBsb2FkOiAoc291cmNlLCBsb2FkLCBlcnJvciwgcHJvZ3Jlc3MsIGFib3J0LCBoZWFkZXJzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXlSZXF1ZXN0ID0gbmV3IFJlcXVlc3Qoc291cmNlKTtcclxuICAgICAgICAgICAgICAgICAgICBmZXRjaChteVJlcXVlc3QpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvIGFvIGNhcnJlZ2FyIGltYWdlbTpcIiwgcmVzcG9uc2Uuc3RhdHVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihcIkVycm8gYW8gY2FycmVnYXIgYSBpbWFnZW1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKS50aGVuKChidWZmZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBzb3VyY2Uuc3BsaXQoXCIuXCIpLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbWVUeXBlTWFwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJwOiBcImltYWdlL3dlYnBcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganBnOiBcImltYWdlL2pwZWdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganBlZzogXCJpbWFnZS9qcGVnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZzogXCJpbWFnZS9wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVUeXBlID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWltZVR5cGVNYXBbZmlsZUV4dGVuc2lvbl0gfHwgY29udGVudFR5cGUgfHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXlCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogZmlsZVR5cGUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZChteUJsb2IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJybyBubyBzZXJ2ZXIubG9hZDpcIiwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFwiRXJybyBhbyBjYXJyZWdhciBhIGltYWdlbVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVtb3ZlOiAoc291cmNlLCBsb2FkLCBlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghc291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFwiTm9tZSBkbyBhcnF1aXZvIG7Do28gZm9ybmVjaWRvXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gc291cmNlLnNwbGl0KFwiL1wiKS5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXZlcnQ6ICh1bmlxdWVGaWxlSWQsIGxvYWQsIGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1bmlxdWVGaWxlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJOb21lIGRvIGFycXVpdm8gbsOjbyBmb3JuZWNpZG9cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmUuZW1pdCh1bmlxdWVGaWxlSWQpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaW5zdGFudFVwbG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMudXBsb2FkT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGxvYWRGaWxlcygpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbEZpbGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9uZEZpbGVzID0gdGhpcy5pbml0aWFsRmlsZXMubWFwKChpdGVtOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBpdGVtLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJsb2NhbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbnRVcGxvYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcG9uZEhhbmRsZUVycm9yKCkge1xyXG4gICAgICAgIHRoaXMub25VcGxvYWRFcnJvci5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9uZEhhbmRsZUluaXQoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMub25Jbml0LmVtaXQodGhpcy5wb25kRmlsZXMpO1xyXG5cclxuICAgICAgICB0aGlzLnBvbmQgPSBldmVudC5wb25kO1xyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVBZGRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uQWRkZWQuZW1pdChldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9Tw7MgZnVuY2lvbmEgcXVhbmRvIG7Do28gdGVtIGFycXVpdm9zIGluaWNpYWlzXHJcbiAgICBwb25kSGFuZGxlQWxsRmlsZXNBZGRlZChldmVudDogYW55KSB7XHJcbiAgICAgICAgY29uc3QgZmlsZXNMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gZXZlbnQucG9uZC5nZXRGaWxlcygpO1xyXG5cclxuICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlOiBGaWxlUG9uZEZpbGUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGZvcm1hdHRlZE5hbWUgPSBmaWxlLnNlcnZlcklkPy5yZXBsYWNlKC9bXCJcXFtcXF1dL2csIFwiXCIpO1xyXG4gICAgICAgICAgICBmaWxlc0xpc3QucHVzaChmb3JtYXR0ZWROYW1lKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkFsbEFkZGVkLmVtaXQoZmlsZXNMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBwb25kSGFuZGxlQWN0aXZhdGVGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uQWN0aXZhdGUuZW1pdChldmVudCk7XHJcbiAgICAgICAgdGhpcy5saWdodEJveCAmJiB0aGlzLm9wZW5MaWdodEJveChldmVudC5maWxlLmZpbGVuYW1lV2l0aG91dEV4dGVuc2lvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcG9uZEhhbmRsZVVwZGF0ZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5maWxsQWxidW0oZXZlbnQuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVSZW1vdmUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGxldCBmaWxlTmFtZTogc3RyaW5nO1xyXG4gICAgICAgIGlmIChldmVudC5maWxlLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgZmlsZU5hbWUgPSBldmVudC5maWxlLnNlcnZlcklkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lID0gZXZlbnQuZmlsZS5zb3VyY2UuaW5jbHVkZXMoXCIvXCIpID8gZXZlbnQuZmlsZS5zb3VyY2Uuc3BsaXQoXCIvXCIpLnBvcCgpIDogZXZlbnQuZmlsZS5zb3VyY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25SZW1vdmUuZW1pdChmaWxlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25SZW9yZGVyRmlsZXMoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZmlsbEFsYnVtKGV2ZW50Lml0ZW1zLCB0cnVlKTtcclxuICAgICAgICBsZXQgaXRlbXNMaXN0ID0gZXZlbnQuaXRlbXMubWFwKChpdGVtOiBGaWxlUG9uZEZpbGUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uc291cmNlIGluc3RhbmNlb2YgRmlsZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uc2VydmVySWQucmVwbGFjZSgvW1wiXFxbXFxdXS9nLCBcIlwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZpbGVuYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5vblJlT3JkZXIuZW1pdChpdGVtc0xpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhcm5pbmcoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGlmIChldmVudC5lcnJvci5jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5vbk1heFJlYWNoZWQuZW1pdChcclxuICAgICAgICAgICAgICAgIGBMaW1pdGUgZGUgQXJxdWl2b3MgYXRpbmdpZG8uIFZvY8OqIHBvZGUgaW5zZXJpciB1bSB0b3RhbCBkZSAke3RoaXMubWF4RmlsZXN9IGFycXVpdm9zLmBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkxpZ2h0Qm94KGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmFsYnVtXHJcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlLmNhcHRpb247XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5pbmRleE9mKGZpbGVOYW1lKTtcclxuICAgICAgICB0aGlzLl9saWdodGJveC5vcGVuKHRoaXMuYWxidW0sIGluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWxsQWxidW0oZmlsZXM6IFtdLCByZU9yZGVyPzogYm9vbGVhbikge1xyXG4gICAgICAgIGlmIChmaWxlcy5sZW5ndGggIT09IHRoaXMuYWxidW0ubGVuZ3RoIHx8IHJlT3JkZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJlQWxidW0gPSBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIGZpbGVzLm1hcChhc3luYyAoZmlsZTogRmlsZVBvbmRGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVVcmw6IHN0cmluZztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUuc291cmNlIGluc3RhbmNlb2YgRmlsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlVXJsID0gYXdhaXQgdGhpcy5yZWFkRmlsZUFzeW5jKGZpbGUuc291cmNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlVXJsID0gZmlsZS5zb3VyY2UudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogZmlsZVVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbjogZmlsZS5maWxlbmFtZVdpdGhvdXRFeHRlbnNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5hbGJ1bSA9IHByZUFsYnVtO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWFkRmlsZUFzeW5jKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFVcmwgPSByZWFkZXIucmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IGRhdGFVcmwudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmlsZVVybCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBsb2FkRmlsZXMoKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLnBvbmQuZ2V0RmlsZXMoKTtcclxuICAgICAgICBmaWxlcy5sZW5ndGggPiAwID8gdGhpcy5wb25kLnByb2Nlc3NGaWxlcygpIDogdGhpcy5ub0ZpbGVzQWRkZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250cm9sKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0/LmdldCh0aGlzLmNvbnRyb2xOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0Vycm9yTWVzc2FnZSgpIHtcclxuICAgICAgICBsZXQgY29udHJvbCA9IHRoaXMuY29udHJvbDtcclxuXHJcbiAgICAgICAgaWYgKGNvbnRyb2w/LmVycm9ycz8ucmVxdWlyZWQgJiYgKCF0aGlzLnBvbmQgfHwgdGhpcy5wb25kLmdldEZpbGVzKCkubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJPYnJpZ2F0w7NyaW9cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaXNQcmV2aWV3VmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMubXVsdGlwbGUgJiYgISF0aGlzLnByZXZpZXdVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlclByZXZpZXcgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgdGhpcy5vblByZXZpZXdSZW1vdmUuZW1pdCgpO1xyXG4gICAgfTtcclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiaXNQcmV2aWV3VmlzaWJsZSgpOyBlbHNlIHVwbG9hZGVyXCIgY2xhc3M9XCJ1cGxvYWQtcHJldmlld1wiIFtjbGFzcy51cGxvYWQtcHJldmlldy1jaXJjbGVdPVwiY2lyY2xlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXZpZXdUZW1wbGF0ZTsgZWxzZSBwcmV2aWV3UGFkcmFvXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJldmlld1RlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBwcmV2aWV3VXJsLCByZW1vdmVyOiByZW1vdmVyUHJldmlldyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3ByZXZpZXdQYWRyYW8+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJ1cGxvYWQtcHJldmlldy1pbWFnZW1cIiBbc3JjXT1cInByZXZpZXdVcmxcIiBhbHQ9XCJcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiB1cGxvYWQtcHJldmlldy1yZW1vdmVyXCIgKGNsaWNrKT1cInJlbW92ZXJQcmV2aWV3KClcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIGljb249XCJkZWxldGVfZm9yZXZlclwiPjwvdWktaWNvbj5SZW1vdmVyIGltYWdlbVxuICAgICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3VwbG9hZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiIFtjbGFzcy51cGxvYWQtaW52YWxpZF09XCJpc0Vycm9yTWVzc2FnZSgpXCI+XG4gICAgICAgIDxmaWxlLXBvbmQgI215UG9uZCBuYW1lPSdVcGxvYWRGb3JtW2ltYWdlbV1bXScgW2NsYXNzLmZpbGUtcG9udC10cmFuc3BhcmVudF09XCJ0cmFuc3BhcmVudFwiIFtvcHRpb25zXT1cInBvbmRPcHRpb25zXCJcbiAgICAgICAgICAgIChvbmluaXQpPVwicG9uZEhhbmRsZUluaXQoJGV2ZW50KVwiIFtmaWxlc109XCJwb25kRmlsZXNcIiAob251cGRhdGVmaWxlcyk9XCJwb25kSGFuZGxlVXBkYXRlKCRldmVudClcIlxuICAgICAgICAgICAgKG9uYWN0aXZhdGVmaWxlKT1cInBvbmRIYW5kbGVBY3RpdmF0ZUZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25yZW9yZGVyZmlsZXMpPVwib25SZW9yZGVyRmlsZXMoJGV2ZW50KVwiIChvbndhcm5pbmcpPVwid2FybmluZygkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbnByb2Nlc3NmaWxlcyk9XCJwb25kSGFuZGxlQWxsRmlsZXNBZGRlZCgkZXZlbnQpXCIgKG9ucHJvY2Vzc2ZpbGUpPVwicG9uZEhhbmRsZUFkZEZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25lcnJvcik9XCJwb25kSGFuZGxlRXJyb3IoKVwiLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC10b29sdGlwXCIgW2NsYXNzXT1cIid0b29sdGlwLScgKyBlcnJvclBvc2l0aW9uXCIgW2NsYXNzLnRvdWNoZWRdPVwiY29udHJvbD8udG91Y2hlZFwiXG4gICAgICAgICAgICAqbmdJZj1cImlzRXJyb3JNZXNzYWdlKClcIj5cbiAgICAgICAgICAgIHt7aXNFcnJvck1lc3NhZ2UoKX19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
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
@@ -72,6 +72,7 @@ class UiUploadOrderComponent {
72
72
  styleItemPanelAspectRatio: "0.75",
73
73
  itemInsertLocation: "after",
74
74
  credits: false,
75
+ beforeRemoveFile: this.beforeRemove ? (file) => this.beforeRemove(file) : undefined,
75
76
  server: {
76
77
  process: (fieldName, file, metadata, load, error, progress, abort) => {
77
78
  const formData = new FormData();
@@ -194,8 +195,8 @@ class UiUploadOrderComponent {
194
195
  this.onUploadError.emit();
195
196
  }
196
197
  pondHandleInit(event) {
197
- this.onInit.emit(this.pondFiles);
198
198
  this.pond = event.pond;
199
+ this.onInit.emit(this.pondFiles);
199
200
  }
200
201
  pondHandleAddFile(event) {
201
202
  this.onAdded.emit(event);
@@ -289,6 +290,9 @@ class UiUploadOrderComponent {
289
290
  const files = this.pond.getFiles();
290
291
  files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();
291
292
  }
293
+ get totalFiles() {
294
+ return this.pond ? this.pond.getFiles().length : this.pondFiles.length;
295
+ }
292
296
  get control() {
293
297
  var _a;
294
298
  return (_a = this.form) === null || _a === void 0 ? void 0 : _a.get(this.controlName);
@@ -306,10 +310,10 @@ class UiUploadOrderComponent {
306
310
  }
307
311
  }
308
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 });
309
- 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", 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\" [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 .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"] }] });
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"] }] });
310
314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
311
315
  type: Component,
312
- 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\" [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 .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"] }]
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"] }]
313
317
  }], ctorParameters: function () { return [{ type: i1.Lightbox }, { type: i2.HttpClient }]; }, propDecorators: { uploadObservable: [{
314
318
  type: Input
315
319
  }], form: [{
@@ -334,6 +338,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
334
338
  type: Input
335
339
  }], errorPosition: [{
336
340
  type: Input
341
+ }], beforeRemove: [{
342
+ type: Input
337
343
  }], previewUrl: [{
338
344
  type: Input
339
345
  }], circle: [{
@@ -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, 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\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 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 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\" [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
+ {"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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"}
@@ -72,6 +72,7 @@ class UiUploadOrderComponent {
72
72
  styleItemPanelAspectRatio: "0.75",
73
73
  itemInsertLocation: "after",
74
74
  credits: false,
75
+ beforeRemoveFile: this.beforeRemove ? (file) => this.beforeRemove(file) : undefined,
75
76
  server: {
76
77
  process: (fieldName, file, metadata, load, error, progress, abort) => {
77
78
  const formData = new FormData();
@@ -194,8 +195,8 @@ class UiUploadOrderComponent {
194
195
  this.onUploadError.emit();
195
196
  }
196
197
  pondHandleInit(event) {
197
- this.onInit.emit(this.pondFiles);
198
198
  this.pond = event.pond;
199
+ this.onInit.emit(this.pondFiles);
199
200
  }
200
201
  pondHandleAddFile(event) {
201
202
  this.onAdded.emit(event);
@@ -286,6 +287,9 @@ class UiUploadOrderComponent {
286
287
  const files = this.pond.getFiles();
287
288
  files.length > 0 ? this.pond.processFiles() : this.noFilesAdded.emit();
288
289
  }
290
+ get totalFiles() {
291
+ return this.pond ? this.pond.getFiles().length : this.pondFiles.length;
292
+ }
289
293
  get control() {
290
294
  return this.form?.get(this.controlName);
291
295
  }
@@ -301,10 +305,10 @@ class UiUploadOrderComponent {
301
305
  }
302
306
  }
303
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 });
304
- 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", 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\" [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 .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"] }] });
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"] }] });
305
309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
306
310
  type: Component,
307
- 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\" [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 .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"] }]
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"] }]
308
312
  }], ctorParameters: function () { return [{ type: i1.Lightbox }, { type: i2.HttpClient }]; }, propDecorators: { uploadObservable: [{
309
313
  type: Input
310
314
  }], form: [{
@@ -329,6 +333,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
329
333
  type: Input
330
334
  }], errorPosition: [{
331
335
  type: Input
336
+ }], beforeRemove: [{
337
+ type: Input
332
338
  }], previewUrl: [{
333
339
  type: Input
334
340
  }], circle: [{
@@ -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, 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\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 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 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\" [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
+ {"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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"}
@@ -22,6 +22,7 @@ export declare class UiUploadOrderComponent implements OnInit, OnChanges, OnDest
22
22
  lightBox: boolean;
23
23
  instantUpload: boolean;
24
24
  errorPosition: string;
25
+ beforeRemove: (file: FilePondFile) => boolean | Promise<boolean>;
25
26
  previewUrl: string;
26
27
  circle: boolean;
27
28
  onPreviewRemove: EventEmitter<void>;
@@ -58,10 +59,11 @@ export declare class UiUploadOrderComponent implements OnInit, OnChanges, OnDest
58
59
  fillAlbum(files: [], reOrder?: boolean): Promise<void>;
59
60
  readFileAsync(file: File): Promise<string>;
60
61
  uploadFiles(): void;
62
+ get totalFiles(): number;
61
63
  get control(): import("@angular/forms").AbstractControl<any, any>;
62
64
  isErrorMessage(): string;
63
65
  isPreviewVisible(): boolean;
64
66
  removerPreview: () => void;
65
67
  static ɵfac: i0.ɵɵFactoryDeclaration<UiUploadOrderComponent, never>;
66
- 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"; "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>;
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>;
67
69
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uitec-ng-upload-order",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.0",
6
6
  "@angular/core": "^15.2.0"