@cause-911/devextreme
Version:
Run `npm install @cause-911/devextreme --save` to add this library to your project
195 lines • 15.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { TranslateService, CoreService } from '@cause-911/core';
export class CauseTextBoxMultipleLangueComponent {
/**
* @param {?} coreService
* @param {?} translate
*/
constructor(coreService, translate) {
this.translate = translate;
this.valueChange = new EventEmitter();
this.isValid = true;
this.isValidLang = {};
this.tabs = [];
this.selectedIndex = 0;
this.values = [];
this.validation = {
isRequired: false
};
this.config = coreService.getConfig();
}
/**
* @return {?}
*/
get isRequired() {
return this.validation.isRequired;
}
/**
* @param {?} value
* @return {?}
*/
set isRequired(value) {
this.validation.isRequired = value;
this.validate();
}
/**
* @return {?}
*/
get value() {
return this.values;
}
/**
* @param {?} value
* @return {?}
*/
set value(value) {
if (typeof (value) === 'string' || typeof (value) === 'undefined') {
for (const i of this.config.languages) {
/** @type {?} */
const valueLang = {};
valueLang['languageCode'] = i;
valueLang[this.localizationField] = value || '';
this.values.push(valueLang);
}
}
else if (typeof (value) === 'object') {
this.values = value;
}
}
/**
* @return {?}
*/
ngOnInit() {
this.translate.get(this.config.languages).subscribe((/**
* @param {?} labels
* @return {?}
*/
labels => {
for (const i in labels) {
if (labels[i]) {
this.isValidLang[i] = true;
this.tabs.push({
languageCode: i,
text: labels[i],
});
}
}
}));
}
/**
* @param {?} languageCode
* @return {?}
*/
getLocalizationIndex(languageCode) {
/** @type {?} */
const index = this.values.findIndex((/**
* @param {?} l
* @return {?}
*/
l => l.languageCode === languageCode));
if (index === -1) {
/** @type {?} */
const value = {};
value['languageCode'] = languageCode;
value[this.localizationField] = '';
this.values.push(value);
return this.values.length - 1;
}
return index;
}
/**
* @return {?}
*/
validate() {
/** @type {?} */
let isValid = true;
this.config.languages.forEach((/**
* @param {?} lang
* @return {?}
*/
lang => {
/** @type {?} */
const index = this.values.findIndex((/**
* @param {?} l
* @return {?}
*/
l => l.languageCode === lang));
if (this.validation.isRequired && (index === -1 || !this.values[index][this.localizationField])) {
isValid = false;
this.isValidLang[lang] = false;
}
else {
this.isValidLang[lang] = true;
}
}));
this.isValid = isValid;
}
/**
* @param {?} e
* @return {?}
*/
onTagChanged(e) {
this.validate();
}
/**
* @return {?}
*/
onValueChanged() {
this.validate();
this.valueChange.emit(this.values);
}
}
CauseTextBoxMultipleLangueComponent.decorators = [
{ type: Component, args: [{
selector: 'cause-dx-text-box-multiple-langue',
template: "<dx-tab-panel\n [dataSource]=\"tabs\"\n [selectedIndex]=\"selectedIndex\"\n (onSelectionChanged)=\"onTagChanged($event)\">\n <div *dxTemplate=\"let lang of 'title'\">\n <span [class]=\"isValidLang[lang.languageCode] ? '' : 'text-error'\">{{lang.text}}</span>\n <span *ngIf=\"!isValidLang[lang.languageCode]\" class=\"icon-error\">\n <i class=\"dx-icon-info\"></i>\n </span>\n </div>\n <div *dxTemplate=\"let lang of 'item'\">\n <div *ngIf=\"localizationField\">\n <dx-text-box\n [placeholder]=\"lang.text\"\n [(value)]=\"value[getLocalizationIndex(lang.languageCode)][localizationField]\"\n valueChangeEvent=\"keyup\"\n (onValueChanged)=\"onValueChanged()\">\n </dx-text-box>\n </div>\n <div *ngIf=\"!localizationField\">\n <dx-text-box\n [placeholder]=\"lang.text\"\n [(value)]=\"value[lang.languageCode]\"\n valueChangeEvent=\"keyup\"\n (onValueChanged)=\"onValueChanged()\">\n </dx-text-box>\n </div>\n </div>\n</dx-tab-panel>\n",
styles: [".text-error{color:#d9534f}.icon-error{color:#fff;border-radius:50%;margin-left:.5em;background-color:#d9534f}"]
}] }
];
/** @nocollapse */
CauseTextBoxMultipleLangueComponent.ctorParameters = () => [
{ type: CoreService },
{ type: TranslateService }
];
CauseTextBoxMultipleLangueComponent.propDecorators = {
valueChange: [{ type: Output }],
localizationField: [{ type: Input }],
isRequired: [{ type: Input, args: ['isRequired',] }],
value: [{ type: Input, args: ['value',] }]
};
if (false) {
/** @type {?} */
CauseTextBoxMultipleLangueComponent.prototype.valueChange;
/** @type {?} */
CauseTextBoxMultipleLangueComponent.prototype.localizationField;
/** @type {?} */
CauseTextBoxMultipleLangueComponent.prototype.isValid;
/** @type {?} */
CauseTextBoxMultipleLangueComponent.prototype.isValidLang;
/** @type {?} */
CauseTextBoxMultipleLangueComponent.prototype.config;
/** @type {?} */
CauseTextBoxMultipleLangueComponent.prototype.tabs;
/** @type {?} */
CauseTextBoxMultipleLangueComponent.prototype.selectedIndex;
/**
* @type {?}
* @private
*/
CauseTextBoxMultipleLangueComponent.prototype.values;
/**
* @type {?}
* @private
*/
CauseTextBoxMultipleLangueComponent.prototype.validation;
/**
* @type {?}
* @private
*/
CauseTextBoxMultipleLangueComponent.prototype.translate;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c2UtdGV4dC1ib3gtbXVsdGlwbGUtbGFuZ3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvZGV2ZXh0cmVtZS8iLCJzb3VyY2VzIjpbImxpYi9jYXVzZS10ZXh0LWJveC1tdWx0aXBsZS1sYW5ndWUvY2F1c2UtdGV4dC1ib3gtbXVsdGlwbGUtbGFuZ3VlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQWlCLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBTzdFLE1BQU0sT0FBTyxtQ0FBbUM7Ozs7O0lBNEM1QyxZQUNJLFdBQXdCLEVBQ2hCLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBN0M3QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUE2QjNDLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUV0QixTQUFJLEdBR0UsRUFBRSxDQUFDO1FBQ1Qsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFVixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRztZQUNqQixVQUFVLEVBQUUsS0FBSztTQUNwQixDQUFDO1FBTUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUMsQ0FBQzs7OztJQTlDRCxJQUNJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQ3RDLENBQUM7Ozs7O0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Ozs7SUFFRCxJQUNJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFTO1FBQ2YsSUFBSSxPQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDN0QsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTs7c0JBQzdCLFNBQVMsR0FBRyxFQUFFO2dCQUNwQixTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFFaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0I7U0FDSjthQUFNLElBQUksT0FBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUN2QjtJQUNMLENBQUM7Ozs7SUF1QkQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUzs7OztRQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pELEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxFQUFFO2dCQUNwQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ1gsWUFBWSxFQUFFLENBQUM7d0JBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQ2xCLENBQUMsQ0FBQztpQkFDTjthQUNKO1FBQ0wsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7OztJQUVELG9CQUFvQixDQUFDLFlBQW9COztjQUMvQixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLFlBQVksRUFBQztRQUV6RSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTs7a0JBQ1IsS0FBSyxHQUFHLEVBQUU7WUFDaEIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUNyQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7OztJQUVELFFBQVE7O1lBQ0EsT0FBTyxHQUFHLElBQUk7UUFFbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTzs7OztRQUFDLElBQUksQ0FBQyxFQUFFOztrQkFDM0IsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUzs7OztZQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUM7WUFFakUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRTtnQkFDN0YsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDakM7UUFDTCxDQUFDLEVBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Ozs7O0lBRUQsWUFBWSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7OztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OztZQTdHSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG1DQUFtQztnQkFDN0MsZ3RDQUE4RDs7YUFFakU7Ozs7WUFOd0MsV0FBVztZQUE1QyxnQkFBZ0I7OzswQkFRbkIsTUFBTTtnQ0FDTixLQUFLO3lCQUNMLEtBQUssU0FBQyxZQUFZO29CQVNsQixLQUFLLFNBQUMsT0FBTzs7OztJQVhkLDBEQUEyQzs7SUFDM0MsZ0VBQW1DOztJQTRCbkMsc0RBQWU7O0lBQ2YsMERBQXNCOztJQUN0QixxREFBc0I7O0lBQ3RCLG1EQUdTOztJQUNULDREQUFrQjs7Ozs7SUFFbEIscURBQXlCOzs7OztJQUN6Qix5REFFRTs7Ozs7SUFJRSx3REFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBDb25maWd1cmF0aW9uLCBDb3JlU2VydmljZX0gZnJvbSAnQGNhdXNlLTkxMS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXVzZS1keC10ZXh0LWJveC1tdWx0aXBsZS1sYW5ndWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXVzZS10ZXh0LWJveC1tdWx0aXBsZS1sYW5ndWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhdXNlLXRleHQtYm94LW11bHRpcGxlLWxhbmd1ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhdXNlVGV4dEJveE11bHRpcGxlTGFuZ3VlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQElucHV0KCkgbG9jYWxpemF0aW9uRmllbGQ6IHN0cmluZztcbiAgICBASW5wdXQoJ2lzUmVxdWlyZWQnKVxuICAgIGdldCBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uLmlzUmVxdWlyZWQ7XG4gICAgfVxuICAgIHNldCBpc1JlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbi5pc1JlcXVpcmVkID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ3ZhbHVlJylcbiAgICBnZXQgdmFsdWUoKToge30ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gICAgfVxuICAgIHNldCB2YWx1ZSh2YWx1ZToge30pIHtcbiAgICAgICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICdzdHJpbmcnIHx8IHR5cGVvZih2YWx1ZSkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy5jb25maWcubGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVMYW5nID0ge307XG4gICAgICAgICAgICAgICAgdmFsdWVMYW5nWydsYW5ndWFnZUNvZGUnXSA9IGk7XG4gICAgICAgICAgICAgICAgdmFsdWVMYW5nW3RoaXMubG9jYWxpemF0aW9uRmllbGRdID0gdmFsdWUgfHwgJyc7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbHVlTGFuZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpc1ZhbGlkTGFuZzogYW55ID0ge307XG4gICAgY29uZmlnOiBDb25maWd1cmF0aW9uO1xuICAgIHRhYnM6IHtcbiAgICAgICAgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcsXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICB9W10gPSBbXTtcbiAgICBzZWxlY3RlZEluZGV4ID0gMDtcblxuICAgIHByaXZhdGUgdmFsdWVzOiBhbnkgPSBbXTtcbiAgICBwcml2YXRlIHZhbGlkYXRpb24gPSB7XG4gICAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvcmVTZXJ2aWNlLmdldENvbmZpZygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQodGhpcy5jb25maWcubGFuZ3VhZ2VzKS5zdWJzY3JpYmUobGFiZWxzID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBpbiBsYWJlbHMpIHtcbiAgICAgICAgICAgICAgICBpZiAobGFiZWxzW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNWYWxpZExhbmdbaV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGU6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBsYWJlbHNbaV0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TG9jYWxpemF0aW9uSW5kZXgobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZhbHVlcy5maW5kSW5kZXgobCA9PiBsLmxhbmd1YWdlQ29kZSA9PT0gbGFuZ3VhZ2VDb2RlKTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHt9O1xuICAgICAgICAgICAgdmFsdWVbJ2xhbmd1YWdlQ29kZSddID0gbGFuZ3VhZ2VDb2RlO1xuICAgICAgICAgICAgdmFsdWVbdGhpcy5sb2NhbGl6YXRpb25GaWVsZF0gPSAnJztcblxuICAgICAgICAgICAgdGhpcy52YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpIHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuY29uZmlnLmxhbmd1YWdlcy5mb3JFYWNoKGxhbmcgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZhbHVlcy5maW5kSW5kZXgobCA9PiBsLmxhbmd1YWdlQ29kZSA9PT0gbGFuZyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb24uaXNSZXF1aXJlZCAmJiAoaW5kZXggPT09IC0xIHx8ICF0aGlzLnZhbHVlc1tpbmRleF1bdGhpcy5sb2NhbGl6YXRpb25GaWVsZF0pKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNWYWxpZExhbmdbbGFuZ10gPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ZhbGlkTGFuZ1tsYW5nXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaXNWYWxpZCA9IGlzVmFsaWQ7XG4gICAgfVxuXG4gICAgb25UYWdDaGFuZ2VkKGUpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2VkKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XG4gICAgfVxufVxuIl19