uitec-ng-upload-order 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,21 +8,24 @@ export class UiUploadOrderComponent {
8
8
  constructor(_lightbox) {
9
9
  this._lightbox = _lightbox;
10
10
  this.multiple = true;
11
+ this.reorder = true;
11
12
  this.maxFiles = 6;
13
+ this.lightBox = true;
12
14
  this.onRemove = new EventEmitter();
13
15
  this.onAdded = new EventEmitter();
14
16
  this.onActivate = new EventEmitter();
15
17
  this.onInit = new EventEmitter();
16
18
  this.onMaxReached = new EventEmitter();
17
19
  this.onReOrder = new EventEmitter();
20
+ this.onSelected = new EventEmitter();
18
21
  this.pondFiles = [];
19
22
  this.album = [];
20
23
  }
21
24
  ngOnInit() {
22
25
  this.pondOptions = {
23
26
  allowMultiple: this.multiple,
24
- labelIdle: 'Arraste seus arquivos<br>ou<br><span class="filepond--label-action">Clique aqui</span> para selecionar',
25
- allowReorder: true,
27
+ labelIdle: 'Arraste seus arquivos ou <span class="filepond--label-action">clique aqui</span> para selecionar.',
28
+ allowReorder: this.reorder,
26
29
  maxFiles: this.maxFiles,
27
30
  acceptedFileTypes: ['image/*'],
28
31
  instantUpload: true,
@@ -45,7 +48,20 @@ export class UiUploadOrderComponent {
45
48
  load: (source, load, error, progress, abort, headers) => {
46
49
  var myRequest = new Request(source);
47
50
  fetch(myRequest).then(response => {
48
- response.blob().then(myBlob => {
51
+ response.arrayBuffer().then(buffer => {
52
+ const contentType = response.headers.get('content-type');
53
+ // Get the file extension from the source URL
54
+ const fileExtension = source.split('.').pop();
55
+ // Map file extensions to MIME types
56
+ const mimeTypeMap = {
57
+ 'webp': 'image/webp',
58
+ 'jpg': 'image/jpeg',
59
+ 'jpeg': 'image/jpeg',
60
+ 'png': 'image/png',
61
+ // Add other supported image types as needed
62
+ };
63
+ const fileType = mimeTypeMap[fileExtension] || contentType || 'application/octet-stream';
64
+ const myBlob = new Blob([buffer], { type: fileType });
49
65
  load(myBlob);
50
66
  });
51
67
  }).catch(error => {
@@ -75,8 +91,9 @@ export class UiUploadOrderComponent {
75
91
  this.onAdded.emit(formattedName);
76
92
  }
77
93
  pondHandleActivateFile(event) {
78
- this.onActivate.emit(event.file);
79
- this.openLightBox(event.file.filenameWithoutExtension);
94
+ console.log('event: ', event);
95
+ this.onActivate.emit(event);
96
+ this.lightBox && this.openLightBox(event.file.filenameWithoutExtension);
80
97
  }
81
98
  pondHandleUpdate(event) {
82
99
  this.fillAlbum(event.items);
@@ -144,18 +161,24 @@ export class UiUploadOrderComponent {
144
161
  }
145
162
  }
146
163
  UiUploadOrderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, deps: [{ token: i1.Lightbox }], target: i0.ɵɵFactoryTarget.Component });
147
- UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { url: "url", initialFiles: "initialFiles", multiple: "multiple", maxFiles: "maxFiles" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- app.component.html -->\r\n<file-pond\r\n #myPond\r\n name='UploadForm[imagem][]'\r\n [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit()\"\r\n [files]=\"pondFiles\"\r\n (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onremovefile)=\"pondHandleRemove($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\"\r\n (onwarning)=\"warning($event)\"\r\n (onprocessfile)=\"pondHandleAddFile($event)\"\r\n/>\r\n", styles: [":host ::ng-deep .filepond--root .filepond--drop-label{height:128px}:host ::ng-deep .filepond--drop-label{color:#555}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:#f73264}:host ::ng-deep .filepond--list{margin-left:5%}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(24% - .5em)}}\n"], dependencies: [{ kind: "component", type: i2.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"] }] });
164
+ UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- app.component.html -->\n<file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit()\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\" (onremovefile)=\"pondHandleRemove($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfile)=\"pondHandleAddFile($event)\" />\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;padding-bottom:40px}: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}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}@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: "component", type: i2.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"] }] });
148
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
149
166
  type: Component,
150
- args: [{ selector: 'ui-upload-order', template: "<!-- app.component.html -->\r\n<file-pond\r\n #myPond\r\n name='UploadForm[imagem][]'\r\n [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit()\"\r\n [files]=\"pondFiles\"\r\n (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onremovefile)=\"pondHandleRemove($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\"\r\n (onwarning)=\"warning($event)\"\r\n (onprocessfile)=\"pondHandleAddFile($event)\"\r\n/>\r\n", styles: [":host ::ng-deep .filepond--root .filepond--drop-label{height:128px}:host ::ng-deep .filepond--drop-label{color:#555}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:#f73264}:host ::ng-deep .filepond--list{margin-left:5%}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(24% - .5em)}}\n"] }]
167
+ args: [{ selector: 'ui-upload-order', template: "<!-- app.component.html -->\n<file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit()\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\" (onremovefile)=\"pondHandleRemove($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfile)=\"pondHandleAddFile($event)\" />\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;padding-bottom:40px}: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}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}@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"] }]
151
168
  }], ctorParameters: function () { return [{ type: i1.Lightbox }]; }, propDecorators: { url: [{
152
169
  type: Input
153
170
  }], initialFiles: [{
154
171
  type: Input
155
172
  }], multiple: [{
156
173
  type: Input
174
+ }], reorder: [{
175
+ type: Input
157
176
  }], maxFiles: [{
158
177
  type: Input
178
+ }], transparent: [{
179
+ type: Input
180
+ }], lightBox: [{
181
+ type: Input
159
182
  }], onRemove: [{
160
183
  type: Output
161
184
  }], onAdded: [{
@@ -168,8 +191,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
168
191
  type: Output
169
192
  }], onReOrder: [{
170
193
  type: Output
194
+ }], onSelected: [{
195
+ type: Output
171
196
  }], myPond: [{
172
197
  type: ViewChild,
173
198
  args: ["myPond"]
174
199
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXVwbG9hZC1vcmRlci9zcmMvbGliL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS11cGxvYWQtb3JkZXIvc3JjL2xpYi91aS11cGxvYWQtb3JkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxpQkFBaUIsR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUVsRCxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBT2hELE1BQU0sT0FBTyxzQkFBc0I7SUFlL0IsWUFBb0IsU0FBbUI7UUFBbkIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQVo5QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFFcEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDckMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBQzlDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUN0RCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBT2xELGNBQVMsR0FBNkIsRUFBRSxDQUFDO1FBQ3pDLFVBQUssR0FBYSxFQUFFLENBQUM7SUFKZSxDQUFDO0lBTTVDLFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzVCLFNB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LFNBQVM7K0JBQ0ksaUJBQWlCOytGQUtsQixHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbGVQb25kQ29tcG9uZW50LCB9IGZyb20gXCJuZ3gtZmlsZXBvbmRcIjtcclxuaW1wb3J0IHsgRmlsZVBvbmRGaWxlLCBGaWxlUG9uZE9wdGlvbnMgfSBmcm9tIFwiZmlsZXBvbmRcIjtcclxuaW1wb3J0IHsgSUFsYnVtLCBMaWdodGJveCB9IGZyb20gJ25neC1saWdodGJveCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndWktdXBsb2FkLW9yZGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS11cGxvYWQtb3JkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFVpVXBsb2FkT3JkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgICBASW5wdXQoKSB1cmw6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGluaXRpYWxGaWxlczogc3RyaW5nW107XHJcbiAgICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBtYXhGaWxlczogbnVtYmVyID0gNjtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25BY3RpdmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVBvbmRGaWxlPigpO1xyXG4gICAgQE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVBvbmRPcHRpb25zW1wiZmlsZXNcIl0+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25NYXhSZWFjaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25SZU9yZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9uZEZpbGVbXT4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwibXlQb25kXCIpIG15UG9uZDogRmlsZVBvbmRDb21wb25lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfbGlnaHRib3g6IExpZ2h0Ym94KSB7IH1cclxuXHJcbiAgICBwdWJsaWMgcG9uZE9wdGlvbnM6IEZpbGVQb25kT3B0aW9ucztcclxuICAgIHB1YmxpYyBwb25kRmlsZXM6IEZpbGVQb25kT3B0aW9uc1tcImZpbGVzXCJdID0gW107XHJcbiAgICBwdWJsaWMgYWxidW06IElBbGJ1bVtdID0gW107XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wb25kT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgYWxsb3dNdWx0aXBsZTogdGhpcy5tdWx0aXBsZSxcclxuICAgICAgICAgICAgbGFiZWxJZGxlOiAnQXJyYXN0ZSBzZXVzIGFycXVpdm9zPGJyPm91PGJyPjxzcGFuIGNsYXNzPVwiZmlsZXBvbmQtLWxhYmVsLWFjdGlvblwiPkNsaXF1ZSBhcXVpPC9zcGFuPiBwYXJhIHNlbGVjaW9uYXInLFxyXG4gICAgICAgICAgICBhbGxvd1Jlb3JkZXI6IHRydWUsXHJcbiAgICAgICAgICAgIG1heEZpbGVzOiB0aGlzLm1heEZpbGVzLFxyXG4gICAgICAgICAgICBhY2NlcHRlZEZpbGVUeXBlczogWydpbWFnZS8qJ10sXHJcbiAgICAgICAgICAgIGluc3RhbnRVcGxvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIGRyb3BWYWxpZGF0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICBpY29uUmVtb3ZlOiBgPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE1IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxtYXNrIGlkPVwibWFzazBfMzcwNjdfMzQxNDZcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNlwiPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMC4xMzA4NTlcIiB5PVwiMC42MzE1OTJcIiB3aWR0aD1cIjE0LjczNjhcIiBoZWlnaHQ9XCIxNC43MzY4XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XHJcbiAgICAgICAgICAgIDwvbWFzaz5cclxuICAgICAgICAgICAgPGcgbWFzaz1cInVybCgjbWFzazBfMzcwNjdfMzQxNDYpXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC40MyAxMy41MjYzQzQuMDkyMjggMTMuNTI2MyAzLjgwMzE3IDEzLjQwNiAzLjU2MjY3IDEzLjE2NTVDMy4zMjIxNyAxMi45MjUgMy4yMDE5MyAxMi42MzU5IDMuMjAxOTMgMTIuMjk4MlY0LjMxNTc0QzMuMDI3OTUgNC4zMTU3NCAyLjg4MjEyIDQuMjU2ODkgMi43NjQ0MyA0LjEzOTJDMi42NDY3NCA0LjAyMTUxIDIuNTg3ODkgMy44NzU2OCAyLjU4Nzg5IDMuNzAxN0MyLjU4Nzg5IDMuNTI3NzMgMi42NDY3NCAzLjM4MTg5IDIuNzY0NDMgMy4yNjQyQzIuODgyMTIgMy4xNDY1MSAzLjAyNzk1IDMuMDg3NjcgMy4yMDE5MyAzLjA4NzY3SDUuNjU4MDdDNS42NTgwNyAyLjkxMzY5IDUuNzE2OTEgMi43Njc4NiA1LjgzNDYgMi42NTAxN0M1Ljk1MjI5IDIuNTMyNDggNi4wOTgxMiAyLjQ3MzYzIDYuMjcyMSAyLjQ3MzYzSDguNzI4MjRDOC45MDIyMiAyLjQ3MzYzIDkuMDQ4MDUgMi41MzI0OCA5LjE2NTc0IDIuNjUwMTdDOS4yODM0MyAyLjc2Nzg2IDkuMzQyMjggMi45MTM2OSA5LjM0MjI4IDMuMDg3NjdIMTEuNzk4NEMxMS45NzI0IDMuMDg3NjcgMTIuMTE4MiAzLjE0NjUxIDEyLjIzNTkgMy4yNjQyQzEyLjM1MzYgMy4zODE4OSAxMi40MTI1IDMuNTI3NzMgMTIuNDEyNSAzLjcwMTdDMTIuNDEyNSAzLjg3NTY4IDEyLjM1MzYgNC4wMjE1MSAxMi4yMzU5IDQuMTM5MkMxMi4xMTgyIDQuMjU2ODkgMTEuOTcyNCA0LjMxNTc0IDExLjc5ODQgNC4zMTU3NFYxMi4yOTgyQzExLjc5ODQgMTIuNjM1OSAxMS42NzgyIDEyLjkyNSAxMS40Mzc3IDEzLjE2NTVDMTEuMTk3MiAxMy40MDYgMTAuOTA4MSAxMy41MjYzIDEwLjU3MDMgMTMuNTI2M0g0LjQzWk00LjQzIDQuMzE1NzRWMTIuMjk4MkgxMC41NzAzVjQuMzE1NzRINC40M1pNNy41MDAxNyA5LjE2NjYyTDguNjY2ODQgMTAuMzMzM0M4Ljc4OTY1IDEwLjQ0NTkgOC45MzU0OCAxMC41MDIxIDkuMTA0MzQgMTAuNTAyMUM5LjI3MzIgMTAuNTAyMSA5LjQxMzkxIDEwLjQ0NTkgOS41MjY0OSAxMC4zMzMzQzkuNjQ5MjkgMTAuMjEwNSA5LjcxMDcgMTAuMDY0NiA5LjcxMDcgOS44OTU3OEM5LjcxMDcgOS43MjY5MiA5LjY0OTI5IDkuNTg2MjEgOS41MjY0OSA5LjQ3MzYzTDguMzU5ODIgOC4zMDY5N0w5LjUyNjQ5IDcuMTQwM0M5LjY0OTI5IDcuMDE3NDkgOS43MTA3IDYuODcxNjYgOS43MTA3IDYuNzAyOEM5LjcxMDcgNi41MzM5NCA5LjY0OTI5IDYuMzkzMjIgOS41MjY0OSA2LjI4MDY1QzkuNDEzOTEgNi4xNTc4NCA5LjI3MzIgNi4wOTY0NCA5LjEwNDM0IDYuMDk2NDRDOC45MzU0OCA2LjA5NjQ0IDguNzg5NjUgNi4xNTc4NCA4LjY2Njg0IDYuMjgwNjVMNy41MDAxNyA3LjQ0NzMyTDYuMzMzNSA2LjI4MDY1QzYuMjIwOTMgNi4xNTc4NCA2LjA4MDIyIDYuMDk2NDQgNS45MTEzNiA2LjA5NjQ0QzUuNzQyNSA2LjA5NjQ0IDUuNTk2NjYgNi4xNTc4NCA1LjQ3Mzg2IDYuMjgwNjVDNS4zNjEyOCA2LjM5MzIyIDUuMzA1IDYuNTMzOTQgNS4zMDUgNi43MDI4QzUuMzA1IDYuODcxNjYgNS4zNjEyOCA3LjAxNzQ5IDUuNDczODYgNy4xNDAzTDYuNjQwNTIgOC4zMDY5N0w1LjQ3Mzg2IDkuNDczNjNDNS4zNjEyOCA5LjU4NjIxIDUuMzA1IDkuNzI2OTIgNS4zMDUgOS44OTU3OEM1LjMwNSAxMC4wNjQ2IDUuMzYxMjggMTAuMjEwNSA1LjQ3Mzg2IDEwLjMzMzNDNS41OTY2NiAxMC40NDU5IDUuNzQyNSAxMC41MDIxIDUuOTExMzYgMTAuNTAyMUM2LjA4MDIyIDEwLjUwMjEgNi4yMjA5MyAxMC40NDU5IDYuMzMzNSAxMC4zMzMzTDcuNTAwMTcgOS4xNjY2MlpcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgIDwvZz48L3N2Zz5gLFxyXG4gICAgICAgICAgICBzdHlsZUJ1dHRvblJlbW92ZUl0ZW1Qb3NpdGlvbjogJ3JpZ2h0JyxcclxuICAgICAgICAgICAgaW1hZ2VSZXNpemVNb2RlOiAnY29udGFpbicsXHJcbiAgICAgICAgICAgIHN0eWxlSXRlbVBhbmVsQXNwZWN0UmF0aW86ICcwLjc1JyxcclxuICAgICAgICAgICAgaXRlbUluc2VydExvY2F0aW9uOiAnYWZ0ZXInLFxyXG4gICAgICAgICAgICBzZXJ2ZXI6IHtcclxuICAgICAgICAgICAgICAgIHByb2Nlc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbG9hZDogKHNvdXJjZSwgbG9hZCwgZXJyb3IsIHByb2dyZXNzLCBhYm9ydCwgaGVhZGVycykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBteVJlcXVlc3QgPSBuZXcgUmVxdWVzdChzb3VyY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZldGNoKG15UmVxdWVzdCkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJsb2IoKS50aGVuKG15QmxvYiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkKG15QmxvYilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRVJST1I6ICcsIGVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbml0aWFsRmlsZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5wb25kRmlsZXMgPSB0aGlzLmluaXRpYWxGaWxlcy5tYXAoKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IGl0ZW0sXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbG9jYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcG9uZEhhbmRsZUluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzLnBvbmRGaWxlcylcclxuICAgIH1cclxuXHJcbiAgICBwb25kSGFuZGxlQWRkRmlsZShldmVudDogYW55KSB7XHJcbiAgICAgICAgbGV0IGZvcm1hdHRlZE5hbWUgPSBldmVudC5maWxlLnNlcnZlcklkLnJlcGxhY2UoL1tcIlxcW1xcXV0vZywgJycpO1xyXG4gICAgICAgIHRoaXMub25BZGRlZC5lbWl0KGZvcm1hdHRlZE5hbWUpXHJcbiAgICB9XHJcbiAgICBwb25kSGFuZGxlQWN0aXZhdGVGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uQWN0aXZhdGUuZW1pdChldmVudC5maWxlKVxyXG4gICAgICAgIHRoaXMub3BlbkxpZ2h0Qm94KGV2ZW50LmZpbGUuZmlsZW5hbWVXaXRob3V0RXh0ZW5zaW9uKVxyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVVcGRhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZmlsbEFsYnVtKGV2ZW50Lml0ZW1zKVxyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVSZW1vdmUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGxldCBmaWxlTmFtZTogc3RyaW5nO1xyXG4gICAgICAgIGlmIChldmVudC5maWxlLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgZmlsZU5hbWUgPSBldmVudC5maWxlLnNlcnZlcklkLnJlcGxhY2UoL1tcIlxcW1xcXV0vZywgJycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lID0gZXZlbnQuZmlsZS5maWxlbmFtZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub25SZW1vdmUuZW1pdChmaWxlTmFtZSlcclxuICAgIH1cclxuXHJcbiAgICBvblJlb3JkZXJGaWxlcyhldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5maWxsQWxidW0oZXZlbnQuaXRlbXMsIHRydWUpXHJcbiAgICAgICAgbGV0IGl0ZW1zTGlzdCA9IGV2ZW50Lml0ZW1zLm1hcCgoaXRlbTogRmlsZVBvbmRGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnNlcnZlcklkLnJlcGxhY2UoL1tcIlxcW1xcXV0vZywgJycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZmlsZW5hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5vblJlT3JkZXIuZW1pdChpdGVtc0xpc3QpXHJcbiAgICB9XHJcblxyXG4gICAgd2FybmluZyhldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmVycm9yLmNvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uTWF4UmVhY2hlZC5lbWl0KGBMaW1pdGUgZGUgQXJxdWl2b3MgYXRpbmdpZG8uIFZvY8OqIHBvZGUgaW5zZXJpciB1bSB0b3RhbCBkZSAke3RoaXMubWF4RmlsZXN9IGFycXVpdm9zLmApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5MaWdodEJveChmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5hbGJ1bS5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuY2FwdGlvbjsgfSkuaW5kZXhPZihmaWxlTmFtZSk7XHJcbiAgICAgICAgdGhpcy5fbGlnaHRib3gub3Blbih0aGlzLmFsYnVtLCBpbmRleCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIGZpbGxBbGJ1bShmaWxlczogW10sIHJlT3JkZXI/OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCAhPT0gdGhpcy5hbGJ1bS5sZW5ndGggfHwgcmVPcmRlcikge1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcHJlQWxidW0gPSBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoYXN5bmMgKGZpbGU6IEZpbGVQb25kRmlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVVcmw6IHN0cmluZztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsZS5zb3VyY2UgaW5zdGFuY2VvZiBGaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZVVybCA9IGF3YWl0IHRoaXMucmVhZEZpbGVBc3luYyhmaWxlLnNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVVcmwgPSBmaWxlLnNvdXJjZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3JjOiBmaWxlVXJsLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb246IGZpbGUuZmlsZW5hbWVXaXRob3V0RXh0ZW5zaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iOiAnJ1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5hbGJ1bSA9IHByZUFsYnVtO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWFkRmlsZUFzeW5jKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFVcmwgPSByZWFkZXIucmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IGRhdGFVcmwudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmlsZVVybCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPCEtLSBhcHAuY29tcG9uZW50Lmh0bWwgLS0+XHJcbjxmaWxlLXBvbmRcclxuICAjbXlQb25kXHJcbiAgbmFtZT0nVXBsb2FkRm9ybVtpbWFnZW1dW10nXHJcbiAgW29wdGlvbnNdPVwicG9uZE9wdGlvbnNcIlxyXG4gIChvbmluaXQpPVwicG9uZEhhbmRsZUluaXQoKVwiXHJcbiAgW2ZpbGVzXT1cInBvbmRGaWxlc1wiXHJcbiAgKG9udXBkYXRlZmlsZXMpPVwicG9uZEhhbmRsZVVwZGF0ZSgkZXZlbnQpXCJcclxuICAob25hY3RpdmF0ZWZpbGUpPVwicG9uZEhhbmRsZUFjdGl2YXRlRmlsZSgkZXZlbnQpXCJcclxuICAob25yZW1vdmVmaWxlKT1cInBvbmRIYW5kbGVSZW1vdmUoJGV2ZW50KVwiXHJcbiAgKG9ucmVvcmRlcmZpbGVzKT1cIm9uUmVvcmRlckZpbGVzKCRldmVudClcIlxyXG4gIChvbndhcm5pbmcpPVwid2FybmluZygkZXZlbnQpXCJcclxuICAob25wcm9jZXNzZmlsZSk9XCJwb25kSGFuZGxlQWRkRmlsZSgkZXZlbnQpXCJcclxuLz5cclxuIl19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdXBsb2FkLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXVwbG9hZC1vcmRlci9zcmMvbGliL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS11cGxvYWQtb3JkZXIvc3JjL2xpYi91aS11cGxvYWQtb3JkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxpQkFBaUIsR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUVsRCxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBT2hELE1BQU0sT0FBTyxzQkFBc0I7SUFtQi9CLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFoQjlCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBRXJCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFeEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDckMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBQzlDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUN0RCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQy9DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBT3hDLGNBQVMsR0FBNkIsRUFBRSxDQUFDO1FBQ3pDLFVBQUssR0FBYSxFQUFFLENBQUM7SUFKZSxDQUFDO0lBTTVDLFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzVCLFNBQVMsRUFBRSxtR0FBbUc7WUFDOUcsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUM5QixhQUFhLEVBQUUsSUFBSTtZQUNuQixjQUFjLEVBQUUsSUFBSTtZQUNwQixVQUFVLEVBQUU7Ozs7Ozt1QkFNRDtZQUNYLDZCQUE2QixFQUFFLE9BQU87WUFDdEMsZUFBZSxFQUFFLFNBQVM7WUFDMUIseUJBQXlCLEVBQUUsTUFBTTtZQUNqQyxrQkFBa0IsRUFBRSxPQUFPO1lBQzNCLE1BQU0sRUFBRTtnQkFDSixPQUFPLEVBQUU7b0JBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2lCQUNoQjtnQkFDRCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO29CQUNwRCxJQUFJLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTt3QkFDN0IsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTs0QkFDakMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7NEJBQ3pELDZDQUE2Qzs0QkFDN0MsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzs0QkFDOUMsb0NBQW9DOzRCQUNwQyxNQUFNLFdBQVcsR0FBRztnQ0FDaEIsTUFBTSxFQUFFLFlBQVk7Z0NBQ3BCLEtBQUssRUFBRSxZQUFZO2dDQUNuQixNQUFNLEVBQUUsWUFBWTtnQ0FDcEIsS0FBSyxFQUFFLFdBQVc7Z0NBQ2xCLDRDQUE0Qzs2QkFDL0MsQ0FBQzs0QkFDRixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxJQUFJLDBCQUEwQixDQUFDOzRCQUV6RixNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7NEJBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDakIsQ0FBQyxDQUFDLENBQUM7b0JBQ1AsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNsQyxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO2dCQUNwRCxPQUFPO29CQUNILE1BQU0sRUFBRSxJQUFJO29CQUNaLE9BQU8sRUFBRTt3QkFDTCxJQUFJLEVBQUUsT0FBTztxQkFDaEI7aUJBQ0osQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBVTtRQUN4QixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFVO1FBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDdkIsSUFBSSxRQUFnQixDQUFDO1FBQ3JCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLFlBQVksSUFBSSxFQUFFO1lBQ25DLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzFEO2FBQU07WUFDSCxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2pDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBa0IsRUFBRSxFQUFFO1lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxJQUFJLEVBQUU7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ2hEO2lCQUFNO2dCQUNILE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTthQUN2QjtRQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsOERBQThELElBQUksQ0FBQyxRQUFRLFlBQVksQ0FBQyxDQUFBO1NBQ2xIO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxRQUFnQjtRQUN6QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFTLEVBQUUsT0FBaUI7UUFDeEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUUvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBa0IsRUFBRSxFQUFFO2dCQUN0RSxJQUFJLE9BQWUsQ0FBQztnQkFFcEIsSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLElBQUksRUFBRTtvQkFDN0IsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ25EO3FCQUFNO29CQUNILE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNwQztnQkFFRCxPQUFPO29CQUNILEdBQUcsRUFBRSxPQUFPO29CQUNaLE9BQU8sRUFBRSxJQUFJLENBQUMsd0JBQXdCO29CQUN0QyxLQUFLLEVBQUUsRUFBRTtpQkFDWixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVKLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFVO1FBQ3BCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQ2pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQzlCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7b0hBaExRLHNCQUFzQjt3R0FBdEIsc0JBQXNCLHlnQkNWbkMseWVBTUE7NEZESWEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNJLGlCQUFpQjsrRkFLbEIsR0FBRztzQkFBWCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVjLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRmlsZVBvbmRDb21wb25lbnQsIH0gZnJvbSBcIm5neC1maWxlcG9uZFwiO1xyXG5pbXBvcnQgeyBGaWxlUG9uZEZpbGUsIEZpbGVQb25kT3B0aW9ucyB9IGZyb20gXCJmaWxlcG9uZFwiO1xyXG5pbXBvcnQgeyBJQWxidW0sIExpZ2h0Ym94IH0gZnJvbSAnbmd4LWxpZ2h0Ym94JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd1aS11cGxvYWQtb3JkZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLXVwbG9hZC1vcmRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS11cGxvYWQtb3JkZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlVcGxvYWRPcmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIHVybDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaW5pdGlhbEZpbGVzOiBzdHJpbmdbXTtcclxuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIHJlb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgbWF4RmlsZXM6IG51bWJlciA9IDY7XHJcbiAgICBASW5wdXQoKSB0cmFuc3BhcmVudDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGxpZ2h0Qm94OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25BY3RpdmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVBvbmRGaWxlPigpO1xyXG4gICAgQE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVBvbmRPcHRpb25zW1wiZmlsZXNcIl0+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25NYXhSZWFjaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25SZU9yZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9uZEZpbGVbXT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcIm15UG9uZFwiKSBteVBvbmQ6IEZpbGVQb25kQ29tcG9uZW50O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xpZ2h0Ym94OiBMaWdodGJveCkgeyB9XHJcblxyXG4gICAgcHVibGljIHBvbmRPcHRpb25zOiBGaWxlUG9uZE9wdGlvbnM7XHJcbiAgICBwdWJsaWMgcG9uZEZpbGVzOiBGaWxlUG9uZE9wdGlvbnNbXCJmaWxlc1wiXSA9IFtdO1xyXG4gICAgcHVibGljIGFsYnVtOiBJQWxidW1bXSA9IFtdO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucG9uZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGU6IHRoaXMubXVsdGlwbGUsXHJcbiAgICAgICAgICAgIGxhYmVsSWRsZTogJ0FycmFzdGUgc2V1cyBhcnF1aXZvcyBvdSA8c3BhbiBjbGFzcz1cImZpbGVwb25kLS1sYWJlbC1hY3Rpb25cIj5jbGlxdWUgYXF1aTwvc3Bhbj4gcGFyYSBzZWxlY2lvbmFyLicsXHJcbiAgICAgICAgICAgIGFsbG93UmVvcmRlcjogdGhpcy5yZW9yZGVyLFxyXG4gICAgICAgICAgICBtYXhGaWxlczogdGhpcy5tYXhGaWxlcyxcclxuICAgICAgICAgICAgYWNjZXB0ZWRGaWxlVHlwZXM6IFsnaW1hZ2UvKiddLFxyXG4gICAgICAgICAgICBpbnN0YW50VXBsb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICBkcm9wVmFsaWRhdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgaWNvblJlbW92ZTogYDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNSAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzM3MDY3XzM0MTQ2XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTZcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjAuMTMwODU5XCIgeT1cIjAuNjMxNTkyXCIgd2lkdGg9XCIxNC43MzY4XCIgaGVpZ2h0PVwiMTQuNzM2OFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxyXG4gICAgICAgICAgICA8L21hc2s+XHJcbiAgICAgICAgICAgIDxnIG1hc2s9XCJ1cmwoI21hc2swXzM3MDY3XzM0MTQ2KVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTQuNDMgMTMuNTI2M0M0LjA5MjI4IDEzLjUyNjMgMy44MDMxNyAxMy40MDYgMy41NjI2NyAxMy4xNjU1QzMuMzIyMTcgMTIuOTI1IDMuMjAxOTMgMTIuNjM1OSAzLjIwMTkzIDEyLjI5ODJWNC4zMTU3NEMzLjAyNzk1IDQuMzE1NzQgMi44ODIxMiA0LjI1Njg5IDIuNzY0NDMgNC4xMzkyQzIuNjQ2NzQgNC4wMjE1MSAyLjU4Nzg5IDMuODc1NjggMi41ODc4OSAzLjcwMTdDMi41ODc4OSAzLjUyNzczIDIuNjQ2NzQgMy4zODE4OSAyLjc2NDQzIDMuMjY0MkMyLjg4MjEyIDMuMTQ2NTEgMy4wMjc5NSAzLjA4NzY3IDMuMjAxOTMgMy4wODc2N0g1LjY1ODA3QzUuNjU4MDcgMi45MTM2OSA1LjcxNjkxIDIuNzY3ODYgNS44MzQ2IDIuNjUwMTdDNS45NTIyOSAyLjUzMjQ4IDYuMDk4MTIgMi40NzM2MyA2LjI3MjEgMi40NzM2M0g4LjcyODI0QzguOTAyMjIgMi40NzM2MyA5LjA0ODA1IDIuNTMyNDggOS4xNjU3NCAyLjY1MDE3QzkuMjgzNDMgMi43Njc4NiA5LjM0MjI4IDIuOTEzNjkgOS4zNDIyOCAzLjA4NzY3SDExLjc5ODRDMTEuOTcyNCAzLjA4NzY3IDEyLjExODIgMy4xNDY1MSAxMi4yMzU5IDMuMjY0MkMxMi4zNTM2IDMuMzgxODkgMTIuNDEyNSAzLjUyNzczIDEyLjQxMjUgMy43MDE3QzEyLjQxMjUgMy44NzU2OCAxMi4zNTM2IDQuMDIxNTEgMTIuMjM1OSA0LjEzOTJDMTIuMTE4MiA0LjI1Njg5IDExLjk3MjQgNC4zMTU3NCAxMS43OTg0IDQuMzE1NzRWMTIuMjk4MkMxMS43OTg0IDEyLjYzNTkgMTEuNjc4MiAxMi45MjUgMTEuNDM3NyAxMy4xNjU1QzExLjE5NzIgMTMuNDA2IDEwLjkwODEgMTMuNTI2MyAxMC41NzAzIDEzLjUyNjNINC40M1pNNC40MyA0LjMxNTc0VjEyLjI5ODJIMTAuNTcwM1Y0LjMxNTc0SDQuNDNaTTcuNTAwMTcgOS4xNjY2Mkw4LjY2Njg0IDEwLjMzMzNDOC43ODk2NSAxMC40NDU5IDguOTM1NDggMTAuNTAyMSA5LjEwNDM0IDEwLjUwMjFDOS4yNzMyIDEwLjUwMjEgOS40MTM5MSAxMC40NDU5IDkuNTI2NDkgMTAuMzMzM0M5LjY0OTI5IDEwLjIxMDUgOS43MTA3IDEwLjA2NDYgOS43MTA3IDkuODk1NzhDOS43MTA3IDkuNzI2OTIgOS42NDkyOSA5LjU4NjIxIDkuNTI2NDkgOS40NzM2M0w4LjM1OTgyIDguMzA2OTdMOS41MjY0OSA3LjE0MDNDOS42NDkyOSA3LjAxNzQ5IDkuNzEwNyA2Ljg3MTY2IDkuNzEwNyA2LjcwMjhDOS43MTA3IDYuNTMzOTQgOS42NDkyOSA2LjM5MzIyIDkuNTI2NDkgNi4yODA2NUM5LjQxMzkxIDYuMTU3ODQgOS4yNzMyIDYuMDk2NDQgOS4xMDQzNCA2LjA5NjQ0QzguOTM1NDggNi4wOTY0NCA4Ljc4OTY1IDYuMTU3ODQgOC42NjY4NCA2LjI4MDY1TDcuNTAwMTcgNy40NDczMkw2LjMzMzUgNi4yODA2NUM2LjIyMDkzIDYuMTU3ODQgNi4wODAyMiA2LjA5NjQ0IDUuOTExMzYgNi4wOTY0NEM1Ljc0MjUgNi4wOTY0NCA1LjU5NjY2IDYuMTU3ODQgNS40NzM4NiA2LjI4MDY1QzUuMzYxMjggNi4zOTMyMiA1LjMwNSA2LjUzMzk0IDUuMzA1IDYuNzAyOEM1LjMwNSA2Ljg3MTY2IDUuMzYxMjggNy4wMTc0OSA1LjQ3Mzg2IDcuMTQwM0w2LjY0MDUyIDguMzA2OTdMNS40NzM4NiA5LjQ3MzYzQzUuMzYxMjggOS41ODYyMSA1LjMwNSA5LjcyNjkyIDUuMzA1IDkuODk1NzhDNS4zMDUgMTAuMDY0NiA1LjM2MTI4IDEwLjIxMDUgNS40NzM4NiAxMC4zMzMzQzUuNTk2NjYgMTAuNDQ1OSA1Ljc0MjUgMTAuNTAyMSA1LjkxMTM2IDEwLjUwMjFDNi4wODAyMiAxMC41MDIxIDYuMjIwOTMgMTAuNDQ1OSA2LjMzMzUgMTAuMzMzM0w3LjUwMDE3IDkuMTY2NjJaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICA8L2c+PC9zdmc+YCxcclxuICAgICAgICAgICAgc3R5bGVCdXR0b25SZW1vdmVJdGVtUG9zaXRpb246ICdyaWdodCcsXHJcbiAgICAgICAgICAgIGltYWdlUmVzaXplTW9kZTogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBzdHlsZUl0ZW1QYW5lbEFzcGVjdFJhdGlvOiAnMC43NScsXHJcbiAgICAgICAgICAgIGl0ZW1JbnNlcnRMb2NhdGlvbjogJ2FmdGVyJyxcclxuICAgICAgICAgICAgc2VydmVyOiB7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGxvYWQ6IChzb3VyY2UsIGxvYWQsIGVycm9yLCBwcm9ncmVzcywgYWJvcnQsIGhlYWRlcnMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbXlSZXF1ZXN0ID0gbmV3IFJlcXVlc3Qoc291cmNlKTtcclxuICAgICAgICAgICAgICAgICAgICBmZXRjaChteVJlcXVlc3QpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oYnVmZmVyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBmaWxlIGV4dGVuc2lvbiBmcm9tIHRoZSBzb3VyY2UgVVJMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gc291cmNlLnNwbGl0KCcuJykucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXAgZmlsZSBleHRlbnNpb25zIHRvIE1JTUUgdHlwZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbWVUeXBlTWFwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3ZWJwJzogJ2ltYWdlL3dlYnAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqcGcnOiAnaW1hZ2UvanBlZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pwZWcnOiAnaW1hZ2UvanBlZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BuZyc6ICdpbWFnZS9wbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBvdGhlciBzdXBwb3J0ZWQgaW1hZ2UgdHlwZXMgYXMgbmVlZGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZVR5cGUgPSBtaW1lVHlwZU1hcFtmaWxlRXh0ZW5zaW9uXSB8fCBjb250ZW50VHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBteUJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiBmaWxlVHlwZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQobXlCbG9iKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRVJST1I6ICcsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbml0aWFsRmlsZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5wb25kRmlsZXMgPSB0aGlzLmluaXRpYWxGaWxlcy5tYXAoKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IGl0ZW0sXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbG9jYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcG9uZEhhbmRsZUluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzLnBvbmRGaWxlcylcclxuICAgIH1cclxuXHJcbiAgICBwb25kSGFuZGxlQWRkRmlsZShldmVudDogYW55KSB7XHJcbiAgICAgICAgbGV0IGZvcm1hdHRlZE5hbWUgPSBldmVudC5maWxlLnNlcnZlcklkLnJlcGxhY2UoL1tcIlxcW1xcXV0vZywgJycpO1xyXG4gICAgICAgIHRoaXMub25BZGRlZC5lbWl0KGZvcm1hdHRlZE5hbWUpXHJcbiAgICB9XHJcblxyXG4gICAgcG9uZEhhbmRsZUFjdGl2YXRlRmlsZShldmVudDogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2V2ZW50OiAnLCBldmVudCk7XHJcbiAgICAgICAgdGhpcy5vbkFjdGl2YXRlLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIHRoaXMubGlnaHRCb3ggJiYgdGhpcy5vcGVuTGlnaHRCb3goZXZlbnQuZmlsZS5maWxlbmFtZVdpdGhvdXRFeHRlbnNpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVVcGRhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZmlsbEFsYnVtKGV2ZW50Lml0ZW1zKVxyXG4gICAgfVxyXG5cclxuICAgIHBvbmRIYW5kbGVSZW1vdmUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGxldCBmaWxlTmFtZTogc3RyaW5nO1xyXG4gICAgICAgIGlmIChldmVudC5maWxlLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgZmlsZU5hbWUgPSBldmVudC5maWxlLnNlcnZlcklkLnJlcGxhY2UoL1tcIlxcW1xcXV0vZywgJycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lID0gZXZlbnQuZmlsZS5maWxlbmFtZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub25SZW1vdmUuZW1pdChmaWxlTmFtZSlcclxuICAgIH1cclxuXHJcbiAgICBvblJlb3JkZXJGaWxlcyhldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5maWxsQWxidW0oZXZlbnQuaXRlbXMsIHRydWUpXHJcbiAgICAgICAgbGV0IGl0ZW1zTGlzdCA9IGV2ZW50Lml0ZW1zLm1hcCgoaXRlbTogRmlsZVBvbmRGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnNlcnZlcklkLnJlcGxhY2UoL1tcIlxcW1xcXV0vZywgJycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZmlsZW5hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5vblJlT3JkZXIuZW1pdChpdGVtc0xpc3QpXHJcbiAgICB9XHJcblxyXG4gICAgd2FybmluZyhldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmVycm9yLmNvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uTWF4UmVhY2hlZC5lbWl0KGBMaW1pdGUgZGUgQXJxdWl2b3MgYXRpbmdpZG8uIFZvY8OqIHBvZGUgaW5zZXJpciB1bSB0b3RhbCBkZSAke3RoaXMubWF4RmlsZXN9IGFycXVpdm9zLmApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wZW5MaWdodEJveChmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5hbGJ1bS5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuY2FwdGlvbjsgfSkuaW5kZXhPZihmaWxlTmFtZSk7XHJcbiAgICAgICAgdGhpcy5fbGlnaHRib3gub3Blbih0aGlzLmFsYnVtLCBpbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsbEFsYnVtKGZpbGVzOiBbXSwgcmVPcmRlcj86IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoZmlsZXMubGVuZ3RoICE9PSB0aGlzLmFsYnVtLmxlbmd0aCB8fCByZU9yZGVyKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwcmVBbGJ1bSA9IGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcChhc3luYyAoZmlsZTogRmlsZVBvbmRGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsZVVybDogc3RyaW5nO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChmaWxlLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWxlVXJsID0gYXdhaXQgdGhpcy5yZWFkRmlsZUFzeW5jKGZpbGUuc291cmNlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZVVybCA9IGZpbGUuc291cmNlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBzcmM6IGZpbGVVcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FwdGlvbjogZmlsZS5maWxlbmFtZVdpdGhvdXRFeHRlbnNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWI6ICcnXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFsYnVtID0gcHJlQWxidW07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlYWRGaWxlQXN5bmMoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YVVybCA9IHJlYWRlci5yZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlVXJsID0gZGF0YVVybC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmaWxlVXJsKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8IS0tIGFwcC5jb21wb25lbnQuaHRtbCAtLT5cbjxmaWxlLXBvbmQgI215UG9uZCBuYW1lPSdVcGxvYWRGb3JtW2ltYWdlbV1bXScgW2NsYXNzLmZpbGUtcG9udC10cmFuc3BhcmVudF09XCJ0cmFuc3BhcmVudFwiIFtvcHRpb25zXT1cInBvbmRPcHRpb25zXCJcbiAgICAob25pbml0KT1cInBvbmRIYW5kbGVJbml0KClcIiBbZmlsZXNdPVwicG9uZEZpbGVzXCIgKG9udXBkYXRlZmlsZXMpPVwicG9uZEhhbmRsZVVwZGF0ZSgkZXZlbnQpXCJcbiAgICAob25hY3RpdmF0ZWZpbGUpPVwicG9uZEhhbmRsZUFjdGl2YXRlRmlsZSgkZXZlbnQpXCIgKG9ucmVtb3ZlZmlsZSk9XCJwb25kSGFuZGxlUmVtb3ZlKCRldmVudClcIlxuICAgIChvbnJlb3JkZXJmaWxlcyk9XCJvblJlb3JkZXJGaWxlcygkZXZlbnQpXCIgKG9ud2FybmluZyk9XCJ3YXJuaW5nKCRldmVudClcIlxuICAgIChvbnByb2Nlc3NmaWxlKT1cInBvbmRIYW5kbGVBZGRGaWxlKCRldmVudClcIiAvPlxuIl19
@@ -17,21 +17,24 @@ class UiUploadOrderComponent {
17
17
  constructor(_lightbox) {
18
18
  this._lightbox = _lightbox;
19
19
  this.multiple = true;
20
+ this.reorder = true;
20
21
  this.maxFiles = 6;
22
+ this.lightBox = true;
21
23
  this.onRemove = new EventEmitter();
22
24
  this.onAdded = new EventEmitter();
23
25
  this.onActivate = new EventEmitter();
24
26
  this.onInit = new EventEmitter();
25
27
  this.onMaxReached = new EventEmitter();
26
28
  this.onReOrder = new EventEmitter();
29
+ this.onSelected = new EventEmitter();
27
30
  this.pondFiles = [];
28
31
  this.album = [];
29
32
  }
30
33
  ngOnInit() {
31
34
  this.pondOptions = {
32
35
  allowMultiple: this.multiple,
33
- labelIdle: 'Arraste seus arquivos<br>ou<br><span class="filepond--label-action">Clique aqui</span> para selecionar',
34
- allowReorder: true,
36
+ labelIdle: 'Arraste seus arquivos ou <span class="filepond--label-action">clique aqui</span> para selecionar.',
37
+ allowReorder: this.reorder,
35
38
  maxFiles: this.maxFiles,
36
39
  acceptedFileTypes: ['image/*'],
37
40
  instantUpload: true,
@@ -54,7 +57,20 @@ class UiUploadOrderComponent {
54
57
  load: (source, load, error, progress, abort, headers) => {
55
58
  var myRequest = new Request(source);
56
59
  fetch(myRequest).then(response => {
57
- response.blob().then(myBlob => {
60
+ response.arrayBuffer().then(buffer => {
61
+ const contentType = response.headers.get('content-type');
62
+ // Get the file extension from the source URL
63
+ const fileExtension = source.split('.').pop();
64
+ // Map file extensions to MIME types
65
+ const mimeTypeMap = {
66
+ 'webp': 'image/webp',
67
+ 'jpg': 'image/jpeg',
68
+ 'jpeg': 'image/jpeg',
69
+ 'png': 'image/png',
70
+ // Add other supported image types as needed
71
+ };
72
+ const fileType = mimeTypeMap[fileExtension] || contentType || 'application/octet-stream';
73
+ const myBlob = new Blob([buffer], { type: fileType });
58
74
  load(myBlob);
59
75
  });
60
76
  }).catch(error => {
@@ -84,8 +100,9 @@ class UiUploadOrderComponent {
84
100
  this.onAdded.emit(formattedName);
85
101
  }
86
102
  pondHandleActivateFile(event) {
87
- this.onActivate.emit(event.file);
88
- this.openLightBox(event.file.filenameWithoutExtension);
103
+ console.log('event: ', event);
104
+ this.onActivate.emit(event);
105
+ this.lightBox && this.openLightBox(event.file.filenameWithoutExtension);
89
106
  }
90
107
  pondHandleUpdate(event) {
91
108
  this.fillAlbum(event.items);
@@ -155,18 +172,24 @@ class UiUploadOrderComponent {
155
172
  }
156
173
  }
157
174
  UiUploadOrderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, deps: [{ token: i1.Lightbox }], target: i0.ɵɵFactoryTarget.Component });
158
- UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { url: "url", initialFiles: "initialFiles", multiple: "multiple", maxFiles: "maxFiles" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- app.component.html -->\r\n<file-pond\r\n #myPond\r\n name='UploadForm[imagem][]'\r\n [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit()\"\r\n [files]=\"pondFiles\"\r\n (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onremovefile)=\"pondHandleRemove($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\"\r\n (onwarning)=\"warning($event)\"\r\n (onprocessfile)=\"pondHandleAddFile($event)\"\r\n/>\r\n", styles: [":host ::ng-deep .filepond--root .filepond--drop-label{height:128px}:host ::ng-deep .filepond--drop-label{color:#555}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:#f73264}:host ::ng-deep .filepond--list{margin-left:5%}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(24% - .5em)}}\n"], dependencies: [{ kind: "component", type: i2.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"] }] });
175
+ UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- app.component.html -->\n<file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit()\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\" (onremovefile)=\"pondHandleRemove($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfile)=\"pondHandleAddFile($event)\" />\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;padding-bottom:40px}: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}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}@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: "component", type: i2.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"] }] });
159
176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
160
177
  type: Component,
161
- args: [{ selector: 'ui-upload-order', template: "<!-- app.component.html -->\r\n<file-pond\r\n #myPond\r\n name='UploadForm[imagem][]'\r\n [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit()\"\r\n [files]=\"pondFiles\"\r\n (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onremovefile)=\"pondHandleRemove($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\"\r\n (onwarning)=\"warning($event)\"\r\n (onprocessfile)=\"pondHandleAddFile($event)\"\r\n/>\r\n", styles: [":host ::ng-deep .filepond--root .filepond--drop-label{height:128px}:host ::ng-deep .filepond--drop-label{color:#555}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:#f73264}:host ::ng-deep .filepond--list{margin-left:5%}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(24% - .5em)}}\n"] }]
178
+ args: [{ selector: 'ui-upload-order', template: "<!-- app.component.html -->\n<file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit()\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\" (onremovefile)=\"pondHandleRemove($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfile)=\"pondHandleAddFile($event)\" />\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;padding-bottom:40px}: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}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}@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"] }]
162
179
  }], ctorParameters: function () { return [{ type: i1.Lightbox }]; }, propDecorators: { url: [{
163
180
  type: Input
164
181
  }], initialFiles: [{
165
182
  type: Input
166
183
  }], multiple: [{
167
184
  type: Input
185
+ }], reorder: [{
186
+ type: Input
168
187
  }], maxFiles: [{
169
188
  type: Input
189
+ }], transparent: [{
190
+ type: Input
191
+ }], lightBox: [{
192
+ type: Input
170
193
  }], onRemove: [{
171
194
  type: Output
172
195
  }], onAdded: [{
@@ -179,6 +202,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
179
202
  type: Output
180
203
  }], onReOrder: [{
181
204
  type: Output
205
+ }], onSelected: [{
206
+ type: Output
182
207
  }], myPond: [{
183
208
  type: ViewChild,
184
209
  args: ["myPond"]
@@ -1 +1 @@
1
- {"version":3,"file":"uitec-ng-upload-order.mjs","sources":["../../../projects/ui-upload-order/src/lib/ui-upload-order.component.ts","../../../projects/ui-upload-order/src/lib/ui-upload-order.component.html","../../../projects/ui-upload-order/src/lib/ui-upload-order.module.ts","../../../projects/ui-upload-order/src/public-api.ts","../../../projects/ui-upload-order/src/uitec-ng-upload-order.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FilePondComponent, } from \"ngx-filepond\";\r\nimport { FilePondFile, FilePondOptions } from \"filepond\";\r\nimport { IAlbum, Lightbox } from 'ngx-lightbox';\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 {\r\n @Input() url: string;\r\n @Input() initialFiles: string[];\r\n @Input() multiple: boolean = true;\r\n @Input() maxFiles: number = 6;\r\n\r\n @Output() onRemove = new EventEmitter<string>();\r\n @Output() onAdded = 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\r\n @ViewChild(\"myPond\") myPond: FilePondComponent;\r\n\r\n constructor(private _lightbox: Lightbox) { }\r\n\r\n public pondOptions: FilePondOptions;\r\n public pondFiles: FilePondOptions[\"files\"] = [];\r\n public album: IAlbum[] = [];\r\n\r\n ngOnInit(): void {\r\n this.pondOptions = {\r\n allowMultiple: this.multiple,\r\n labelIdle: 'Arraste seus arquivos<br>ou<br><span class=\"filepond--label-action\">Clique aqui</span> para selecionar',\r\n allowReorder: true,\r\n maxFiles: this.maxFiles,\r\n acceptedFileTypes: ['image/*'],\r\n instantUpload: true,\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 server: {\r\n process: {\r\n url: this.url\r\n },\r\n load: (source, load, error, progress, abort, headers) => {\r\n var myRequest = new Request(source);\r\n fetch(myRequest).then(response => {\r\n response.blob().then(myBlob => {\r\n load(myBlob)\r\n });\r\n }).catch(error => {\r\n console.log('ERROR: ', error)\r\n });\r\n },\r\n },\r\n\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 pondHandleInit() {\r\n this.onInit.emit(this.pondFiles)\r\n }\r\n\r\n pondHandleAddFile(event: any) {\r\n let formattedName = event.file.serverId.replace(/[\"\\[\\]]/g, '');\r\n this.onAdded.emit(formattedName)\r\n }\r\n pondHandleActivateFile(event: any) {\r\n this.onActivate.emit(event.file)\r\n 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.replace(/[\"\\[\\]]/g, '');\r\n } else {\r\n fileName = event.file.filename;\r\n }\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(`Limite de Arquivos atingido. Você pode inserir um total de ${this.maxFiles} arquivos.`)\r\n }\r\n }\r\n\r\n openLightBox(fileName: string): void {\r\n let index = this.album.map(function (e) { return e.caption; }).indexOf(fileName);\r\n this._lightbox.open(this.album, index);\r\n }\r\n\r\n\r\n async fillAlbum(files: [], reOrder?: boolean) {\r\n if (files.length !== this.album.length || reOrder) {\r\n\r\n const preAlbum = await Promise.all(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 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","<!-- app.component.html -->\r\n<file-pond\r\n #myPond\r\n name='UploadForm[imagem][]'\r\n [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit()\"\r\n [files]=\"pondFiles\"\r\n (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onremovefile)=\"pondHandleRemove($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\"\r\n (onwarning)=\"warning($event)\"\r\n (onprocessfile)=\"pondHandleAddFile($event)\"\r\n/>\r\n","import { NgModule } from '@angular/core';\r\nimport { UiUploadOrderComponent } from './ui-upload-order.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxModule } from 'ngx-lightbox';\r\n\r\n// import filepond module\r\nimport { FilePondModule, registerPlugin } from \"ngx-filepond\";\r\n\r\n// import and register filepond plugins\r\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImageCrop from 'filepond-plugin-image-crop';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\n\r\nregisterPlugin(\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginImageCrop,\r\n FilePondPluginImageResize\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n UiUploadOrderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FilePondModule,\r\n LightboxModule\r\n ],\r\n exports: [\r\n UiUploadOrderComponent\r\n ]\r\n})\r\nexport class UiUploadOrderModule { }\r\n","/*\r\n * Public API Surface of ui-upload-order\r\n */\r\n\r\nexport * from './lib/ui-upload-order.component';\r\nexport * from './lib/ui-upload-order.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uitec-ng-upload-order.mjs","sources":["../../../projects/ui-upload-order/src/lib/ui-upload-order.component.ts","../../../projects/ui-upload-order/src/lib/ui-upload-order.component.html","../../../projects/ui-upload-order/src/lib/ui-upload-order.module.ts","../../../projects/ui-upload-order/src/public-api.ts","../../../projects/ui-upload-order/src/uitec-ng-upload-order.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FilePondComponent, } from \"ngx-filepond\";\r\nimport { FilePondFile, FilePondOptions } from \"filepond\";\r\nimport { IAlbum, Lightbox } from 'ngx-lightbox';\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 {\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 = 6;\r\n @Input() transparent: boolean;\r\n @Input() lightBox: boolean = true;\r\n\r\n @Output() onRemove = new EventEmitter<string>();\r\n @Output() onAdded = 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\r\n @ViewChild(\"myPond\") myPond: FilePondComponent;\r\n\r\n constructor(private _lightbox: Lightbox) { }\r\n\r\n public pondOptions: FilePondOptions;\r\n public pondFiles: FilePondOptions[\"files\"] = [];\r\n public album: IAlbum[] = [];\r\n\r\n ngOnInit(): void {\r\n this.pondOptions = {\r\n allowMultiple: this.multiple,\r\n labelIdle: '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: true,\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 server: {\r\n process: {\r\n url: this.url\r\n },\r\n load: (source, load, error, progress, abort, headers) => {\r\n var myRequest = new Request(source);\r\n fetch(myRequest).then(response => {\r\n response.arrayBuffer().then(buffer => {\r\n const contentType = response.headers.get('content-type');\r\n // Get the file extension from the source URL\r\n const fileExtension = source.split('.').pop();\r\n // Map file extensions to MIME types\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 // Add other supported image types as needed\r\n };\r\n const fileType = 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 }).catch(error => {\r\n console.log('ERROR: ', error);\r\n });\r\n },\r\n },\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 pondHandleInit() {\r\n this.onInit.emit(this.pondFiles)\r\n }\r\n\r\n pondHandleAddFile(event: any) {\r\n let formattedName = event.file.serverId.replace(/[\"\\[\\]]/g, '');\r\n this.onAdded.emit(formattedName)\r\n }\r\n\r\n pondHandleActivateFile(event: any) {\r\n console.log('event: ', event);\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.replace(/[\"\\[\\]]/g, '');\r\n } else {\r\n fileName = event.file.filename;\r\n }\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(`Limite de Arquivos atingido. Você pode inserir um total de ${this.maxFiles} arquivos.`)\r\n }\r\n }\r\n\r\n openLightBox(fileName: string): void {\r\n let index = this.album.map(function (e) { return e.caption; }).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\r\n const preAlbum = await Promise.all(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 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","<!-- app.component.html -->\n<file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit()\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\" (onremovefile)=\"pondHandleRemove($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfile)=\"pondHandleAddFile($event)\" />\n","import { NgModule } from '@angular/core';\r\nimport { UiUploadOrderComponent } from './ui-upload-order.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxModule } from 'ngx-lightbox';\r\n\r\n// import filepond module\r\nimport { FilePondModule, registerPlugin } from \"ngx-filepond\";\r\n\r\n// import and register filepond plugins\r\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImageCrop from 'filepond-plugin-image-crop';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\n\r\nregisterPlugin(\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginImageCrop,\r\n FilePondPluginImageResize\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n UiUploadOrderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FilePondModule,\r\n LightboxModule\r\n ],\r\n exports: [\r\n UiUploadOrderComponent\r\n ]\r\n})\r\nexport class UiUploadOrderModule { }\r\n","/*\r\n * Public API Surface of ui-upload-order\r\n */\r\n\r\nexport * from './lib/ui-upload-order.component';\r\nexport * from './lib/ui-upload-order.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -16,21 +16,24 @@ class UiUploadOrderComponent {
16
16
  constructor(_lightbox) {
17
17
  this._lightbox = _lightbox;
18
18
  this.multiple = true;
19
+ this.reorder = true;
19
20
  this.maxFiles = 6;
21
+ this.lightBox = true;
20
22
  this.onRemove = new EventEmitter();
21
23
  this.onAdded = new EventEmitter();
22
24
  this.onActivate = new EventEmitter();
23
25
  this.onInit = new EventEmitter();
24
26
  this.onMaxReached = new EventEmitter();
25
27
  this.onReOrder = new EventEmitter();
28
+ this.onSelected = new EventEmitter();
26
29
  this.pondFiles = [];
27
30
  this.album = [];
28
31
  }
29
32
  ngOnInit() {
30
33
  this.pondOptions = {
31
34
  allowMultiple: this.multiple,
32
- labelIdle: 'Arraste seus arquivos<br>ou<br><span class="filepond--label-action">Clique aqui</span> para selecionar',
33
- allowReorder: true,
35
+ labelIdle: 'Arraste seus arquivos ou <span class="filepond--label-action">clique aqui</span> para selecionar.',
36
+ allowReorder: this.reorder,
34
37
  maxFiles: this.maxFiles,
35
38
  acceptedFileTypes: ['image/*'],
36
39
  instantUpload: true,
@@ -53,7 +56,20 @@ class UiUploadOrderComponent {
53
56
  load: (source, load, error, progress, abort, headers) => {
54
57
  var myRequest = new Request(source);
55
58
  fetch(myRequest).then(response => {
56
- response.blob().then(myBlob => {
59
+ response.arrayBuffer().then(buffer => {
60
+ const contentType = response.headers.get('content-type');
61
+ // Get the file extension from the source URL
62
+ const fileExtension = source.split('.').pop();
63
+ // Map file extensions to MIME types
64
+ const mimeTypeMap = {
65
+ 'webp': 'image/webp',
66
+ 'jpg': 'image/jpeg',
67
+ 'jpeg': 'image/jpeg',
68
+ 'png': 'image/png',
69
+ // Add other supported image types as needed
70
+ };
71
+ const fileType = mimeTypeMap[fileExtension] || contentType || 'application/octet-stream';
72
+ const myBlob = new Blob([buffer], { type: fileType });
57
73
  load(myBlob);
58
74
  });
59
75
  }).catch(error => {
@@ -83,8 +99,9 @@ class UiUploadOrderComponent {
83
99
  this.onAdded.emit(formattedName);
84
100
  }
85
101
  pondHandleActivateFile(event) {
86
- this.onActivate.emit(event.file);
87
- this.openLightBox(event.file.filenameWithoutExtension);
102
+ console.log('event: ', event);
103
+ this.onActivate.emit(event);
104
+ this.lightBox && this.openLightBox(event.file.filenameWithoutExtension);
88
105
  }
89
106
  pondHandleUpdate(event) {
90
107
  this.fillAlbum(event.items);
@@ -152,18 +169,24 @@ class UiUploadOrderComponent {
152
169
  }
153
170
  }
154
171
  UiUploadOrderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, deps: [{ token: i1.Lightbox }], target: i0.ɵɵFactoryTarget.Component });
155
- UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { url: "url", initialFiles: "initialFiles", multiple: "multiple", maxFiles: "maxFiles" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- app.component.html -->\r\n<file-pond\r\n #myPond\r\n name='UploadForm[imagem][]'\r\n [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit()\"\r\n [files]=\"pondFiles\"\r\n (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onremovefile)=\"pondHandleRemove($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\"\r\n (onwarning)=\"warning($event)\"\r\n (onprocessfile)=\"pondHandleAddFile($event)\"\r\n/>\r\n", styles: [":host ::ng-deep .filepond--root .filepond--drop-label{height:128px}:host ::ng-deep .filepond--drop-label{color:#555}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:#f73264}:host ::ng-deep .filepond--list{margin-left:5%}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(24% - .5em)}}\n"], dependencies: [{ kind: "component", type: i2.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"] }] });
172
+ UiUploadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiUploadOrderComponent, selector: "ui-upload-order", inputs: { url: "url", initialFiles: "initialFiles", multiple: "multiple", reorder: "reorder", maxFiles: "maxFiles", transparent: "transparent", lightBox: "lightBox" }, outputs: { onRemove: "onRemove", onAdded: "onAdded", onActivate: "onActivate", onInit: "onInit", onMaxReached: "onMaxReached", onReOrder: "onReOrder", onSelected: "onSelected" }, viewQueries: [{ propertyName: "myPond", first: true, predicate: ["myPond"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- app.component.html -->\n<file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit()\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\" (onremovefile)=\"pondHandleRemove($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfile)=\"pondHandleAddFile($event)\" />\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;padding-bottom:40px}: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}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}@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: "component", type: i2.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"] }] });
156
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiUploadOrderComponent, decorators: [{
157
174
  type: Component,
158
- args: [{ selector: 'ui-upload-order', template: "<!-- app.component.html -->\r\n<file-pond\r\n #myPond\r\n name='UploadForm[imagem][]'\r\n [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit()\"\r\n [files]=\"pondFiles\"\r\n (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onremovefile)=\"pondHandleRemove($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\"\r\n (onwarning)=\"warning($event)\"\r\n (onprocessfile)=\"pondHandleAddFile($event)\"\r\n/>\r\n", styles: [":host ::ng-deep .filepond--root .filepond--drop-label{height:128px}:host ::ng-deep .filepond--drop-label{color:#555}:host ::ng-deep .filepond--panel-root{background-color:#fff;border:1.5px solid rgba(173,181,189,.5019607843);border-style:dashed}:host ::ng-deep .filepond--image-preview-overlay{display:none}:host ::ng-deep .filepond--file-action-button{background-color:#f73264}:host ::ng-deep .filepond--list{margin-left:5%}@media (min-width: 30em){:host ::ng-deep .filepond--item{width:calc(40% - .5em)}}@media (min-width: 50em){:host ::ng-deep .filepond--item{width:calc(24% - .5em)}}\n"] }]
175
+ args: [{ selector: 'ui-upload-order', template: "<!-- app.component.html -->\n<file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit()\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\" (onremovefile)=\"pondHandleRemove($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfile)=\"pondHandleAddFile($event)\" />\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;padding-bottom:40px}: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}::ng-deep .dark-only .filepond--panel-root{background:transparent!important}::ng-deep .dark-only .filepond--drop-label{color:#ffffffb3}@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"] }]
159
176
  }], ctorParameters: function () { return [{ type: i1.Lightbox }]; }, propDecorators: { url: [{
160
177
  type: Input
161
178
  }], initialFiles: [{
162
179
  type: Input
163
180
  }], multiple: [{
164
181
  type: Input
182
+ }], reorder: [{
183
+ type: Input
165
184
  }], maxFiles: [{
166
185
  type: Input
186
+ }], transparent: [{
187
+ type: Input
188
+ }], lightBox: [{
189
+ type: Input
167
190
  }], onRemove: [{
168
191
  type: Output
169
192
  }], onAdded: [{
@@ -176,6 +199,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
176
199
  type: Output
177
200
  }], onReOrder: [{
178
201
  type: Output
202
+ }], onSelected: [{
203
+ type: Output
179
204
  }], myPond: [{
180
205
  type: ViewChild,
181
206
  args: ["myPond"]
@@ -1 +1 @@
1
- {"version":3,"file":"uitec-ng-upload-order.mjs","sources":["../../../projects/ui-upload-order/src/lib/ui-upload-order.component.ts","../../../projects/ui-upload-order/src/lib/ui-upload-order.component.html","../../../projects/ui-upload-order/src/lib/ui-upload-order.module.ts","../../../projects/ui-upload-order/src/public-api.ts","../../../projects/ui-upload-order/src/uitec-ng-upload-order.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FilePondComponent, } from \"ngx-filepond\";\r\nimport { FilePondFile, FilePondOptions } from \"filepond\";\r\nimport { IAlbum, Lightbox } from 'ngx-lightbox';\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 {\r\n @Input() url: string;\r\n @Input() initialFiles: string[];\r\n @Input() multiple: boolean = true;\r\n @Input() maxFiles: number = 6;\r\n\r\n @Output() onRemove = new EventEmitter<string>();\r\n @Output() onAdded = 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\r\n @ViewChild(\"myPond\") myPond: FilePondComponent;\r\n\r\n constructor(private _lightbox: Lightbox) { }\r\n\r\n public pondOptions: FilePondOptions;\r\n public pondFiles: FilePondOptions[\"files\"] = [];\r\n public album: IAlbum[] = [];\r\n\r\n ngOnInit(): void {\r\n this.pondOptions = {\r\n allowMultiple: this.multiple,\r\n labelIdle: 'Arraste seus arquivos<br>ou<br><span class=\"filepond--label-action\">Clique aqui</span> para selecionar',\r\n allowReorder: true,\r\n maxFiles: this.maxFiles,\r\n acceptedFileTypes: ['image/*'],\r\n instantUpload: true,\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 server: {\r\n process: {\r\n url: this.url\r\n },\r\n load: (source, load, error, progress, abort, headers) => {\r\n var myRequest = new Request(source);\r\n fetch(myRequest).then(response => {\r\n response.blob().then(myBlob => {\r\n load(myBlob)\r\n });\r\n }).catch(error => {\r\n console.log('ERROR: ', error)\r\n });\r\n },\r\n },\r\n\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 pondHandleInit() {\r\n this.onInit.emit(this.pondFiles)\r\n }\r\n\r\n pondHandleAddFile(event: any) {\r\n let formattedName = event.file.serverId.replace(/[\"\\[\\]]/g, '');\r\n this.onAdded.emit(formattedName)\r\n }\r\n pondHandleActivateFile(event: any) {\r\n this.onActivate.emit(event.file)\r\n 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.replace(/[\"\\[\\]]/g, '');\r\n } else {\r\n fileName = event.file.filename;\r\n }\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(`Limite de Arquivos atingido. Você pode inserir um total de ${this.maxFiles} arquivos.`)\r\n }\r\n }\r\n\r\n openLightBox(fileName: string): void {\r\n let index = this.album.map(function (e) { return e.caption; }).indexOf(fileName);\r\n this._lightbox.open(this.album, index);\r\n }\r\n\r\n\r\n async fillAlbum(files: [], reOrder?: boolean) {\r\n if (files.length !== this.album.length || reOrder) {\r\n\r\n const preAlbum = await Promise.all(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 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","<!-- app.component.html -->\r\n<file-pond\r\n #myPond\r\n name='UploadForm[imagem][]'\r\n [options]=\"pondOptions\"\r\n (oninit)=\"pondHandleInit()\"\r\n [files]=\"pondFiles\"\r\n (onupdatefiles)=\"pondHandleUpdate($event)\"\r\n (onactivatefile)=\"pondHandleActivateFile($event)\"\r\n (onremovefile)=\"pondHandleRemove($event)\"\r\n (onreorderfiles)=\"onReorderFiles($event)\"\r\n (onwarning)=\"warning($event)\"\r\n (onprocessfile)=\"pondHandleAddFile($event)\"\r\n/>\r\n","import { NgModule } from '@angular/core';\r\nimport { UiUploadOrderComponent } from './ui-upload-order.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxModule } from 'ngx-lightbox';\r\n\r\n// import filepond module\r\nimport { FilePondModule, registerPlugin } from \"ngx-filepond\";\r\n\r\n// import and register filepond plugins\r\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImageCrop from 'filepond-plugin-image-crop';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\n\r\nregisterPlugin(\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginImageCrop,\r\n FilePondPluginImageResize\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n UiUploadOrderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FilePondModule,\r\n LightboxModule\r\n ],\r\n exports: [\r\n UiUploadOrderComponent\r\n ]\r\n})\r\nexport class UiUploadOrderModule { }\r\n","/*\r\n * Public API Surface of ui-upload-order\r\n */\r\n\r\nexport * from './lib/ui-upload-order.component';\r\nexport * from './lib/ui-upload-order.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uitec-ng-upload-order.mjs","sources":["../../../projects/ui-upload-order/src/lib/ui-upload-order.component.ts","../../../projects/ui-upload-order/src/lib/ui-upload-order.component.html","../../../projects/ui-upload-order/src/lib/ui-upload-order.module.ts","../../../projects/ui-upload-order/src/public-api.ts","../../../projects/ui-upload-order/src/uitec-ng-upload-order.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FilePondComponent, } from \"ngx-filepond\";\r\nimport { FilePondFile, FilePondOptions } from \"filepond\";\r\nimport { IAlbum, Lightbox } from 'ngx-lightbox';\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 {\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 = 6;\r\n @Input() transparent: boolean;\r\n @Input() lightBox: boolean = true;\r\n\r\n @Output() onRemove = new EventEmitter<string>();\r\n @Output() onAdded = 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\r\n @ViewChild(\"myPond\") myPond: FilePondComponent;\r\n\r\n constructor(private _lightbox: Lightbox) { }\r\n\r\n public pondOptions: FilePondOptions;\r\n public pondFiles: FilePondOptions[\"files\"] = [];\r\n public album: IAlbum[] = [];\r\n\r\n ngOnInit(): void {\r\n this.pondOptions = {\r\n allowMultiple: this.multiple,\r\n labelIdle: '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: true,\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 server: {\r\n process: {\r\n url: this.url\r\n },\r\n load: (source, load, error, progress, abort, headers) => {\r\n var myRequest = new Request(source);\r\n fetch(myRequest).then(response => {\r\n response.arrayBuffer().then(buffer => {\r\n const contentType = response.headers.get('content-type');\r\n // Get the file extension from the source URL\r\n const fileExtension = source.split('.').pop();\r\n // Map file extensions to MIME types\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 // Add other supported image types as needed\r\n };\r\n const fileType = 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 }).catch(error => {\r\n console.log('ERROR: ', error);\r\n });\r\n },\r\n },\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 pondHandleInit() {\r\n this.onInit.emit(this.pondFiles)\r\n }\r\n\r\n pondHandleAddFile(event: any) {\r\n let formattedName = event.file.serverId.replace(/[\"\\[\\]]/g, '');\r\n this.onAdded.emit(formattedName)\r\n }\r\n\r\n pondHandleActivateFile(event: any) {\r\n console.log('event: ', event);\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.replace(/[\"\\[\\]]/g, '');\r\n } else {\r\n fileName = event.file.filename;\r\n }\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(`Limite de Arquivos atingido. Você pode inserir um total de ${this.maxFiles} arquivos.`)\r\n }\r\n }\r\n\r\n openLightBox(fileName: string): void {\r\n let index = this.album.map(function (e) { return e.caption; }).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\r\n const preAlbum = await Promise.all(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 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","<!-- app.component.html -->\n<file-pond #myPond name='UploadForm[imagem][]' [class.file-pont-transparent]=\"transparent\" [options]=\"pondOptions\"\n (oninit)=\"pondHandleInit()\" [files]=\"pondFiles\" (onupdatefiles)=\"pondHandleUpdate($event)\"\n (onactivatefile)=\"pondHandleActivateFile($event)\" (onremovefile)=\"pondHandleRemove($event)\"\n (onreorderfiles)=\"onReorderFiles($event)\" (onwarning)=\"warning($event)\"\n (onprocessfile)=\"pondHandleAddFile($event)\" />\n","import { NgModule } from '@angular/core';\r\nimport { UiUploadOrderComponent } from './ui-upload-order.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxModule } from 'ngx-lightbox';\r\n\r\n// import filepond module\r\nimport { FilePondModule, registerPlugin } from \"ngx-filepond\";\r\n\r\n// import and register filepond plugins\r\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImageCrop from 'filepond-plugin-image-crop';\r\nimport FilePondPluginImageResize from 'filepond-plugin-image-resize';\r\n\r\nregisterPlugin(\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginImageExifOrientation,\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginImageCrop,\r\n FilePondPluginImageResize\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n UiUploadOrderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FilePondModule,\r\n LightboxModule\r\n ],\r\n exports: [\r\n UiUploadOrderComponent\r\n ]\r\n})\r\nexport class UiUploadOrderModule { }\r\n","/*\r\n * Public API Surface of ui-upload-order\r\n */\r\n\r\nexport * from './lib/ui-upload-order.component';\r\nexport * from './lib/ui-upload-order.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -8,13 +8,17 @@ export declare class UiUploadOrderComponent implements OnInit, OnChanges {
8
8
  url: string;
9
9
  initialFiles: string[];
10
10
  multiple: boolean;
11
+ reorder: boolean;
11
12
  maxFiles: number;
13
+ transparent: boolean;
14
+ lightBox: boolean;
12
15
  onRemove: EventEmitter<string>;
13
16
  onAdded: EventEmitter<string>;
14
17
  onActivate: EventEmitter<FilePondFile>;
15
18
  onInit: EventEmitter<(string | Blob | import("filepond").ActualFileObject | import("filepond").FilePondInitialFile)[]>;
16
19
  onMaxReached: EventEmitter<string>;
17
20
  onReOrder: EventEmitter<FilePondFile[]>;
21
+ onSelected: EventEmitter<any>;
18
22
  myPond: FilePondComponent;
19
23
  constructor(_lightbox: Lightbox);
20
24
  pondOptions: FilePondOptions;
@@ -33,5 +37,5 @@ export declare class UiUploadOrderComponent implements OnInit, OnChanges {
33
37
  fillAlbum(files: [], reOrder?: boolean): Promise<void>;
34
38
  readFileAsync(file: File): Promise<string>;
35
39
  static ɵfac: i0.ɵɵFactoryDeclaration<UiUploadOrderComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<UiUploadOrderComponent, "ui-upload-order", never, { "url": "url"; "initialFiles": "initialFiles"; "multiple": "multiple"; "maxFiles": "maxFiles"; }, { "onRemove": "onRemove"; "onAdded": "onAdded"; "onActivate": "onActivate"; "onInit": "onInit"; "onMaxReached": "onMaxReached"; "onReOrder": "onReOrder"; }, never, never, false, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiUploadOrderComponent, "ui-upload-order", never, { "url": "url"; "initialFiles": "initialFiles"; "multiple": "multiple"; "reorder": "reorder"; "maxFiles": "maxFiles"; "transparent": "transparent"; "lightBox": "lightBox"; }, { "onRemove": "onRemove"; "onAdded": "onAdded"; "onActivate": "onActivate"; "onInit": "onInit"; "onMaxReached": "onMaxReached"; "onReOrder": "onReOrder"; "onSelected": "onSelected"; }, never, never, false, never>;
37
41
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uitec-ng-upload-order",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.0",
6
6
  "@angular/core": "^15.2.0"