UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

369 lines (368 loc) 22.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { EventEmitter } from '@angular/core'; import { AbstractInputDataView } from "./AbstractInputDataView"; import { Option } from '../../../decorator/Option.decorator'; import { EventUtils } from '../../../share/utils/EventUtils'; import { BEFORE_SELECT_EVENT, SELECT_EVENT } from '../../../share/CustomEventType'; /** * @abstract */ var AbstracFileSelector = /** @class */ (function (_super) { tslib_1.__extends(AbstracFileSelector, _super); function AbstracFileSelector(elementRef, needFocusService) { var _this = _super.call(this, elementRef, needFocusService) || this; _this.beforeSelectEvent = new EventEmitter(); _this.selectEvent = new EventEmitter(); _this.allowMultipleSelect = false; _this.files = []; _this.acceptStatus = true; _this.alertMessage = null; return _this; } /** * @return {?} */ AbstracFileSelector.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); // recall setData to do some function this.setData(this.data); }; /** * @param {?=} $event * @return {?} */ AbstracFileSelector.prototype.emitBeforeSelectEvent = /** * @param {?=} $event * @return {?} */ function ($event) { var /** @type {?} */ data = null; var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_SELECT_EVENT, this, data, $event); this.beforeSelectEvent.emit(ev); }; /** * @param {?=} $event * @return {?} */ AbstracFileSelector.prototype.emitSelectEvent = /** * @param {?=} $event * @return {?} */ function ($event) { var /** @type {?} */ data = null; var /** @type {?} */ ev = EventUtils.newCustomEvent(SELECT_EVENT, this, data, $event); this.selectEvent.emit(ev); }; /** * @param {?} files * @return {?} */ AbstracFileSelector.prototype.isAccept = /** * @param {?} files * @return {?} */ function (files) { try { for (var files_1 = tslib_1.__values(files), files_1_1 = files_1.next(); !files_1_1.done; files_1_1 = files_1.next()) { var file = files_1_1.value; if (this.fileTypes.indexOf(file.type) === -1) { this.alertMessage = "Error: Allow only file type '" + JSON.stringify(this.fileTypes) + "'"; this.acceptStatus = false; return false; } if (file.size > this.maxFilesize) { this.alertMessage = "Error: The maximun size for file upload is " + this.maxFilesize + " KB"; this.acceptStatus = false; return false; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (files_1_1 && !files_1_1.done && (_a = files_1.return)) _a.call(files_1); } finally { if (e_1) throw e_1.error; } } this.acceptStatus = true; this.alertMessage = "Done! Upload more?"; return true; var e_1, _a; }; /** * @return {?} */ AbstracFileSelector.prototype.setDefaultState = /** * @return {?} */ function () { this.alertMessage = null; this.acceptStatus = true; }; /** * @return {?} */ AbstracFileSelector.prototype.isAcceptStatus = /** * @return {?} */ function () { return this.acceptStatus; }; /** * @return {?} */ AbstracFileSelector.prototype.getAlertMessage = /** * @return {?} */ function () { return this.alertMessage; }; /** * @return {?} */ AbstracFileSelector.prototype.getFiles = /** * @return {?} */ function () { return this.files; }; /** * @return {?} */ AbstracFileSelector.prototype.getFile = /** * @return {?} */ function () { if (this.files !== undefined && this.files !== null && this.files.length > 0) { return this.files[0]; } return; }; /** * @return {?} */ AbstracFileSelector.prototype.getFilesCount = /** * @return {?} */ function () { return this.files.length; }; /** * @return {?} */ AbstracFileSelector.prototype.clear = /** * @return {?} */ function () { this.files = []; }; /** * @param {?} index * @return {?} */ AbstracFileSelector.prototype.removeFile = /** * @param {?} index * @return {?} */ function (index) { this.files.splice(index, 1); }; /** * @param {?} files * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstracFileSelector.prototype.addFiles = /** * @param {?} files * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (files, $event, fireEvent) { var _this = this; if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } EventUtils.handleBrowserEvent(this, 'beforeSelectEvent', $event, fireEvent, function ($event) { // doEvent if (_this.allowMultipleSelect) { try { for (var files_2 = tslib_1.__values(files), files_2_1 = files_2.next(); !files_2_1.done; files_2_1 = files_2.next()) { var file = files_2_1.value; _this.files.push(file); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (files_2_1 && !files_2_1.done && (_a = files_2.return)) _a.call(files_2); } finally { if (e_2) throw e_2.error; } } } else { _this.files[0] = files[0]; } var e_2, _a; }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeSelectEvent($event); }, function ($event, result) { // emitAfterEvent // emitAfterEvent _this.emitSelectEvent($event); }, function ($event) { // doPrevented }); }; /** * @return {?} */ AbstracFileSelector.prototype.getBeforeSelectEvent = /** * @return {?} */ function () { return this.beforeSelectEvent; }; /** * @param {?} event * @return {?} */ AbstracFileSelector.prototype.setBeforeSelectEvent = /** * @param {?} event * @return {?} */ function (event) { this.beforeSelectEvent = event; }; /** * @return {?} */ AbstracFileSelector.prototype.getSelectEvent = /** * @return {?} */ function () { return this.selectEvent; }; /** * @param {?} event * @return {?} */ AbstracFileSelector.prototype.setSelectEvent = /** * @param {?} event * @return {?} */ function (event) { this.selectEvent = event; }; /** * @return {?} */ AbstracFileSelector.prototype.getAllowMultipleSelect = /** * @return {?} */ function () { return this.allowMultipleSelect; }; /** * @param {?} allowMultipleSelect * @return {?} */ AbstracFileSelector.prototype.setAllowMultipleSelect = /** * @param {?} allowMultipleSelect * @return {?} */ function (allowMultipleSelect) { this.allowMultipleSelect = allowMultipleSelect; }; /** * @return {?} */ AbstracFileSelector.prototype.getMaxFilesize = /** * @return {?} */ function () { return this.maxFilesize; }; /** * @param {?} maxFilesize * @return {?} */ AbstracFileSelector.prototype.setMaxFilesize = /** * @param {?} maxFilesize * @return {?} */ function (maxFilesize) { this.maxFilesize = maxFilesize; }; /** * @return {?} */ AbstracFileSelector.prototype.getFileTypes = /** * @return {?} */ function () { return this.fileTypes; }; /** * @param {?} fileTypes * @return {?} */ AbstracFileSelector.prototype.setFileTypes = /** * @param {?} fileTypes * @return {?} */ function (fileTypes) { this.fileTypes = fileTypes; }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Number) ], AbstracFileSelector.prototype, "maxFilesize", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], AbstracFileSelector.prototype, "allowMultipleSelect", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Array) ], AbstracFileSelector.prototype, "fileTypes", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", EventEmitter) ], AbstracFileSelector.prototype, "beforeSelectEvent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", EventEmitter) ], AbstracFileSelector.prototype, "selectEvent", void 0); return AbstracFileSelector; }(AbstractInputDataView)); export { AbstracFileSelector }; function AbstracFileSelector_tsickle_Closure_declarations() { /** @type {?} */ AbstracFileSelector.prototype.maxFilesize; /** @type {?} */ AbstracFileSelector.prototype.allowMultipleSelect; /** @type {?} */ AbstracFileSelector.prototype.fileTypes; /** @type {?} */ AbstracFileSelector.prototype.beforeSelectEvent; /** @type {?} */ AbstracFileSelector.prototype.selectEvent; /** @type {?} */ AbstracFileSelector.prototype.acceptStatus; /** @type {?} */ AbstracFileSelector.prototype.alertMessage; /** @type {?} */ AbstracFileSelector.prototype.files; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY0ZpbGVTZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9BYnN0cmFjRmlsZVNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFVLFlBQVksRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7SUFFakMsK0NBQXFCO0lBZ0JyRSw2QkFBWSxVQUFzQixFQUFFLGdCQUFrQztRQUF0RSxZQUNFLGtCQUFNLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxTQVFwQztRQU5DLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0QyxLQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLEtBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLEtBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDOztLQUMxQjs7OztJQUVNLHNDQUFROzs7O1FBQ2IsaUJBQU0sUUFBUSxXQUFFLENBQUM7O1FBR2pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7Ozs7SUFHbEIsbURBQXFCOzs7O2NBQUMsTUFBYztRQUMxQyxxQkFBSSxJQUFJLEdBQVEsSUFBSSxDQUFDO1FBQ3JC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LENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzs7Ozs7SUFHcEIsb0RBQXNCOzs7O1FBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7Ozs7OztJQUczQixvREFBc0I7Ozs7Y0FBQyxtQkFBNEI7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDOzs7OztJQUcxQyw0Q0FBYzs7OztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzs7Ozs7O0lBR25CLDRDQUFjOzs7O2NBQUMsV0FBbUI7UUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Ozs7O0lBRzFCLDBDQUFZOzs7O1FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDOzs7Ozs7SUFHakIsMENBQVk7Ozs7Y0FBQyxTQUFtQjtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQzs7O1FBbEs1QixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLEVBQUU7MENBQ29CLFlBQVk7OztRQUN4QyxNQUFNLEVBQUU7MENBQ2MsWUFBWTs7OEJBbEJyQztFQU9rRCxxQkFBcUI7U0FBakQsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25Jbml0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0SW5wdXREYXRhVmlldyB9IGZyb20gXCIuL0Fic3RyYWN0SW5wdXREYXRhVmlld1wiO1xuaW1wb3J0IHsgTmVlZEZvY3VzU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL05lZWRGb2N1c1NlcnZpY2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgRXZlbnRVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlL3V0aWxzL0V2ZW50VXRpbHMnO1xuaW1wb3J0IHsgQkVGT1JFX1NFTEVDVF9FVkVOVCwgU0VMRUNUX0VWRU5UIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmUvQ3VzdG9tRXZlbnRUeXBlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWNGaWxlU2VsZWN0b3IgZXh0ZW5kcyBBYnN0cmFjdElucHV0RGF0YVZpZXcgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgbWF4RmlsZXNpemU6IG51bWJlcjtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBhbGxvd011bHRpcGxlU2VsZWN0OiBib29sZWFuO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGZpbGVUeXBlczogc3RyaW5nW107XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgYmVmb3JlU2VsZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgcHJpdmF0ZSBhY2NlcHRTdGF0dXM6IGJvb2xlYW47XG4gIHByaXZhdGUgYWxlcnRNZXNzYWdlOiBzdHJpbmc7XG4gIHByaXZhdGUgZmlsZXM6IEZpbGVbXTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBuZWVkRm9jdXNTZXJ2aWNlOiBOZWVkRm9jdXNTZXJ2aWNlKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgbmVlZEZvY3VzU2VydmljZSk7XG5cbiAgICB0aGlzLmJlZm9yZVNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMuc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5hbGxvd011bHRpcGxlU2VsZWN0ID0gZmFsc2U7XG4gICAgdGhpcy5maWxlcyA9IFtdO1xuICAgIHRoaXMuYWNjZXB0U3RhdHVzID0gdHJ1ZTtcbiAgICB0aGlzLmFsZXJ0TWVzc2FnZSA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIHJlY2FsbCBzZXREYXRhIHRvIGRvIHNvbWUgZnVuY3Rpb25cbiAgICB0aGlzLnNldERhdGEodGhpcy5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEJlZm9yZVNlbGVjdEV2ZW50KCRldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRhdGE6IGFueSA9IG51bGw7XG4gICAgbGV0IGV2ID0gRXZlbnRVdGlscy5uZXdDdXN0b21FdmVudChCRUZPUkVfU0VMRUNUX0VWRU5ULCB0aGlzLCBkYXRhLCAkZXZlbnQpO1xuXG4gICAgdGhpcy5iZWZvcmVTZWxlY3RFdmVudC5lbWl0KGV2KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdEV2ZW50KCRldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRhdGE6IGFueSA9IG51bGw7XG4gICAgbGV0IGV2ID0gRXZlbnRVdGlscy5uZXdDdXN0b21FdmVudChTRUxFQ1RfRVZFTlQsIHRoaXMsIGRhdGEsICRldmVudCk7XG5cbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoZXYpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzQWNjZXB0KGZpbGVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGlmICh0aGlzLmZpbGVUeXBlcy5pbmRleE9mKGZpbGUudHlwZSkgPT09IC0xKSB7XG4gICAgICAgIHRoaXMuYWxlcnRNZXNzYWdlID0gXCJFcnJvcjogQWxsb3cgb25seSBmaWxlIHR5cGUgJ1wiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5maWxlVHlwZXMpICsgXCInXCI7XG4gICAgICAgIHRoaXMuYWNjZXB0U3RhdHVzID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWxlLnNpemUgPiB0aGlzLm1heEZpbGVzaXplKSB7XG4gICAgICAgIHRoaXMuYWxlcnRNZXNzYWdlID0gXCJFcnJvcjogVGhlIG1heGltdW4gc2l6ZSBmb3IgZmlsZSB1cGxvYWQgaXMgXCIgKyB0aGlzLm1heEZpbGVzaXplICsgXCIgS0JcIjtcbiAgICAgICAgdGhpcy5hY2NlcHRTdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWNjZXB0U3RhdHVzID0gdHJ1ZTtcbiAgICB0aGlzLmFsZXJ0TWVzc2FnZSA9IFwiRG9uZSEgVXBsb2FkIG1vcmU/XCI7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RGVmYXVsdFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuYWxlcnRNZXNzYWdlID0gbnVsbDtcbiAgICB0aGlzLmFjY2VwdFN0YXR1cyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgaXNBY2NlcHRTdGF0dXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0U3RhdHVzO1xuICB9XG5cbiAgcHVibGljIGdldEFsZXJ0TWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsZXJ0TWVzc2FnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWxlcygpOiBGaWxlW10ge1xuICAgIHJldHVybiB0aGlzLmZpbGVzO1xuICB9XG5cbiAgcHVibGljIGdldEZpbGUoKTogRmlsZSB7XG4gICAgaWYgKHRoaXMuZmlsZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmZpbGVzICE9PSBudWxsICYmIHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZXNbMF07XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWxlc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVGaWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBwdWJsaWMgYWRkRmlsZXMoZmlsZXM6IEZpbGVbXSwgJGV2ZW50PzogRXZlbnQsIGZpcmVFdmVudD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZmlyZUV2ZW50ID09PSBudWxsIHx8IGZpcmVFdmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmaXJlRXZlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIEV2ZW50VXRpbHMuaGFuZGxlQnJvd3NlckV2ZW50KHRoaXMsICdiZWZvcmVTZWxlY3RFdmVudCcsICRldmVudCwgZmlyZUV2ZW50LCAoJGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgLy8gZG9FdmVudFxuICAgICAgaWYgKHRoaXMuYWxsb3dNdWx0aXBsZVNlbGVjdCkge1xuICAgICAgICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbGVzWzBdID0gZmlsZXNbMF07XG4gICAgICB9XG4gICAgfSwgKCRldmVudDogRXZlbnQpID0+IHtcbiAgICAgIC8vIGVtaXRCZWZvcmVFdmVudFxuICAgICAgdGhpcy5lbWl0QmVmb3JlU2VsZWN0RXZlbnQoJGV2ZW50KTtcbiAgICB9LCAoJGV2ZW50OiBFdmVudCwgcmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIC8vIGVtaXRBZnRlckV2ZW50XG4gICAgICB0aGlzLmVtaXRTZWxlY3RFdmVudCgkZXZlbnQpO1xuICAgIH0sICgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAvLyBkb1ByZXZlbnRlZFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEJlZm9yZVNlbGVjdEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iZWZvcmVTZWxlY3RFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRCZWZvcmVTZWxlY3RFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLmJlZm9yZVNlbGVjdEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VsZWN0RXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdEV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0RXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxvd011bHRpcGxlU2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93TXVsdGlwbGVTZWxlY3Q7XG4gIH1cblxuICBwdWJsaWMgc2V0QWxsb3dNdWx0aXBsZVNlbGVjdChhbGxvd011bHRpcGxlU2VsZWN0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hbGxvd011bHRpcGxlU2VsZWN0ID0gYWxsb3dNdWx0aXBsZVNlbGVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXhGaWxlc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1heEZpbGVzaXplO1xuICB9XG5cbiAgcHVibGljIHNldE1heEZpbGVzaXplKG1heEZpbGVzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1heEZpbGVzaXplID0gbWF4RmlsZXNpemU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsZVR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXM7XG4gIH1cblxuICBwdWJsaWMgc2V0RmlsZVR5cGVzKGZpbGVUeXBlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVUeXBlcyA9IGZpbGVUeXBlcztcbiAgfVxufVxuIl19