com.phloxui
Version:
PhloxUI Ng2+ Framework
270 lines (269 loc) • 24.8 kB
JavaScript
/**
* @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==