@smartbit4all/ng-client 4.2.126 → 4.2.128
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/smart-client/smart-component-api-client.mjs +39 -36
- package/esm2022/lib/smart-form/api/api/api.mjs +1 -1
- package/esm2022/lib/smart-form/api/api/default.service.mjs +1 -1
- package/esm2022/lib/smart-form/api/api.module.mjs +1 -1
- package/esm2022/lib/smart-form/api/configuration.mjs +1 -1
- package/esm2022/lib/smart-form/api/encoder.mjs +1 -1
- package/esm2022/lib/smart-form/api/index.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/fileUploaderProperties.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/imageProperties.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/models.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/propertyMapping.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/smartFormInputMode.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/smartFormWidgetDirection.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/smartLayoutDefinition.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/smartMatrixModel.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/smartWidgetHint.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/sortDefinition.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/textFieldProperties.mjs +1 -1
- package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +2 -1
- package/esm2022/lib/smart-form/api/param.mjs +1 -1
- package/esm2022/lib/smart-form/api/variables.mjs +1 -1
- package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +3 -2
- package/esm2022/lib/smart-form/smartform.component.mjs +6 -5
- package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +96 -66
- package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +36 -21
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +4 -4
- package/fesm2022/smartbit4all-ng-client.mjs +167 -117
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-client/smart-component-api-client.d.ts +9 -7
- package/lib/smart-form/api/model/valueChangeMode.d.ts +2 -1
- package/lib/smart-form/smartform.component.d.ts +3 -2
- package/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.d.ts +19 -10
- package/lib/smart-form/widgets/smartformwidget/smartformwidget.component.d.ts +9 -12
- package/package.json +1 -1
- package/smartbit4all-ng-client-4.2.128.tgz +0 -0
- package/smartbit4all-ng-client-4.2.126.tgz +0 -0
|
@@ -18,7 +18,7 @@ export class PrimeFileUploaderComponent {
|
|
|
18
18
|
this.title = this.title ?? 'Dokumentum hozzáadása';
|
|
19
19
|
this.subTitle = this.subTitle ?? 'tallózás vagy behúzás';
|
|
20
20
|
this.maxSizeBytes = this.maxSizeMb * 1024 * 1024;
|
|
21
|
-
this.
|
|
21
|
+
this.fileFormatsString = this.fileFormats?.join(', ') ?? '';
|
|
22
22
|
}
|
|
23
23
|
isMobile() {
|
|
24
24
|
return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
|
|
@@ -67,11 +67,11 @@ export class PrimeFileUploaderComponent {
|
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrimeFileUploaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: PrimeFileUploaderComponent, selector: "prime-file-uploader", inputs: { isMultiple: "isMultiple", autoUpload: "autoUpload", maxSizeMb: "maxSizeMb", fileFormats: "fileFormats", title: "title", subTitle: "subTitle" }, outputs: { uploadFilesEvent: "uploadFilesEvent" }, viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }], ngImport: i0, template: "@if(isMultiple){\r\n<p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSelect)=\"select($event)\"\r\n (onSend)=\"uploadFiles($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"fileFormatsString\"\r\n [maxFileSize]=\"maxSizeBytes\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!isMobile()\">\r\n <ng-container *ngTemplateOutlet=\"uploader\" />\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\r\n </ng-template>\r\n</p-fileUpload>\r\n} @else{\r\n<p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSelect)=\"select($event)\"\r\n (onSend)=\"uploadFiles($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"fileFormatsString\"\r\n [maxFileSize]=\"maxSizeBytes\"\r\n [ngClass]=\"{ singlePrimeNg: true, autoUpload: autoUpload }\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!isMobile()\">\r\n <ng-container *ngTemplateOutlet=\"uploader\" />\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\r\n </ng-template>\r\n</p-fileUpload>\r\n}\r\n\r\n<ng-template #uploader let-file let-i=\"index\">\r\n <div class=\"uploadField\" (click)=\"fileUploadPrime.choose()\">\r\n <div class=\"uploadData\"\r\n ><smart-icon class=\"uploadIcon\" [icon]=\"'upload'\"></smart-icon>\r\n <div class=\"dataField\">\r\n <span class=\"title message\">{{ title }}</span>\r\n <span class=\"message\">{{ subTitle }}</span>\r\n <span class=\"message\">{{ fileFormatsString }}</span>\r\n <span class=\"message\"> max {{ maxSizeMb }} Mb</span>\r\n </div>\r\n </div>\r\n @if(isMultiple == false && autoUpload == false && (files && files.length > 0)){\r\n <ui-action-button [descriptor]=\"uploadButton\" (actionClick)=\"fileUploadPrime.upload()\" />\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fileContainer let-file let-i=\"index\">\r\n <div class=\"p-fileupload-file\">\r\n @if(file.objectURL){\r\n <img role=\"presentation\" [alt]=\"file.name\" [src]=\"file.objectURL\" width=\"50\" height=\"50\" />\r\n }@else {\r\n <i class=\"pi pi-file\" style=\"font-size: 2rem\"></i>\r\n }\r\n\r\n <div class=\"fileData\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n <div class=\"fileButtons\">\r\n <button\r\n pButton\r\n icon=\"pi pi-download\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"downloadFile(file)\"\r\n aria-label=\"Download\"\r\n style=\"color: var(--primary-color)\"\r\n ></button>\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"fileUploadPrime.remove($event, i)\"\r\n aria-label=\"Remove\"\r\n style=\"color: rgb(239, 68, 68)\"\r\n ></button\r\n ></div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}:host ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}:host ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}:host ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{font-size:smaller;text-align:center;color:#6b7280}.title{font-size:unset;color:var(--primary-color)}.uploadField{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:1rem;padding:.5rem 1rem;cursor:pointer}.uploadField:hover{background-color:rgb(from var(--border-color) r g b / .1)}:host ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}:host ::ng-deep .p-fileupload-choose,:host ::ng-deep .p-fileupload-row ::ng-deep button,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}:host ::ng-deep .p-fileupload-choose:hover,:host ::ng-deep .p-fileupload-row ::ng-deep button:hover,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.fileSize{display:flex;justify-content:flex-start}.fileData{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding-right:1rem}.uploadData{flex:1;display:flex;flex-direction:row;justify-content:flex-start;gap:1rem}.fileName{text-align:start}.singlePrimeNg ::ng-deep .uploadField{padding:1rem}.uploadIcon{align-content:center}:host ::ng-deep .uploadIcon i{font-size:2rem}:host ::ng-deep .p-fileupload-file i,:host ::ng-deep .uploadIcon i,:host ::ng-deep img{display:flex;justify-content:center;width:3rem}.dataField{display:flex;flex-direction:column;justify-content:flex-start;align-items:baseline}:host ::ng-deep .autoUpload.singlePrimeNg ::ng-deep .p-fileupload-buttonbar{display:none!important}.singlePrimeNg ::ng-deep .p-fileupload-content{display:flex;flex-direction:column-reverse}.singlePrimeNg ::ng-deep .p-fileupload-content p-progressbar,.singlePrimeNg ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:none!important}.singlePrimeNg ::ng-deep .p-fileupload-file{border:unset;border-top:1px solid var(--border-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i6.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
70
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: PrimeFileUploaderComponent, selector: "prime-file-uploader", inputs: { isMultiple: "isMultiple", autoUpload: "autoUpload", maxSizeMb: "maxSizeMb", fileFormats: "fileFormats", title: "title", subTitle: "subTitle" }, outputs: { uploadFilesEvent: "uploadFilesEvent" }, viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }], ngImport: i0, template: "@if(isMultiple){\r\n<p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSelect)=\"select($event)\"\r\n (onSend)=\"uploadFiles($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"fileFormatsString\"\r\n [maxFileSize]=\"maxSizeBytes\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!isMobile()\">\r\n <ng-container *ngTemplateOutlet=\"uploader\" />\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\r\n </ng-template>\r\n</p-fileUpload>\r\n} @else{\r\n<p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSelect)=\"select($event)\"\r\n (onSend)=\"uploadFiles($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"fileFormatsString\"\r\n [maxFileSize]=\"maxSizeBytes\"\r\n [ngClass]=\"{ singlePrimeNg: true, autoUpload: autoUpload }\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!isMobile()\">\r\n <ng-container *ngTemplateOutlet=\"uploader\" />\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\r\n </ng-template>\r\n</p-fileUpload>\r\n}\r\n\r\n<ng-template #uploader let-file let-i=\"index\">\r\n <div class=\"uploadField\" (click)=\"fileUploadPrime.choose()\">\r\n <div class=\"uploadData\"\r\n ><smart-icon class=\"uploadIcon\" [icon]=\"'upload'\"></smart-icon>\r\n <div class=\"dataField\">\r\n <span class=\"title message\">{{ title }}</span>\r\n <span class=\"message\">{{ subTitle }}</span>\r\n <span class=\"message\">{{ fileFormatsString }}</span>\r\n <span class=\"message\"> max {{ maxSizeMb }} Mb</span>\r\n </div>\r\n </div>\r\n @if(isMultiple == false && autoUpload == false && (files && files.length > 0)){\r\n <ui-action-button [descriptor]=\"uploadButton\" (actionClick)=\"fileUploadPrime.upload()\" />\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fileContainer let-file let-i=\"index\">\r\n <div class=\"p-fileupload-file\">\r\n @if(file.objectURL){\r\n <img role=\"presentation\" [alt]=\"file.name\" [src]=\"file.objectURL\" width=\"50\" height=\"50\" />\r\n }@else {\r\n <i class=\"pi pi-file\" style=\"font-size: 2rem\"></i>\r\n }\r\n\r\n <div class=\"fileData\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n <div class=\"fileButtons\">\r\n <button\r\n pButton\r\n icon=\"pi pi-download\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"downloadFile(file)\"\r\n aria-label=\"Download\"\r\n style=\"color: var(--primary-color)\"\r\n ></button>\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"fileUploadPrime.remove($event, i)\"\r\n aria-label=\"Remove\"\r\n style=\"color: rgb(239, 68, 68)\"\r\n ></button\r\n ></div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}:host ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}:host ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}:host ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{font-size:smaller;text-align:center;color:#6b7280}.title{font-size:unset;color:var(--primary-color)}.uploadField{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:1rem;padding:.5rem 1rem;cursor:pointer}.uploadField:hover{background-color:rgb(from var(--border-color) r g b / .1)}:host ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}:host ::ng-deep .p-fileupload-choose,:host ::ng-deep .p-fileupload-row ::ng-deep button,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}:host ::ng-deep .p-fileupload-choose:hover,:host ::ng-deep .p-fileupload-row ::ng-deep button:hover,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.fileSize{display:flex;justify-content:flex-start}.fileData{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding-right:1rem}.uploadData{flex:1;display:flex;flex-direction:row;justify-content:flex-start;gap:1rem}.fileName{text-align:start}.singlePrimeNg ::ng-deep .uploadField{padding:1rem}.uploadIcon{align-content:center}:host ::ng-deep .uploadIcon i{font-size:2rem}:host ::ng-deep .p-fileupload-file i,:host ::ng-deep .uploadIcon i,:host ::ng-deep img{display:flex;justify-content:center;width:3rem}.dataField{display:flex;flex-direction:column;justify-content:flex-start;align-items:baseline}:host ::ng-deep .autoUpload.singlePrimeNg ::ng-deep .p-fileupload-buttonbar{display:none!important}.singlePrimeNg ::ng-deep .p-fileupload-content{display:flex;flex-direction:column-reverse}.singlePrimeNg ::ng-deep .p-fileupload-content p-progressbar,.singlePrimeNg ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:none!important}.singlePrimeNg ::ng-deep .p-fileupload-file{border:unset;border-top:1px solid var(--border-color)}:host ::ng-deep .p-fileupload.p-fileupload-advanced .p-message{margin:unset}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i6.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
71
71
|
}
|
|
72
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrimeFileUploaderComponent, decorators: [{
|
|
73
73
|
type: Component,
|
|
74
|
-
args: [{ selector: 'prime-file-uploader', template: "@if(isMultiple){\r\n<p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSelect)=\"select($event)\"\r\n (onSend)=\"uploadFiles($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"fileFormatsString\"\r\n [maxFileSize]=\"maxSizeBytes\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!isMobile()\">\r\n <ng-container *ngTemplateOutlet=\"uploader\" />\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\r\n </ng-template>\r\n</p-fileUpload>\r\n} @else{\r\n<p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSelect)=\"select($event)\"\r\n (onSend)=\"uploadFiles($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"fileFormatsString\"\r\n [maxFileSize]=\"maxSizeBytes\"\r\n [ngClass]=\"{ singlePrimeNg: true, autoUpload: autoUpload }\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!isMobile()\">\r\n <ng-container *ngTemplateOutlet=\"uploader\" />\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\r\n </ng-template>\r\n</p-fileUpload>\r\n}\r\n\r\n<ng-template #uploader let-file let-i=\"index\">\r\n <div class=\"uploadField\" (click)=\"fileUploadPrime.choose()\">\r\n <div class=\"uploadData\"\r\n ><smart-icon class=\"uploadIcon\" [icon]=\"'upload'\"></smart-icon>\r\n <div class=\"dataField\">\r\n <span class=\"title message\">{{ title }}</span>\r\n <span class=\"message\">{{ subTitle }}</span>\r\n <span class=\"message\">{{ fileFormatsString }}</span>\r\n <span class=\"message\"> max {{ maxSizeMb }} Mb</span>\r\n </div>\r\n </div>\r\n @if(isMultiple == false && autoUpload == false && (files && files.length > 0)){\r\n <ui-action-button [descriptor]=\"uploadButton\" (actionClick)=\"fileUploadPrime.upload()\" />\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fileContainer let-file let-i=\"index\">\r\n <div class=\"p-fileupload-file\">\r\n @if(file.objectURL){\r\n <img role=\"presentation\" [alt]=\"file.name\" [src]=\"file.objectURL\" width=\"50\" height=\"50\" />\r\n }@else {\r\n <i class=\"pi pi-file\" style=\"font-size: 2rem\"></i>\r\n }\r\n\r\n <div class=\"fileData\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n <div class=\"fileButtons\">\r\n <button\r\n pButton\r\n icon=\"pi pi-download\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"downloadFile(file)\"\r\n aria-label=\"Download\"\r\n style=\"color: var(--primary-color)\"\r\n ></button>\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"fileUploadPrime.remove($event, i)\"\r\n aria-label=\"Remove\"\r\n style=\"color: rgb(239, 68, 68)\"\r\n ></button\r\n ></div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}:host ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}:host ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}:host ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{font-size:smaller;text-align:center;color:#6b7280}.title{font-size:unset;color:var(--primary-color)}.uploadField{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:1rem;padding:.5rem 1rem;cursor:pointer}.uploadField:hover{background-color:rgb(from var(--border-color) r g b / .1)}:host ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}:host ::ng-deep .p-fileupload-choose,:host ::ng-deep .p-fileupload-row ::ng-deep button,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}:host ::ng-deep .p-fileupload-choose:hover,:host ::ng-deep .p-fileupload-row ::ng-deep button:hover,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.fileSize{display:flex;justify-content:flex-start}.fileData{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding-right:1rem}.uploadData{flex:1;display:flex;flex-direction:row;justify-content:flex-start;gap:1rem}.fileName{text-align:start}.singlePrimeNg ::ng-deep .uploadField{padding:1rem}.uploadIcon{align-content:center}:host ::ng-deep .uploadIcon i{font-size:2rem}:host ::ng-deep .p-fileupload-file i,:host ::ng-deep .uploadIcon i,:host ::ng-deep img{display:flex;justify-content:center;width:3rem}.dataField{display:flex;flex-direction:column;justify-content:flex-start;align-items:baseline}:host ::ng-deep .autoUpload.singlePrimeNg ::ng-deep .p-fileupload-buttonbar{display:none!important}.singlePrimeNg ::ng-deep .p-fileupload-content{display:flex;flex-direction:column-reverse}.singlePrimeNg ::ng-deep .p-fileupload-content p-progressbar,.singlePrimeNg ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:none!important}.singlePrimeNg ::ng-deep .p-fileupload-file{border:unset;border-top:1px solid var(--border-color)}\n"] }]
|
|
74
|
+
args: [{ selector: 'prime-file-uploader', template: "@if(isMultiple){\r\n<p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSelect)=\"select($event)\"\r\n (onSend)=\"uploadFiles($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"fileFormatsString\"\r\n [maxFileSize]=\"maxSizeBytes\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!isMobile()\">\r\n <ng-container *ngTemplateOutlet=\"uploader\" />\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\r\n </ng-template>\r\n</p-fileUpload>\r\n} @else{\r\n<p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSelect)=\"select($event)\"\r\n (onSend)=\"uploadFiles($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"fileFormatsString\"\r\n [maxFileSize]=\"maxSizeBytes\"\r\n [ngClass]=\"{ singlePrimeNg: true, autoUpload: autoUpload }\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!isMobile()\">\r\n <ng-container *ngTemplateOutlet=\"uploader\" />\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\r\n </ng-template>\r\n</p-fileUpload>\r\n}\r\n\r\n<ng-template #uploader let-file let-i=\"index\">\r\n <div class=\"uploadField\" (click)=\"fileUploadPrime.choose()\">\r\n <div class=\"uploadData\"\r\n ><smart-icon class=\"uploadIcon\" [icon]=\"'upload'\"></smart-icon>\r\n <div class=\"dataField\">\r\n <span class=\"title message\">{{ title }}</span>\r\n <span class=\"message\">{{ subTitle }}</span>\r\n <span class=\"message\">{{ fileFormatsString }}</span>\r\n <span class=\"message\"> max {{ maxSizeMb }} Mb</span>\r\n </div>\r\n </div>\r\n @if(isMultiple == false && autoUpload == false && (files && files.length > 0)){\r\n <ui-action-button [descriptor]=\"uploadButton\" (actionClick)=\"fileUploadPrime.upload()\" />\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fileContainer let-file let-i=\"index\">\r\n <div class=\"p-fileupload-file\">\r\n @if(file.objectURL){\r\n <img role=\"presentation\" [alt]=\"file.name\" [src]=\"file.objectURL\" width=\"50\" height=\"50\" />\r\n }@else {\r\n <i class=\"pi pi-file\" style=\"font-size: 2rem\"></i>\r\n }\r\n\r\n <div class=\"fileData\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n <div class=\"fileButtons\">\r\n <button\r\n pButton\r\n icon=\"pi pi-download\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"downloadFile(file)\"\r\n aria-label=\"Download\"\r\n style=\"color: var(--primary-color)\"\r\n ></button>\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"fileUploadPrime.remove($event, i)\"\r\n aria-label=\"Remove\"\r\n style=\"color: rgb(239, 68, 68)\"\r\n ></button\r\n ></div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}:host ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}:host ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}:host ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{font-size:smaller;text-align:center;color:#6b7280}.title{font-size:unset;color:var(--primary-color)}.uploadField{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:1rem;padding:.5rem 1rem;cursor:pointer}.uploadField:hover{background-color:rgb(from var(--border-color) r g b / .1)}:host ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}:host ::ng-deep .p-fileupload-choose,:host ::ng-deep .p-fileupload-row ::ng-deep button,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}:host ::ng-deep .p-fileupload-choose:hover,:host ::ng-deep .p-fileupload-row ::ng-deep button:hover,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.fileSize{display:flex;justify-content:flex-start}.fileData{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding-right:1rem}.uploadData{flex:1;display:flex;flex-direction:row;justify-content:flex-start;gap:1rem}.fileName{text-align:start}.singlePrimeNg ::ng-deep .uploadField{padding:1rem}.uploadIcon{align-content:center}:host ::ng-deep .uploadIcon i{font-size:2rem}:host ::ng-deep .p-fileupload-file i,:host ::ng-deep .uploadIcon i,:host ::ng-deep img{display:flex;justify-content:center;width:3rem}.dataField{display:flex;flex-direction:column;justify-content:flex-start;align-items:baseline}:host ::ng-deep .autoUpload.singlePrimeNg ::ng-deep .p-fileupload-buttonbar{display:none!important}.singlePrimeNg ::ng-deep .p-fileupload-content{display:flex;flex-direction:column-reverse}.singlePrimeNg ::ng-deep .p-fileupload-content p-progressbar,.singlePrimeNg ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:none!important}.singlePrimeNg ::ng-deep .p-fileupload-file{border:unset;border-top:1px solid var(--border-color)}:host ::ng-deep .p-fileupload.p-fileupload-advanced .p-message{margin:unset}\n"] }]
|
|
75
75
|
}], propDecorators: { fileUploadPrime: [{
|
|
76
76
|
type: ViewChild,
|
|
77
77
|
args: ['fileUploadPrimeNg']
|
|
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
90
90
|
}], uploadFilesEvent: [{
|
|
91
91
|
type: Output
|
|
92
92
|
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWUtZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvdXBsb2FkLXdpZGdldC9wcmltZS1maWxlLXVwbG9hZGVyL3ByaW1lLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvcHJpbWUtZmlsZS11cGxvYWRlci9wcmltZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFDTCxZQUFZLEVBQ1osa0JBQWtCLEdBRW5CLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTywwQkFBMEI7SUFMdkM7UUFTVyxlQUFVLEdBQWEsS0FBSyxDQUFDO1FBQzdCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFldEIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBRXpDLENBQUM7S0F3RE47SUFqRUMsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSx1QkFBdUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksdUJBQXVCLENBQUM7UUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBTUQsUUFBUTtRQUNOLE9BQU8sMkJBQTJCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVTtRQUNmLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUs7U0FDbEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVU7UUFDckIsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtBQVk7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPO1lBQ0wsS0FBSyxFQUFFLFdBQVc7WUFDbEIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU07WUFDL0IsSUFBSSxFQUFFLFFBQVE7WUFDZCxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7K0dBN0VVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDhYQ2R2QyxzMUdBOEZBOzs0RkRoRmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQjs4QkFLQyxlQUFlO3NCQUE5QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFFckIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFZSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBVcGxvYWRXaWRnZXRVdGlscyB9IGZyb20gJy4uL3VwbG9hZC13aWRnZXQudXRpbHMnO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncHJpbWUtZmlsZS11cGxvYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ByaW1lLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wcmltZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpbWVGaWxlVXBsb2FkZXJDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWRQcmltZU5nJykgZmlsZVVwbG9hZFByaW1lITogRmlsZVVwbG9hZDtcclxuXHJcbiAgQElucHV0KCkgaXNNdWx0aXBsZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYXV0b1VwbG9hZD86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXhTaXplTWI6IG51bWJlciA9IDI1O1xyXG4gIEBJbnB1dCgpIGZpbGVGb3JtYXRzPzogc3RyaW5nW107XHJcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3ViVGl0bGU/OiBzdHJpbmc7XHJcblxyXG4gIG1heFNpemVCeXRlcz86IG51bWJlcjtcclxuICBmaWxlRm9ybWF0c1N0cmluZz86IHN0cmluZztcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRpdGxlID0gdGhpcy50aXRsZSA/PyAnRG9rdW1lbnR1bSBob3p6w6FhZMOhc2EnO1xyXG4gICAgdGhpcy5zdWJUaXRsZSA9IHRoaXMuc3ViVGl0bGUgPz8gJ3RhbGzDs3rDoXMgdmFneSBiZWjDunrDoXMnO1xyXG4gICAgdGhpcy5tYXhTaXplQnl0ZXMgPSB0aGlzLm1heFNpemVNYiAqIDEwMjQgKiAxMDI0O1xyXG4gICAgdGhpcy5maWxlRm9ybWF0cyA9IHRoaXMuZmlsZUZvcm1hdHM/LmNvbmNhdCgnLCAnKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB1cGxvYWRGaWxlc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWxlczogYW55W107XHJcbiAgfT4oKTtcclxuXHJcbiAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gL2lQaG9uZXxpUGFkfGlQb2R8QW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFByaW1lLmNsZWFyKCk7XHJcbiAgfVxyXG4gIG9uRmlsZVNlbGVjdChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRQcmltZS5vbkZpbGVTZWxlY3QoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dG9VcGxvYWQpIHtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlcyhldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwbG9hZEZpbGVzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXBsb2FkRmlsZXNFdmVudC5lbWl0KHtcclxuICAgICAgZmlsZXM6IHRoaXMuZmlsZVVwbG9hZFByaW1lLmZpbGVzLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5maWxlVXBsb2FkUHJpbWUuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShmaWxlOiBGaWxlKSB7XHJcbiAgICBsZXQgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICBsZXQgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlLm5hbWU7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0U2l6ZShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVcGxvYWRXaWRnZXRVdGlscy5mb3JtYXRTaXplKGJ5dGVzKTtcclxuICB9XHJcblxyXG4gIGdldCBmaWxlcygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkUHJpbWU/LmZpbGVzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGZpbGVzKGZpbGVzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkUHJpbWUuZmlsZXMgPSBmaWxlcztcclxuICB9XHJcblxyXG4gIGdldCB1cGxvYWRCdXR0b24oKTogVWlBY3Rpb25EZXNjcmlwdG9yIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRpdGxlOiAnRmVsdMO2bHTDqXMnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VELFxyXG4gICAgICBpY29uOiAndXBsb2FkJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiQGlmKGlzTXVsdGlwbGUpe1xyXG48cC1maWxlVXBsb2FkXHJcbiAgI2ZpbGVVcGxvYWRQcmltZU5nXHJcbiAgbmFtZT1cImZpbGVzW11cIlxyXG4gIHVybD1cIlwiXHJcbiAgKG9uU2VsZWN0KT1cInNlbGVjdCgkZXZlbnQpXCJcclxuICAob25TZW5kKT1cInVwbG9hZEZpbGVzKCRldmVudClcIlxyXG4gIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcclxuICBbYWNjZXB0XT1cImZpbGVGb3JtYXRzU3RyaW5nXCJcclxuICBbbWF4RmlsZVNpemVdPVwibWF4U2l6ZUJ5dGVzXCJcclxuICB1cGxvYWRMYWJlbD1cIkZlbHTDtmx0w6lzXCJcclxuICBjYW5jZWxMYWJlbD1cIk3DqWdzZW1cIlxyXG4gIGNob29zZUxhYmVsPVwiVsOhbGFzenTDoXNcIlxyXG4+XHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiAqbmdJZj1cIiFpc01vYmlsZSgpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBsb2FkZXJcIiAvPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbGVcIiBsZXQtZmlsZSBsZXQtaT1cImluZGV4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUNvbnRhaW5lcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGZpbGUsIGk6IGkgfVwiIC8+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWZpbGVVcGxvYWQ+XHJcbn0gQGVsc2V7XHJcbjxwLWZpbGVVcGxvYWRcclxuICAjZmlsZVVwbG9hZFByaW1lTmdcclxuICBuYW1lPVwiZmlsZXNbXVwiXHJcbiAgdXJsPVwiXCJcclxuICAob25TZWxlY3QpPVwic2VsZWN0KCRldmVudClcIlxyXG4gIChvblNlbmQpPVwidXBsb2FkRmlsZXMoJGV2ZW50KVwiXHJcbiAgW211bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxyXG4gIFthY2NlcHRdPVwiZmlsZUZvcm1hdHNTdHJpbmdcIlxyXG4gIFttYXhGaWxlU2l6ZV09XCJtYXhTaXplQnl0ZXNcIlxyXG4gIFtuZ0NsYXNzXT1cInsgc2luZ2xlUHJpbWVOZzogdHJ1ZSwgYXV0b1VwbG9hZDogYXV0b1VwbG9hZCB9XCJcclxuICB1cGxvYWRMYWJlbD1cIkZlbHTDtmx0w6lzXCJcclxuICBjYW5jZWxMYWJlbD1cIk3DqWdzZW1cIlxyXG4gIGNob29zZUxhYmVsPVwiVsOhbGFzenTDoXNcIlxyXG4+XHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiAqbmdJZj1cIiFpc01vYmlsZSgpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBsb2FkZXJcIiAvPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbGVcIiBsZXQtZmlsZSBsZXQtaT1cImluZGV4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUNvbnRhaW5lcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGZpbGUsIGk6IGkgfVwiIC8+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWZpbGVVcGxvYWQ+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdXBsb2FkZXIgbGV0LWZpbGUgbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ1cGxvYWRGaWVsZFwiIChjbGljayk9XCJmaWxlVXBsb2FkUHJpbWUuY2hvb3NlKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWREYXRhXCJcclxuICAgICAgPjxzbWFydC1pY29uIGNsYXNzPVwidXBsb2FkSWNvblwiIFtpY29uXT1cIid1cGxvYWQnXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0YUZpZWxkXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZSBtZXNzYWdlXCI+e3sgdGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXNzYWdlXCI+e3sgc3ViVGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXNzYWdlXCI+e3sgZmlsZUZvcm1hdHNTdHJpbmcgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXNzYWdlXCI+IG1heCB7eyBtYXhTaXplTWIgfX0gTWI8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYoaXNNdWx0aXBsZSA9PSBmYWxzZSAmJiBhdXRvVXBsb2FkID09IGZhbHNlICYmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSl7XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvbiBbZGVzY3JpcHRvcl09XCJ1cGxvYWRCdXR0b25cIiAoYWN0aW9uQ2xpY2spPVwiZmlsZVVwbG9hZFByaW1lLnVwbG9hZCgpXCIgLz5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZmlsZUNvbnRhaW5lciBsZXQtZmlsZSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPGRpdiBjbGFzcz1cInAtZmlsZXVwbG9hZC1maWxlXCI+XHJcbiAgICBAaWYoZmlsZS5vYmplY3RVUkwpe1xyXG4gICAgPGltZyByb2xlPVwicHJlc2VudGF0aW9uXCIgW2FsdF09XCJmaWxlLm5hbWVcIiBbc3JjXT1cImZpbGUub2JqZWN0VVJMXCIgd2lkdGg9XCI1MFwiIGhlaWdodD1cIjUwXCIgLz5cclxuICAgIH1AZWxzZSB7XHJcbiAgICA8aSBjbGFzcz1cInBpIHBpLWZpbGVcIiBzdHlsZT1cImZvbnQtc2l6ZTogMnJlbVwiPjwvaT5cclxuICAgIH1cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlTmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlU2l6ZVwiPnt7IGZvcm1hdFNpemUoZmlsZS5zaXplKSB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGVCdXR0b25zXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgZmlsZS1hY3Rpb25cIlxyXG4gICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZSlcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJEb3dubG9hZFwiXHJcbiAgICAgICAgc3R5bGU9XCJjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcilcIlxyXG4gICAgICA+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgZmlsZS1hY3Rpb25cIlxyXG4gICAgICAgIChjbGljayk9XCJmaWxlVXBsb2FkUHJpbWUucmVtb3ZlKCRldmVudCwgaSlcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJSZW1vdmVcIlxyXG4gICAgICAgIHN0eWxlPVwiY29sb3I6IHJnYigyMzksIDY4LCA2OClcIlxyXG4gICAgICA+PC9idXR0b25cclxuICAgID48L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWUtZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvdXBsb2FkLXdpZGdldC9wcmltZS1maWxlLXVwbG9hZGVyL3ByaW1lLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvcHJpbWUtZmlsZS11cGxvYWRlci9wcmltZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFDTCxZQUFZLEVBQ1osa0JBQWtCLEdBRW5CLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTywwQkFBMEI7SUFMdkM7UUFTVyxlQUFVLEdBQWEsS0FBSyxDQUFDO1FBQzdCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFnQnRCLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUV6QyxDQUFDO0tBd0ROO0lBbEVDLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksdUJBQXVCLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLHVCQUF1QixDQUFDO1FBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUQsQ0FBQztJQU1ELFFBQVE7UUFDTixPQUFPLDJCQUEyQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVU7UUFDZixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1NBQ2xDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVO1FBQ3JCLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFZO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTztZQUNMLEtBQUssRUFBRSxXQUFXO1lBQ2xCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxNQUFNO1lBQy9CLElBQUksRUFBRSxRQUFRO1lBQ2QsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHO1NBQy9CLENBQUM7SUFDSixDQUFDOytHQTlFVSwwQkFBMEI7bUdBQTFCLDBCQUEwQiw4WENkdkMsczFHQThGQTs7NEZEaEZhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxxQkFBcUI7OEJBS0MsZUFBZTtzQkFBOUMsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBRXJCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBYUksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgVXBsb2FkV2lkZ2V0VXRpbHMgfSBmcm9tICcuLi91cGxvYWQtd2lkZ2V0LnV0aWxzJztcclxuaW1wb3J0IHtcclxuICBJY29uUG9zaXRpb24sXHJcbiAgVWlBY3Rpb25CdXR0b25UeXBlLFxyXG4gIFVpQWN0aW9uRGVzY3JpcHRvcixcclxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ByaW1lLWZpbGUtdXBsb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmltZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcHJpbWUtZmlsZS11cGxvYWRlci5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByaW1lRmlsZVVwbG9hZGVyQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdmaWxlVXBsb2FkUHJpbWVOZycpIGZpbGVVcGxvYWRQcmltZSE6IEZpbGVVcGxvYWQ7XHJcblxyXG4gIEBJbnB1dCgpIGlzTXVsdGlwbGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGF1dG9VcGxvYWQ/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWF4U2l6ZU1iOiBudW1iZXIgPSAyNTtcclxuICBASW5wdXQoKSBmaWxlRm9ybWF0cz86IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN1YlRpdGxlPzogc3RyaW5nO1xyXG5cclxuICBtYXhTaXplQnl0ZXM/OiBudW1iZXI7XHJcbiAgZmlsZUZvcm1hdHNTdHJpbmc/OiBzdHJpbmc7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50aXRsZSA9IHRoaXMudGl0bGUgPz8gJ0Rva3VtZW50dW0gaG96esOhYWTDoXNhJztcclxuICAgIHRoaXMuc3ViVGl0bGUgPSB0aGlzLnN1YlRpdGxlID8/ICd0YWxsw7N6w6FzIHZhZ3kgYmVow7p6w6FzJztcclxuICAgIHRoaXMubWF4U2l6ZUJ5dGVzID0gdGhpcy5tYXhTaXplTWIgKiAxMDI0ICogMTAyNDtcclxuXHJcbiAgICB0aGlzLmZpbGVGb3JtYXRzU3RyaW5nID0gdGhpcy5maWxlRm9ybWF0cz8uam9pbignLCAnKSA/PyAnJztcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB1cGxvYWRGaWxlc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWxlczogYW55W107XHJcbiAgfT4oKTtcclxuXHJcbiAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gL2lQaG9uZXxpUGFkfGlQb2R8QW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFByaW1lLmNsZWFyKCk7XHJcbiAgfVxyXG4gIG9uRmlsZVNlbGVjdChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRQcmltZS5vbkZpbGVTZWxlY3QoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dG9VcGxvYWQpIHtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlcyhldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwbG9hZEZpbGVzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXBsb2FkRmlsZXNFdmVudC5lbWl0KHtcclxuICAgICAgZmlsZXM6IHRoaXMuZmlsZVVwbG9hZFByaW1lLmZpbGVzLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5maWxlVXBsb2FkUHJpbWUuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShmaWxlOiBGaWxlKSB7XHJcbiAgICBsZXQgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICBsZXQgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlLm5hbWU7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0U2l6ZShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVcGxvYWRXaWRnZXRVdGlscy5mb3JtYXRTaXplKGJ5dGVzKTtcclxuICB9XHJcblxyXG4gIGdldCBmaWxlcygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkUHJpbWU/LmZpbGVzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGZpbGVzKGZpbGVzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkUHJpbWUuZmlsZXMgPSBmaWxlcztcclxuICB9XHJcblxyXG4gIGdldCB1cGxvYWRCdXR0b24oKTogVWlBY3Rpb25EZXNjcmlwdG9yIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRpdGxlOiAnRmVsdMO2bHTDqXMnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VELFxyXG4gICAgICBpY29uOiAndXBsb2FkJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiQGlmKGlzTXVsdGlwbGUpe1xyXG48cC1maWxlVXBsb2FkXHJcbiAgI2ZpbGVVcGxvYWRQcmltZU5nXHJcbiAgbmFtZT1cImZpbGVzW11cIlxyXG4gIHVybD1cIlwiXHJcbiAgKG9uU2VsZWN0KT1cInNlbGVjdCgkZXZlbnQpXCJcclxuICAob25TZW5kKT1cInVwbG9hZEZpbGVzKCRldmVudClcIlxyXG4gIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcclxuICBbYWNjZXB0XT1cImZpbGVGb3JtYXRzU3RyaW5nXCJcclxuICBbbWF4RmlsZVNpemVdPVwibWF4U2l6ZUJ5dGVzXCJcclxuICB1cGxvYWRMYWJlbD1cIkZlbHTDtmx0w6lzXCJcclxuICBjYW5jZWxMYWJlbD1cIk3DqWdzZW1cIlxyXG4gIGNob29zZUxhYmVsPVwiVsOhbGFzenTDoXNcIlxyXG4+XHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiAqbmdJZj1cIiFpc01vYmlsZSgpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBsb2FkZXJcIiAvPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbGVcIiBsZXQtZmlsZSBsZXQtaT1cImluZGV4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUNvbnRhaW5lcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGZpbGUsIGk6IGkgfVwiIC8+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWZpbGVVcGxvYWQ+XHJcbn0gQGVsc2V7XHJcbjxwLWZpbGVVcGxvYWRcclxuICAjZmlsZVVwbG9hZFByaW1lTmdcclxuICBuYW1lPVwiZmlsZXNbXVwiXHJcbiAgdXJsPVwiXCJcclxuICAob25TZWxlY3QpPVwic2VsZWN0KCRldmVudClcIlxyXG4gIChvblNlbmQpPVwidXBsb2FkRmlsZXMoJGV2ZW50KVwiXHJcbiAgW211bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxyXG4gIFthY2NlcHRdPVwiZmlsZUZvcm1hdHNTdHJpbmdcIlxyXG4gIFttYXhGaWxlU2l6ZV09XCJtYXhTaXplQnl0ZXNcIlxyXG4gIFtuZ0NsYXNzXT1cInsgc2luZ2xlUHJpbWVOZzogdHJ1ZSwgYXV0b1VwbG9hZDogYXV0b1VwbG9hZCB9XCJcclxuICB1cGxvYWRMYWJlbD1cIkZlbHTDtmx0w6lzXCJcclxuICBjYW5jZWxMYWJlbD1cIk3DqWdzZW1cIlxyXG4gIGNob29zZUxhYmVsPVwiVsOhbGFzenTDoXNcIlxyXG4+XHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiAqbmdJZj1cIiFpc01vYmlsZSgpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBsb2FkZXJcIiAvPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbGVcIiBsZXQtZmlsZSBsZXQtaT1cImluZGV4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUNvbnRhaW5lcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGZpbGUsIGk6IGkgfVwiIC8+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWZpbGVVcGxvYWQ+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdXBsb2FkZXIgbGV0LWZpbGUgbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ1cGxvYWRGaWVsZFwiIChjbGljayk9XCJmaWxlVXBsb2FkUHJpbWUuY2hvb3NlKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWREYXRhXCJcclxuICAgICAgPjxzbWFydC1pY29uIGNsYXNzPVwidXBsb2FkSWNvblwiIFtpY29uXT1cIid1cGxvYWQnXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0YUZpZWxkXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZSBtZXNzYWdlXCI+e3sgdGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXNzYWdlXCI+e3sgc3ViVGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXNzYWdlXCI+e3sgZmlsZUZvcm1hdHNTdHJpbmcgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXNzYWdlXCI+IG1heCB7eyBtYXhTaXplTWIgfX0gTWI8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYoaXNNdWx0aXBsZSA9PSBmYWxzZSAmJiBhdXRvVXBsb2FkID09IGZhbHNlICYmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSl7XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvbiBbZGVzY3JpcHRvcl09XCJ1cGxvYWRCdXR0b25cIiAoYWN0aW9uQ2xpY2spPVwiZmlsZVVwbG9hZFByaW1lLnVwbG9hZCgpXCIgLz5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZmlsZUNvbnRhaW5lciBsZXQtZmlsZSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPGRpdiBjbGFzcz1cInAtZmlsZXVwbG9hZC1maWxlXCI+XHJcbiAgICBAaWYoZmlsZS5vYmplY3RVUkwpe1xyXG4gICAgPGltZyByb2xlPVwicHJlc2VudGF0aW9uXCIgW2FsdF09XCJmaWxlLm5hbWVcIiBbc3JjXT1cImZpbGUub2JqZWN0VVJMXCIgd2lkdGg9XCI1MFwiIGhlaWdodD1cIjUwXCIgLz5cclxuICAgIH1AZWxzZSB7XHJcbiAgICA8aSBjbGFzcz1cInBpIHBpLWZpbGVcIiBzdHlsZT1cImZvbnQtc2l6ZTogMnJlbVwiPjwvaT5cclxuICAgIH1cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlTmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlU2l6ZVwiPnt7IGZvcm1hdFNpemUoZmlsZS5zaXplKSB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGVCdXR0b25zXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgZmlsZS1hY3Rpb25cIlxyXG4gICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZSlcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJEb3dubG9hZFwiXHJcbiAgICAgICAgc3R5bGU9XCJjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcilcIlxyXG4gICAgICA+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgZmlsZS1hY3Rpb25cIlxyXG4gICAgICAgIChjbGljayk9XCJmaWxlVXBsb2FkUHJpbWUucmVtb3ZlKCRldmVudCwgaSlcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJSZW1vdmVcIlxyXG4gICAgICAgIHN0eWxlPVwiY29sb3I6IHJnYigyMzksIDY4LCA2OClcIlxyXG4gICAgICA+PC9idXR0b25cclxuICAgID48L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|