UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

270 lines (269 loc) 27.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { AbstractDataLangSelector } from './AbstractDataLangSelector'; /** * @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 = 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; } } 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.componentInstances; /** @type {?} */ AbstractComponentDataLangSelector.prototype.defaultComponentHandler; /** @type {?} */ AbstractComponentDataLangSelector.prototype.defaultComponentInstance; /** * @abstract * @return {?} any as one object. */ AbstractComponentDataLangSelector.prototype.getDefaultData = function () { }; /** * @abstract * @return {?} */ AbstractComponentDataLangSelector.prototype.getDataObjects = function () { }; /** * @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RDb21wb25lbnREYXRhTGFuZ1NlbGVjdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L0Fic3RyYWN0Q29tcG9uZW50RGF0YUxhbmdTZWxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFHdEUsTUFBTSx3Q0FBa0QsU0FBUSx3QkFBd0I7Ozs7O0lBVXBGLFlBQVksVUFBc0IsRUFBRSxhQUE0QjtRQUM1RCxLQUFLLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFFaEQscUJBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QyxxQkFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNELEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3REO1NBQ0osQ0FBQTtRQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3BDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDbkQsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksT0FB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LElBQUksQ0FBQzthQUM1QztTQUNKO1FBQ0QscUJBQUksT0FBTyxHQUFHO1lBQ1YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7UUFFRixNQUFNLENBQUMsT0FBTyxDQUFDOzs7OztJQUdaLDJCQUEyQjtRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDOzs7OztJQUdoQyxxQkFBcUI7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzs7Ozs7SUFHMUIsMEJBQTBCO1FBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7Ozs7O0lBRy9CLG1CQUFtQjtRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDOztDQW9CbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL0RpYWxvZ1NlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERhdGFMYW5nU2VsZWN0b3IgfSBmcm9tICcuL0Fic3RyYWN0RGF0YUxhbmdTZWxlY3Rvcic7XG5pbXBvcnQgeyBMYW5ndWFnZUJ1dHRvbk1vZGVsIH0gZnJvbSAnLi9tb2RlbC9MYW5ndWFnZUJ1dHRvbk1vZGVsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q29tcG9uZW50RGF0YUxhbmdTZWxlY3RvciBleHRlbmRzIEFic3RyYWN0RGF0YUxhbmdTZWxlY3RvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50SGFuZGxlcjogRnVuY3Rpb247XG4gICAgLyoqXG4gICAgICogdGhlIG9iamVjdCBtYXAgdGhhdCBjb250YWlucyBjb21wb25lbnQgaW5zdGFuY2VzIHRoYXQgaGFzIGxhbmdDb2RlIGFzIGEga2V5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudEluc3RhbmNlczogYW55O1xuICAgIHByb3RlY3RlZCBkZWZhdWx0Q29tcG9uZW50SGFuZGxlcjogRnVuY3Rpb247XG4gICAgcHJvdGVjdGVkIGRlZmF1bHRDb21wb25lbnRJbnN0YW5jZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBkaWFsb2dTZXJ2aWNlKTtcblxuICAgICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlcyA9IHt9O1xuXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudEhhbmRsZXIgPSAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudEluc3RhbmNlID0gcmVzdWx0Lmluc3RhbmNlO1xuXG4gICAgICAgICAgICBsZXQgZGVmYXVsdERhdGEgPSB0aGlzLmdldERlZmF1bHREYXRhKCk7XG4gICAgICAgICAgICBsZXQgZGVmV3JhcERhdGEgPSB0aGlzLmdldEluc3RhbmNlRGVmYXVsdERhdGEoZGVmYXVsdERhdGEpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlZmF1bHRDb21wb25lbnRJbnN0YW5jZS5zZXREYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29tcG9uZW50SW5zdGFuY2Uuc2V0RGF0YShkZWZXcmFwRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBvbmVudEhhbmRsZXIgPSAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgdHlwZW9mIHJlc3VsdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnNldHRpbmcgIT09IG51bGwgJiYgdHlwZW9mIHJlc3VsdC5zZXR0aW5nICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0dGluZy5jb2RlICE9PSBudWxsICYmIHR5cGVvZiByZXN1bHQuc2V0dGluZy5jb2RlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlc1tyZXN1bHQuc2V0dGluZy5jb2RlXSA9IHJlc3VsdC5pbnN0YW5jZTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YUxhbmcgPSB0aGlzLmdldERhdGFMYW5nRnJvbUluZGV4KHJlc3VsdC5zZXR0aW5nLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFMYW5nV3JhcERhdGEgPSB0aGlzLmdldEluc3RhbmNlRGF0YUxhbmd1YWdlKGRhdGFMYW5nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudEluc3RhbmNlc1tyZXN1bHQuc2V0dGluZy5jb2RlXS5zZXREYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlc1tyZXN1bHQuc2V0dGluZy5jb2RlXS5zZXREYXRhKGRhdGFMYW5nV3JhcERhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5kZXhGcm9tRGF0YUxhbmcoZGF0YTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGRhdGEgIT09IG51bGwgJiYgdHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhTGFuZ0xpc3QuaW5kZXhPZihkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGFMYW5nRnJvbUluZGV4KGluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgICAgICBpZiAoaW5kZXggIT09IG51bGwgJiYgdHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJyAmJiBpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmRhdGFMYW5nTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhTGFuZ0xpc3RbaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFudWFnZUluZGV4RnJvbUNvZGUobGFuZ0NvZGU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGlmIChsYW5nQ29kZSA9PT0gbnVsbCB8fCB0eXBlb2YgbGFuZ0NvZGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGFuZ3VhZ2VMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbGFuZyA9IHRoaXMubGFuZ3VhZ2VMaXN0W2ldO1xuICAgICAgICAgICAgaWYgKGxhbmcgPT09IG51bGwgfHwgdHlwZW9mIGxhbmcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbENvZGUgPSBsYW5nLmNvZGU7XG4gICAgICAgICAgICBpZiAobGFuZ0NvZGUgPT09IGxDb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZUFkZGluZ0RhdGFUb0luc3RhbmNlKCk6IHZvaWQge1xuICAgICAgICBsZXQgZGVmYXVsdERhdGEgPSB0aGlzLmdldERlZmF1bHREYXRhKCk7XG4gICAgICAgIGxldCBkZWZXcmFwRGF0YSA9IHRoaXMuZ2V0SW5zdGFuY2VEZWZhdWx0RGF0YShkZWZhdWx0RGF0YSk7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRDb21wb25lbnRJbnN0YW5jZSAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5kZWZhdWx0Q29tcG9uZW50SW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVmYXVsdENvbXBvbmVudEluc3RhbmNlLnNldERhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRDb21wb25lbnRJbnN0YW5jZS5zZXREYXRhKGRlZldyYXBEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhTGFuZ0xpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBkID0gdGhpcy5kYXRhTGFuZ0xpc3RbaV07XG4gICAgICAgICAgICBsZXQgc2V0dGluZyA9IHRoaXMuZ2V0Q29tcG9uZW50U2V0dGluZyhpKTtcbiAgICAgICAgICAgIGxldCBsYW5nQ29kZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAoc2V0dGluZyAhPT0gbnVsbCAmJiB0eXBlb2Ygc2V0dGluZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBsYW5nQ29kZSA9IHNldHRpbmcuY29kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxhbmdDb2RlID09PSBudWxsIHx8IHR5cGVvZiBsYW5nQ29kZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5jb21wb25lbnRJbnN0YW5jZXNbbGFuZ0NvZGVdO1xuICAgICAgICAgICAgaWYgKGluc3RhbmNlICE9PSBudWxsICYmIHR5cGVvZiBpbnN0YW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGluc3RhbmNlLnNldERhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRXcmFwID0gdGhpcy5nZXRJbnN0YW5jZURhdGFMYW5ndWFnZShkKTtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2V0RGF0YShkV3JhcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnNldERhdGEoZGF0YSk7XG4gICAgICAgIHRoaXMucmVBZGRpbmdEYXRhVG9JbnN0YW5jZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBsYW5nQ29kZSBzdHJpbmcgYXMgYSBsYW5ndWFnZSBjb2RlXG4gICAgICogQHJldHVybiBhbnkgYXMgYSBjb21wb25lbnQgaW5zdGFuY2Ugb2YgbGFuZ0NvZGUgcmV0dXJuIGRlZmF1bHRJbnN0YW5jZSBpZiBsYW5nQ29kZSBpcyBudWxsXG4gICAgICovXG4gICAgcHVibGljIGdldENvbXBvbmVudEluc3RhbmNlKGxhbmdDb2RlOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAobGFuZ0NvZGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGlmIG51bGwgc2hvdWxkIHJldHVybiBkZWZhdWx0IGluc3RhbmNlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q29tcG9uZW50SW5zdGFuY2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhbmdDb2RlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGxldCBpbnN0ID0gdGhpcy5jb21wb25lbnRJbnN0YW5jZXNbbGFuZ0NvZGVdO1xuICAgICAgICAgICAgICAgIGlmIChpbnN0ICE9PSBudWxsICYmIHR5cGVvZiBpbnN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkYXRhIG51bGwgcmV0dXJuIGFzIGEgZGVmYXVsdEluc3RhbmNlRGlydHlcbiAgICAgKiBAcGFyYW0gZGF0YSBhcyBhIGRhdGFMYW5ndWFnZVxuICAgICAqIEByZXR1cm4gYm9vbGVhbiBpcyBkYXRhTGFuZ3VhZ2VEaXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBpc0RhdGFMYW5ndWFnZURpcnR5KGRhdGE6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgaW5zdCA9IG51bGxcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgaW5zdCA9IHRoaXMuZGVmYXVsdENvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBpbmRleFxuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuZ2V0SW5kZXhGcm9tRGF0YUxhbmcoZGF0YSk7XG4gICAgICAgICAgICAgICAgbGV0IHNldHRpbmcgPSB0aGlzLmdldENvbXBvbmVudFNldHRpbmcoaW5kZXgpO1xuICAgICAgICAgICAgICAgIGxldCBsYW5nQ29kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHNldHRpbmcgIT09IG51bGwgJiYgdHlwZW9mIHNldHRpbmcgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxhbmdDb2RlID0gc2V0dGluZy5jb2RlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobGFuZ0NvZGUgIT09IG51bGwgJiYgdHlwZW9mIGxhbmdDb2RlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBpbnN0ID0gdGhpcy5jb21wb25lbnRJbnN0YW5jZXNbbGFuZ0NvZGVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnN0ICE9PSBudWxsICYmIHR5cGVvZiBpbnN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnN0LmlzRGF0YURpcnR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluc3QuaXNEYXRhRGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbXBvbmVudFNldHRpbmcoaW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgICAgIGxldCBsYW5nQ29kZSA9IG51bGw7XG4gICAgICAgIGlmIChpbmRleCAhPT0gbnVsbCAmJiB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSAmJiBpbmRleCA8IHRoaXMubGFuZ3VhZ2VMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxhbmdDb2RlID0gdGhpcy5sYW5ndWFnZUxpc3RbaW5kZXhdLmNvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNldHRpbmcgPSB7XG4gICAgICAgICAgICBjb2RlOiBsYW5nQ29kZSxcbiAgICAgICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzZXR0aW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWZhdWx0Q29tcG9uZW50SW5zdGFuY2UoKTogYW55IHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDb21wb25lbnRJbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29tcG9uZW50SW5zdGFuY2VzKCk6IGFueSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRJbnN0YW5jZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlZmF1bHRDb21wb25lbnRIYW5kbGVyKCk6IEZ1bmN0aW9uIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDb21wb25lbnRIYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb21wb25lbnRIYW5kbGVyKCk6IEZ1bmN0aW9uIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEhhbmRsZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGEgYXMgYW55XG4gICAgICogQHJldHVybiBhbnkgYXMgb25lIG9iamVjdC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0RGVmYXVsdERhdGEoKTogYW55O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldERhdGFPYmplY3RzKCk6IGFueVtdO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGdldExhbmd1YWdlRmllbGROYW1lKCk6IHN0cmluZztcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRPYmplY3RJZEZpZWxkTmFtZSgpOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0SW5zdGFuY2VEZWZhdWx0RGF0YShkYXRhOiBhbnkpOiBhbnk7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0SW5zdGFuY2VEYXRhTGFuZ3VhZ2UoZGF0YTogYW55KTogYW55O1xuXG4gICAgcHVibGljIGFic3RyYWN0IHBhcnNlTGFuZ3VhZ2VCdXR0b25Nb2RlbChsYW5nQ29kZTogc3RyaW5nKTogTGFuZ3VhZ2VCdXR0b25Nb2RlbDtcbn1cbiJdfQ==