com.phloxui
Version:
PhloxUI Ng2+ Framework
275 lines (274 loc) • 27.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { AbstractDataLangSelector } from './AbstractDataLangSelector';
import { I18N, Option } from '../../decorator/decorators';
/**
* @abstract
*/
export class AbstractComponentDataLangSelector extends AbstractDataLangSelector {
/**
* @param {?} elementRef
* @param {?} dialogService
*/
constructor(elementRef, dialogService) {
super(elementRef, dialogService);
this.componentInstances = {};
this.defaultComponentHandler = (result) => {
this.defaultComponentInstance = result.instance;
let /** @type {?} */ defaultData = this.getDefaultData();
let /** @type {?} */ defWrapData = this.getInstanceDefaultData(defaultData);
if (typeof this.defaultComponentInstance.setData === 'function') {
this.defaultComponentInstance.setData(defWrapData);
}
};
this.componentHandler = (result) => {
if (result !== null && typeof result !== 'undefined') {
if (result.setting !== null && typeof result.setting !== 'undefined' &&
result.setting.code !== null && typeof result.setting.code !== 'undefined') {
this.componentInstances[result.setting.code] = result.instance;
let /** @type {?} */ dataLang = this.getDataLangFromIndex(result.setting.index);
let /** @type {?} */ dataLangWrapData = this.getInstanceDataLanguage(dataLang);
if (typeof this.componentInstances[result.setting.code].setData === 'function') {
this.componentInstances[result.setting.code].setData(dataLangWrapData);
}
}
}
};
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
}
/**
* @param {?} data
* @return {?}
*/
getIndexFromDataLang(data) {
if (data !== null && typeof data !== 'undefined') {
return this.dataLangList.indexOf(data);
}
return -1;
}
/**
* @param {?} index
* @return {?}
*/
getDataLangFromIndex(index) {
if (index !== null && typeof index === 'number' && index > -1) {
if (index < this.dataLangList.length) {
return this.dataLangList[index];
}
}
return null;
}
/**
* @param {?} langCode
* @return {?}
*/
getLanuageIndexFromCode(langCode) {
if (langCode === null || typeof langCode === 'undefined') {
return -1;
}
for (let /** @type {?} */ i = 0; i < this.languageList.length; i++) {
let /** @type {?} */ lang = this.languageList[i];
if (lang === null || typeof lang === 'undefined') {
continue;
}
let /** @type {?} */ lCode = lang.code;
if (langCode === lCode) {
return i;
}
}
return -1;
}
/**
* @return {?}
*/
reAddingDataToInstance() {
let /** @type {?} */ defaultData = this.getDefaultData();
let /** @type {?} */ defWrapData = this.getInstanceDefaultData(defaultData);
if (this.defaultComponentInstance !== null && typeof this.defaultComponentInstance !== 'undefined') {
if (typeof this.defaultComponentInstance.setData === 'function') {
this.defaultComponentInstance.setData(defWrapData);
}
}
for (let /** @type {?} */ i = 0; i < this.dataLangList.length; i++) {
let /** @type {?} */ d = this.dataLangList[i];
let /** @type {?} */ setting = this.getComponentSetting(i);
let /** @type {?} */ langCode = null;
if (setting !== null && typeof setting !== 'undefined') {
langCode = setting.code;
}
if (langCode === null || typeof langCode === 'undefined') {
continue;
}
let /** @type {?} */ instance = null;
if (this.componentInstances !== null && typeof this.componentInstances !== 'undefined') {
instance = this.componentInstances[langCode];
}
if (instance !== null && typeof instance !== 'undefined') {
if (typeof instance.setData === 'function') {
let /** @type {?} */ dWrap = this.getInstanceDataLanguage(d);
instance.setData(dWrap);
}
}
}
}
/**
* @param {?} data
* @return {?}
*/
setData(data) {
super.setData(data);
this.reAddingDataToInstance();
}
/**
* @param {?} langCode string as a language code
* @return {?} any as a component instance of langCode return defaultInstance if langCode is null
*/
getComponentInstance(langCode) {
if (langCode === null) {
// if null should return default instance
return this.defaultComponentInstance;
}
else {
if (typeof langCode !== 'undefined') {
let /** @type {?} */ inst = this.componentInstances[langCode];
if (inst !== null && typeof inst !== 'undefined') {
return inst;
}
}
}
return null;
}
/**
* data null return as a defaultInstanceDirty
* @param {?} data as a dataLanguage
* @return {?} boolean is dataLanguageDirty
*/
isDataLanguageDirty(data) {
let /** @type {?} */ inst = null;
if (typeof data !== 'undefined') {
if (data === null) {
// default
inst = this.defaultComponentInstance;
}
else {
// index
let /** @type {?} */ index = this.getIndexFromDataLang(data);
let /** @type {?} */ setting = this.getComponentSetting(index);
let /** @type {?} */ langCode = null;
if (setting !== null && typeof setting !== 'undefined') {
langCode = setting.code;
}
if (langCode !== null && typeof langCode !== 'undefined') {
inst = this.componentInstances[langCode];
}
}
}
if (inst !== null && typeof inst !== 'undefined') {
if (typeof inst.isDataDirty === 'function') {
return inst.isDataDirty();
}
}
return false;
}
/**
* @param {?} index
* @return {?}
*/
getComponentSetting(index) {
let /** @type {?} */ langCode = null;
if (index !== null && typeof index === 'number') {
if (index > -1 && index < this.languageList.length) {
langCode = this.languageList[index].code;
}
}
let /** @type {?} */ setting = {
code: langCode,
index: index
};
return setting;
}
/**
* @return {?}
*/
getDefaultComponentInstance() {
return this.defaultComponentInstance;
}
/**
* @return {?}
*/
getComponentInstances() {
return this.componentInstances;
}
/**
* @return {?}
*/
getDefaultComponentHandler() {
return this.defaultComponentHandler;
}
/**
* @return {?}
*/
getComponentHandler() {
return this.componentHandler;
}
}
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], AbstractComponentDataLangSelector.prototype, "componentInstances", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], AbstractComponentDataLangSelector.prototype, "defaultComponentInstance", void 0);
function AbstractComponentDataLangSelector_tsickle_Closure_declarations() {
/** @type {?} */
AbstractComponentDataLangSelector.prototype.componentHandler;
/**
* the object map that contains component instances that has langCode as a key
* @type {?}
*/
AbstractComponentDataLangSelector.prototype.defaultComponentHandler;
/** @type {?} */
AbstractComponentDataLangSelector.prototype.componentInstances;
/** @type {?} */
AbstractComponentDataLangSelector.prototype.defaultComponentInstance;
/**
* @abstract
* @return {?}
*/
AbstractComponentDataLangSelector.prototype.getLanguageFieldName = function () { };
/**
* @abstract
* @return {?}
*/
AbstractComponentDataLangSelector.prototype.getObjectIdFieldName = function () { };
/**
* @abstract
* @param {?} data
* @return {?}
*/
AbstractComponentDataLangSelector.prototype.getInstanceDefaultData = function (data) { };
/**
* @abstract
* @param {?} data
* @return {?}
*/
AbstractComponentDataLangSelector.prototype.getInstanceDataLanguage = function (data) { };
/**
* @abstract
* @param {?} langCode
* @return {?}
*/
AbstractComponentDataLangSelector.prototype.parseLanguageButtonModel = function (langCode) { };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RDb21wb25lbnREYXRhTGFuZ1NlbGVjdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L0Fic3RyYWN0Q29tcG9uZW50RGF0YUxhbmdTZWxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFFMUQsTUFBTSx3Q0FBa0QsU0FBUSx3QkFBd0I7Ozs7O0lBY3BGLFlBQVksVUFBc0IsRUFBRSxhQUE0QjtRQUM1RCxLQUFLLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFFaEQscUJBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QyxxQkFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNELEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3REO1NBQ0osQ0FBQTtRQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3BDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENB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QUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDOUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQzthQUM1QztTQUNKO1FBQ0QscUJBQUksT0FBTyxHQUFHO1lBQ1YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7UUFFRixNQUFNLENBQUMsT0FBTyxDQUFDOzs7OztJQUdaLDJCQUEyQjtRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDOzs7OztJQUdoQyxxQkFBcUI7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzs7Ozs7SUFHMUIsMEJBQTBCO1FBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7Ozs7O0lBRy9CLG1CQUFtQjtRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDOztDQVlsQzs7SUFsTkksSUFBSSxFQUFFO0lBQ04sTUFBTSxFQUFFOzs7O0lBRVIsSUFBSSxFQUFFO0lBQ04sTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEhvc3RMaXN0ZW5lciwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9EaWFsb2dTZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhTGFuZ1NlbGVjdG9yIH0gZnJvbSAnLi9BYnN0cmFjdERhdGFMYW5nU2VsZWN0b3InO1xuaW1wb3J0IHsgTGFuZ3VhZ2VCdXR0b25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL0xhbmd1YWdlQnV0dG9uTW9kZWwnO1xuaW1wb3J0IHsgSTE4TiwgT3B0aW9uIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL2RlY29yYXRvcnMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RDb21wb25lbnREYXRhTGFuZ1NlbGVjdG9yIGV4dGVuZHMgQWJzdHJhY3REYXRhTGFuZ1NlbGVjdG9yIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHByb3RlY3RlZCBjb21wb25lbnRIYW5kbGVyOiBGdW5jdGlvbjtcbiAgICAvKipcbiAgICAgKiB0aGUgb2JqZWN0IG1hcCB0aGF0IGNvbnRhaW5zIGNvbXBvbmVudCBpbnN0YW5jZXMgdGhhdCBoYXMgbGFuZ0NvZGUgYXMgYSBrZXlcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdENvbXBvbmVudEhhbmRsZXI6IEZ1bmN0aW9uO1xuICAgIEBJMThOKClcbiAgICBAT3B0aW9uKClcbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50SW5zdGFuY2VzOiBhbnk7XG4gICAgQEkxOE4oKVxuICAgIEBPcHRpb24oKVxuICAgIHByb3RlY3RlZCBkZWZhdWx0Q29tcG9uZW50SW5zdGFuY2U6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGlhbG9nU2VydmljZSk7XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZXMgPSB7fTtcblxuICAgICAgICB0aGlzLmRlZmF1bHRDb21wb25lbnRIYW5kbGVyID0gKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRDb21wb25lbnRJbnN0YW5jZSA9IHJlc3VsdC5pbnN0YW5jZTtcblxuICAgICAgICAgICAgbGV0IGRlZmF1bHREYXRhID0gdGhpcy5nZXREZWZhdWx0RGF0YSgpO1xuICAgICAgICAgICAgbGV0IGRlZldyYXBEYXRhID0gdGhpcy5nZXRJbnN0YW5jZURlZmF1bHREYXRhKGRlZmF1bHREYXRhKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWZhdWx0Q29tcG9uZW50SW5zdGFuY2Uuc2V0RGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudEluc3RhbmNlLnNldERhdGEoZGVmV3JhcERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRIYW5kbGVyID0gKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmIHR5cGVvZiByZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zZXR0aW5nICE9PSBudWxsICYmIHR5cGVvZiByZXN1bHQuc2V0dGluZyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldHRpbmcuY29kZSAhPT0gbnVsbCAmJiB0eXBlb2YgcmVzdWx0LnNldHRpbmcuY29kZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZXNbcmVzdWx0LnNldHRpbmcuY29kZV0gPSByZXN1bHQuaW5zdGFuY2U7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFMYW5nID0gdGhpcy5nZXREYXRhTGFuZ0Zyb21JbmRleChyZXN1bHQuc2V0dGluZy5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhTGFuZ1dyYXBEYXRhID0gdGhpcy5nZXRJbnN0YW5jZURhdGFMYW5ndWFnZShkYXRhTGFuZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21wb25lbnRJbnN0YW5jZXNbcmVzdWx0LnNldHRpbmcuY29kZV0uc2V0RGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZXNbcmVzdWx0LnNldHRpbmcuY29kZV0uc2V0RGF0YShkYXRhTGFuZ1dyYXBEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEluZGV4RnJvbURhdGFMYW5nKGRhdGE6IGFueSk6IG51bWJlciB7XG4gICAgICAgIGlmIChkYXRhICE9PSBudWxsICYmIHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUxhbmdMaXN0LmluZGV4T2YoZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRhTGFuZ0Zyb21JbmRleChpbmRleDogbnVtYmVyKTogYW55IHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBudWxsICYmIHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicgJiYgaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5kYXRhTGFuZ0xpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUxhbmdMaXN0W2luZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhbnVhZ2VJbmRleEZyb21Db2RlKGxhbmdDb2RlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAobGFuZ0NvZGUgPT09IG51bGwgfHwgdHlwZW9mIGxhbmdDb2RlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxhbmd1YWdlTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGxhbmcgPSB0aGlzLmxhbmd1YWdlTGlzdFtpXTtcbiAgICAgICAgICAgIGlmIChsYW5nID09PSBudWxsIHx8IHR5cGVvZiBsYW5nID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGxDb2RlID0gbGFuZy5jb2RlO1xuICAgICAgICAgICAgaWYgKGxhbmdDb2RlID09PSBsQ29kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVBZGRpbmdEYXRhVG9JbnN0YW5jZSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGRlZmF1bHREYXRhID0gdGhpcy5nZXREZWZhdWx0RGF0YSgpO1xuICAgICAgICBsZXQgZGVmV3JhcERhdGEgPSB0aGlzLmdldEluc3RhbmNlRGVmYXVsdERhdGEoZGVmYXVsdERhdGEpO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q29tcG9uZW50SW5zdGFuY2UgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZGVmYXVsdENvbXBvbmVudEluc3RhbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlZmF1bHRDb21wb25lbnRJbnN0YW5jZS5zZXREYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29tcG9uZW50SW5zdGFuY2Uuc2V0RGF0YShkZWZXcmFwRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YUxhbmdMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZCA9IHRoaXMuZGF0YUxhbmdMaXN0W2ldO1xuICAgICAgICAgICAgbGV0IHNldHRpbmcgPSB0aGlzLmdldENvbXBvbmVudFNldHRpbmcoaSk7XG4gICAgICAgICAgICBsZXQgbGFuZ0NvZGUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHNldHRpbmcgIT09IG51bGwgJiYgdHlwZW9mIHNldHRpbmcgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgbGFuZ0NvZGUgPSBzZXR0aW5nLmNvZGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsYW5nQ29kZSA9PT0gbnVsbCB8fCB0eXBlb2YgbGFuZ0NvZGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBpbnN0YW5jZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5jb21wb25lbnRJbnN0YW5jZXMgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuY29tcG9uZW50SW5zdGFuY2VzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5jb21wb25lbnRJbnN0YW5jZXNbbGFuZ0NvZGVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UgIT09IG51bGwgJiYgdHlwZW9mIGluc3RhbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaW5zdGFuY2Uuc2V0RGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZFdyYXAgPSB0aGlzLmdldEluc3RhbmNlRGF0YUxhbmd1YWdlKGQpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZXREYXRhKGRXcmFwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGF0YShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuc2V0RGF0YShkYXRhKTtcbiAgICAgICAgdGhpcy5yZUFkZGluZ0RhdGFUb0luc3RhbmNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGxhbmdDb2RlIHN0cmluZyBhcyBhIGxhbmd1YWdlIGNvZGVcbiAgICAgKiBAcmV0dXJuIGFueSBhcyBhIGNvbXBvbmVudCBpbnN0YW5jZSBvZiBsYW5nQ29kZSByZXR1cm4gZGVmYXVsdEluc3RhbmNlIGlmIGxhbmdDb2RlIGlzIG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29tcG9uZW50SW5zdGFuY2UobGFuZ0NvZGU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmIChsYW5nQ29kZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gaWYgbnVsbCBzaG91bGQgcmV0dXJuIGRlZmF1bHQgaW5zdGFuY2VcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDb21wb25lbnRJbnN0YW5jZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGFuZ0NvZGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluc3QgPSB0aGlzLmNvbXBvbmVudEluc3RhbmNlc1tsYW5nQ29kZV07XG4gICAgICAgICAgICAgICAgaWYgKGluc3QgIT09IG51bGwgJiYgdHlwZW9mIGluc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRhdGEgbnVsbCByZXR1cm4gYXMgYSBkZWZhdWx0SW5zdGFuY2VEaXJ0eVxuICAgICAqIEBwYXJhbSBkYXRhIGFzIGEgZGF0YUxhbmd1YWdlXG4gICAgICogQHJldHVybiBib29sZWFuIGlzIGRhdGFMYW5ndWFnZURpcnR5XG4gICAgICovXG4gICAgcHVibGljIGlzRGF0YUxhbmd1YWdlRGlydHkoZGF0YTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBpbnN0ID0gbnVsbFxuICAgICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHRcbiAgICAgICAgICAgICAgICBpbnN0ID0gdGhpcy5kZWZhdWx0Q29tcG9uZW50SW5zdGFuY2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGluZGV4XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5nZXRJbmRleEZyb21EYXRhTGFuZyhkYXRhKTtcbiAgICAgICAgICAgICAgICBsZXQgc2V0dGluZyA9IHRoaXMuZ2V0Q29tcG9uZW50U2V0dGluZyhpbmRleCk7XG4gICAgICAgICAgICAgICAgbGV0IGxhbmdDb2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZyAhPT0gbnVsbCAmJiB0eXBlb2Ygc2V0dGluZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ0NvZGUgPSBzZXR0aW5nLmNvZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChsYW5nQ29kZSAhPT0gbnVsbCAmJiB0eXBlb2YgbGFuZ0NvZGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3QgPSB0aGlzLmNvbXBvbmVudEluc3RhbmNlc1tsYW5nQ29kZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluc3QgIT09IG51bGwgJiYgdHlwZW9mIGluc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGluc3QuaXNEYXRhRGlydHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5zdC5pc0RhdGFEaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29tcG9uZW50U2V0dGluZyhpbmRleDogbnVtYmVyKTogYW55IHtcbiAgICAgICAgbGV0IGxhbmdDb2RlID0gbnVsbDtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBudWxsICYmIHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xICYmIGluZGV4IDwgdGhpcy5sYW5ndWFnZUxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbGFuZ0NvZGUgPSB0aGlzLmxhbmd1YWdlTGlzdFtpbmRleF0uY29kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgc2V0dGluZyA9IHtcbiAgICAgICAgICAgIGNvZGU6IGxhbmdDb2RlLFxuICAgICAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHNldHRpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlZmF1bHRDb21wb25lbnRJbnN0YW5jZSgpOiBhbnkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENvbXBvbmVudEluc3RhbmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb21wb25lbnRJbnN0YW5jZXMoKTogYW55IHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdENvbXBvbmVudEhhbmRsZXIoKTogRnVuY3Rpb24ge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENvbXBvbmVudEhhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbXBvbmVudEhhbmRsZXIoKTogRnVuY3Rpb24ge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50SGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0TGFuZ3VhZ2VGaWVsZE5hbWUoKTogc3RyaW5nO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGdldE9iamVjdElkRmllbGROYW1lKCk6IHN0cmluZztcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRJbnN0YW5jZURlZmF1bHREYXRhKGRhdGE6IGFueSk6IGFueTtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRJbnN0YW5jZURhdGFMYW5ndWFnZShkYXRhOiBhbnkpOiBhbnk7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgcGFyc2VMYW5ndWFnZUJ1dHRvbk1vZGVsKGxhbmdDb2RlOiBzdHJpbmcpOiBMYW5ndWFnZUJ1dHRvbk1vZGVsO1xufVxuIl19