igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
317 lines • 18.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ElementRef, HostBinding, HostListener, Input } from '@angular/core';
import { IgxTabsGroupComponent } from './tabs-group.component';
import { IgxTabsBase } from './tabs.common';
var IgxTabItemComponent = /** @class */ (function () {
function IgxTabItemComponent(_tabs, _element) {
this._tabs = _tabs;
this._element = _element;
this._changesCount = 0; // changes and updates accordingly applied to the tab.
/**
* @hidden
*/
this.role = 'tab';
this._nativeTabItem = _element;
}
/**
* @hidden
*/
/**
* @hidden
* @param {?} event
* @return {?}
*/
IgxTabItemComponent.prototype.onClick = /**
* @hidden
* @param {?} event
* @return {?}
*/
function (event) {
this.select();
};
/**
* @hidden
*/
/**
* @hidden
* @param {?} event
* @return {?}
*/
IgxTabItemComponent.prototype.onResize = /**
* @hidden
* @param {?} event
* @return {?}
*/
function (event) {
if (this.isSelected) {
this._tabs.selectedIndicator.nativeElement.style.width = this.nativeTabItem.nativeElement.offsetWidth + "px";
this._tabs.selectedIndicator.nativeElement.style.transform = "translate(" + this.nativeTabItem.nativeElement.offsetLeft + "px)";
}
};
/**
* @hidden
*/
/**
* @hidden
* @param {?} event
* @return {?}
*/
IgxTabItemComponent.prototype.onKeydownArrowRight = /**
* @hidden
* @param {?} event
* @return {?}
*/
function (event) {
this.onKeyDown(false);
};
/**
* @hidden
*/
/**
* @hidden
* @param {?} event
* @return {?}
*/
IgxTabItemComponent.prototype.onKeydownArrowLeft = /**
* @hidden
* @param {?} event
* @return {?}
*/
function (event) {
this.onKeyDown(true);
};
/**
* @hidden
*/
/**
* @hidden
* @param {?} event
* @return {?}
*/
IgxTabItemComponent.prototype.onKeydownHome = /**
* @hidden
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
this.onKeyDown(false, 0);
};
/**
* @hidden
*/
/**
* @hidden
* @param {?} event
* @return {?}
*/
IgxTabItemComponent.prototype.onKeydownEnd = /**
* @hidden
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
this.onKeyDown(false, this._tabs.tabs.toArray().length - 1);
};
Object.defineProperty(IgxTabItemComponent.prototype, "changesCount", {
/**
* @hidden
*/
get: /**
* @hidden
* @return {?}
*/
function () {
return this._changesCount;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxTabItemComponent.prototype, "nativeTabItem", {
/**
* @hidden
*/
get: /**
* @hidden
* @return {?}
*/
function () {
return this._nativeTabItem;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxTabItemComponent.prototype, "disabled", {
/**
* Gets whether the tab is disabled.
* ```
* const disabledItem = this.myTabComponent.tabs.first.disabled;
* ```
*/
get: /**
* Gets whether the tab is disabled.
* ```
* const disabledItem = this.myTabComponent.tabs.first.disabled;
* ```
* @return {?}
*/
function () {
/** @type {?} */
var group = this.relatedGroup;
if (group) {
return group.disabled;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxTabItemComponent.prototype, "isSelected", {
/**
* Gets whether the tab is selected.
* ```typescript
* const selectedItem = this.myTabComponent.tabs.first.isSelected;
* ```
*/
get: /**
* Gets whether the tab is selected.
* ```typescript
* const selectedItem = this.myTabComponent.tabs.first.isSelected;
* ```
* @return {?}
*/
function () {
/** @type {?} */
var group = this.relatedGroup;
if (group) {
return group.isSelected;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxTabItemComponent.prototype, "index", {
/**
* @hidden
*/
get: /**
* @hidden
* @return {?}
*/
function () {
return this._tabs.tabs.toArray().indexOf(this);
},
enumerable: true,
configurable: true
});
/**
* @hidden
*/
/**
* @hidden
* @param {?=} focusDelay
* @return {?}
*/
IgxTabItemComponent.prototype.select = /**
* @hidden
* @param {?=} focusDelay
* @return {?}
*/
function (focusDelay) {
if (focusDelay === void 0) { focusDelay = 200; }
this.relatedGroup.select(focusDelay);
};
/**
* @private
* @param {?} isLeftArrow
* @param {?=} index
* @return {?}
*/
IgxTabItemComponent.prototype.onKeyDown = /**
* @private
* @param {?} isLeftArrow
* @param {?=} index
* @return {?}
*/
function (isLeftArrow, index) {
if (index === void 0) { index = null; }
/** @type {?} */
var tabsArray = this._tabs.tabs.toArray();
if (index === null) {
index = (isLeftArrow)
? (this._tabs.selectedIndex === 0) ? tabsArray.length - 1 : this._tabs.selectedIndex - 1
: (this._tabs.selectedIndex === tabsArray.length - 1) ? 0 : this._tabs.selectedIndex + 1;
}
/** @type {?} */
var tab = tabsArray[index];
tab.select(200);
};
IgxTabItemComponent.decorators = [
{ type: Component, args: [{
selector: 'igx-tab-item',
template: "<ng-template #defaultTabTemplate>\n <div *ngIf=\"relatedGroup.icon\" class=\"igx-tabs__header-menu-item-icon\">\n <igx-icon fontSet=\"material\">{{relatedGroup.icon}}</igx-icon>\n <igx-badge [value]=\"changesCount\" [hidden]=\"changesCount === 0\"></igx-badge>\n </div>\n <div *ngIf=\"relatedGroup.label\" ngClass=\"igx-tabs__item-label\">{{relatedGroup.label}}</div>\n</ng-template>\n<ng-container\n *ngTemplateOutlet=\"relatedGroup.customTabTemplate ? relatedGroup.customTabTemplate : defaultTabTemplate; context: { $implicit: relatedGroup }\">\n</ng-container>"
}] }
];
/** @nocollapse */
IgxTabItemComponent.ctorParameters = function () { return [
{ type: IgxTabsBase },
{ type: ElementRef }
]; };
IgxTabItemComponent.propDecorators = {
relatedGroup: [{ type: Input }],
role: [{ type: HostBinding, args: ['attr.role',] }],
tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }],
onClick: [{ type: HostListener, args: ['click', ['$event'],] }],
onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }],
onKeydownArrowRight: [{ type: HostListener, args: ['keydown.arrowright', ['$event'],] }],
onKeydownArrowLeft: [{ type: HostListener, args: ['keydown.arrowleft', ['$event'],] }],
onKeydownHome: [{ type: HostListener, args: ['keydown.home', ['$event'],] }],
onKeydownEnd: [{ type: HostListener, args: ['keydown.end', ['$event'],] }]
};
return IgxTabItemComponent;
}());
export { IgxTabItemComponent };
if (false) {
/**
* Gets the group associated with the tab.
* ```html
* const relatedGroup = this.tabbar.tabs.toArray()[1].relatedGroup;
* ```
* @type {?}
*/
IgxTabItemComponent.prototype.relatedGroup;
/**
* @type {?}
* @private
*/
IgxTabItemComponent.prototype._nativeTabItem;
/**
* @type {?}
* @private
*/
IgxTabItemComponent.prototype._changesCount;
/**
* @hidden
* @type {?}
*/
IgxTabItemComponent.prototype.role;
/**
* @hidden
* @type {?}
*/
IgxTabItemComponent.prototype.tabindex;
/**
* @type {?}
* @private
*/
IgxTabItemComponent.prototype._tabs;
/**
* @type {?}
* @private
*/
IgxTabItemComponent.prototype._element;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi90YWJzL3RhYi1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUQ7SUFtQkksNkJBQW9CLEtBQWtCLEVBQVUsUUFBb0I7UUFBaEQsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVk7UUFGNUQsa0JBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxzREFBc0Q7Ozs7UUFVMUUsU0FBSSxHQUFHLEtBQUssQ0FBQztRQVBoQixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBY0Q7O09BRUc7Ozs7OztJQUVJLHFDQUFPOzs7OztJQURkLFVBQ2UsS0FBSztRQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFFSSxzQ0FBUTs7Ozs7SUFEZixVQUNnQixLQUFLO1FBQ2pCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsT0FBSSxDQUFDO1lBQzdHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsZUFBYSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEs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QWEsR0FBRyxDQUFDLENBQUM7U0FDaEc7O1lBQ0ssR0FBRyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDNUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDOztnQkF6SkosU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxjQUFjO29CQUN4Qix5bEJBQXNDO2lCQUN6Qzs7OztnQkFMd0IsV0FBVztnQkFQaEMsVUFBVTs7OytCQXNCVCxLQUFLO3VCQWFMLFdBQVcsU0FBQyxXQUFXOzJCQU12QixXQUFXLFNBQUMsZUFBZTswQkFNM0IsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzsyQkFRaEMsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztzQ0FXeEMsWUFBWSxTQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO3FDQVE3QyxZQUFZLFNBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0NBUTVDLFlBQVksU0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7K0JBU3ZDLFlBQVksU0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0lBd0UzQywwQkFBQztDQUFBLEFBMUpELElBMEpDO1NBckpZLG1CQUFtQjs7Ozs7Ozs7O0lBUTVCLDJDQUMyQzs7Ozs7SUFFM0MsNkNBQW1DOzs7OztJQUNuQyw0Q0FBMEI7Ozs7O0lBUzFCLG1DQUNvQjs7Ozs7SUFLcEIsdUNBQ2dCOzs7OztJQWRKLG9DQUEwQjs7Ozs7SUFBRSx1Q0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSWd4VGFic0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi90YWJzLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hUYWJJdGVtQmFzZSwgSWd4VGFic0Jhc2UgfSBmcm9tICcuL3RhYnMuY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtdGFiLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAndGFiLWl0ZW0uY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4VGFiSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIElneFRhYkl0ZW1CYXNlIHtcblxuICAgIC8qKlxuICAgICogR2V0cyB0aGUgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWIuXG4gICAgKiBgYGBodG1sXG4gICAgKiBjb25zdCByZWxhdGVkR3JvdXAgPSB0aGlzLnRhYmJhci50YWJzLnRvQXJyYXkoKVsxXS5yZWxhdGVkR3JvdXA7XG4gICAgKiBgYGBcbiAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbGF0ZWRHcm91cDogSWd4VGFic0dyb3VwQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBfbmF0aXZlVGFiSXRlbTogRWxlbWVudFJlZjtcbiAgICBwcml2YXRlIF9jaGFuZ2VzQ291bnQgPSAwOyAvLyBjaGFuZ2VzIGFuZCB1cGRhdGVzIGFjY29yZGluZ2x5IGFwcGxpZWQgdG8gdGhlIHRhYi5cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3RhYnM6IElneFRhYnNCYXNlLCBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuX25hdGl2ZVRhYkl0ZW0gPSBfZWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIHB1YmxpYyByb2xlID0gJ3RhYic7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgdGFiaW5kZXg7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvblJlc2l6ZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJzLnNlbGVjdGVkSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt0aGlzLm5hdGl2ZVRhYkl0ZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1weGA7XG4gICAgICAgICAgICB0aGlzLl90YWJzLnNlbGVjdGVkSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3RoaXMubmF0aXZlVGFiSXRlbS5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnR9cHgpYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd25BcnJvd1JpZ2h0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25LZXlEb3duKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd2xlZnQnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd25BcnJvd0xlZnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbktleURvd24odHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uaG9tZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bkhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5vbktleURvd24oZmFsc2UsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVuZCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bkVuZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm9uS2V5RG93bihmYWxzZSwgdGhpcy5fdGFicy50YWJzLnRvQXJyYXkoKS5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgZ2V0IGNoYW5nZXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlc0NvdW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBnZXQgbmF0aXZlVGFiSXRlbSgpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hdGl2ZVRhYkl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBcdEdldHMgd2hldGhlciB0aGUgdGFiIGlzIGRpc2FibGVkLlxuICAgICogYGBgXG4gICAgKiBjb25zdCBkaXNhYmxlZEl0ZW0gPSB0aGlzLm15VGFiQ29tcG9uZW50LnRhYnMuZmlyc3QuZGlzYWJsZWQ7XG4gICAgKiBgYGBcbiAgICAqL1xuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLnJlbGF0ZWRHcm91cDtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiBncm91cC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgdGFiIGlzIHNlbGVjdGVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLm15VGFiQ29tcG9uZW50LnRhYnMuZmlyc3QuaXNTZWxlY3RlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBnZXQgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLnJlbGF0ZWRHcm91cDtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiBncm91cC5pc1NlbGVjdGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIGdldCBpbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFicy50YWJzLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0KGZvY3VzRGVsYXkgPSAyMDApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWxhdGVkR3JvdXAuc2VsZWN0KGZvY3VzRGVsYXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25LZXlEb3duKGlzTGVmdEFycm93OiBib29sZWFuLCBpbmRleCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFic0FycmF5ID0gdGhpcy5fdGFicy50YWJzLnRvQXJyYXkoKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgICAgICBpbmRleCA9IChpc0xlZnRBcnJvdylcbiAgICAgICAgICAgICAgICA/ICh0aGlzLl90YWJzLnNlbGVjdGVkSW5kZXggPT09IDApID8gdGFic0FycmF5Lmxlbmd0aCAtIDEgOiB0aGlzLl90YWJzLnNlbGVjdGVkSW5kZXggLSAxXG4gICAgICAgICAgICAgICAgOiAodGhpcy5fdGFicy5zZWxlY3RlZEluZGV4ID09PSB0YWJzQXJyYXkubGVuZ3RoIC0gMSkgPyAwIDogdGhpcy5fdGFicy5zZWxlY3RlZEluZGV4ICsgMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWIgPSB0YWJzQXJyYXlbaW5kZXhdO1xuICAgICAgICB0YWIuc2VsZWN0KDIwMCk7XG4gICAgfVxufVxuIl19