UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

332 lines 29.2 kB
/** * @fileoverview added by tsickle * Generated from: multiple-upload.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, TemplateRef, ViewChild, } from '@angular/core'; import { Input, Output, EventEmitter, } from '@angular/core'; import { IUploadOptions, IFileOptions } from './file-uploader.types'; import { ModalAlertComponent, ModalService } from '@duoduo-oba/ng-devui/modal'; import { MultipleUploadViewComponent } from './multiple-upload-view.component'; import { SelectFiles } from './select-files.utils'; import { map, last, debounceTime } from 'rxjs/operators'; import { I18nService } from '@duoduo-oba/ng-devui/i18n'; var MultipleUploadComponent = /** @class */ (function () { function MultipleUploadComponent(modalService, selectFiles, i18n) { var _this = this; this.modalService = modalService; this.selectFiles = selectFiles; this.i18n = i18n; this.autoUpload = false; this.withoutBtn = false; this.uploadedFiles = []; this.enableDrop = false; this.successEvent = new EventEmitter(); this.errorEvent = new EventEmitter(); this.deleteUploadedFileEvent = new EventEmitter(); this.fileDrop = new EventEmitter(); this.fileOver = new EventEmitter(); this.isDropOVer = false; this.i18nText = this.i18n.getI18nText().upload; this.i18nCommonText = this.i18n.getI18nText().common; this.i18nSubscription = this.i18n.langChange().subscribe((/** * @param {?} data * @return {?} */ function (data) { _this.i18nText = data.upload; _this.i18nCommonText = data.common; })); } /** * @param {?} observale * @return {?} */ MultipleUploadComponent.prototype._dealFiles = /** * @param {?} observale * @return {?} */ function (observale) { var _this = this; this.multipleUploadViewComponent.resetSameNameFiles(); observale.pipe(map((/** * @param {?} file * @return {?} */ function (file) { return _this.multipleUploadViewComponent.addFile(file); })), debounceTime(100)) .subscribe((/** * @return {?} */ function () { /** @type {?} */ var sameNameFiles = _this.multipleUploadViewComponent.getSameNameFiles(); if (_this.autoUpload) { _this.upload(); } if (_this.uploadOptions.checkSameName && sameNameFiles.length) { _this.alertMsg(_this.i18nText.getExistSameNameFilesMsg(sameNameFiles)); } }), (/** * @param {?} error * @return {?} */ function (error) { _this.alertMsg(error.message); })); }; /** * @param {?} event * @return {?} */ MultipleUploadComponent.prototype.onClick = /** * @param {?} event * @return {?} */ function (event) { this._dealFiles(this.selectFiles.triggerSelectFiles(this.fileOptions, this.uploadOptions)); }; /** * @param {?} files * @return {?} */ MultipleUploadComponent.prototype.onFileDrop = /** * @param {?} files * @return {?} */ function (files) { this.isDropOVer = false; this._dealFiles(this.selectFiles.triggerDropFiles(this.fileOptions, this.uploadOptions, files)); this.fileDrop.emit(files); }; /** * @param {?} event * @return {?} */ MultipleUploadComponent.prototype.onFileOver = /** * @param {?} event * @return {?} */ function (event) { this.isDropOVer = event; this.fileOver.emit(event); }; /** * @return {?} */ MultipleUploadComponent.prototype.upload = /** * @return {?} */ function () { var _this = this; this.canUpload().then((/** * @param {?} canUpload * @return {?} */ function (canUpload) { if (!canUpload) { _this.multipleUploadViewComponent.removeFiles(); return; } _this.multipleUploadViewComponent.upload() .pipe(last()) .subscribe((/** * @param {?} results * @return {?} */ function (results) { _this.successEvent.emit(results); results.forEach((/** * @param {?} result * @return {?} */ function (result) { _this.multipleUploadViewComponent.deleteFile(result.file); _this.multipleUploadViewComponent.uploadedFilesComponent.addFile(result.file); })); }), (/** * @param {?} error * @return {?} */ function (error) { _this.errorEvent.emit(error); })); })); }; /** * @return {?} */ MultipleUploadComponent.prototype.canUpload = /** * @return {?} */ function () { /** @type {?} */ var uploadResult = Promise.resolve(true); if (this.beforeUpload) { /** @type {?} */ var result = this.beforeUpload(this.multipleUploadViewComponent.getFiles()); if (typeof result !== 'undefined') { if (result.then) { uploadResult = result; } else if (result.subscribe) { uploadResult = ((/** @type {?} */ (result))).toPromise(); } else { uploadResult = Promise.resolve(result); } } } return uploadResult; }; /** * @param {?} filePath * @return {?} */ MultipleUploadComponent.prototype._onDeleteUploadedFile = /** * @param {?} filePath * @return {?} */ function (filePath) { this.deleteUploadedFileEvent.emit(filePath); }; /** * @param {?} errorMsg * @return {?} */ MultipleUploadComponent.prototype.alertMsg = /** * @param {?} errorMsg * @return {?} */ function (errorMsg) { /** @type {?} */ var results = this.modalService.open({ width: '300px', backdropCloseable: false, showAnimate: true, component: ModalAlertComponent, data: { content: errorMsg, cancelBtnText: this.confirmText ? this.confirmText : this.i18nCommonText.btnConfirm, onClose: (/** * @param {?} event * @return {?} */ function (event) { results.modalInstance.hide(); }), }, }); }; /** * @return {?} */ MultipleUploadComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.i18nSubscription) { this.i18nSubscription.unsubscribe(); } }; MultipleUploadComponent.decorators = [ { type: Component, args: [{ selector: 'd-multiple-upload', template: "<div\r\n [style.display]=\"withoutBtn ? '' : '-webkit-inline-box'\"\r\n d-file-drop\r\n [enableDrop]=\"enableDrop\"\r\n (fileDrop)=\"onFileDrop($event)\"\r\n (fileOver)=\"onFileOver($event)\"\r\n [ngStyle]=\"{ border: isDropOVer ? '1px solid #15bf15' : '0' }\"\r\n>\r\n <div class=\"devui-input-group\" (click)=\"onClick($event)\">\r\n <input\r\n type=\"text\"\r\n style=\"cursor: pointer\"\r\n class=\"devui-form-control\"\r\n [placeholder]=\"placeholderText ? placeholderText : i18nText?.chooseFiles\"\r\n readonly\r\n />\r\n <span class=\"devui-input-group-addon\" style=\"cursor: pointer\">\r\n <svg class=\"svg-icon-dot\" height=\"1em\" width=\"1em\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"m400.31892 176.970574c0-61.574381 50.113351-111.680569 111.679545-111.680569 61.576427 0 111.680569 50.106188 111.680569 111.680569 0 61.568241-50.104141 111.679545-111.680569 111.679545-61.566194 0-111.679545-50.111304-111.679545-111.679545zm0 335.028403c0-61.568241 50.113351-111.678522 111.679545-111.678522 61.576427 0 111.680569 50.110281 111.680569 111.678522 0 61.574381-50.105165 111.682615-111.680569 111.682615-61.566194 0-111.679545-50.108235-111.679545-111.682615zm0 335.037612c0-61.572334 50.113351-111.679545 111.679545-111.679545 61.575404 0 111.680569 50.107211 111.680569 111.679545 0 61.567217-50.105165 111.672382-111.680569 111.672382-61.566194 0-111.679545-50.105164-111.679545-111.672382zm0 0\"\r\n />\r\n </svg>\r\n </span>\r\n </div>\r\n <d-button *ngIf=\"!autoUpload && !withoutBtn\" (btnClick)=\"upload()\" [style.margin-left.px]=\"10\" bsStyle=\"common\">\r\n {{ uploadText || i18nText?.upload }}\r\n </d-button>\r\n</div>\r\n<d-multiple-upload-view\r\n #dMultipleUploadView\r\n [uploadedFiles]=\"uploadedFiles\"\r\n [uploadedFilesRef]=\"uploadedFilesRef\"\r\n [preloadFilesRef]=\"preloadFilesRef\"\r\n [uploadOptions]=\"uploadOptions\"\r\n [filePath]=\"filePath\"\r\n (deleteUploadedFileEvent)=\"_onDeleteUploadedFile($event)\"\r\n>\r\n</d-multiple-upload-view>\r\n", exportAs: 'dMultipleUpload', styles: [".devui-input-group{position:relative;display:table;border-collapse:separate}.devui-input-group:hover .devui-input-group-addon{border-color:#344899;background-color:#dfe1e6;font-weight:700}.devui-input-group:hover .devui-form-control{border-color:#344899 #adb0b8 #344899 #344899}.devui-input-group .devui-input-group-addon:active{border-color:#344899 #adb0b8 #344899 #344899;background-color:#dfe1e6}.devui-input-group .devui-input-group-addon{width:1%;white-space:nowrap;vertical-align:middle;padding:5px 10px;font-size:14px;font-weight:400;line-height:1;color:#252b3a;text-align:center;background-color:#f8f8f8;border-top:1px solid #adb0b8;border-bottom:1px solid #adb0b8;border-right:1px solid #adb0b8;border-top-right-radius:1px;border-bottom-right-radius:1px;display:table-cell;-webkit-transition:border-color .15s ease-in-out;transition:border-color .15s ease-in-out;cursor:pointer}.devui-input-group .devui-form-control{cursor:pointer;display:block;width:100%;height:32px;padding:5px 10px;font-size:14px;line-height:1.42857143;color:#252b3a;background-image:none;border:1px solid #adb0b8;border-top-left-radius:1px;border-bottom-left-radius:1px;-webkit-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}svg.svg-icon-dot>path{fill:#252b3a}.devui-form-control{outline:0}.devui-icon-close-position{position:absolute;top:calc(50% - 7px);right:50px}"] }] } ]; /** @nocollapse */ MultipleUploadComponent.ctorParameters = function () { return [ { type: ModalService }, { type: SelectFiles }, { type: I18nService } ]; }; MultipleUploadComponent.propDecorators = { uploadOptions: [{ type: Input }], fileOptions: [{ type: Input }], autoUpload: [{ type: Input }], withoutBtn: [{ type: Input }], uploadedFiles: [{ type: Input }], uploadedFilesRef: [{ type: Input }], preloadFilesRef: [{ type: Input }], filePath: [{ type: Input }], placeholderText: [{ type: Input }], uploadText: [{ type: Input }], confirmText: [{ type: Input }], beforeUpload: [{ type: Input }], enableDrop: [{ type: Input }], successEvent: [{ type: Output }], errorEvent: [{ type: Output }], deleteUploadedFileEvent: [{ type: Output }], fileDrop: [{ type: Output }], fileOver: [{ type: Output }], multipleUploadViewComponent: [{ type: ViewChild, args: ['dMultipleUploadView', { static: true },] }] }; return MultipleUploadComponent; }()); export { MultipleUploadComponent }; if (false) { /** @type {?} */ MultipleUploadComponent.prototype.uploadOptions; /** @type {?} */ MultipleUploadComponent.prototype.fileOptions; /** @type {?} */ MultipleUploadComponent.prototype.autoUpload; /** @type {?} */ MultipleUploadComponent.prototype.withoutBtn; /** @type {?} */ MultipleUploadComponent.prototype.uploadedFiles; /** @type {?} */ MultipleUploadComponent.prototype.uploadedFilesRef; /** @type {?} */ MultipleUploadComponent.prototype.preloadFilesRef; /** @type {?} */ MultipleUploadComponent.prototype.filePath; /** @type {?} */ MultipleUploadComponent.prototype.placeholderText; /** @type {?} */ MultipleUploadComponent.prototype.uploadText; /** @type {?} */ MultipleUploadComponent.prototype.confirmText; /** @type {?} */ MultipleUploadComponent.prototype.beforeUpload; /** @type {?} */ MultipleUploadComponent.prototype.enableDrop; /** @type {?} */ MultipleUploadComponent.prototype.successEvent; /** @type {?} */ MultipleUploadComponent.prototype.errorEvent; /** @type {?} */ MultipleUploadComponent.prototype.deleteUploadedFileEvent; /** @type {?} */ MultipleUploadComponent.prototype.fileDrop; /** @type {?} */ MultipleUploadComponent.prototype.fileOver; /** @type {?} */ MultipleUploadComponent.prototype.multipleUploadViewComponent; /** @type {?} */ MultipleUploadComponent.prototype.i18nCommonText; /** @type {?} */ MultipleUploadComponent.prototype.i18nText; /** @type {?} */ MultipleUploadComponent.prototype.isDropOVer; /** @type {?} */ MultipleUploadComponent.prototype.i18nSubscription; /** * @type {?} * @private */ MultipleUploadComponent.prototype.modalService; /** * @type {?} * @private */ MultipleUploadComponent.prototype.selectFiles; /** * @type {?} * @private */ MultipleUploadComponent.prototype.i18n; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL3VwbG9hZC8iLCJzb3VyY2VzIjpbIm11bHRpcGxlLXVwbG9hZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNiLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixZQUFZLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsV0FBVyxFQUNaLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFpQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0Q7SUErQkUsaUNBQW9CLFlBQTBCLEVBQ3BDLFdBQXdCLEVBQ3hCLElBQWlCO1FBRjNCLGlCQVNDO1FBVG1CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWE7UUF4QmxCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBYSxHQUFrQixFQUFFLENBQUM7UUFRbEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVsQixpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUs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LEtBQUs7bUNBQ0wsS0FBSztrQ0FDTCxLQUFLOzJCQUNMLEtBQUs7a0NBQ0wsS0FBSzs2QkFDTCxLQUFLOzhCQUNMLEtBQUs7K0JBQ0wsS0FBSzs2QkFDTCxLQUFLOytCQUVMLE1BQU07NkJBQ04sTUFBTTswQ0FDTixNQUFNOzJCQUNOLE1BQU07MkJBQ04sTUFBTTs4Q0FDTixTQUFTLFNBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztJQTJIcEQsOEJBQUM7Q0FBQSxBQXJKRCxJQXFKQztTQS9JWSx1QkFBdUI7OztJQUNsQyxnREFBdUM7O0lBQ3ZDLDhDQUFtQzs7SUFDbkMsNkNBQTRCOztJQUM1Qiw2Q0FBNEI7O0lBQzVCLGdEQUEyQzs7SUFDM0MsbURBQTRDOztJQUM1QyxrREFBNEM7O0lBQzVDLDJDQUEwQjs7SUFDMUIsa0RBQWlDOztJQUNqQyw2Q0FBNEI7O0lBQzVCLDhDQUE2Qjs7SUFDN0IsK0NBQW1GOztJQUNuRiw2Q0FBNEI7O0lBRTVCLCtDQUErRDs7SUFDL0QsNkNBQTZEOztJQUM3RCwwREFBMEU7O0lBQzFFLDJDQUEyRDs7SUFDM0QsMkNBQTJEOztJQUMzRCw4REFBNkc7O0lBQzdHLGlEQUF3Qzs7SUFDeEMsMkNBQWtDOztJQUNsQyw2Q0FBbUI7O0lBQ25CLG1EQUErQjs7Ozs7SUFDbkIsK0NBQWtDOzs7OztJQUM1Qyw4Q0FBZ0M7Ozs7O0lBQ2hDLHVDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkRlc3Ryb3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBJVXBsb2FkT3B0aW9ucyxcclxuICBJRmlsZU9wdGlvbnNcclxufSBmcm9tICcuL2ZpbGUtdXBsb2FkZXIudHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIE1vZGFsQWxlcnRDb21wb25lbnQsXHJcbiAgTW9kYWxTZXJ2aWNlXHJcbn0gZnJvbSAnbmctZGV2dWkvbW9kYWwnO1xyXG5pbXBvcnQgeyBNdWx0aXBsZVVwbG9hZFZpZXdDb21wb25lbnQgfSBmcm9tICcuL211bHRpcGxlLXVwbG9hZC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgU2VsZWN0RmlsZXNcclxufSBmcm9tICcuL3NlbGVjdC1maWxlcy51dGlscyc7XHJcbmltcG9ydCB7IG1hcCwgbGFzdCwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSTE4bkludGVyZmFjZSwgSTE4blNlcnZpY2UgfSBmcm9tICduZy1kZXZ1aS9pMThuJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZC1tdWx0aXBsZS11cGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aXBsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGV4cG9ydEFzOiAnZE11bHRpcGxlVXBsb2FkJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtdmlldy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlwbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHVwbG9hZE9wdGlvbnM6IElVcGxvYWRPcHRpb25zO1xyXG4gIEBJbnB1dCgpIGZpbGVPcHRpb25zOiBJRmlsZU9wdGlvbnM7XHJcbiAgQElucHV0KCkgYXV0b1VwbG9hZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHdpdGhvdXRCdG4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB1cGxvYWRlZEZpbGVzOiBBcnJheTxPYmplY3Q+ID0gW107XHJcbiAgQElucHV0KCkgdXBsb2FkZWRGaWxlc1JlZjogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwcmVsb2FkRmlsZXNSZWY/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIGZpbGVQYXRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXBsb2FkVGV4dDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvbmZpcm1UZXh0OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYmVmb3JlVXBsb2FkOiAoZmlsZXMpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICBASW5wdXQoKSBlbmFibGVEcm9wID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBzdWNjZXNzRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBlcnJvckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlVXBsb2FkZWRGaWxlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWxlRHJvcDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbGVPdmVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdkTXVsdGlwbGVVcGxvYWRWaWV3JywgeyBzdGF0aWM6IHRydWUgfSkgbXVsdGlwbGVVcGxvYWRWaWV3Q29tcG9uZW50OiBNdWx0aXBsZVVwbG9hZFZpZXdDb21wb25lbnQ7XHJcbiAgaTE4bkNvbW1vblRleHQ6IEkxOG5JbnRlcmZhY2VbJ2NvbW1vbiddO1xyXG4gIGkxOG5UZXh0OiBJMThuSW50ZXJmYWNlWyd1cGxvYWQnXTtcclxuICBpc0Ryb3BPVmVyID0gZmFsc2U7XHJcbiAgaTE4blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlbGVjdEZpbGVzOiBTZWxlY3RGaWxlcyxcclxuICAgIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UsICkge1xyXG4gICAgdGhpcy5pMThuVGV4dCA9IHRoaXMuaTE4bi5nZXRJMThuVGV4dCgpLnVwbG9hZDtcclxuICAgIHRoaXMuaTE4bkNvbW1vblRleHQgPSB0aGlzLmkxOG4uZ2V0STE4blRleHQoKS5jb21tb247XHJcbiAgICB0aGlzLmkxOG5TdWJzY3JpcHRpb24gPSB0aGlzLmkxOG4ubGFuZ0NoYW5nZSgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmkxOG5UZXh0ID0gZGF0YS51cGxvYWQ7XHJcbiAgICAgIHRoaXMuaTE4bkNvbW1vblRleHQgPSBkYXRhLmNvbW1vbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2RlYWxGaWxlcyhvYnNlcnZhbGUpIHtcclxuICAgIHRoaXMubXVsdGlwbGVVcGxvYWRWaWV3Q29tcG9uZW50LnJlc2V0U2FtZU5hbWVGaWxlcygpO1xyXG4gICAgb2JzZXJ2YWxlLnBpcGUoXHJcbiAgICAgIG1hcChmaWxlID0+IHRoaXMubXVsdGlwbGVVcGxvYWRWaWV3Q29tcG9uZW50LmFkZEZpbGUoZmlsZSkpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKVxyXG4gICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNhbWVOYW1lRmlsZXMgPSB0aGlzLm11bHRpcGxlVXBsb2FkVmlld0NvbXBvbmVudC5nZXRTYW1lTmFtZUZpbGVzKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5hdXRvVXBsb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy51cGxvYWRPcHRpb25zLmNoZWNrU2FtZU5hbWUgJiYgc2FtZU5hbWVGaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydE1zZyh0aGlzLmkxOG5UZXh0LmdldEV4aXN0U2FtZU5hbWVGaWxlc01zZyhzYW1lTmFtZUZpbGVzKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3I6IEVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0TXNnKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2soZXZlbnQpIHtcclxuICAgIHRoaXMuX2RlYWxGaWxlcyh0aGlzLnNlbGVjdEZpbGVzLnRyaWdnZXJTZWxlY3RGaWxlcyh0aGlzLmZpbGVPcHRpb25zLCB0aGlzLnVwbG9hZE9wdGlvbnMpKTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkZpbGVEcm9wKGZpbGVzKSB7XHJcbiAgICB0aGlzLmlzRHJvcE9WZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuX2RlYWxGaWxlcyh0aGlzLnNlbGVjdEZpbGVzLnRyaWdnZXJEcm9wRmlsZXModGhpcy5maWxlT3B0aW9ucywgdGhpcy51cGxvYWRPcHRpb25zLCBmaWxlcykpO1xyXG4gICAgdGhpcy5maWxlRHJvcC5lbWl0KGZpbGVzKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgb25GaWxlT3ZlcihldmVudCkge1xyXG4gICAgdGhpcy5pc0Ryb3BPVmVyID0gZXZlbnQ7XHJcbiAgICB0aGlzLmZpbGVPdmVyLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKCkge1xyXG4gICAgdGhpcy5jYW5VcGxvYWQoKS50aGVuKChjYW5VcGxvYWQpID0+IHtcclxuICAgICAgaWYgKCFjYW5VcGxvYWQpIHtcclxuICAgICAgICB0aGlzLm11bHRpcGxlVXBsb2FkVmlld0NvbXBvbmVudC5yZW1vdmVGaWxlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm11bHRpcGxlVXBsb2FkVmlld0NvbXBvbmVudC51cGxvYWQoKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgbGFzdCgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzdWx0czogQXJyYXk8eyBmaWxlOiBGaWxlLCByZXNwb25zZTogYW55IH0+KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0V2ZW50LmVtaXQocmVzdWx0cyk7XHJcbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZVVwbG9hZFZpZXdDb21wb25lbnQuZGVsZXRlRmlsZShyZXN1bHQuZmlsZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZVVwbG9hZFZpZXdDb21wb25lbnQudXBsb2FkZWRGaWxlc0NvbXBvbmVudC5hZGRGaWxlKHJlc3VsdC5maWxlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JFdmVudC5lbWl0KGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5VcGxvYWQoKSB7XHJcbiAgICBsZXQgdXBsb2FkUmVzdWx0ID0gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgaWYgKHRoaXMuYmVmb3JlVXBsb2FkKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gdGhpcy5iZWZvcmVVcGxvYWQodGhpcy5tdWx0aXBsZVVwbG9hZFZpZXdDb21wb25lbnQuZ2V0RmlsZXMoKSk7XHJcbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIGlmIChyZXN1bHQudGhlbikge1xyXG4gICAgICAgICAgdXBsb2FkUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnN1YnNjcmliZSkge1xyXG4gICAgICAgICAgdXBsb2FkUmVzdWx0ID0gKHJlc3VsdCBhcyBPYnNlcnZhYmxlPGJvb2xlYW4+KS50b1Byb21pc2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdXBsb2FkUmVzdWx0ID0gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXBsb2FkUmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgX29uRGVsZXRlVXBsb2FkZWRGaWxlKGZpbGVQYXRoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlVXBsb2FkZWRGaWxlRXZlbnQuZW1pdChmaWxlUGF0aCk7XHJcbiAgfVxyXG5cclxuICBhbGVydE1zZyhlcnJvck1zZykge1xyXG4gICAgY29uc3QgcmVzdWx0cyA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xyXG4gICAgICB3aWR0aDogJzMwMHB4JyxcclxuICAgICAgYmFja2Ryb3BDbG9zZWFibGU6IGZhbHNlLFxyXG4gICAgICBzaG93QW5pbWF0ZTogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50OiBNb2RhbEFsZXJ0Q29tcG9uZW50LFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgY29udGVudDogZXJyb3JNc2csXHJcbiAgICAgICAgY2FuY2VsQnRuVGV4dDogdGhpcy5jb25maXJtVGV4dCA/IHRoaXMuY29uZmlybVRleHQgOiB0aGlzLmkxOG5Db21tb25UZXh0LmJ0bkNvbmZpcm0sXHJcbiAgICAgICAgb25DbG9zZTogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICByZXN1bHRzLm1vZGFsSW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5pMThuU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuaTE4blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ==