theme-lib
Version:
This is a simple example Angular Library published to npm.
249 lines • 17.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Component, Input, HostBinding, } from '@angular/core';
import { convertToBoolProperty } from '../helpers';
/*
* Action item, display a link with an icon, or any other content provided instead.
*/
var NbActionComponent = /** @class */ (function () {
function NbActionComponent() {
this.disabledValue = false;
}
Object.defineProperty(NbActionComponent.prototype, "disabled", {
/*
* Disables the item (changes item opacity and mouse cursor)
* @type boolean
*/
set: /*
* Disables the item (changes item opacity and mouse cursor)
* @type boolean
*/
/**
* @param {?} val
* @return {?}
*/
function (val) {
this.disabledValue = convertToBoolProperty(val);
},
enumerable: true,
configurable: true
});
NbActionComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-action',
template: "\n <a class=\"icon-container\" href=\"#\" *ngIf=\"icon; else showContent\" (click)=\"$event.preventDefault()\">\n <i class=\"control-icon {{ icon }}\"></i>\n </a>\n <ng-template #showContent>\n <ng-content></ng-content>\n </ng-template>\n <nb-badge *ngIf=\"badgeText\" [text]=\"badgeText\" [status]=\"badgeStatus\" [position]=\"badgePosition\"></nb-badge>\n "
}] }
];
NbActionComponent.propDecorators = {
disabledValue: [{ type: HostBinding, args: ['class.disabled',] }],
icon: [{ type: Input }],
disabled: [{ type: Input }],
badgeText: [{ type: Input }],
badgeStatus: [{ type: Input }],
badgePosition: [{ type: Input }]
};
return NbActionComponent;
}());
export { NbActionComponent };
if (false) {
/** @type {?} */
NbActionComponent.prototype.disabledValue;
/** @type {?} */
NbActionComponent.prototype.icon;
/** @type {?} */
NbActionComponent.prototype.badgeText;
/** @type {?} */
NbActionComponent.prototype.badgeStatus;
/** @type {?} */
NbActionComponent.prototype.badgePosition;
}
/*
* Shows a horizontal list of actions, available in multiple sizes.
* Aligns items vertically.
*
* @stacked-example(Showcase, action/action-showcase.component)
*
* Basic actions setup:
* ```html
* <nb-actions size="small">
* <nb-action icon="nb-search"></nb-action>
* <nb-action icon="nb-power-circled"></nb-action>
* <nb-action icon="nb-person"></nb-action>
* </nb-actions>
* ```
* ### Installation
*
* Import `NbActionsModule` to your feature module.
* ```ts
* @NgModule({
* imports: [
* // ...
* NbActionsModule,
* ],
* })
* export class PageModule { }
* ```
* ### Usage
*
* Multiple sizes example:
* @stacked-example(Multiple Sizes, action/action-sizes.component)
*
* It is also possible to specify a `badge` value:
*
* @stacked-example(Action Badge, action/action-badge.component)
*
* and we can set it to full a width of a parent component
* @stacked-example(Full Width, action/action-width.component)
*
* @styles
*
* actions-font-size:
* actions-font-family:
* actions-line-height:
* actions-fg:
* actions-bg:
* actions-separator:
* actions-padding:
* actions-size-small:
* actions-size-medium:
* actions-size-large:
*/
var NbActionsComponent = /** @class */ (function () {
function NbActionsComponent() {
this.fullWidthValue = false;
}
Object.defineProperty(NbActionsComponent.prototype, "small", {
get: /**
* @return {?}
*/
function () {
return this.sizeValue === NbActionsComponent.SIZE_SMALL;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbActionsComponent.prototype, "medium", {
get: /**
* @return {?}
*/
function () {
return this.sizeValue === NbActionsComponent.SIZE_MEDIUM;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbActionsComponent.prototype, "large", {
get: /**
* @return {?}
*/
function () {
return this.sizeValue === NbActionsComponent.SIZE_LARGE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbActionsComponent.prototype, "size", {
/*
* Size of the component, small|medium|large
* @type string
*/
set: /*
* Size of the component, small|medium|large
* @type string
*/
/**
* @param {?} val
* @return {?}
*/
function (val) {
this.sizeValue = val;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbActionsComponent.prototype, "inverse", {
/*
* Makes colors inverse based on current theme
* @type boolean
*/
set: /*
* Makes colors inverse based on current theme
* @type boolean
*/
/**
* @param {?} val
* @return {?}
*/
function (val) {
this.inverseValue = convertToBoolProperty(val);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbActionsComponent.prototype, "fullWidth", {
/*
* Component will fill full width of the container
* @type boolean
*/
set: /*
* Component will fill full width of the container
* @type boolean
*/
/**
* @param {?} val
* @return {?}
*/
function (val) {
this.fullWidthValue = convertToBoolProperty(val);
},
enumerable: true,
configurable: true
});
NbActionsComponent.SIZE_SMALL = 'small';
NbActionsComponent.SIZE_MEDIUM = 'medium';
NbActionsComponent.SIZE_LARGE = 'large';
NbActionsComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-actions',
template: "\n <ng-content select=\"nb-action\"></ng-content>\n ",
styles: [":host{display:flex;align-items:center}:host /deep/ nb-action{display:flex;flex-wrap:wrap;align-items:center;position:relative}:host /deep/ nb-action i.control-icon:hover{cursor:pointer}:host /deep/ nb-action.disabled{cursor:not-allowed}:host /deep/ nb-action.disabled>*{opacity:.5}:host /deep/ nb-action.disabled a,:host /deep/ nb-action.disabled i{cursor:not-allowed!important}"]
}] }
];
NbActionsComponent.propDecorators = {
inverseValue: [{ type: HostBinding, args: ['class.inverse',] }],
small: [{ type: HostBinding, args: ['class.small',] }],
medium: [{ type: HostBinding, args: ['class.medium',] }],
large: [{ type: HostBinding, args: ['class.large',] }],
fullWidthValue: [{ type: HostBinding, args: ['class.full-width',] }],
size: [{ type: Input }],
inverse: [{ type: Input }],
fullWidth: [{ type: Input }]
};
return NbActionsComponent;
}());
export { NbActionsComponent };
if (false) {
/** @type {?} */
NbActionsComponent.SIZE_SMALL;
/** @type {?} */
NbActionsComponent.SIZE_MEDIUM;
/** @type {?} */
NbActionsComponent.SIZE_LARGE;
/**
* @type {?}
* @private
*/
NbActionsComponent.prototype.sizeValue;
/** @type {?} */
NbActionsComponent.prototype.inverseValue;
/** @type {?} */
NbActionsComponent.prototype.fullWidthValue;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90aGVtZS1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hY3Rpb25zL2FjdGlvbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFLbkQ7SUFBQTtRQWNpQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztJQXVDaEUsQ0FBQztJQTNCQyxzQkFDSSx1Q0FBUTtRQUxaOzs7V0FHRzs7Ozs7Ozs7O1FBQ0gsVUFDYSxHQUFZO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEQsQ0FBQzs7O09BQUE7O2dCQTdCRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxrWUFRVDtpQkFDRjs7O2dDQUdFLFdBQVcsU0FBQyxnQkFBZ0I7dUJBTTVCLEtBQUs7MkJBTUwsS0FBSzs0QkFTTCxLQUFLOzhCQU9MLEtBQUs7Z0NBU0wsS0FBSzs7SUFFUix3QkFBQztDQUFBLEFBckRELElBcURDO1NBekNZLGlCQUFpQjs7O0lBRTVCLDBDQUE4RDs7SUFNOUQsaUNBQXNCOztJQWV0QixzQ0FBMkI7O0lBTzNCLHdDQUE2Qjs7SUFTN0IsMENBQStCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVEakM7SUFBQTtRQWlDRSxtQkFBYyxHQUFZLEtBQUssQ0FBQztJQTRCbEMsQ0FBQztJQTVDQyxzQkFDSSxxQ0FBSzs7OztRQURUO1lBRUUsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUMxRCxDQUFDOzs7T0FBQTtJQUVELHNCQUNJLHNDQUFNOzs7O1FBRFY7WUFFRSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssa0JBQWtCLENBQUMsV0FBVyxDQUFDO1FBQzNELENBQUM7OztPQUFBO0lBRUQsc0JBQ0kscUNBQUs7Ozs7UUFEVDtZQUVFLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7UUFDMUQsQ0FBQzs7O09BQUE7SUFTRCxzQkFDSSxvQ0FBSTtRQUxSOzs7V0FHRzs7Ozs7Ozs7O1FBQ0gsVUFDUyxHQUFXO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLENBQUM7OztPQUFBO0lBTUQsc0JBQ0ksdUNBQU87UUFMWDs7O1dBR0c7Ozs7Ozs7OztRQUNILFVBQ1ksR0FBWTtZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELENBQUM7OztPQUFBO0lBTUQsc0JBQ0kseUNBQVM7UUFMYjs7O1dBR0c7Ozs7Ozs7OztRQUNILFVBQ2MsR0FBWTtZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELENBQUM7OztPQUFBO0lBbkRlLDZCQUFVLEdBQUcsT0FBTyxDQUFDO0lBQ3JCLDhCQUFXLEdBQUcsUUFBUSxDQUFDO0lBQ3ZCLDZCQUFVLEdBQUcsT0FBTyxDQUFDOztnQkFYdEMsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUV0QixRQUFRLEVBQUUsMERBRVQ7O2lCQUNGOzs7K0JBU0UsV0FBVyxTQUFDLGVBQWU7d0JBRTNCLFdBQVcsU0FBQyxhQUFhO3lCQUt6QixXQUFXLFNBQUMsY0FBYzt3QkFLMUIsV0FBVyxTQUFDLGFBQWE7aUNBS3pCLFdBQVcsU0FBQyxrQkFBa0I7dUJBTzlCLEtBQUs7MEJBU0wsS0FBSzs0QkFTTCxLQUFLOztJQUlSLHlCQUFDO0NBQUEsQUE3REQsSUE2REM7U0F0RFksa0JBQWtCOzs7SUFFN0IsOEJBQXFDOztJQUNyQywrQkFBdUM7O0lBQ3ZDLDhCQUFxQzs7Ozs7SUFFckMsdUNBQTBCOztJQUUxQiwwQ0FBb0Q7O0lBaUJwRCw0Q0FDZ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sUHJvcGVydHkgfSBmcm9tICcuLi9oZWxwZXJzJztcclxuXHJcbi8qXHJcbiAqIEFjdGlvbiBpdGVtLCBkaXNwbGF5IGEgbGluayB3aXRoIGFuIGljb24sIG9yIGFueSBvdGhlciBjb250ZW50IHByb3ZpZGVkIGluc3RlYWQuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25iLWFjdGlvbicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxhIGNsYXNzPVwiaWNvbi1jb250YWluZXJcIiBocmVmPVwiI1wiICpuZ0lmPVwiaWNvbjsgZWxzZSBzaG93Q29udGVudFwiIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImNvbnRyb2wtaWNvbiB7eyBpY29uIH19XCI+PC9pPlxyXG4gICAgPC9hPlxyXG4gICAgPG5nLXRlbXBsYXRlICNzaG93Q29udGVudD5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuYi1iYWRnZSAqbmdJZj1cImJhZGdlVGV4dFwiIFt0ZXh0XT1cImJhZGdlVGV4dFwiIFtzdGF0dXNdPVwiYmFkZ2VTdGF0dXNcIiBbcG9zaXRpb25dPVwiYmFkZ2VQb3NpdGlvblwiPjwvbmItYmFkZ2U+XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5iQWN0aW9uQ29tcG9uZW50IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpIGRpc2FibGVkVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLypcclxuICAgKiBJY29uIGNsYXNzIHRvIGRpc3BsYXlcclxuICAgKiBAdHlwZSBzdHJpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XHJcblxyXG4gIC8qXHJcbiAgICogRGlzYWJsZXMgdGhlIGl0ZW0gKGNoYW5nZXMgaXRlbSBvcGFjaXR5IGFuZCBtb3VzZSBjdXJzb3IpXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaXNhYmxlZFZhbHVlID0gY29udmVydFRvQm9vbFByb3BlcnR5KHZhbCk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIEJhZGdlIHRleHQgdG8gZGlzcGxheVxyXG4gICAqIEB0eXBlIHN0cmluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhZGdlVGV4dDogc3RyaW5nO1xyXG5cclxuICAvKlxyXG4gICAqIEJhZGdlIHN0YXR1cyAoYWRkcyBzcGVjaWZpYyBzdHlsZXMpOlxyXG4gICAqICdwcmltYXJ5JywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJywgJ2RhbmdlcidcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsXHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFkZ2VTdGF0dXM6IHN0cmluZztcclxuXHJcbiAgLypcclxuICAgKiBCYWRnZSBwb3NpdGlvbi5cclxuICAgKiBDYW4gYmUgc2V0IHRvIGFueSBjbGFzcyBvciB0byBvbmUgb2YgcHJlZGVmaW5lZCBwb3NpdGlvbnM6XHJcbiAgICogJ3RvcCBsZWZ0JywgJ3RvcCByaWdodCcsICdib3R0b20gbGVmdCcsICdib3R0b20gcmlnaHQnLFxyXG4gICAqICd0b3Agc3RhcnQnLCAndG9wIGVuZCcsICdib3R0b20gc3RhcnQnLCAnYm90dG9tIGVuZCdcclxuICAgKiBAdHlwZSBzdHJpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWRnZVBvc2l0aW9uOiBzdHJpbmc7XHJcblxyXG59XHJcblxyXG4vKlxyXG4gKiBTaG93cyBhIGhvcml6b250YWwgbGlzdCBvZiBhY3Rpb25zLCBhdmFpbGFibGUgaW4gbXVsdGlwbGUgc2l6ZXMuXHJcbiAqIEFsaWducyBpdGVtcyB2ZXJ0aWNhbGx5LlxyXG4gKlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKFNob3djYXNlLCBhY3Rpb24vYWN0aW9uLXNob3djYXNlLmNvbXBvbmVudClcclxuICpcclxuICogQmFzaWMgYWN0aW9ucyBzZXR1cDpcclxuICogYGBgaHRtbFxyXG4gKiA8bmItYWN0aW9ucyBzaXplPVwic21hbGxcIj5cclxuICogICA8bmItYWN0aW9uIGljb249XCJuYi1zZWFyY2hcIj48L25iLWFjdGlvbj5cclxuICogICA8bmItYWN0aW9uIGljb249XCJuYi1wb3dlci1jaXJjbGVkXCI+PC9uYi1hY3Rpb24+XHJcbiAqICAgPG5iLWFjdGlvbiBpY29uPVwibmItcGVyc29uXCI+PC9uYi1hY3Rpb24+XHJcbiAqIDwvbmItYWN0aW9ucz5cclxuICogYGBgXHJcbiAqICMjIyBJbnN0YWxsYXRpb25cclxuICpcclxuICogSW1wb3J0IGBOYkFjdGlvbnNNb2R1bGVgIHRvIHlvdXIgZmVhdHVyZSBtb2R1bGUuXHJcbiAqIGBgYHRzXHJcbiAqIEBOZ01vZHVsZSh7XHJcbiAqICAgaW1wb3J0czogW1xyXG4gKiAgIFx0Ly8gLi4uXHJcbiAqICAgICBOYkFjdGlvbnNNb2R1bGUsXHJcbiAqICAgXSxcclxuICogfSlcclxuICogZXhwb3J0IGNsYXNzIFBhZ2VNb2R1bGUgeyB9XHJcbiAqIGBgYFxyXG4gKiAjIyMgVXNhZ2VcclxuICpcclxuICogTXVsdGlwbGUgc2l6ZXMgZXhhbXBsZTpcclxuICogQHN0YWNrZWQtZXhhbXBsZShNdWx0aXBsZSBTaXplcywgYWN0aW9uL2FjdGlvbi1zaXplcy5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gc3BlY2lmeSBhIGBiYWRnZWAgdmFsdWU6XHJcbiAqXHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoQWN0aW9uIEJhZGdlLCBhY3Rpb24vYWN0aW9uLWJhZGdlLmNvbXBvbmVudClcclxuICpcclxuICogYW5kIHdlIGNhbiBzZXQgaXQgdG8gZnVsbCBhIHdpZHRoIG9mIGEgcGFyZW50IGNvbXBvbmVudFxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKEZ1bGwgV2lkdGgsIGFjdGlvbi9hY3Rpb24td2lkdGguY29tcG9uZW50KVxyXG4gKlxyXG4gKiBAc3R5bGVzXHJcbiAqXHJcbiAqIGFjdGlvbnMtZm9udC1zaXplOlxyXG4gKiBhY3Rpb25zLWZvbnQtZmFtaWx5OlxyXG4gKiBhY3Rpb25zLWxpbmUtaGVpZ2h0OlxyXG4gKiBhY3Rpb25zLWZnOlxyXG4gKiBhY3Rpb25zLWJnOlxyXG4gKiBhY3Rpb25zLXNlcGFyYXRvcjpcclxuICogYWN0aW9ucy1wYWRkaW5nOlxyXG4gKiBhY3Rpb25zLXNpemUtc21hbGw6XHJcbiAqIGFjdGlvbnMtc2l6ZS1tZWRpdW06XHJcbiAqIGFjdGlvbnMtc2l6ZS1sYXJnZTpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmItYWN0aW9ucycsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWN0aW9ucy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJuYi1hY3Rpb25cIj48L25nLWNvbnRlbnQ+XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5iQWN0aW9uc0NvbXBvbmVudCB7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX1NNQUxMID0gJ3NtYWxsJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9NRURJVU0gPSAnbWVkaXVtJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9MQVJHRSA9ICdsYXJnZSc7XHJcblxyXG4gIHByaXZhdGUgc2l6ZVZhbHVlOiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW52ZXJzZScpIGludmVyc2VWYWx1ZTogYm9vbGVhbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWFsbCcpXHJcbiAgZ2V0IHNtYWxsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZVZhbHVlID09PSBOYkFjdGlvbnNDb21wb25lbnQuU0laRV9TTUFMTDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWVkaXVtJylcclxuICBnZXQgbWVkaXVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZVZhbHVlID09PSBOYkFjdGlvbnNDb21wb25lbnQuU0laRV9NRURJVU07XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmxhcmdlJylcclxuICBnZXQgbGFyZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplVmFsdWUgPT09IE5iQWN0aW9uc0NvbXBvbmVudC5TSVpFX0xBUkdFO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mdWxsLXdpZHRoJylcclxuICBmdWxsV2lkdGhWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKlxyXG4gICAqIFNpemUgb2YgdGhlIGNvbXBvbmVudCwgc21hbGx8bWVkaXVtfGxhcmdlXHJcbiAgICogQHR5cGUgc3RyaW5nXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgc2l6ZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaXplVmFsdWUgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIE1ha2VzIGNvbG9ycyBpbnZlcnNlIGJhc2VkIG9uIGN1cnJlbnQgdGhlbWVcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgaW52ZXJzZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaW52ZXJzZVZhbHVlID0gY29udmVydFRvQm9vbFByb3BlcnR5KHZhbCk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIENvbXBvbmVudCB3aWxsIGZpbGwgZnVsbCB3aWR0aCBvZiB0aGUgY29udGFpbmVyXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZ1bGxXaWR0aCh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZnVsbFdpZHRoVmFsdWUgPSBjb252ZXJ0VG9Cb29sUHJvcGVydHkodmFsKTtcclxuICB9XHJcbn1cclxuIl19