UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

263 lines (262 loc) 18.6 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 */ export class AbstracFileSelector extends AbstractInputDataView { /** * @param {?} elementRef * @param {?} needFocusService */ constructor(elementRef, needFocusService) { super(elementRef, needFocusService); this.beforeSelectEvent = new EventEmitter(); this.selectEvent = new EventEmitter(); this.allowMultipleSelect = false; this.files = []; this.acceptStatus = true; this.alertMessage = null; } /** * @return {?} */ ngOnInit() { super.ngOnInit(); // recall setData to do some function this.setData(this.data); } /** * @param {?=} $event * @return {?} */ emitBeforeSelectEvent($event) { let /** @type {?} */ data = null; let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_SELECT_EVENT, this, data, $event); this.beforeSelectEvent.emit(ev); } /** * @param {?=} $event * @return {?} */ emitSelectEvent($event) { let /** @type {?} */ data = null; let /** @type {?} */ ev = EventUtils.newCustomEvent(SELECT_EVENT, this, data, $event); this.selectEvent.emit(ev); } /** * @param {?} files * @return {?} */ isAccept(files) { for (let /** @type {?} */ file of files) { 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; } } this.acceptStatus = true; this.alertMessage = "Done! Upload more?"; return true; } /** * @return {?} */ setDefaultState() { this.alertMessage = null; this.acceptStatus = true; } /** * @return {?} */ isAcceptStatus() { return this.acceptStatus; } /** * @return {?} */ getAlertMessage() { return this.alertMessage; } /** * @return {?} */ getFiles() { return this.files; } /** * @return {?} */ getFile() { if (this.files !== undefined && this.files !== null && this.files.length > 0) { return this.files[0]; } return; } /** * @return {?} */ getFilesCount() { return this.files.length; } /** * @return {?} */ clear() { this.files = []; } /** * @param {?} index * @return {?} */ removeFile(index) { this.files.splice(index, 1); } /** * @param {?} files * @param {?=} $event * @param {?=} fireEvent * @return {?} */ addFiles(files, $event, fireEvent) { if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } EventUtils.handleBrowserEvent(this, 'beforeSelectEvent', $event, fireEvent, ($event) => { // doEvent if (this.allowMultipleSelect) { for (let /** @type {?} */ file of files) { this.files.push(file); } } else { this.files[0] = files[0]; } }, ($event) => { // emitBeforeEvent this.emitBeforeSelectEvent($event); }, ($event, result) => { // emitAfterEvent this.emitSelectEvent($event); }, ($event) => { // doPrevented }); } /** * @return {?} */ getBeforeSelectEvent() { return this.beforeSelectEvent; } /** * @param {?} event * @return {?} */ setBeforeSelectEvent(event) { this.beforeSelectEvent = event; } /** * @return {?} */ getSelectEvent() { return this.selectEvent; } /** * @param {?} event * @return {?} */ setSelectEvent(event) { this.selectEvent = event; } /** * @return {?} */ getAllowMultipleSelect() { return this.allowMultipleSelect; } /** * @param {?} allowMultipleSelect * @return {?} */ setAllowMultipleSelect(allowMultipleSelect) { this.allowMultipleSelect = allowMultipleSelect; } /** * @return {?} */ getMaxFilesize() { return this.maxFilesize; } /** * @param {?} maxFilesize * @return {?} */ setMaxFilesize(maxFilesize) { this.maxFilesize = maxFilesize; } /** * @return {?} */ getFileTypes() { return this.fileTypes; } /** * @param {?} fileTypes * @return {?} */ setFileTypes(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); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY0ZpbGVTZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9BYnN0cmFjRmlsZVNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFVLFlBQVksRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQUVuRixNQUFNLDBCQUFvQyxTQUFRLHFCQUFxQjs7Ozs7SUFnQnJFLFlBQVksVUFBc0IsRUFBRSxnQkFBa0M7UUFDcEUsS0FBSyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0tBQzFCOzs7O0lBRU0sUUFBUTtRQUNiLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7UUFHakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7OztJQUdsQixxQkFBcUIsQ0FBQyxNQUFjO1FBQzFDLHFCQUFJLElBQUksR0FBUSxJQUFJLENBQUM7UUFDckIscUJBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7SUFHMUIsZUFBZSxDQUFDLE1BQWM7UUFDcEMscUJBQUksSUFBSSxHQUFRLElBQUksQ0FBQztRQUNyQixxQkFBSSxFQUFFLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzs7Ozs7O0lBR2xCLFFBQVEsQ0FBQyxLQUFZO1FBQzdCLEdBQUcsQ0FBQyxDQUFDLHFCQUFJLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsK0JBQStCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUMzRixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNkO1lBQ0QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyw2Q0FBNkMsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDN0YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxLQUFLLENBQUE7YUFDYjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxvQkFBb0IsQ0FBQztRQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDO0tBQ2I7Ozs7SUFFUyxlQUFlO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0tBQzFCOzs7O0lBRU0sY0FBYztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzs7Ozs7SUFHcEIsZUFBZTtRQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzs7Ozs7SUFHcEIsUUFBUTtRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7OztJQUdiLE9BQU87UUFDWixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RCO1FBQ0QsTUFBTSxDQUFDOzs7OztJQUdGLGFBQWE7UUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDOzs7OztJQUdwQixLQUFLO1FBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Ozs7OztJQUdYLFVBQVUsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzs7Ozs7Ozs7SUFHdkIsUUFBUSxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsU0FBbUI7UUFDaEUsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNsRCxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO1FBRUQsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsTUFBYSxFQUFFLEVBQUU7O1lBRTVGLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLEdBQUcsQ0FBQyxDQUFDLHFCQUFJLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdkI7YUFDRjtZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCO1NBQ0YsRUFBRSxDQUFDLE1BQWEsRUFBRSxFQUFFOztZQUVuQixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEMsRUFBRSxDQUFDLE1BQWEsRUFBRSxNQUFXLEVBQUUsRUFBRTs7WUFFaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM5QixFQUFFLENBQUMsTUFBYSxFQUFFLEVBQUU7O1NBRXBCLENBQUMsQ0FBQzs7Ozs7SUFHRSxvQkFBb0I7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzs7Ozs7O0lBR3pCLG9CQUFvQixDQUFDLEtBQXdCO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Ozs7O0lBRzFCLGNBQWM7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7Ozs7OztJQUduQixjQUFjLENBQUMsS0FBd0I7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Ozs7O0lBR3BCLHNCQUFzQjtRQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDOzs7Ozs7SUFHM0Isc0JBQXNCLENBQUMsbUJBQTRCO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQzs7Ozs7SUFHMUMsY0FBYztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzs7Ozs7O0lBR25CLGNBQWMsQ0FBQyxXQUFtQjtRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQzs7Ozs7SUFHMUIsWUFBWTtRQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzs7Ozs7O0lBR2pCLFlBQVksQ0FBQyxTQUFtQjtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQzs7Q0FFOUI7O0lBcEtFLE1BQU0sRUFBRTs7OztJQUVSLE1BQU0sRUFBRTs7OztJQUVSLE1BQU0sRUFBRTs7OztJQUVSLE1BQU0sRUFBRTtzQ0FDb0IsWUFBWTs7O0lBQ3hDLE1BQU0sRUFBRTtzQ0FDYyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25Jbml0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0SW5wdXREYXRhVmlldyB9IGZyb20gXCIuL0Fic3RyYWN0SW5wdXREYXRhVmlld1wiO1xuaW1wb3J0IHsgTmVlZEZvY3VzU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL05lZWRGb2N1c1NlcnZpY2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgRXZlbnRVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlL3V0aWxzL0V2ZW50VXRpbHMnO1xuaW1wb3J0IHsgQkVGT1JFX1NFTEVDVF9FVkVOVCwgU0VMRUNUX0VWRU5UIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmUvQ3VzdG9tRXZlbnRUeXBlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWNGaWxlU2VsZWN0b3IgZXh0ZW5kcyBBYnN0cmFjdElucHV0RGF0YVZpZXcgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgbWF4RmlsZXNpemU6IG51bWJlcjtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBhbGxvd011bHRpcGxlU2VsZWN0OiBib29sZWFuO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGZpbGVUeXBlczogc3RyaW5nW107XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgYmVmb3JlU2VsZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgcHJpdmF0ZSBhY2NlcHRTdGF0dXM6IGJvb2xlYW47XG4gIHByaXZhdGUgYWxlcnRNZXNzYWdlOiBzdHJpbmc7XG4gIHByaXZhdGUgZmlsZXM6IEZpbGVbXTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBuZWVkRm9jdXNTZXJ2aWNlOiBOZWVkRm9jdXNTZXJ2aWNlKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgbmVlZEZvY3VzU2VydmljZSk7XG5cbiAgICB0aGlzLmJlZm9yZVNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMuc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5hbGxvd011bHRpcGxlU2VsZWN0ID0gZmFsc2U7XG4gICAgdGhpcy5maWxlcyA9IFtdO1xuICAgIHRoaXMuYWNjZXB0U3RhdHVzID0gdHJ1ZTtcbiAgICB0aGlzLmFsZXJ0TWVzc2FnZSA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIHJlY2FsbCBzZXREYXRhIHRvIGRvIHNvbWUgZnVuY3Rpb25cbiAgICB0aGlzLnNldERhdGEodGhpcy5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEJlZm9yZVNlbGVjdEV2ZW50KCRldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRhdGE6IGFueSA9IG51bGw7XG4gICAgbGV0IGV2ID0gRXZlbnRVdGlscy5uZXdDdXN0b21FdmVudChCRUZPUkVfU0VMRUNUX0VWRU5ULCB0aGlzLCBkYXRhLCAkZXZlbnQpO1xuXG4gICAgdGhpcy5iZWZvcmVTZWxlY3RFdmVudC5lbWl0KGV2KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdEV2ZW50KCRldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRhdGE6IGFueSA9IG51bGw7XG4gICAgbGV0IGV2ID0gRXZlbnRVdGlscy5uZXdDdXN0b21FdmVudChTRUxFQ1RfRVZFTlQsIHRoaXMsIGRhdGEsICRldmVudCk7XG5cbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoZXYpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzQWNjZXB0KGZpbGVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGlmICh0aGlzLmZpbGVUeXBlcy5pbmRleE9mKGZpbGUudHlwZSkgPT09IC0xKSB7XG4gICAgICAgIHRoaXMuYWxlcnRNZXNzYWdlID0gXCJFcnJvcjogQWxsb3cgb25seSBmaWxlIHR5cGUgJ1wiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5maWxlVHlwZXMpICsgXCInXCI7XG4gICAgICAgIHRoaXMuYWNjZXB0U3RhdHVzID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWxlLnNpemUgPiB0aGlzLm1heEZpbGVzaXplKSB7XG4gICAgICAgIHRoaXMuYWxlcnRNZXNzYWdlID0gXCJFcnJvcjogVGhlIG1heGltdW4gc2l6ZSBmb3IgZmlsZSB1cGxvYWQgaXMgXCIgKyB0aGlzLm1heEZpbGVzaXplICsgXCIgS0JcIjtcbiAgICAgICAgdGhpcy5hY2NlcHRTdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWNjZXB0U3RhdHVzID0gdHJ1ZTtcbiAgICB0aGlzLmFsZXJ0TWVzc2FnZSA9IFwiRG9uZSEgVXBsb2FkIG1vcmU/XCI7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RGVmYXVsdFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuYWxlcnRNZXNzYWdlID0gbnVsbDtcbiAgICB0aGlzLmFjY2VwdFN0YXR1cyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgaXNBY2NlcHRTdGF0dXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0U3RhdHVzO1xuICB9XG5cbiAgcHVibGljIGdldEFsZXJ0TWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsZXJ0TWVzc2FnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWxlcygpOiBGaWxlW10ge1xuICAgIHJldHVybiB0aGlzLmZpbGVzO1xuICB9XG5cbiAgcHVibGljIGdldEZpbGUoKTogRmlsZSB7XG4gICAgaWYgKHRoaXMuZmlsZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmZpbGVzICE9PSBudWxsICYmIHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZXNbMF07XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWxlc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVGaWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBwdWJsaWMgYWRkRmlsZXMoZmlsZXM6IEZpbGVbXSwgJGV2ZW50PzogRXZlbnQsIGZpcmVFdmVudD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZmlyZUV2ZW50ID09PSBudWxsIHx8IGZpcmVFdmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmaXJlRXZlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIEV2ZW50VXRpbHMuaGFuZGxlQnJvd3NlckV2ZW50KHRoaXMsICdiZWZvcmVTZWxlY3RFdmVudCcsICRldmVudCwgZmlyZUV2ZW50LCAoJGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgLy8gZG9FdmVudFxuICAgICAgaWYgKHRoaXMuYWxsb3dNdWx0aXBsZVNlbGVjdCkge1xuICAgICAgICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbGVzWzBdID0gZmlsZXNbMF07XG4gICAgICB9XG4gICAgfSwgKCRldmVudDogRXZlbnQpID0+IHtcbiAgICAgIC8vIGVtaXRCZWZvcmVFdmVudFxuICAgICAgdGhpcy5lbWl0QmVmb3JlU2VsZWN0RXZlbnQoJGV2ZW50KTtcbiAgICB9LCAoJGV2ZW50OiBFdmVudCwgcmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIC8vIGVtaXRBZnRlckV2ZW50XG4gICAgICB0aGlzLmVtaXRTZWxlY3RFdmVudCgkZXZlbnQpO1xuICAgIH0sICgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAvLyBkb1ByZXZlbnRlZFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEJlZm9yZVNlbGVjdEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iZWZvcmVTZWxlY3RFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRCZWZvcmVTZWxlY3RFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLmJlZm9yZVNlbGVjdEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VsZWN0RXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdEV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0RXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxvd011bHRpcGxlU2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93TXVsdGlwbGVTZWxlY3Q7XG4gIH1cblxuICBwdWJsaWMgc2V0QWxsb3dNdWx0aXBsZVNlbGVjdChhbGxvd011bHRpcGxlU2VsZWN0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hbGxvd011bHRpcGxlU2VsZWN0ID0gYWxsb3dNdWx0aXBsZVNlbGVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXhGaWxlc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1heEZpbGVzaXplO1xuICB9XG5cbiAgcHVibGljIHNldE1heEZpbGVzaXplKG1heEZpbGVzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1heEZpbGVzaXplID0gbWF4RmlsZXNpemU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsZVR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXM7XG4gIH1cblxuICBwdWJsaWMgc2V0RmlsZVR5cGVzKGZpbGVUeXBlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVUeXBlcyA9IGZpbGVUeXBlcztcbiAgfVxufVxuIl19