UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

268 lines (267 loc) 19.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, ViewEncapsulation, Input, Output, ElementRef, HostListener, EventEmitter, Renderer2, TemplateRef } from '@angular/core'; export class Button { /** * @param {?} _elementRef * @param {?} _render */ constructor(_elementRef, _render) { this._elementRef = _elementRef; this._render = _render; this.prefixCls = 'am-button'; this.ngTemplate = false; this._className = ''; this._classList = []; this._size = 'large'; this._loading = false; this._active = false; this._inline = false; this._disabled = false; this._icon = ''; this._userAgent = (/** @type {?} */ (navigator)).userAgent || (/** @type {?} */ (navigator)).vendor || (/** @type {?} */ (window)).opera; this.onClick = new EventEmitter(); this._el = this._elementRef.nativeElement; this._render.addClass(this._el, this.prefixCls); this._className = this._el.className; } /** * @return {?} */ get type() { return this._type; } /** * @return {?} */ get size() { return this._size; } /** * @return {?} */ get disabled() { return this._disabled; } /** * @return {?} */ get loading() { return this._loading; } /** * @return {?} */ get inline() { return this._inline; } /** * @return {?} */ get icon() { return this._icon; } /** * @param {?} value * @return {?} */ set icon(value) { if (value instanceof TemplateRef) { this.ngTemplate = true; this._icon = value; } else { this.ngTemplate = false; this._icon = /** @type {?} */ (value); this.setClassMap(); } } /** * @param {?} v * @return {?} */ set className(v) { this._className = this._className + ' ' + v; this.setClassMap(); } /** * @param {?} event * @return {?} */ touchStart(event) { if (this._disabled) { return; } this._active = true; this.setClassMap(); } /** * @param {?} event * @return {?} */ touchEnd(event) { if (this._disabled) { return; } this._active = false; this.setClassMap(); } /** * @param {?} event * @return {?} */ click(event) { if (this._disabled) { return; } this.onClick.emit(); } /** * @param {?} value * @return {?} */ isTemplateRef(value) { if (value) { return value instanceof TemplateRef; } return false; } /** * @param {?} value * @return {?} */ set type(value) { this._type = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set disabled(value) { this._disabled = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set loading(value) { this._loading = value; if (value) { if (this._el.querySelector('icon')) { this._el.querySelector('icon').parentNode.removeChild(this._el.querySelector('icon')); } } this.setClassMap(); } /** * @param {?} value * @return {?} */ set size(value) { this._size = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set inline(value) { this._inline = value; this.setClassMap(); } /** * @return {?} */ ngAfterViewInit() { if (this._el.querySelector('img')) { /** @type {?} */ const amSize = this._size === 'small' ? 'am-icon-xxs' : 'am-icon-md'; this._el.querySelector('img').setAttribute('class', `am-icon ${this.prefixCls}-icon ${amSize}`); this._render.addClass(this._el, `${this.prefixCls}-icon`); } } /** * @return {?} */ setClassMap() { this.iconType = this._loading ? 'loading' : this._icon; this._classList = [ this._type && `${this.prefixCls}-${this._type}`, this._size === 'small' && `${this.prefixCls}-${this._size}`, this._disabled && `${this.prefixCls}-disabled`, this._loading && `${this.prefixCls}-loading`, this.iconType && `${this.prefixCls}-icon`, this._active && `${this.prefixCls}-active`, this._inline && `${this.prefixCls}-inline` ].filter(item => { return !!item; }); this._el.className = this._className + ' ' + this._classList.join(' '); } } Button.decorators = [ { type: Component, args: [{ selector: '[Button], nzm-button', encapsulation: ViewEncapsulation.None, template: "<Icon *ngIf=\"!ngTemplate\"\n class=\"{{prefixCls}}-icon\"\n [type]=\"iconType\"\n [size]=\"size ==='small' ? 'xxs' : 'md'\"\n></Icon>\n<ng-template *ngIf=\"ngTemplate\" [ngTemplateOutlet]=\"icon\"></ng-template>\n<ng-content select=\"img\"></ng-content>\n<div class=\"{{prefixCls}}-content\">\n <span>\n <ng-content></ng-content>\n </span>\n</div>" }] } ]; /** @nocollapse */ Button.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 } ]; Button.propDecorators = { type: [{ type: Input }], size: [{ type: Input }], disabled: [{ type: Input }], loading: [{ type: Input }], inline: [{ type: Input }], icon: [{ type: Input }], className: [{ type: Input }], onClick: [{ type: Output }], touchStart: [{ type: HostListener, args: ['touchstart', ['$event'],] }, { type: HostListener, args: ['mousedown', ['$event'],] }], touchEnd: [{ type: HostListener, args: ['touchend', ['$event'],] }, { type: HostListener, args: ['mouseup', ['$event'],] }, { type: HostListener, args: ['touchmove', ['$event'],] }, { type: HostListener, args: ['mousemove', ['$event'],] }, { type: HostListener, args: ['touchcancel', ['$event'],] }], click: [{ type: HostListener, args: ['click', ['$event'],] }] }; if (false) { /** @type {?} */ Button.prototype.prefixCls; /** @type {?} */ Button.prototype.ngTemplate; /** @type {?} */ Button.prototype.iconType; /** @type {?} */ Button.prototype._el; /** @type {?} */ Button.prototype._className; /** @type {?} */ Button.prototype._classList; /** @type {?} */ Button.prototype._type; /** @type {?} */ Button.prototype._size; /** @type {?} */ Button.prototype._loading; /** @type {?} */ Button.prototype._active; /** @type {?} */ Button.prototype._inline; /** @type {?} */ Button.prototype._disabled; /** @type {?} */ Button.prototype._icon; /** @type {?} */ Button.prototype._userAgent; /** @type {?} */ Button.prototype.onClick; /** @type {?} */ Button.prototype._elementRef; /** @type {?} */ Button.prototype._render; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFFWixNQUFNLGVBQWUsQ0FBQztBQU92QixNQUFNOzs7OztJQXlGSixZQUFvQixXQUF1QixFQUFVLE9BQWtCO1FBQW5ELGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBVzt5QkF4Rm5ELFdBQVc7MEJBQ1QsS0FBSzswQkFJTixFQUFFOzBCQUNHLEVBQUU7cUJBRVosT0FBTzt3QkFDSixLQUFLO3VCQUNOLEtBQUs7dUJBQ0wsS0FBSzt5QkFDSCxLQUFLO3FCQUNrQixFQUFFOzBCQUN4QixtQkFBTSxTQUFTLEVBQUMsQ0FBQyxTQUFTLElBQUksbUJBQU0sU0FBUyxFQUFDLENBQUMsTUFBTSxJQUFJLG1CQUFNLE1BQU0sRUFBQyxDQUFDLEtBQUs7dUJBMENwRSxJQUFJLFlBQVksRUFBRTtRQWlDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO0tBQ3RDOzs7O0lBNUVELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztLQUNuQjs7OztJQUNELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUss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QUFDLFNBQVMsU0FBUztZQUMxQyxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsU0FBUztTQUMzQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNkLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztTQUNmLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzs7O1lBOUoxRSxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLDRYQUFzQzthQUN2Qzs7OztZQVpDLFVBQVU7WUFHVixTQUFTOzs7bUJBMkJSLEtBQUs7bUJBSUwsS0FBSzt1QkFJTCxLQUFLO3NCQUlMLEtBQUs7cUJBSUwsS0FBSzttQkFJTCxLQUFLO3dCQWNMLEtBQUs7c0JBS0wsTUFBTTt5QkFHTixZQUFZLFNBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ3JDLFlBQVksU0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7dUJBUXBDLFlBQVksU0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDbkMsWUFBWSxTQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUNsQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ3BDLFlBQVksU0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDcEMsWUFBWSxTQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFTdEMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRXZlbnRFbWl0dGVyLFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbQnV0dG9uXSwgbnptLWJ1dHRvbicsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcmVmaXhDbHM6IHN0cmluZyA9ICdhbS1idXR0b24nO1xuICBuZ1RlbXBsYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIGljb25UeXBlOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZWw6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9jbGFzc05hbWUgPSAnJztcbiAgcHJpdmF0ZSBfY2xhc3NMaXN0OiBhbnkgPSBbXTtcbiAgcHJpdmF0ZSBfdHlwZTogc3RyaW5nO1xuICBwcml2YXRlIF9zaXplID0gJ2xhcmdlJztcbiAgcHJpdmF0ZSBfbG9hZGluZyA9IGZhbHNlO1xuICBwcml2YXRlIF9hY3RpdmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaW5saW5lID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2ljb246IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gPSAnJztcbiAgcHJpdmF0ZSBfdXNlckFnZW50ID0gKDxhbnk+bmF2aWdhdG9yKS51c2VyQWdlbnQgfHwgKDxhbnk+bmF2aWdhdG9yKS52ZW5kb3IgfHwgKDxhbnk+d2luZG93KS5vcGVyYTtcblxuICBASW5wdXQoKVxuICBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBzaXplKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgaW5saW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbmxpbmU7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGljb24oKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb247XG4gIH1cbiAgc2V0IGljb24odmFsdWU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5uZ1RlbXBsYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2ljb24gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uZ1RlbXBsYXRlID0gZmFsc2U7XG4gICAgICB0aGlzLl9pY29uID0gPHN0cmluZz52YWx1ZTtcbiAgICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGNsYXNzTmFtZSh2KSB7XG4gICAgdGhpcy5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lICsgJyAnICsgdjtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICB0b3VjaFN0YXJ0KGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCd0b3VjaGVuZCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNldXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIFsnJGV2ZW50J10pXG4gIHRvdWNoRW5kKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgY2xpY2soZXZlbnQpIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlbmRlcjogUmVuZGVyZXIyKSB7XG4gICAgdGhpcy5fZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fcmVuZGVyLmFkZENsYXNzKHRoaXMuX2VsLCB0aGlzLnByZWZpeENscyk7XG4gICAgdGhpcy5fY2xhc3NOYW1lID0gdGhpcy5fZWwuY2xhc3NOYW1lO1xuICB9XG5cbiAgaXNUZW1wbGF0ZVJlZih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNldCB0eXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cblxuICBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2xvYWRpbmcgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLl9lbC5xdWVyeVNlbGVjdG9yKCdpY29uJykpIHtcbiAgICAgICAgdGhpcy5fZWwucXVlcnlTZWxlY3RvcignaWNvbicpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fZWwucXVlcnlTZWxlY3RvcignaWNvbicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgc2V0IHNpemUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cblxuICBzZXQgaW5saW5lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5saW5lID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLl9lbC5xdWVyeVNlbGVjdG9yKCdpbWcnKSkge1xuICAgICAgY29uc3QgYW1TaXplID0gdGhpcy5fc2l6ZSA9PT0gJ3NtYWxsJyA/ICdhbS1pY29uLXh4cycgOiAnYW0taWNvbi1tZCc7XG4gICAgICB0aGlzLl9lbC5xdWVyeVNlbGVjdG9yKCdpbWcnKS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgYGFtLWljb24gJHt0aGlzLnByZWZpeENsc30taWNvbiAke2FtU2l6ZX1gKTtcbiAgICAgIHRoaXMuX3JlbmRlci5hZGRDbGFzcyh0aGlzLl9lbCwgYCR7dGhpcy5wcmVmaXhDbHN9LWljb25gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENsYXNzTWFwKCk6IHZvaWQge1xuICAgIHRoaXMuaWNvblR5cGUgPSB0aGlzLl9sb2FkaW5nID8gJ2xvYWRpbmcnIDogdGhpcy5faWNvbjtcbiAgICB0aGlzLl9jbGFzc0xpc3QgPSBbXG4gICAgICB0aGlzLl90eXBlICYmIGAke3RoaXMucHJlZml4Q2xzfS0ke3RoaXMuX3R5cGV9YCxcbiAgICAgIHRoaXMuX3NpemUgPT09ICdzbWFsbCcgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LSR7dGhpcy5fc2l6ZX1gLFxuICAgICAgdGhpcy5fZGlzYWJsZWQgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWRpc2FibGVkYCxcbiAgICAgIHRoaXMuX2xvYWRpbmcgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWxvYWRpbmdgLFxuICAgICAgdGhpcy5pY29uVHlwZSAmJiBgJHt0aGlzLnByZWZpeENsc30taWNvbmAsXG4gICAgICB0aGlzLl9hY3RpdmUgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWFjdGl2ZWAsXG4gICAgICB0aGlzLl9pbmxpbmUgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWlubGluZWBcbiAgICBdLmZpbHRlcihpdGVtID0+IHtcbiAgICAgIHJldHVybiAhIWl0ZW07XG4gICAgfSk7XG4gICAgdGhpcy5fZWwuY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lICsgJyAnICsgdGhpcy5fY2xhc3NMaXN0LmpvaW4oJyAnKTtcbiAgfVxufVxuIl19