@seniorsistemas/angular-components 17.31.2 → 17.31.4

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.
@@ -53,8 +53,7 @@ var FileUploadComponent = /** @class */ (function () {
53
53
  configurable: true
54
54
  });
55
55
  FileUploadComponent.prototype.ngOnInit = function () {
56
- this.supportedExtensions = this.supportedExtensions
57
- .map(function (extension) { return extension.replace(".", "").toLowerCase(); });
56
+ this.supportedExtensions = this.supportedExtensions.map(function (extension) { return extension.replace(".", "").toLowerCase(); });
58
57
  };
59
58
  FileUploadComponent.prototype.ngOnDestroy = function () {
60
59
  this.ngUsubscribe.next();
@@ -143,6 +142,15 @@ var FileUploadComponent = /** @class */ (function () {
143
142
  anchor: this.anchor,
144
143
  });
145
144
  };
145
+ FileUploadComponent.prototype.formatFileSize = function (size) {
146
+ if (size === 0) {
147
+ return "0 Bytes";
148
+ }
149
+ var k = 1024;
150
+ var sizes = ["bytes", "KB", "MB", "GB", "TB"];
151
+ var i = Math.floor(Math.log(size) / Math.log(k));
152
+ return parseFloat((size / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
153
+ };
146
154
  FileUploadComponent.prototype.update = function () {
147
155
  var windowWidth = window.innerWidth;
148
156
  this.isSmallDevice = windowWidth <= Breakpoints.SM_MAX;
@@ -186,7 +194,8 @@ var FileUploadComponent = /** @class */ (function () {
186
194
  if (!blobFile) {
187
195
  return;
188
196
  }
189
- this.fileUploadService.getMetadataCustomField({ objectId: blobFile[0].objectId })
197
+ this.fileUploadService
198
+ .getMetadataCustomField({ objectId: blobFile[0].objectId })
190
199
  .then(function (metadata) { return _this.setModifiedDate(metadata); });
191
200
  };
192
201
  FileUploadComponent.prototype.setModifiedDate = function (metadata) {
@@ -195,7 +204,13 @@ var FileUploadComponent = /** @class */ (function () {
195
204
  var day = moment(metadata.modified).format("DD");
196
205
  var month = moment(metadata.modified).format("MM");
197
206
  var fullYear = moment(metadata.modified).format("YYYY");
198
- this.modifiedDate = this.translate.instant("platform.angular_components.date_modified_custom_blob", { hour: hour, minutes: minutes, day: day, month: month, fullYear: fullYear });
207
+ this.modifiedDate = this.translate.instant("platform.angular_components.date_modified_custom_blob", {
208
+ hour: hour,
209
+ minutes: minutes,
210
+ day: day,
211
+ month: month,
212
+ fullYear: fullYear,
213
+ });
199
214
  };
200
215
  var FileUploadComponent_1;
201
216
  FileUploadComponent.nextId = 0;
@@ -294,11 +309,11 @@ var FileUploadComponent = /** @class */ (function () {
294
309
  FileUploadComponent = FileUploadComponent_1 = __decorate([
295
310
  Component({
296
311
  selector: "s-file-upload",
297
- template: "<div\n [id]=\"id\"\n class=\"s-fileupload\">\n <div class=\"s-fileupload-choose\">\n <input\n #inputUpload\n [id]=\"id+'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer\n ? $event.dataTransfer.files\n : $event.target.files)\"> \n <s-button\n *ngIf=\"permissions.includes(ADD_PERMISSION)\"\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled || fileLimit === files?.length\"\n [auxiliary]=\"false\">\n </s-button>\n </div>\n\n <section\n *ngIf=\"files.length\" \n [id]=\"id + 'fileupload-list'\"\n class=\"s-fileupload-list\"\n role=\"grid\">\n <ng-container *ngFor=\"let file of files; let i = index\">\n <div\n class=\"s-fileupload-list-file\"\n role=\"row\">\n <div\n [id]=\"id + '-file-' + i + '-name'\"\n class=\"s-fileupload-list-file-name\"\n role=\"gridcell\">\n <ng-container *ngTemplateOutlet=\"permissions.includes(READ_PERMISSION) && file.savedFile || file.progress === 100\n ? descriptionUrl\n : description; context: {\n $implicit: file,\n index: i\n }\">\n </ng-container>\n <span *ngIf=\"modifiedDate\" class=\"s-fileupload-list-file-name-date\">{{ modifiedDate }}</span>\n </div>\n <div\n class=\"s-fileupload-list-file-status\"\n role=\"gridcell\">\n <p-progressBar\n *ngIf=\"file.isUploading && !isSmallDevice\"\n [style]=\"{ 'width': '250px', 'background-color': '#d8d8d8', 'border-radius': '0px', 'height': '14px'}\"\n [value]=\"file.progress\"\n [showValue]=\"false\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\">\n </p-progressBar>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\" \n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\">\n </span>\n <span\n *ngIf=\"!file.isUploading && !file.error && file.progress === 100\"\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelSuccess || successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n [pTooltip]=\"successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\">\n </span>\n <span\n *ngIf=\"file.error?.message\" \n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\">\n </span>\n </div>\n <div\n class=\"s-fileupload-list-file-actions\"\n role=\"gridcell\">\n <a\n *ngIf=\"file.isUploading\"\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\">\n {{ cancelLabel || 'platform.angular_components.cancel' | translate }}\n </a>\n <a\n *ngIf=\"permissions.includes(REMOVE_PERMISSION) && !file.isUploading && !(disabled || !!formGroup?.disabled)\"\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"ariaLabelRemove || removeLabel || 'platform.angular_components.remove' | translate\">\n {{ removeLabel || 'platform.angular_components.remove' | translate }}\n </a>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template\n #descriptionUrl\n let-file\n let-i = index>\n <a\n [id]=\"id + '-file-' + i + '-name-link'\"\n tabindex=\"0\"\n (click)=\"onDowloadFile(i)\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\">{{file.name}}\n </a>\n <a\n style=\"display: none;\"\n [href]=\"file.objectURL\"\n target=\"_blank\"\n download\n #anchor>\n </a>\n</ng-template>\n\n<ng-template\n #description\n let-file>\n <span\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\">\n {{file.name}}\n </span>\n</ng-template>\n",
298
- styles: [".s-fileupload .s-fileupload-choose{position:relative;margin:15px 0;width:-webkit-max-content;width:max-content}.s-fileupload input[type=file]{display:none}.s-fileupload-list{border:1px solid #ccc}.s-fileupload-list-file:not(:first-child){border-top:1px solid #ccc}.s-fileupload-list .s-fileupload-list-file{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;padding:15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:center;align-self:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .s-fileupload-list-file-name-date{font-size:.75rem;color:#999}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name>a{cursor:pointer;text-decoration:none}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-fileupload-list .s-fileupload-list-file .fas.fa-circle-notch{color:#d8d8d8;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-check{color:#0c9348;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-times{color:#c13018;font-size:12px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin-top:15px;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;width:100%}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action{text-decoration:none;color:#428bca}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :focus,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :visited,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action:hover{text-decoration:none}@media (min-width:768px){.s-fileupload-list .s-fileupload-list-file{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{width:auto;-ms-flex-positive:2;flex-grow:2}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{margin:0 15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin:0;width:auto}}"]
312
+ template: "<div [id]=\"id\" class=\"s-fileupload\">\n <div class=\"s-fileupload-choose\">\n <input\n #inputUpload\n [id]=\"id + 'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer ? $event.dataTransfer.files : $event.target.files)\"\n />\n <s-button\n *ngIf=\"permissions.includes(ADD_PERMISSION)\"\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled || fileLimit === files?.length\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n\n <section *ngIf=\"files.length\" [id]=\"id + 'fileupload-list'\" class=\"s-fileupload-list\" role=\"grid\">\n <ng-container *ngFor=\"let file of files; let i = index\">\n <div class=\"s-fileupload-list-file\" role=\"row\">\n <div [id]=\"id + '-file-' + i + '-name'\" class=\"s-fileupload-list-file-name\" role=\"gridcell\">\n <div class=\"file-name-size\">\n <ng-container\n *ngTemplateOutlet=\"\n (permissions.includes(READ_PERMISSION) && file.savedFile) || file.progress === 100\n ? descriptionUrl\n : description;\n context: {\n $implicit: file,\n index: i\n }\n \"\n >\n </ng-container>\n \n <span>{{ formatFileSize(file.size) }}</span>\n </div>\n\n <span *ngIf=\"modifiedDate\" class=\"s-fileupload-list-file-name-date\">{{ modifiedDate }}</span>\n </div>\n <div class=\"s-fileupload-list-file-status\" role=\"gridcell\">\n <p-progressBar\n *ngIf=\"file.isUploading && !isSmallDevice\"\n [style]=\"{ width: '250px', 'background-color': '#d8d8d8', 'border-radius': '0px', height: '14px' }\"\n [value]=\"file.progress\"\n [showValue]=\"false\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\"\n >\n </p-progressBar>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\"\n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\"\n >\n </span>\n <span\n *ngIf=\"!file.isUploading && !file.error && file.progress === 100\"\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"\n ariaLabelSuccess || successTooltip || 'platform.angular_components.file_attached_successfully' | translate\n \"\n [pTooltip]=\"successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n <span\n *ngIf=\"file.error?.message\"\n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n </div>\n <div class=\"s-fileupload-list-file-actions\" role=\"gridcell\">\n <a\n *ngIf=\"file.isUploading\"\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\"\n >\n {{ cancelLabel || \"platform.angular_components.cancel\" | translate }}\n </a>\n <a\n *ngIf=\"permissions.includes(REMOVE_PERMISSION) && !file.isUploading && !(disabled || !!formGroup?.disabled)\"\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"ariaLabelRemove || removeLabel || 'platform.angular_components.remove' | translate\"\n >\n {{ removeLabel || \"platform.angular_components.remove\" | translate }}\n </a>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template #descriptionUrl let-file let-i=\"index\">\n <a [id]=\"id + '-file-' + i + '-name-link'\" tabindex=\"0\" (click)=\"onDowloadFile(i)\" [attr.aria-label]=\"ariaLabelFileName || file.name\"\n >{{ file.name }}\n </a>\n <a style=\"display: none\" [href]=\"file.objectURL\" target=\"_blank\" download #anchor> </a>\n</ng-template>\n\n<ng-template #description let-file>\n <span tabindex=\"0\" [attr.aria-label]=\"ariaLabelFileName || file.name\">\n {{ file.name }}\n </span>\n</ng-template>\n",
313
+ styles: [".s-fileupload .s-fileupload-choose{position:relative;margin:15px 0;width:-webkit-max-content;width:max-content}.s-fileupload input[type=file]{display:none}.s-fileupload-list{border:1px solid #ccc}.s-fileupload-list-file:not(:first-child){border-top:1px solid #ccc}.s-fileupload-list .s-fileupload-list-file{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;padding:15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:center;align-self:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .file-name-size{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;gap:20px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .s-fileupload-list-file-name-date{font-size:.75rem;color:#999}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name>a{cursor:pointer;text-decoration:none}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-fileupload-list .s-fileupload-list-file .fas.fa-circle-notch{color:#d8d8d8;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-check{color:#0c9348;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-times{color:#c13018;font-size:12px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin-top:15px;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;width:100%}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action{text-decoration:none;color:#428bca}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :focus,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :visited,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action:hover{text-decoration:none}@media (min-width:768px){.s-fileupload-list .s-fileupload-list-file{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{width:auto;-ms-flex-positive:2;flex-grow:2}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{margin:0 15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin:0;width:auto}}"]
299
314
  })
300
315
  ], FileUploadComponent);
301
316
  return FileUploadComponent;
302
317
  }());
303
318
  export { FileUploadComponent };
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFGLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQU92QjtJQTJHSSw2QkFBNkIsU0FBdUIsRUFDL0IsaUJBQW9DLEVBQ3BDLFNBQTJCO1FBRm5CLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDL0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQTFHekMsbUJBQWMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7UUFDM0Msb0JBQWUsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDN0Msc0JBQWlCLEdBQUcscUJBQXFCLENB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SUFHOUY7UUFEQyxNQUFNLEVBQUU7K0RBQzZEO0lBMkJ0RTtRQURDLFlBQVksQ0FBQyxlQUFlLENBQUM7dURBRzdCO0lBaElRLG1CQUFtQjtRQUwvQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsZUFBZTtZQUN6QixtL0xBQTJDOztTQUU5QyxDQUFDO09BQ1csbUJBQW1CLENBd1IvQjtJQUFELDBCQUFDO0NBQUEsQUF4UkQsSUF3UkM7U0F4UlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcblxuaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsZS11cGxvYWQuc2VydmljZVwiO1xuaW1wb3J0IHsgTGlzdEJsb2JNZXRhZGF0YVJlc3BvbnNlIH0gZnJvbSBcIi4vbW9kZWxzL2xpc3QtYmxvYi1tZXRhZGF0YVwiO1xuaW1wb3J0IHsgRmlsZUR0byB9IGZyb20gXCIuL21vZGVscy9maWxlLWR0b1wiO1xuaW1wb3J0IHsgVXBsb2FkRXJyb3IgfSBmcm9tIFwiLi9tb2RlbHMvdXBsb2FkRXJyb3JcIjtcbmltcG9ydCB7IFZhbGlkYXRlRXJyb3JzIH0gZnJvbSBcIi4vbW9kZWxzL3ZhbGlkYXRlLWVycm9yc1wiO1xuaW1wb3J0IHsgRmlsZVVwbG9hZFBlcm1pc3Npb25zLCBBTExfUEVSTUlTU0lPTlMgfSBmcm9tIFwiLi9tb2RlbHMvZmlsZS11cGxvYWQtcGVybWlzc2lvbnNcIjtcblxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1maWxlLXVwbG9hZFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gICAgcHVibGljIEFERF9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLkFkZDtcbiAgICBwdWJsaWMgUkVBRF9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLlJlYWQ7XG4gICAgcHVibGljIFJFTU9WRV9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLlJlbW92ZTtcblxuICAgIEBWaWV3Q2hpbGQoXCJpbnB1dFVwbG9hZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0VXBsb2FkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChcImFuY2hvclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuY2hvcjogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYHMtZmlsZS11cGxvYWQtJHtGaWxlVXBsb2FkQ29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjaG9vc2VMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhbmNlbExhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdWNjZXNzVG9vbHRpcDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxGaWxlTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heENvbWJpbmVkRmlsZVNpemU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGVMaW1pdDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsUHJvZ3Jlc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbFN1Y2Nlc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbEVycm9yOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxSZW1vdmU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUNvbnRyb2w7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0ZpbGVVcGxvYWREYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwZXJtaXNzaW9uczogRmlsZVVwbG9hZFBlcm1pc3Npb25zW10gPSBBTExfUEVSTUlTU0lPTlM7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsZXMoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAodGhpcy5zaG93RmlsZVVwbG9hZERhdGUgJiYgZmlsZXNbMF0/Lm9iamVjdElkKSB7XG4gICAgICAgICAgICB0aGlzLmdldFVwbG9hZERhdGUoZmlsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gZmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbWFnZShmaWxlKSkge1xuICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHVwbG9hZEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx7IGZpbGVzOiBGaWxlRHRvW10gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlRmlsZTogRXZlbnRFbWl0dGVyPHsgZmlsZTogRmlsZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxVcGxvYWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRvd25sb2FkRmlsZTogRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRlRXJyb3JzOiBFdmVudEVtaXR0ZXI8VXBsb2FkRXJyb3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgaW5wdXRWYWx1ZSA9IFwiXCI7XG4gICAgcHVibGljIG1vZGlmaWVkRGF0ZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAubWFwKGV4dGVuc2lvbiA9PiBleHRlbnNpb24ucmVwbGFjZShcIi5cIiwgXCJcIikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgIHB1YmxpYyBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlU2VsZWN0KGZpbGVzOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3RmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRmlsZUNvbWJpbmVkU2l6ZUV4Y2VlZGVkKGZpbGVzKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0NPTUJJTkVEX0ZJTEVfU0laRSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLlVOU1VQUE9SVEVEX0VYVEVOU0lPTixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGaWxlU2l6ZUV4Y2VlZGVkKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXM6IFtmaWxlXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfU0laRSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmV3RmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmNvbmNhdChuZXdGaWxlcyk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEhhbmRsZXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXM6IG5ld0ZpbGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyRmlsZUlucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlRmlsZShmaWxlOiBGaWxlRHRvKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVJbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcblxuICAgICAgICBpZiAocmVtb3ZlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlLmVtaXQoeyBmaWxlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2FuY2VsVXBsb2FkKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFVwbG9hZC5lbWl0KGluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Eb3dsb2FkRmlsZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBhbmNob3I6IHRoaXMuYW5jaG9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVzKCk6IEZpbGVEdG9bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgdGhpcy5pc1NtYWxsRGV2aWNlID0gd2luZG93V2lkdGggPD0gQnJlYWtwb2ludHMuU01fTUFYO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNJbWFnZShmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvXmltYWdlXFwvLy50ZXN0KGZpbGUudHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpbGVMaW1pdEV4Y2VlZGVkKGZpbGVzOiBGaWxlRHRvW10pIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVMaW1pdCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aCArIGZpbGVzLmxlbmd0aCA+IHRoaXMuZmlsZUxpbWl0O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlQ29tYmluZWRTaXplRXhjZWVkZWQoZmlsZXM6IEZpbGVbXSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMubWF4Q29tYmluZWRGaWxlU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZXNMaXN0ID0gWy4uLmZpbGVzLCAuLi50aGlzLmZpbGVzXTtcblxuICAgICAgICBjb25zdCBjb21iaW5lZFNpemUgPSBmaWxlc0xpc3QucmVkdWNlKChjb21iaW5lZFNpemUsIGZpbGUpID0+IGNvbWJpbmVkU2l6ZSArIGZpbGUuc2l6ZSwgMCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVkU2l6ZSA+IHRoaXMubWF4Q29tYmluZWRGaWxlU2l6ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZVNpemVFeGNlZWRlZChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlLnNpemUgPiB0aGlzLm1heEZpbGVTaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNVbnN1cHBvcnRlZEZpbGVFeHRlbnNpb24oZmlsZTogRmlsZSkge1xuICAgICAgICBpZiAodGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zcGxpdChcIi5cIikucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGV4dGVuc2lvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJGaWxlSW5wdXQoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRVcGxvYWQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVcGxvYWREYXRlKGJsb2JGaWxlOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFibG9iRmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5nZXRNZXRhZGF0YUN1c3RvbUZpZWxkKHsgb2JqZWN0SWQ6IGJsb2JGaWxlWzBdLm9iamVjdElkIH0pXG4gICAgICAgICAgICAudGhlbihtZXRhZGF0YSA9PiB0aGlzLnNldE1vZGlmaWVkRGF0ZShtZXRhZGF0YSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9kaWZpZWREYXRlKG1ldGFkYXRhOiBMaXN0QmxvYk1ldGFkYXRhUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaG91ciA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiSEhcIik7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIm1tXCIpO1xuICAgICAgICBjb25zdCBkYXkgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIkREXCIpO1xuICAgICAgICBjb25zdCBtb250aCA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiTU1cIik7XG4gICAgICAgIGNvbnN0IGZ1bGxZZWFyID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5mb3JtYXQoXCJZWVlZXCIpO1xuXG4gICAgICAgIHRoaXMubW9kaWZpZWREYXRlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kYXRlX21vZGlmaWVkX2N1c3RvbV9ibG9iXCIsIHsgaG91ciwgbWludXRlcywgZGF5LCBtb250aCwgZnVsbFllYXIgfSk7XG4gICAgfVxufVxuIl19
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFGLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQU92QjtJQTJHSSw2QkFDcUIsU0FBdUIsRUFDdkIsaUJBQW9DLEVBQ3BDLFNBQTJCO1FBRjNCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQTNHekMsbUJBQWMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7UUFDM0Msb0JBQWUsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDN0Msc0JBQWlCLEdBQUcscUJBQXFCLENB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RzFDO1FBREMsS0FBSyxFQUFFO2tFQUN5QjtJQUdqQztRQURDLEtBQUssRUFBRTs0REFDbUI7SUFHM0I7UUFEQyxLQUFLLEVBQUU7b0VBQzJCO0lBR25DO1FBREMsS0FBSyxFQUFFOzBEQUNpQjtJQUd6QjtRQURDLEtBQUssRUFBRTtrRUFDeUI7SUFHakM7UUFEQyxLQUFLLEVBQUU7aUVBQ3dCO0lBR2hDO1FBREMsS0FBSyxFQUFFOytEQUNzQjtJQUc5QjtRQURDLEtBQUssRUFBRTtnRUFDdUI7SUFHL0I7UUFEQyxLQUFLLEVBQUU7MERBQ3NCO0lBRzlCO1FBREMsS0FBSyxFQUFFO3lEQUNnQjtJQUd4QjtRQURDLEtBQUssRUFBRTttRUFDbUM7SUFHM0M7UUFEQyxLQUFLLEVBQUU7NERBQ3NEO0lBRzlEO1FBREMsS0FBSyxFQUFFO29EQVdQO0lBR0Q7UUFEQyxNQUFNLEVBQUU7OERBQ3FFO0lBRzlFO1FBREMsTUFBTSxFQUFFOzJEQUM0RDtJQUdyRTtRQURDLE1BQU0sRUFBRTs2REFDc0Q7SUFHL0Q7UUFEQyxNQUFNLEVBQUU7NkRBQ3FGO0lBRzlGO1FBREMsTUFBTSxFQUFFOytEQUM2RDtJQTRCdEU7UUFEQyxZQUFZLENBQUMsZUFBZSxDQUFDO3VEQUc3QjtJQWpJUSxtQkFBbUI7UUFML0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGVBQWU7WUFDekIsNHFNQUEyQzs7U0FFOUMsQ0FBQztPQUNXLG1CQUFtQixDQTBTL0I7SUFBRCwwQkFBQztDQUFBLEFBMVNELElBMFNDO1NBMVNZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tIFwibW9tZW50XCI7XG5cbmltcG9ydCB7IEJyZWFrcG9pbnRzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gXCIuL2ZpbGUtdXBsb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7IExpc3RCbG9iTWV0YWRhdGFSZXNwb25zZSB9IGZyb20gXCIuL21vZGVscy9saXN0LWJsb2ItbWV0YWRhdGFcIjtcbmltcG9ydCB7IEZpbGVEdG8gfSBmcm9tIFwiLi9tb2RlbHMvZmlsZS1kdG9cIjtcbmltcG9ydCB7IFVwbG9hZEVycm9yIH0gZnJvbSBcIi4vbW9kZWxzL3VwbG9hZEVycm9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUVycm9ycyB9IGZyb20gXCIuL21vZGVscy92YWxpZGF0ZS1lcnJvcnNcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRQZXJtaXNzaW9ucywgQUxMX1BFUk1JU1NJT05TIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbGUtdXBsb2FkLXBlcm1pc3Npb25zXCI7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZmlsZS11cGxvYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHB1YmxpYyBzdGF0aWMgbmV4dElkID0gMDtcblxuICAgIHB1YmxpYyBBRERfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5BZGQ7XG4gICAgcHVibGljIFJFQURfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5SZWFkO1xuICAgIHB1YmxpYyBSRU1PVkVfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5SZW1vdmU7XG5cbiAgICBAVmlld0NoaWxkKFwiaW5wdXRVcGxvYWRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFVwbG9hZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoXCJhbmNob3JcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmNob3I6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBzLWZpbGUtdXBsb2FkLSR7RmlsZVVwbG9hZENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2hvb3NlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbW92ZUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3VjY2Vzc1Rvb2x0aXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWNjZXB0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdXBwb3J0ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsRmlsZU5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heEZpbGVTaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhDb21iaW5lZEZpbGVTaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxlTGltaXQ6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbFByb2dyZXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxTdWNjZXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxFcnJvcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsUmVtb3ZlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Db250cm9sO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dGaWxlVXBsb2FkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGVybWlzc2lvbnM6IEZpbGVVcGxvYWRQZXJtaXNzaW9uc1tdID0gQUxMX1BFUk1JU1NJT05TO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGZpbGVzKGZpbGVzOiBGaWxlRHRvW10pIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0ZpbGVVcGxvYWREYXRlICYmIGZpbGVzWzBdPy5vYmplY3RJZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRVcGxvYWREYXRlKGZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWxlcyA9IGZpbGVzLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbWFnZShmaWxlKSkge1xuICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHVwbG9hZEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx7IGZpbGVzOiBGaWxlRHRvW10gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlRmlsZTogRXZlbnRFbWl0dGVyPHsgZmlsZTogRmlsZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxVcGxvYWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRvd25sb2FkRmlsZTogRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRlRXJyb3JzOiBFdmVudEVtaXR0ZXI8VXBsb2FkRXJyb3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgaW5wdXRWYWx1ZSA9IFwiXCI7XG4gICAgcHVibGljIG1vZGlmaWVkRGF0ZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsZVVwbG9hZFNlcnZpY2U6IEZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLm1hcCgoZXh0ZW5zaW9uKSA9PiBleHRlbnNpb24ucmVwbGFjZShcIi5cIiwgXCJcIikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgIHB1YmxpYyBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlU2VsZWN0KGZpbGVzOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3RmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRmlsZUNvbWJpbmVkU2l6ZUV4Y2VlZGVkKGZpbGVzKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0NPTUJJTkVEX0ZJTEVfU0laRSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLlVOU1VQUE9SVEVEX0VYVEVOU0lPTixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGaWxlU2l6ZUV4Y2VlZGVkKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXM6IFtmaWxlXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfU0laRSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmV3RmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmNvbmNhdChuZXdGaWxlcyk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEhhbmRsZXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXM6IG5ld0ZpbGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyRmlsZUlucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlRmlsZShmaWxlOiBGaWxlRHRvKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVJbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcblxuICAgICAgICBpZiAocmVtb3ZlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlLmVtaXQoeyBmaWxlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2FuY2VsVXBsb2FkKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFVwbG9hZC5lbWl0KGluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Eb3dsb2FkRmlsZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBhbmNob3I6IHRoaXMuYW5jaG9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVzKCk6IEZpbGVEdG9bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0RmlsZVNpemUoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIjAgQnl0ZXNcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrID0gMTAyNDtcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSBbXCJieXRlc1wiLCBcIktCXCIsIFwiTUJcIiwgXCJHQlwiLCBcIlRCXCJdO1xuICAgICAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKGspKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKHNpemUgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSkgKyBcIiBcIiArIHNpemVzW2ldO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKCkge1xuICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB0aGlzLmlzU21hbGxEZXZpY2UgPSB3aW5kb3dXaWR0aCA8PSBCcmVha3BvaW50cy5TTV9NQVg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ltYWdlKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eaW1hZ2VcXC8vLnRlc3QoZmlsZS50eXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZUxpbWl0RXhjZWVkZWQoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZUxpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoICsgZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlTGltaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpbGVDb21iaW5lZFNpemVFeGNlZWRlZChmaWxlczogRmlsZVtdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tYXhDb21iaW5lZEZpbGVTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlc0xpc3QgPSBbLi4uZmlsZXMsIC4uLnRoaXMuZmlsZXNdO1xuXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkU2l6ZSA9IGZpbGVzTGlzdC5yZWR1Y2UoKGNvbWJpbmVkU2l6ZSwgZmlsZSkgPT4gY29tYmluZWRTaXplICsgZmlsZS5zaXplLCAwKTtcblxuICAgICAgICByZXR1cm4gY29tYmluZWRTaXplID4gdGhpcy5tYXhDb21iaW5lZEZpbGVTaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlU2l6ZUV4Y2VlZGVkKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm1heEZpbGVTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlOiBGaWxlKSB7XG4gICAgICAgIGlmICh0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMuaW5jbHVkZXMoZXh0ZW5zaW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckZpbGVJbnB1dCgpIHtcbiAgICAgICAgdGhpcy5pbnB1dFVwbG9hZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVwbG9hZERhdGUoYmxvYkZpbGU6IEZpbGVEdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAoIWJsb2JGaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0TWV0YWRhdGFDdXN0b21GaWVsZCh7IG9iamVjdElkOiBibG9iRmlsZVswXS5vYmplY3RJZCB9KVxuICAgICAgICAgICAgLnRoZW4oKG1ldGFkYXRhKSA9PiB0aGlzLnNldE1vZGlmaWVkRGF0ZShtZXRhZGF0YSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9kaWZpZWREYXRlKG1ldGFkYXRhOiBMaXN0QmxvYk1ldGFkYXRhUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaG91ciA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiSEhcIik7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIm1tXCIpO1xuICAgICAgICBjb25zdCBkYXkgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIkREXCIpO1xuICAgICAgICBjb25zdCBtb250aCA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiTU1cIik7XG4gICAgICAgIGNvbnN0IGZ1bGxZZWFyID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5mb3JtYXQoXCJZWVlZXCIpO1xuXG4gICAgICAgIHRoaXMubW9kaWZpZWREYXRlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kYXRlX21vZGlmaWVkX2N1c3RvbV9ibG9iXCIsIHtcbiAgICAgICAgICAgIGhvdXIsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICBmdWxsWWVhcixcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -6929,6 +6929,7 @@ let LookupComponent = LookupComponent_1 = class LookupComponent {
6929
6929
  this.showAddOption = false;
6930
6930
  this.showEditOption = false;
6931
6931
  this.showRemoveOption = false;
6932
+ this.dialogFullscreen = false;
6932
6933
  this.onLookupRequest = new EventEmitter();
6933
6934
  this.onSearchRequest = new EventEmitter();
6934
6935
  this.onFocus = new EventEmitter();
@@ -7368,6 +7369,9 @@ __decorate([
7368
7369
  __decorate([
7369
7370
  Input()
7370
7371
  ], LookupComponent.prototype, "showRemoveOption", void 0);
7372
+ __decorate([
7373
+ Input()
7374
+ ], LookupComponent.prototype, "dialogFullscreen", void 0);
7371
7375
  __decorate([
7372
7376
  Output()
7373
7377
  ], LookupComponent.prototype, "onLookupRequest", void 0);
@@ -7450,7 +7454,7 @@ LookupComponent = LookupComponent_1 = __decorate([
7450
7454
  Injectable(),
7451
7455
  Component({
7452
7456
  selector: "s-lookup",
7453
- template: "<div [ngClass]=\"{ inputgroup: showSearch }\">\n <p-autoComplete\n #autocomplete\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [dataKey]=\"dataKey\"\n [multiple]=\"multiple\"\n [inputId]=\"id + '-autocomplete'\"\n [forceSelection]=\"autocompleteForceSelection\"\n [suggestions]=\"getLookupSuggestions()\"\n (completeMethod)=\"onCompleteMethod($event)\"\n (onSelect)=\"onSelect.next($event)\"\n (onBlur)=\"onBlur.next($event)\"\n (onFocus)=\"onFocus.next($event)\"\n (onUnselect)=\"onUnselect.next($event)\"\n (onClear)=\"onClear.next($event)\"\n (onKeyUp)=\"onKeyUp.next($event)\"\n [field]=\"lookupDisplayField\"\n [emptyMessage]=\"lookupEmptyMessage\"\n [dropdown]=\"!showSearch\"\n [appendTo]=\"lookupAppendTo\"\n [placeholder]=\"placeholder || ' '\"\n [autoHighlight]=\"true\"\n inputStyleClass=\"mousetrap\">\n <ng-template let-item pTemplate=\"selectedItem\">\n <span\n class=\"ui-autocomplete-token-label ng-tns-c65-43 ng-star-inserted\"\n [sTooltip]=\"lookupDisplayFieldTooltip ? item[lookupDisplayField] : null\"\n tooltipPosition=\"top\">\n {{item[lookupDisplayField]}}\n </span>\n </ng-template>\n </p-autoComplete>\n <button\n *ngIf=\"showSearch\"\n pButton\n type=\"button\"\n icon=\"fa fa-search\"\n class=\"button-addon\"\n [disabled]=\"disabled\"\n (click)=\"showDialog()\">\n </button>\n</div>\n<p-dialog\n appendTo=\"body\"\n styleClass=\"s-lookup-modal\"\n [header]=\"searchTitle || 'platform.angular_components.advanced_search' | translate\"\n [(visible)]=\"dialogVisible\"\n [modal]=\"true\"\n (onHide)=\"hideDialog()\"\n [blockScroll]=\"true\"\n [focusOnShow]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n #dialog>\n <div\n *ngIf=\"dialogVisible\"\n class=\"s-lookup-modal-container\">\n <div\n *ngIf=\"searchFields && searchFields.length\"\n class=\"filter\"\n [@collapseContent]=\"collapsed\n ? { value: 'hidden', params: { transitionParams: transitionOptions } }\n : { value: 'visible', params: { transitionParams: transitionOptions } }\"\n (@collapseContent.done)=\"onToggleDone()\">\n <form\n [formGroup]=\"formGroupDialog\"\n novalidate\n autocomplete=\"off\">\n <div\n *ngIf=\"!collapsed\"\n class=\"form-content\"\n [@childCollapseContent]=\"collapsed\n ? { value: ':leave', params: { transitionParams: transitionOptions } }\n : { value: ':enter', params: { transitionParams: transitionOptions } }\">\n <div class=\"filter-title sds-section-title\">\n {{ filterTitle || \"platform.angular_components.filters\" | translate }}\n </div>\n <div class=\"form-fields\">\n <s-dynamic-form\n [fields]=\"searchFields\"\n [form]=\"formGroupDialog\">\n </s-dynamic-form>\n </div>\n <div class=\"ui-g\">\n <div class=\"ui-g-12 no-button-margin\">\n <s-button\n [id]=\"id + '-filter-button'\"\n type=\"submit\"\n [label]=\"filterLabel || 'platform.angular_components.filter' | translate\"\n (onClick)=\"search()\"\n sTooltip=\"(ALT + SHIFT + F)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n <s-button\n [id]=\"id + '-clear-button'\"\n type=\"button\"\n [label]=\"clearLabel || 'platform.angular_components.clear' | translate\"\n (onClick)=\"clear()\"\n priority=\"link\"\n sTooltip=\"(ALT + SHIFT + L)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n </div>\n </div>\n </div>\n </form>\n </div>\n <div\n *ngIf=\"searchFields && searchFields.length\"\n class=\"filter-toggle\">\n <button\n [id]=\"id + '-filter-toggle-button'\"\n type=\"button\"\n (click)=\"filterToggle()\">\n <span\n class=\"fa\"\n [ngClass]=\"{'fa-chevron-left': !collapsed, 'fa-chevron-right': collapsed}\"\n aria-hidden=\"true\">\n </span>\n </button>\n </div>\n <div\n class=\"content\"\n [ngClass]=\"{'empty-content': !searchTotalRecords && !loading}\">\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n *ngIf=\"!searchTotalRecords && !loading\"\n [title]=\"searchEmptyTitle || 'platform.angular_components.no_records_found' | translate\"\n [description]=\"searchEmptyDescription\"\n iconClass=\"fa fa-search\">\n </s-empty-state>\n\n <div class=\"content-child\">\n <p-table\n [dataKey]=\"dataKey\"\n [value]=\"getGridData()\"\n [columns]=\"searchGridFields\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [paginator]=\"true\"\n sortMode=\"multiple\"\n [totalRecords]=\"searchTotalRecords\"\n [rows]=\"10\"\n [selection]=\"selected\"\n (onLazyLoad)=\"lazyLoadGrid($event)\"\n *sLoadingState=\"{ loading: loading, indicator: 'logo' }\"\n [multiSortMeta]=\"multiSortMeta\"\n [attr.data-hidden]=\"!searchTotalRecords && !loading\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"buttons-container no-button-margin\">\n <s-button\n *ngIf=\"showAddOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.add' | translate\"\n (onClick)=\"onAdd.emit()\">\n </s-button>\n <s-button\n *ngIf=\"showEditOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.edit' | translate\"\n [disabled]=\"selected.length !== 1\"\n (onClick)=\"onEdit.emit(this.selected[0])\">\n </s-button>\n <s-button\n *ngIf=\"showRemoveOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.remove' | translate\"\n [disabled]=\"!selected.length\"\n (onClick)=\"onRemove.emit(this.selected)\">\n </s-button>\n </div>\n </ng-template>\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col\n *ngIf=\"multiple\"\n style=\"width: 50px\" />\n <col\n *ngFor=\"let col of columns\"\n [style.width]=\"col.width\" />\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th\n *ngIf=\"multiple\"\n style=\"width: 50px\">\n <s-table-header-checkbox\n [useAllObject]=\"lookupRowProps ? false : true\"\n [rowProps]=\"lookupRowProps\">\n </s-table-header-checkbox>\n </th>\n <th\n [style.width]=\"col.width\"\n *ngFor=\"let col of columns\"\n [pSortableColumn]=\"col.sortableColumnName ? col.sortableColumnName : col.name\"\n [pSortableColumnDisabled]=\"sortableColumnsDisabled?.includes(col.name)\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.label }}</span>\n <p-sortIcon\n [field]=\"col.name\"\n *ngIf=\"!sortableColumnsDisabled?.includes(col.name)\">\n </p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns\n let-rowIndex=\"rowIndex\">\n <tr\n sNavigation\n [pSelectableRow]=\"rowData\"\n [pSelectableRowIndex]=\"rowIndex\"\n sDoubleClick (onDoubleClick)=\"onTableRowDoubleClick(rowData)\">\n <td\n *ngIf=\"multiple\"\n style=\"width: 50px\"\n tabindex=\"0\">\n <p-tableCheckbox\n [value]=\"rowData\"\n [pSelectableRow]=\"rowData\">\n </p-tableCheckbox>\n </td>\n <td\n [style.width]=\"col['width']\"\n *ngFor=\"let col of searchGridFields\"\n [ngSwitch]=\"col.type\"\n tabindex=\"0\">\n <ng-container *ngSwitchCase=\"'Boolean'\">\n <ng-container *ngIf=\"isBooleanValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getBooleanLabel(rowData, col.name, col.optionsLabel) }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Date'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate: col.calendarLocaleOptions?.dateFormat || \"L\" | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'DateTime'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'LocalDateTime'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Time'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedTime: col.calendarLocaleOptions?.dateFormat || \"LTS\" | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Integer'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getIntegerMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Double'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getDoubleMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Money'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getMoneyMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Number'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span> {{ getFieldValue(rowData, col.name) | localizedBignumber: getNumberMaskConfig(col) | async }} </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Enum'\">\n <ng-container *ngIf=\"getLabelForValue(getFieldValue(rowData, col.name), col.options); else emptyTemplate\">\n <ng-container *ngIf=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options); then withBadge; else withoutBadge\"></ng-container>\n <ng-template #withBadge>\n <s-badge\n [text]=\"getLabelForValue(getFieldValue(rowData, col.name), col.options)\"\n [color]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).color\"\n [type]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).type\"\n [iconClass]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).iconClass\"\n [iconPosition]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).iconPosition\">\n </s-badge>\n </ng-template>\n <ng-template #withoutBadge>\n <span> {{ getLabelForValue(getFieldValue(rowData, col.name), col.options) }} </span>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"col.mask && col.mask({ value: rowData })\">\n <ng-container *ngIf=\"(isNumber(rowData, col.name) || getFieldValue(rowData, col.name))\">\n <span>{{ getFieldValue(rowData, col.name) | sMaskFormatter: col.mask({ value: rowData }) }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!(col.mask && col.mask({ value: rowData }))\">\n <ng-container *ngIf=\"(isNumber(rowData, col.name) || getFieldValue(rowData, col.name)); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span [attr.data-hidden]=\"loading\">\n {{ printRecordTotalizer() }}\n </span>\n </ng-template>\n </p-table>\n </div>\n\n </div>\n </div>\n <p-footer>\n <s-button\n [id]=\"id + '-select-button'\"\n type=\"button\"\n [label]=\"selectLabel || 'platform.angular_components.select' | translate\"\n (onClick)=\"select()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [disabled]=\"!selected?.length\">\n </s-button>\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel || 'platform.angular_components.cancel' | translate\"\n (onClick)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n </s-button>\n </p-footer>\n</p-dialog>\n<ng-template #emptyTemplate>\n <span [ngClass]=\"'sds-empty-value'\">\n {{ emptyFieldLabel || 'platform.angular_components.not_informed' | translate }}\n </span>\n</ng-template>\n",
7457
+ template: "<div [ngClass]=\"{ inputgroup: showSearch }\">\n <p-autoComplete\n #autocomplete\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [dataKey]=\"dataKey\"\n [multiple]=\"multiple\"\n [inputId]=\"id + '-autocomplete'\"\n [forceSelection]=\"autocompleteForceSelection\"\n [suggestions]=\"getLookupSuggestions()\"\n (completeMethod)=\"onCompleteMethod($event)\"\n (onSelect)=\"onSelect.next($event)\"\n (onBlur)=\"onBlur.next($event)\"\n (onFocus)=\"onFocus.next($event)\"\n (onUnselect)=\"onUnselect.next($event)\"\n (onClear)=\"onClear.next($event)\"\n (onKeyUp)=\"onKeyUp.next($event)\"\n [field]=\"lookupDisplayField\"\n [emptyMessage]=\"lookupEmptyMessage\"\n [dropdown]=\"!showSearch\"\n [appendTo]=\"lookupAppendTo\"\n [placeholder]=\"placeholder || ' '\"\n [autoHighlight]=\"true\"\n inputStyleClass=\"mousetrap\"\n >\n <ng-template let-item pTemplate=\"selectedItem\">\n <span\n class=\"ui-autocomplete-token-label ng-tns-c65-43 ng-star-inserted\"\n [sTooltip]=\"lookupDisplayFieldTooltip ? item[lookupDisplayField] : null\"\n tooltipPosition=\"top\"\n >\n {{ item[lookupDisplayField] }}\n </span>\n </ng-template>\n </p-autoComplete>\n <button\n *ngIf=\"showSearch\"\n pButton\n type=\"button\"\n icon=\"fa fa-search\"\n class=\"button-addon\"\n [disabled]=\"disabled\"\n (click)=\"showDialog()\"\n ></button>\n</div>\n<p-dialog\n appendTo=\"body\"\n [styleClass]=\"'s-lookup-modal ' + (dialogFullscreen ? 's-lookup-modal-fullscreen' : '')\"\n [header]=\"searchTitle || 'platform.angular_components.advanced_search' | translate\"\n [(visible)]=\"dialogVisible\"\n [modal]=\"true\"\n (onHide)=\"hideDialog()\"\n [blockScroll]=\"true\"\n [focusOnShow]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n #dialog\n>\n <div *ngIf=\"dialogVisible\" class=\"s-lookup-modal-container\">\n <div\n *ngIf=\"searchFields && searchFields.length\"\n class=\"filter\"\n [@collapseContent]=\"\n collapsed\n ? { value: 'hidden', params: { transitionParams: transitionOptions } }\n : { value: 'visible', params: { transitionParams: transitionOptions } }\n \"\n (@collapseContent.done)=\"onToggleDone()\"\n >\n <form [formGroup]=\"formGroupDialog\" novalidate autocomplete=\"off\">\n <div\n *ngIf=\"!collapsed\"\n class=\"form-content\"\n [@childCollapseContent]=\"\n collapsed\n ? { value: ':leave', params: { transitionParams: transitionOptions } }\n : { value: ':enter', params: { transitionParams: transitionOptions } }\n \"\n >\n <div class=\"filter-title sds-section-title\">\n {{ filterTitle || \"platform.angular_components.filters\" | translate }}\n </div>\n <div class=\"form-fields\">\n <s-dynamic-form [fields]=\"searchFields\" [form]=\"formGroupDialog\"> </s-dynamic-form>\n </div>\n <div class=\"ui-g\">\n <div class=\"ui-g-12 no-button-margin\">\n <s-button\n [id]=\"id + '-filter-button'\"\n type=\"submit\"\n [label]=\"filterLabel || 'platform.angular_components.filter' | translate\"\n (onClick)=\"search()\"\n sTooltip=\"(ALT + SHIFT + F)\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n </s-button>\n <s-button\n [id]=\"id + '-clear-button'\"\n type=\"button\"\n [label]=\"clearLabel || 'platform.angular_components.clear' | translate\"\n (onClick)=\"clear()\"\n priority=\"link\"\n sTooltip=\"(ALT + SHIFT + L)\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n </s-button>\n </div>\n </div>\n </div>\n </form>\n </div>\n <div *ngIf=\"searchFields && searchFields.length\" class=\"filter-toggle\">\n <button [id]=\"id + '-filter-toggle-button'\" type=\"button\" (click)=\"filterToggle()\">\n <span class=\"fa\" [ngClass]=\"{ 'fa-chevron-left': !collapsed, 'fa-chevron-right': collapsed }\" aria-hidden=\"true\"> </span>\n </button>\n </div>\n <div class=\"content\" [ngClass]=\"{ 'empty-content': !searchTotalRecords && !loading }\">\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n *ngIf=\"!searchTotalRecords && !loading\"\n [title]=\"searchEmptyTitle || 'platform.angular_components.no_records_found' | translate\"\n [description]=\"searchEmptyDescription\"\n iconClass=\"fa fa-search\"\n >\n </s-empty-state>\n\n <div class=\"content-child\">\n <p-table\n [dataKey]=\"dataKey\"\n [value]=\"getGridData()\"\n [columns]=\"searchGridFields\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [paginator]=\"true\"\n sortMode=\"multiple\"\n [totalRecords]=\"searchTotalRecords\"\n [rows]=\"10\"\n [selection]=\"selected\"\n (onLazyLoad)=\"lazyLoadGrid($event)\"\n *sLoadingState=\"{ loading: loading, indicator: 'logo' }\"\n [multiSortMeta]=\"multiSortMeta\"\n [attr.data-hidden]=\"!searchTotalRecords && !loading\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"buttons-container no-button-margin\">\n <s-button\n *ngIf=\"showAddOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.add' | translate\"\n (onClick)=\"onAdd.emit()\"\n >\n </s-button>\n <s-button\n *ngIf=\"showEditOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.edit' | translate\"\n [disabled]=\"selected.length !== 1\"\n (onClick)=\"onEdit.emit(this.selected[0])\"\n >\n </s-button>\n <s-button\n *ngIf=\"showRemoveOption\"\n priority=\"default\"\n [label]=\"'platform.angular_components.remove' | translate\"\n [disabled]=\"!selected.length\"\n (onClick)=\"onRemove.emit(this.selected)\"\n >\n </s-button>\n </div>\n </ng-template>\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col *ngIf=\"multiple\" style=\"width: 50px\" />\n <col *ngFor=\"let col of columns\" [style.width]=\"col.width\" />\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngIf=\"multiple\" style=\"width: 50px\">\n <s-table-header-checkbox [useAllObject]=\"lookupRowProps ? false : true\" [rowProps]=\"lookupRowProps\">\n </s-table-header-checkbox>\n </th>\n <th\n [style.width]=\"col.width\"\n *ngFor=\"let col of columns\"\n [pSortableColumn]=\"col.sortableColumnName ? col.sortableColumnName : col.name\"\n [pSortableColumnDisabled]=\"sortableColumnsDisabled?.includes(col.name)\"\n >\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.label }}</span>\n <p-sortIcon [field]=\"col.name\" *ngIf=\"!sortableColumnsDisabled?.includes(col.name)\"> </p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-columns let-rowIndex=\"rowIndex\">\n <tr\n sNavigation\n [pSelectableRow]=\"rowData\"\n [pSelectableRowIndex]=\"rowIndex\"\n sDoubleClick\n (onDoubleClick)=\"onTableRowDoubleClick(rowData)\"\n >\n <td *ngIf=\"multiple\" style=\"width: 50px\" tabindex=\"0\">\n <p-tableCheckbox [value]=\"rowData\" [pSelectableRow]=\"rowData\"> </p-tableCheckbox>\n </td>\n <td [style.width]=\"col['width']\" *ngFor=\"let col of searchGridFields\" [ngSwitch]=\"col.type\" tabindex=\"0\">\n <ng-container *ngSwitchCase=\"'Boolean'\">\n <ng-container *ngIf=\"isBooleanValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getBooleanLabel(rowData, col.name, col.optionsLabel) }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Date'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{\n getFieldValue(rowData, col.name)\n | localizedDate: col.calendarLocaleOptions?.dateFormat || \"L\"\n | async\n }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'DateTime'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'LocalDateTime'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{ getFieldValue(rowData, col.name) | localizedDate | async }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Time'\">\n <ng-container *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\">\n <span>{{\n getFieldValue(rowData, col.name)\n | localizedTime: col.calendarLocaleOptions?.dateFormat || \"LTS\"\n | async\n }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Integer'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span>\n {{ getFieldValue(rowData, col.name) | localizedBignumber: getIntegerMaskConfig(col) | async }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Double'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span>\n {{ getFieldValue(rowData, col.name) | localizedBignumber: getDoubleMaskConfig(col) | async }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Money'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span>\n {{ getFieldValue(rowData, col.name) | localizedBignumber: getMoneyMaskConfig(col) | async }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Number'\">\n <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n <span>\n {{ getFieldValue(rowData, col.name) | localizedBignumber: getNumberMaskConfig(col) | async }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Enum'\">\n <ng-container\n *ngIf=\"getLabelForValue(getFieldValue(rowData, col.name), col.options); else emptyTemplate\"\n >\n <ng-container\n *ngIf=\"\n getBadgeFromValue(getFieldValue(rowData, col.name), col.options);\n then withBadge;\n else withoutBadge\n \"\n ></ng-container>\n <ng-template #withBadge>\n <s-badge\n [text]=\"getLabelForValue(getFieldValue(rowData, col.name), col.options)\"\n [color]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).color\"\n [type]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).type\"\n [iconClass]=\"getBadgeFromValue(getFieldValue(rowData, col.name), col.options).iconClass\"\n [iconPosition]=\"\n getBadgeFromValue(getFieldValue(rowData, col.name), col.options).iconPosition\n \"\n >\n </s-badge>\n </ng-template>\n <ng-template #withoutBadge>\n <span> {{ getLabelForValue(getFieldValue(rowData, col.name), col.options) }} </span>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"col.mask && col.mask({ value: rowData })\">\n <ng-container *ngIf=\"isNumber(rowData, col.name) || getFieldValue(rowData, col.name)\">\n <span>{{\n getFieldValue(rowData, col.name) | sMaskFormatter: col.mask({ value: rowData })\n }}</span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!(col.mask && col.mask({ value: rowData }))\">\n <ng-container\n *ngIf=\"isNumber(rowData, col.name) || getFieldValue(rowData, col.name); else emptyTemplate\"\n >\n <span>{{ getFieldValue(rowData, col.name) }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span [attr.data-hidden]=\"loading\">\n {{ printRecordTotalizer() }}\n </span>\n </ng-template>\n </p-table>\n </div>\n </div>\n </div>\n <p-footer>\n <s-button\n [id]=\"id + '-select-button'\"\n type=\"button\"\n [label]=\"selectLabel || 'platform.angular_components.select' | translate\"\n (onClick)=\"select()\"\n sTooltip=\"(ALT + SHIFT + S)\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [disabled]=\"!selected?.length\"\n >\n </s-button>\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel || 'platform.angular_components.cancel' | translate\"\n (onClick)=\"hideDialog()\"\n sTooltip=\"(ALT + SHIFT + C)\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n >\n </s-button>\n </p-footer>\n</p-dialog>\n<ng-template #emptyTemplate>\n <span [ngClass]=\"'sds-empty-value'\">\n {{ emptyFieldLabel || \"platform.angular_components.not_informed\" | translate }}\n </span>\n</ng-template>\n",
7454
7458
  providers: [
7455
7459
  {
7456
7460
  provide: NG_VALUE_ACCESSOR,
@@ -7480,7 +7484,7 @@ LookupComponent = LookupComponent_1 = __decorate([
7480
7484
  transition("* <=> *", animate("{{transitionParams}}")),
7481
7485
  ]),
7482
7486
  ],
7483
- styles: [".no-button-margin s-button{margin-left:0}s-lookup.ng-dirty.ng-invalid .ui-inputtext{border-color:#c13018;border-right-width:1px}s-lookup.ng-dirty.ng-invalid .button-addon,s-lookup.ng-dirty.ng-invalid .ui-autocomplete-dropdown{border-left:none}s-lookup .ui-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}s-lookup .inputgroup p-autocomplete+button,s-lookup p-autocomplete .ui-autocomplete-dropdown.ui-button{background-color:#fff;border-color:#ccc;border-width:1px 1px 1px 0;color:#333;min-height:34px;height:auto!important;min-width:auto;width:34px!important;overflow:hidden;border-top-left-radius:0;border-bottom-left-radius:0}s-lookup .inputgroup,s-lookup p-autocomplete span.ui-autocomplete-multiple{display:-ms-flexbox;display:flex}s-lookup .inputgroup p-autocomplete{display:inline-block}s-lookup .inputgroup p-autocomplete .ui-autocomplete-input{width:100%}s-lookup .ui-inputtext:focus{border-right-style:none!important}s-lookup .inputgroup p-autocomplete+button:enabled:hover,s-lookup .inputgroup p-autocomplete+button:focus{background-color:#e6e6e6;border-color:#ccc}s-lookup:not(.ng-dirty.ng-invalid) .inputgroup p-autocomplete .ui-widget .ui-inputtext{border-right-width:1px;border-right-style:solid}s-lookup .ui-autocomplete-input-token,s-lookup .ui-autocomplete-input-token input{width:100%}s-lookup .ui-autocomplete .ui-autocomplete-token{max-width:100%}s-lookup .ui-autocomplete .ui-autocomplete-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body .s-lookup-modal.ui-dialog .ui-dialog-content{padding:0;margin-bottom:0;max-height:none}s-lookup .ui-table-scrollable-body{min-width:100%}.s-lookup-modal{height:80%!important;max-width:100%!important;max-height:inherit!important;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .ui-dialog-content{height:auto!important;-ms-flex:1;flex:1;overflow:auto}.s-lookup-modal .ui-dialog-footer,.s-lookup-modal .ui-dialog-header{-ms-flex-negative:0;flex-shrink:0;border-radius:0 0 4px 4px}.s-lookup-modal .s-lookup-modal-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;height:100%;width:100%}.s-lookup-modal .s-lookup-modal-container .filter{position:relative;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:85%;background-color:rgba(229,234,234,.5);height:100%;padding:.571rem}.s-lookup-modal .s-lookup-modal-container .filter form{width:100%;height:100%}.s-lookup-modal .s-lookup-modal-container .filter form .form-content{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .s-lookup-modal-container .filter form .form-content .filter-title{padding-left:.5rem}.s-lookup-modal .s-lookup-modal-container .filter form .form-content .form-fields{overflow-y:auto}.s-lookup-modal .s-lookup-modal-container .filter-toggle{margin-top:15px;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:34px;border-radius:0 4px 4px 0}.s-lookup-modal .s-lookup-modal-container .filter-toggle button{-ms-flex-align:center;align-items:center;position:relative;background-color:rgba(229,234,234,.5);height:34px;width:100%;border:1px solid #e5eaea;outline:0;border-left:none;border-radius:0 4px 4px 0;cursor:pointer;text-decoration:none;text-transform:none;padding:7px;transition:background-color .2s ease-out,color .2s ease-out,border-color .2s ease-out}.s-lookup-modal .s-lookup-modal-container .filter-toggle button:focus,.s-lookup-modal .s-lookup-modal-container .filter-toggle button:hover{background-color:rgba(201,211,211,.5);border-color:#c9d3d3}.s-lookup-modal .s-lookup-modal-container .content{-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow-x:auto;padding:.5rem}.s-lookup-modal .s-lookup-modal-container .content.empty-content{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-lookup-modal .s-lookup-modal-container .content.empty-content .content-child{display:none}.s-lookup-modal .s-lookup-modal-container .content .content-child{height:100%;overflow:auto}.s-lookup-modal .s-lookup-modal-container .content .buttons-container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px}.s-lookup-modal .s-lookup-modal-container .content .s-loading-state-container,.s-lookup-modal .s-lookup-modal-container .content .s-loading-state-container .contents{height:100%}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table .ui-table-scrollable-wrapper{-ms-flex:1;flex:1;overflow:auto}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table .ui-table-scrollable-wrapper .ui-table-scrollable-header.ui-widget-header{overflow:inherit}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table .ui-table-scrollable-wrapper .ui-table-scrollable-body{overflow:visible}@media (max-width:767px){.s-lookup-modal{border:none!important;top:0!important;left:0!important;width:100%!important;height:100%!important}}@media (min-width:768px){.s-lookup-modal{width:80%!important}.s-lookup-modal .s-lookup-modal-container .filter{width:40%}}@media (min-width:1200px){.s-lookup-modal{width:60%!important}.s-lookup-modal .s-lookup-modal-container .filter{width:30%}}.inputgroup p-autocomplete{width:calc(100% - 34px)}"]
7487
+ styles: [".no-button-margin s-button{margin-left:0}s-lookup .button-addon{border-left:none!important}s-lookup.ng-dirty.ng-invalid .ui-inputtext{border-color:#c13018;border-right-width:1px}s-lookup.ng-dirty.ng-invalid .button-addon,s-lookup.ng-dirty.ng-invalid .ui-autocomplete-dropdown{border-left:none}s-lookup .ui-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}s-lookup .inputgroup p-autocomplete+button,s-lookup p-autocomplete .ui-autocomplete-dropdown.ui-button{background-color:#fff;border-color:#ccc;border-width:1px 1px 1px 0;color:#333;min-height:34px;height:auto!important;min-width:auto;width:34px!important;overflow:hidden;border-top-left-radius:0;border-bottom-left-radius:0}s-lookup .inputgroup,s-lookup p-autocomplete span.ui-autocomplete-multiple{display:-ms-flexbox;display:flex}s-lookup .inputgroup p-autocomplete{display:inline-block}s-lookup .inputgroup p-autocomplete .ui-autocomplete-input{width:100%}s-lookup .ui-inputtext:focus{border-right-style:none!important}s-lookup .inputgroup p-autocomplete+button:enabled:hover,s-lookup .inputgroup p-autocomplete+button:focus{background-color:#e6e6e6;border-color:#ccc}s-lookup:not(.ng-dirty.ng-invalid) .inputgroup p-autocomplete .ui-widget .ui-inputtext{border-right-width:1px;border-right-style:solid}s-lookup .ui-autocomplete-input-token,s-lookup .ui-autocomplete-input-token input{width:100%}s-lookup .ui-autocomplete .ui-autocomplete-token{max-width:100%}s-lookup .ui-autocomplete .ui-autocomplete-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body .s-lookup-modal.ui-dialog .ui-dialog-content{padding:0;margin-bottom:0;max-height:none}s-lookup .ui-table-scrollable-body{min-width:100%}.s-lookup-modal{height:80%!important;max-width:100%!important;max-height:inherit!important;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal-fullscreen{max-height:100%!important;height:100%!important;width:100%!important;max-width:100%!important;min-width:100%!important}.s-lookup-modal .ui-dialog-content{height:auto!important;-ms-flex:1;flex:1;overflow:auto}.s-lookup-modal .ui-dialog-footer,.s-lookup-modal .ui-dialog-header{-ms-flex-negative:0;flex-shrink:0;border-radius:0 0 4px 4px}.s-lookup-modal .s-lookup-modal-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;height:100%;width:100%}.s-lookup-modal .s-lookup-modal-container .filter{position:relative;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:85%;background-color:rgba(229,234,234,.5);height:100%;padding:.571rem}.s-lookup-modal .s-lookup-modal-container .filter form{width:100%;height:100%}.s-lookup-modal .s-lookup-modal-container .filter form .form-content{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .s-lookup-modal-container .filter form .form-content .filter-title{padding-left:.5rem}.s-lookup-modal .s-lookup-modal-container .filter form .form-content .form-fields{overflow-y:auto}.s-lookup-modal .s-lookup-modal-container .filter-toggle{margin-top:15px;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:34px;border-radius:0 4px 4px 0}.s-lookup-modal .s-lookup-modal-container .filter-toggle button{-ms-flex-align:center;align-items:center;position:relative;background-color:rgba(229,234,234,.5);height:34px;width:100%;border:1px solid #e5eaea;outline:0;border-left:none;border-radius:0 4px 4px 0;cursor:pointer;text-decoration:none;text-transform:none;padding:7px;transition:background-color .2s ease-out,color .2s ease-out,border-color .2s ease-out}.s-lookup-modal .s-lookup-modal-container .filter-toggle button:focus,.s-lookup-modal .s-lookup-modal-container .filter-toggle button:hover{background-color:rgba(201,211,211,.5);border-color:#c9d3d3}.s-lookup-modal .s-lookup-modal-container .content{-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow-x:auto;padding:.5rem}.s-lookup-modal .s-lookup-modal-container .content.empty-content{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-lookup-modal .s-lookup-modal-container .content.empty-content .content-child{display:none}.s-lookup-modal .s-lookup-modal-container .content .content-child{height:100%;overflow:auto}.s-lookup-modal .s-lookup-modal-container .content .buttons-container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px}.s-lookup-modal .s-lookup-modal-container .content .s-loading-state-container,.s-lookup-modal .s-lookup-modal-container .content .s-loading-state-container .contents{height:100%}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table .ui-table-scrollable-wrapper{-ms-flex:1;flex:1;overflow:auto}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table .ui-table-scrollable-wrapper .ui-table-scrollable-header.ui-widget-header{overflow:inherit}.s-lookup-modal .s-lookup-modal-container .content p-table>.ui-table .ui-table-scrollable-wrapper .ui-table-scrollable-body{overflow:visible}@media (max-width:767px){.s-lookup-modal{border:none!important;top:0!important;left:0!important;width:100%!important;height:100%!important}}@media (min-width:768px){.s-lookup-modal{width:80%!important}.s-lookup-modal .s-lookup-modal-container .filter{width:40%}}@media (min-width:1200px){.s-lookup-modal{width:60%!important}.s-lookup-modal .s-lookup-modal-container .filter{width:30%}}.inputgroup p-autocomplete{width:calc(100% - 34px)}"]
7484
7488
  })
7485
7489
  ], LookupComponent);
7486
7490
 
@@ -8092,7 +8096,7 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
8092
8096
  if (this.showFileUploadDate && ((_a = files[0]) === null || _a === void 0 ? void 0 : _a.objectId)) {
8093
8097
  this.getUploadDate(files);
8094
8098
  }
8095
- this._files = files.map(file => {
8099
+ this._files = files.map((file) => {
8096
8100
  if (this.isImage(file)) {
8097
8101
  file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));
8098
8102
  }
@@ -8100,8 +8104,7 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
8100
8104
  });
8101
8105
  }
8102
8106
  ngOnInit() {
8103
- this.supportedExtensions = this.supportedExtensions
8104
- .map(extension => extension.replace(".", "").toLowerCase());
8107
+ this.supportedExtensions = this.supportedExtensions.map((extension) => extension.replace(".", "").toLowerCase());
8105
8108
  }
8106
8109
  ngOnDestroy() {
8107
8110
  this.ngUsubscribe.next();
@@ -8182,6 +8185,15 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
8182
8185
  get files() {
8183
8186
  return this._files;
8184
8187
  }
8188
+ formatFileSize(size) {
8189
+ if (size === 0) {
8190
+ return "0 Bytes";
8191
+ }
8192
+ const k = 1024;
8193
+ const sizes = ["bytes", "KB", "MB", "GB", "TB"];
8194
+ const i = Math.floor(Math.log(size) / Math.log(k));
8195
+ return parseFloat((size / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
8196
+ }
8185
8197
  update() {
8186
8198
  const windowWidth = window.innerWidth;
8187
8199
  this.isSmallDevice = windowWidth <= Breakpoints.SM_MAX;
@@ -8224,8 +8236,9 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
8224
8236
  if (!blobFile) {
8225
8237
  return;
8226
8238
  }
8227
- this.fileUploadService.getMetadataCustomField({ objectId: blobFile[0].objectId })
8228
- .then(metadata => this.setModifiedDate(metadata));
8239
+ this.fileUploadService
8240
+ .getMetadataCustomField({ objectId: blobFile[0].objectId })
8241
+ .then((metadata) => this.setModifiedDate(metadata));
8229
8242
  }
8230
8243
  setModifiedDate(metadata) {
8231
8244
  const hour = moment$3(metadata.modified).format("HH");
@@ -8233,7 +8246,13 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
8233
8246
  const day = moment$3(metadata.modified).format("DD");
8234
8247
  const month = moment$3(metadata.modified).format("MM");
8235
8248
  const fullYear = moment$3(metadata.modified).format("YYYY");
8236
- this.modifiedDate = this.translate.instant("platform.angular_components.date_modified_custom_blob", { hour, minutes, day, month, fullYear });
8249
+ this.modifiedDate = this.translate.instant("platform.angular_components.date_modified_custom_blob", {
8250
+ hour,
8251
+ minutes,
8252
+ day,
8253
+ month,
8254
+ fullYear,
8255
+ });
8237
8256
  }
8238
8257
  };
8239
8258
  FileUploadComponent.nextId = 0;
@@ -8332,8 +8351,8 @@ __decorate([
8332
8351
  FileUploadComponent = FileUploadComponent_1 = __decorate([
8333
8352
  Component({
8334
8353
  selector: "s-file-upload",
8335
- template: "<div\n [id]=\"id\"\n class=\"s-fileupload\">\n <div class=\"s-fileupload-choose\">\n <input\n #inputUpload\n [id]=\"id+'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer\n ? $event.dataTransfer.files\n : $event.target.files)\"> \n <s-button\n *ngIf=\"permissions.includes(ADD_PERMISSION)\"\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled || fileLimit === files?.length\"\n [auxiliary]=\"false\">\n </s-button>\n </div>\n\n <section\n *ngIf=\"files.length\" \n [id]=\"id + 'fileupload-list'\"\n class=\"s-fileupload-list\"\n role=\"grid\">\n <ng-container *ngFor=\"let file of files; let i = index\">\n <div\n class=\"s-fileupload-list-file\"\n role=\"row\">\n <div\n [id]=\"id + '-file-' + i + '-name'\"\n class=\"s-fileupload-list-file-name\"\n role=\"gridcell\">\n <ng-container *ngTemplateOutlet=\"permissions.includes(READ_PERMISSION) && file.savedFile || file.progress === 100\n ? descriptionUrl\n : description; context: {\n $implicit: file,\n index: i\n }\">\n </ng-container>\n <span *ngIf=\"modifiedDate\" class=\"s-fileupload-list-file-name-date\">{{ modifiedDate }}</span>\n </div>\n <div\n class=\"s-fileupload-list-file-status\"\n role=\"gridcell\">\n <p-progressBar\n *ngIf=\"file.isUploading && !isSmallDevice\"\n [style]=\"{ 'width': '250px', 'background-color': '#d8d8d8', 'border-radius': '0px', 'height': '14px'}\"\n [value]=\"file.progress\"\n [showValue]=\"false\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\">\n </p-progressBar>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\" \n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\">\n </span>\n <span\n *ngIf=\"!file.isUploading && !file.error && file.progress === 100\"\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelSuccess || successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n [pTooltip]=\"successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\">\n </span>\n <span\n *ngIf=\"file.error?.message\" \n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\">\n </span>\n </div>\n <div\n class=\"s-fileupload-list-file-actions\"\n role=\"gridcell\">\n <a\n *ngIf=\"file.isUploading\"\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\">\n {{ cancelLabel || 'platform.angular_components.cancel' | translate }}\n </a>\n <a\n *ngIf=\"permissions.includes(REMOVE_PERMISSION) && !file.isUploading && !(disabled || !!formGroup?.disabled)\"\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"ariaLabelRemove || removeLabel || 'platform.angular_components.remove' | translate\">\n {{ removeLabel || 'platform.angular_components.remove' | translate }}\n </a>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template\n #descriptionUrl\n let-file\n let-i = index>\n <a\n [id]=\"id + '-file-' + i + '-name-link'\"\n tabindex=\"0\"\n (click)=\"onDowloadFile(i)\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\">{{file.name}}\n </a>\n <a\n style=\"display: none;\"\n [href]=\"file.objectURL\"\n target=\"_blank\"\n download\n #anchor>\n </a>\n</ng-template>\n\n<ng-template\n #description\n let-file>\n <span\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\">\n {{file.name}}\n </span>\n</ng-template>\n",
8336
- styles: [".s-fileupload .s-fileupload-choose{position:relative;margin:15px 0;width:-webkit-max-content;width:max-content}.s-fileupload input[type=file]{display:none}.s-fileupload-list{border:1px solid #ccc}.s-fileupload-list-file:not(:first-child){border-top:1px solid #ccc}.s-fileupload-list .s-fileupload-list-file{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;padding:15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:center;align-self:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .s-fileupload-list-file-name-date{font-size:.75rem;color:#999}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name>a{cursor:pointer;text-decoration:none}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-fileupload-list .s-fileupload-list-file .fas.fa-circle-notch{color:#d8d8d8;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-check{color:#0c9348;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-times{color:#c13018;font-size:12px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin-top:15px;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;width:100%}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action{text-decoration:none;color:#428bca}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :focus,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :visited,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action:hover{text-decoration:none}@media (min-width:768px){.s-fileupload-list .s-fileupload-list-file{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{width:auto;-ms-flex-positive:2;flex-grow:2}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{margin:0 15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin:0;width:auto}}"]
8354
+ template: "<div [id]=\"id\" class=\"s-fileupload\">\n <div class=\"s-fileupload-choose\">\n <input\n #inputUpload\n [id]=\"id + 'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer ? $event.dataTransfer.files : $event.target.files)\"\n />\n <s-button\n *ngIf=\"permissions.includes(ADD_PERMISSION)\"\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled || fileLimit === files?.length\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n\n <section *ngIf=\"files.length\" [id]=\"id + 'fileupload-list'\" class=\"s-fileupload-list\" role=\"grid\">\n <ng-container *ngFor=\"let file of files; let i = index\">\n <div class=\"s-fileupload-list-file\" role=\"row\">\n <div [id]=\"id + '-file-' + i + '-name'\" class=\"s-fileupload-list-file-name\" role=\"gridcell\">\n <div class=\"file-name-size\">\n <ng-container\n *ngTemplateOutlet=\"\n (permissions.includes(READ_PERMISSION) && file.savedFile) || file.progress === 100\n ? descriptionUrl\n : description;\n context: {\n $implicit: file,\n index: i\n }\n \"\n >\n </ng-container>\n \n <span>{{ formatFileSize(file.size) }}</span>\n </div>\n\n <span *ngIf=\"modifiedDate\" class=\"s-fileupload-list-file-name-date\">{{ modifiedDate }}</span>\n </div>\n <div class=\"s-fileupload-list-file-status\" role=\"gridcell\">\n <p-progressBar\n *ngIf=\"file.isUploading && !isSmallDevice\"\n [style]=\"{ width: '250px', 'background-color': '#d8d8d8', 'border-radius': '0px', height: '14px' }\"\n [value]=\"file.progress\"\n [showValue]=\"false\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\"\n >\n </p-progressBar>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\"\n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\"\n >\n </span>\n <span\n *ngIf=\"!file.isUploading && !file.error && file.progress === 100\"\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"\n ariaLabelSuccess || successTooltip || 'platform.angular_components.file_attached_successfully' | translate\n \"\n [pTooltip]=\"successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n <span\n *ngIf=\"file.error?.message\"\n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n </div>\n <div class=\"s-fileupload-list-file-actions\" role=\"gridcell\">\n <a\n *ngIf=\"file.isUploading\"\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\"\n >\n {{ cancelLabel || \"platform.angular_components.cancel\" | translate }}\n </a>\n <a\n *ngIf=\"permissions.includes(REMOVE_PERMISSION) && !file.isUploading && !(disabled || !!formGroup?.disabled)\"\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"ariaLabelRemove || removeLabel || 'platform.angular_components.remove' | translate\"\n >\n {{ removeLabel || \"platform.angular_components.remove\" | translate }}\n </a>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template #descriptionUrl let-file let-i=\"index\">\n <a [id]=\"id + '-file-' + i + '-name-link'\" tabindex=\"0\" (click)=\"onDowloadFile(i)\" [attr.aria-label]=\"ariaLabelFileName || file.name\"\n >{{ file.name }}\n </a>\n <a style=\"display: none\" [href]=\"file.objectURL\" target=\"_blank\" download #anchor> </a>\n</ng-template>\n\n<ng-template #description let-file>\n <span tabindex=\"0\" [attr.aria-label]=\"ariaLabelFileName || file.name\">\n {{ file.name }}\n </span>\n</ng-template>\n",
8355
+ styles: [".s-fileupload .s-fileupload-choose{position:relative;margin:15px 0;width:-webkit-max-content;width:max-content}.s-fileupload input[type=file]{display:none}.s-fileupload-list{border:1px solid #ccc}.s-fileupload-list-file:not(:first-child){border-top:1px solid #ccc}.s-fileupload-list .s-fileupload-list-file{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;padding:15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:center;align-self:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .file-name-size{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;gap:20px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .s-fileupload-list-file-name-date{font-size:.75rem;color:#999}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name>a{cursor:pointer;text-decoration:none}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-fileupload-list .s-fileupload-list-file .fas.fa-circle-notch{color:#d8d8d8;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-check{color:#0c9348;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-times{color:#c13018;font-size:12px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin-top:15px;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;width:100%}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action{text-decoration:none;color:#428bca}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :focus,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :visited,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action:hover{text-decoration:none}@media (min-width:768px){.s-fileupload-list .s-fileupload-list-file{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{width:auto;-ms-flex-positive:2;flex-grow:2}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{margin:0 15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin:0;width:auto}}"]
8337
8356
  })
8338
8357
  ], FileUploadComponent);
8339
8358