UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

270 lines (269 loc) 24.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Input, EventEmitter } from '@angular/core'; import { WizardModel } from '../model/WizardModel'; import { AbstractDataView } from '../dataview/AbstractDataView'; import { Option } from '../../decorator/Option.decorator'; /** * @abstract */ export class AbstractWizardPane extends AbstractDataView { /** * @param {?} appSvc * @param {?} elementRef */ constructor(appSvc, elementRef) { super(elementRef); this.currentStep = -1; this.phloxAppService = appSvc; this.changeEvent = new EventEmitter(); this.beforeChangeEvent = new EventEmitter(); this.stepInstances = !this.stepInstances ? [] : this.stepInstances; this.stepsComponentHandler = (data) => { this.stepInstances.push(data.instance); if (typeof data.instance.getBeforeChangeEvent === 'function') { let /** @type {?} */ beforeChangeEmitter = data.instance.getBeforeChangeEvent(); if (beforeChangeEmitter !== null && typeof beforeChangeEmitter !== 'undefined') { beforeChangeEmitter.subscribe((event) => { if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { if (event.detail.data.bubbleStack !== null && typeof event.detail.data.bubbleStack !== 'undefined') { event.detail.data.bubbleStack.push(this); } else { event.detail.data.bubbleStack = [this]; } } } // event.wizardStepIndex = ; //! add wizard step index this.beforeChangeEvent.emit(event); }); } } if (typeof data.instance.getChangeEvent === 'function') { let /** @type {?} */ changeEmitter = data.instance.getChangeEvent(); if (changeEmitter !== null && typeof changeEmitter !== 'undefined') { changeEmitter.subscribe((event) => { if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { if (event.detail.data.bubbleStack !== null && typeof event.detail.data.bubbleStack !== 'undefined') { event.detail.data.bubbleStack.push(this); } else { event.detail.data.bubbleStack = [this]; } } } // event.wizardStepIndex = ; //! add wizard step index this.changeEvent.emit(event); }); } } }; } /** * @return {?} */ get app() { if (this.phloxAppService === null || typeof this.phloxAppService === 'undefined') { return null; } return this.phloxAppService.getInstance(); } /** * @return {?} */ ngOnInit() { this.stepSelected(0); if (this.model !== null && this.model !== undefined && this.model.header !== null) { this.headerHeight = this.model.header.height; } if (this.model !== null && this.model !== undefined && this.model.footer !== null) { this.footerHeight = this.model.footer.height; } // set default if (this.headerHeight === null || this.headerHeight === undefined) { if (this.app !== null && this.app !== undefined) { this.headerHeight = this.app.getAppInfo().settings.WIZARD_HEADER_HEIGHT; } } if (this.footerHeight === null || this.footerHeight === undefined) { if (this.app !== null && this.app !== undefined) { this.footerHeight = this.app.getAppInfo().settings.WIZARD_FOOTER_HEIGHT; } } } /** * @return {?} */ getModel() { return this.model; } /** * @param {?} model * @return {?} */ setModel(model) { this.model = model; } /** * @param {?} index * @return {?} */ stepSelected(index) { if (index === null) { return; } this.currentStep = index; this.showStepContent(index); } /** * @param {?} index * @return {?} */ isStepSelected(index) { if (index === null) { return; } if (this.currentStep !== null && this.currentStep > -1) { if (this.currentStep == index) { return true; } } return false; } /** * @return {?} */ getChangeEvent() { return this.changeEvent; } /** * @param {?} event * @return {?} */ setChangeEvent(event) { this.changeEvent = event; } /** * @return {?} */ getBeforeChangeEvent() { return this.beforeChangeEvent; } /** * @param {?} event * @return {?} */ setBeforeChangeEvent(event) { this.beforeChangeEvent = event; } /** * @return {?} */ isSelfDataDirty() { return false; } /** * @param {?} data * @return {?} */ selfSaveData(data) { } /** * @return {?} */ selfResetData() { } /** * @return {?} */ doPreload() { return new Promise((resolve, reject) => { resolve(null); }); } /** * @return {?} */ doLoaded() { } /** * @return {?} */ getHeaderHeight() { return this.headerHeight; } /** * @return {?} */ getFooterHeight() { return this.footerHeight; } /** * @return {?} */ getStepsComponentHandler() { return this.stepsComponentHandler; } /** * @return {?} */ getStepInstances() { return this.getDataChildren(); } /** * @param {?} index * @return {?} */ getStepInstance(index) { let /** @type {?} */ steps = this.getStepInstances(); if (!steps || index < 0 || steps.length <= index) { return null; } return steps[index]; } } AbstractWizardPane.propDecorators = { "model": [{ type: Input },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", WizardModel) ], AbstractWizardPane.prototype, "model", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractWizardPane.prototype, "changeEvent", void 0); tslib_1.__decorate([ Option('beforeChange'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractWizardPane.prototype, "beforeChangeEvent", void 0); function AbstractWizardPane_tsickle_Closure_declarations() { /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ AbstractWizardPane.propDecorators; /** @type {?} */ AbstractWizardPane.prototype.model; /** @type {?} */ AbstractWizardPane.prototype.currentStep; /** @type {?} */ AbstractWizardPane.prototype.headerHeight; /** @type {?} */ AbstractWizardPane.prototype.footerHeight; /** @type {?} */ AbstractWizardPane.prototype.phloxAppService; /** @type {?} */ AbstractWizardPane.prototype.changeEvent; /** @type {?} */ AbstractWizardPane.prototype.beforeChangeEvent; /** @type {?} */ AbstractWizardPane.prototype.stepsComponentHandler; /** @type {?} */ AbstractWizardPane.prototype.stepInstances; /** * @abstract * @param {?} index * @return {?} */ AbstractWizardPane.prototype.showStepContent = function (index) { }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RXaXphcmRQYW5lLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L0Fic3RyYWN0V2l6YXJkUGFuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBaUMsS0FBSyxFQUFhLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFRbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBRzFELE1BQU0seUJBQW1DLFNBQVEsZ0JBQWdCOzs7OztJQXVCL0QsWUFBWSxNQUF1QixFQUFFLFVBQXNCO1FBQ3pELEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRWxFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV2QyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FB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LE1BQU0sQ0FBQyxjQUFjLENBQUM7c0NBQ00sWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgV2l6YXJkTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9XaXphcmRNb2RlbCc7XHJcbmltcG9ydCB7IFdpemFyZFN0ZXBNb2RlbCB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XHJcblxyXG5pbXBvcnQgeyBQaGxveEFwcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL1BobG94QXBwU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUhhc01vZGVsIH0gZnJvbSAnLi4vSUhhc01vZGVsJztcclxuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi9JSGFzRGF0YSc7XHJcbmltcG9ydCB7IFBobG94QXBwIH0gZnJvbSAnLi4vUGhsb3hBcHAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWJzdHJhY3RIYXNEYXRhSGVscCB9IGZyb20gJy4uL0Fic3RyYWN0SGFzRGF0YUhlbHAnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdERhdGFWaWV3IH0gZnJvbSAnLi4vZGF0YXZpZXcvQWJzdHJhY3REYXRhVmlldyc7XHJcbmltcG9ydCB7IElDaGFuZ2VhYmxlIH0gZnJvbSAnLi4vSUNoYW5nZWFibGUnO1xyXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IEkxOE4gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvSTE4Ti5kZWNvcmF0b3InO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0V2l6YXJkUGFuZSBleHRlbmRzIEFic3RyYWN0RGF0YVZpZXcgaW1wbGVtZW50cyBPbkluaXQsIElIYXNNb2RlbCwgSUNoYW5nZWFibGUge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBtb2RlbDogV2l6YXJkTW9kZWw7XHJcbiAgcHJvdGVjdGVkIGN1cnJlbnRTdGVwOiBudW1iZXI7XHJcbiAgcHJvdGVjdGVkIGhlYWRlckhlaWdodDogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBmb290ZXJIZWlnaHQ6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgcGhsb3hBcHBTZXJ2aWNlOiBQaGxveEFwcFNlcnZpY2U7XHJcbiAgQE9wdGlvbignY2hhbmdlJylcclxuICBwcm90ZWN0ZWQgY2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPcHRpb24oJ2JlZm9yZUNoYW5nZScpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBwcm90ZWN0ZWQgc3RlcHNDb21wb25lbnRIYW5kbGVyOiBGdW5jdGlvbjtcclxuICBwcm90ZWN0ZWQgc3RlcEluc3RhbmNlczogYW55W107XHJcblxyXG4gIHByaXZhdGUgZ2V0IGFwcCgpOiBQaGxveEFwcCB7XHJcbiAgICBpZiAodGhpcy5waGxveEFwcFNlcnZpY2UgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMucGhsb3hBcHBTZXJ2aWNlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnBobG94QXBwU2VydmljZS5nZXRJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoYXBwU3ZjOiBQaGxveEFwcFNlcnZpY2UsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xyXG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IC0xO1xyXG4gICAgdGhpcy5waGxveEFwcFNlcnZpY2UgPSBhcHBTdmM7XHJcbiAgICB0aGlzLmNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgdGhpcy5iZWZvcmVDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICB0aGlzLnN0ZXBJbnN0YW5jZXMgPSAhdGhpcy5zdGVwSW5zdGFuY2VzPyBbXSA6IHRoaXMuc3RlcEluc3RhbmNlcztcclxuXHJcbiAgICB0aGlzLnN0ZXBzQ29tcG9uZW50SGFuZGxlciA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zdGVwSW5zdGFuY2VzLnB1c2goZGF0YS5pbnN0YW5jZSk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGRhdGEuaW5zdGFuY2UuZ2V0QmVmb3JlQ2hhbmdlRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBsZXQgYmVmb3JlQ2hhbmdlRW1pdHRlciA9IGRhdGEuaW5zdGFuY2UuZ2V0QmVmb3JlQ2hhbmdlRXZlbnQoKTtcclxuICAgICAgICBpZiAoYmVmb3JlQ2hhbmdlRW1pdHRlciAhPT0gbnVsbCAmJiB0eXBlb2YgYmVmb3JlQ2hhbmdlRW1pdHRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgIGJlZm9yZUNoYW5nZUVtaXR0ZXIuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwgIT09IG51bGwgJiYgdHlwZW9mIGV2ZW50LmRldGFpbCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLmRhdGEgIT09IG51bGwgJiYgdHlwZW9mIGV2ZW50LmRldGFpbC5kYXRhICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRldGFpbC5kYXRhLmJ1YmJsZVN0YWNrICE9PSBudWxsICYmIHR5cGVvZiBldmVudC5kZXRhaWwuZGF0YS5idWJibGVTdGFjayAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgZXZlbnQuZGV0YWlsLmRhdGEuYnViYmxlU3RhY2sucHVzaCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGV2ZW50LmRldGFpbC5kYXRhLmJ1YmJsZVN0YWNrID0gW3RoaXNdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgZXZlbnQud2l6YXJkU3RlcEluZGV4ID0gOyAvLyEgYWRkIHdpemFyZCBzdGVwIGluZGV4XHJcbiAgICAgICAgICAgIHRoaXMuYmVmb3JlQ2hhbmdlRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0eXBlb2YgZGF0YS5pbnN0YW5jZS5nZXRDaGFuZ2VFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGxldCBjaGFuZ2VFbWl0dGVyID0gZGF0YS5pbnN0YW5jZS5nZXRDaGFuZ2VFdmVudCgpO1xyXG4gICAgICAgIGlmIChjaGFuZ2VFbWl0dGVyICE9PSBudWxsICYmIHR5cGVvZiBjaGFuZ2VFbWl0dGVyICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgY2hhbmdlRW1pdHRlci5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50LmRldGFpbCAhPT0gbnVsbCAmJiB0eXBlb2YgZXZlbnQuZGV0YWlsICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwuZGF0YSAhPT0gbnVsbCAmJiB0eXBlb2YgZXZlbnQuZGV0YWlsLmRhdGEgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLmRhdGEuYnViYmxlU3RhY2sgIT09IG51bGwgJiYgdHlwZW9mIGV2ZW50LmRldGFpbC5kYXRhLmJ1YmJsZVN0YWNrICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICBldmVudC5kZXRhaWwuZGF0YS5idWJibGVTdGFjay5wdXNoKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZXZlbnQuZGV0YWlsLmRhdGEuYnViYmxlU3RhY2sgPSBbdGhpc107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICBldmVudC53aXphcmRTdGVwSW5kZXggPSA7IC8vISBhZGQgd2l6YXJkIHN0ZXAgaW5kZXhcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGVwU2VsZWN0ZWQoMCk7XHJcblxyXG4gICAgaWYgKHRoaXMubW9kZWwgIT09IG51bGwgJiYgdGhpcy5tb2RlbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMubW9kZWwuaGVhZGVyICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVySGVpZ2h0ID0gdGhpcy5tb2RlbC5oZWFkZXIuaGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZWwgIT09IG51bGwgJiYgdGhpcy5tb2RlbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMubW9kZWwuZm9vdGVyICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZm9vdGVySGVpZ2h0ID0gdGhpcy5tb2RlbC5mb290ZXIuaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCBkZWZhdWx0XHJcbiAgICBpZiAodGhpcy5oZWFkZXJIZWlnaHQgPT09IG51bGwgfHwgdGhpcy5oZWFkZXJIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5hcHAgIT09IG51bGwgJiYgdGhpcy5hcHAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuaGVhZGVySGVpZ2h0ID0gdGhpcy5hcHAuZ2V0QXBwSW5mbygpLnNldHRpbmdzLldJWkFSRF9IRUFERVJfSEVJR0hUO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5mb290ZXJIZWlnaHQgPT09IG51bGwgfHwgdGhpcy5mb290ZXJIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5hcHAgIT09IG51bGwgJiYgdGhpcy5hcHAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuZm9vdGVySGVpZ2h0ID0gdGhpcy5hcHAuZ2V0QXBwSW5mbygpLnNldHRpbmdzLldJWkFSRF9GT09URVJfSEVJR0hUO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWJzdHJhY3Qgc2hvd1N0ZXBDb250ZW50KGluZGV4OiBudW1iZXIpOiB2b2lkO1xyXG5cclxuICBwdWJsaWMgZ2V0TW9kZWwoKTogV2l6YXJkTW9kZWwge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TW9kZWwobW9kZWw6IFdpemFyZE1vZGVsKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGVsID0gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RlcFNlbGVjdGVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gaW5kZXg7XHJcblxyXG4gICAgdGhpcy5zaG93U3RlcENvbnRlbnQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzU3RlcFNlbGVjdGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3RlcCAhPT0gbnVsbCAmJiB0aGlzLmN1cnJlbnRTdGVwID4gLTEpIHtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXAgPT0gaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENoYW5nZUV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmNoYW5nZUV2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENoYW5nZUV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VFdmVudCA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEJlZm9yZUNoYW5nZUV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJlZm9yZUNoYW5nZUV2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEJlZm9yZUNoYW5nZUV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xyXG4gICAgdGhpcy5iZWZvcmVDaGFuZ2VFdmVudCA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzU2VsZkRhdGFEaXJ0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxmU2F2ZURhdGEoZGF0YTogYW55KTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGZSZXNldERhdGEoKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvUHJlbG9hZCgpOiBQcm9taXNlPGFueT4geyAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgICAgICAgcmVzb2x2ZShudWxsKTsgICAgIH0pOyAgIH0gIHB1YmxpYyBkb0xvYWRlZCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SGVhZGVySGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Rm9vdGVySGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5mb290ZXJIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3RlcHNDb21wb25lbnRIYW5kbGVyKCk6IEZ1bmN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLnN0ZXBzQ29tcG9uZW50SGFuZGxlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdGVwSW5zdGFuY2VzKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLmdldERhdGFDaGlsZHJlbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN0ZXBJbnN0YW5jZShpbmRleDogbnVtYmVyKTogYW55IHtcclxuICAgIGxldCBzdGVwczogYW55W10gPSB0aGlzLmdldFN0ZXBJbnN0YW5jZXMoKTtcclxuXHJcbiAgICBpZiAoIXN0ZXBzIHx8IGluZGV4IDwgMCB8fCBzdGVwcy5sZW5ndGggPD0gaW5kZXgpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN0ZXBzW2luZGV4XTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==