UNPKG

ng-devui

Version:

DevUI components based on Angular

106 lines 20.3 kB
import { Component, ElementRef, HostBinding, HostListener, Input, Renderer2 } from '@angular/core'; import { PositionService } from 'ng-devui/position'; import { directionFadeInOut } from 'ng-devui/utils'; import { fromEvent } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "ng-devui/position"; export class TooltipComponent { get position() { return this._position; } set position(pos) { this._position = pos; this.currentPosition = Array.isArray(pos) ? pos[0] : pos; } get class() { return 'devui-tooltip ' + this.currentPosition; } get state() { return this.animateState; } get disabled() { return !this.showAnimation; } constructor(positionService, tooltip, renderer2) { this.positionService = positionService; this.tooltip = tooltip; this.renderer2 = renderer2; this.showAnimation = true; this.display = 'block'; } ngAfterViewInit() { this.updatePosition(); this.scrollElement = this.positionService.getScrollParent(this.triggerElementRef.nativeElement); this._onScroll = fromEvent((this.scrollElement || window), 'scroll') .subscribe(() => { this.updatePosition(); }); } ngOnDestroy() { if (this._onScroll) { this._onScroll.unsubscribe(); } } onShow() { this.animateState = this.currentPosition; } onHide() { this.animateState = 'void'; } // will be overwrite by tooltip directive onHidden() { } onAnimationEnd(event) { if (event.toState === 'void') { this.onHidden(); } } updatePosition() { // 解决tooltip自身大小导致出现滚动条,影响位置计算 this.renderer2.setStyle(this.tooltip.nativeElement, 'visibility', 'hidden'); this.renderer2.setStyle(this.tooltip.nativeElement, 'transform', 'translate(0, -99999px)'); const rect = this.positionService.positionElements(this.triggerElementRef.nativeElement, this.tooltip.nativeElement, this.position, true); setTimeout(() => { this.currentPosition = rect.placementPrimary; }); this.renderer2.setStyle(this.tooltip.nativeElement, 'left', `${rect.left}px`); this.renderer2.setStyle(this.tooltip.nativeElement, 'top', `${rect.top}px`); // 移除样式 this.renderer2.removeStyle(this.tooltip.nativeElement, 'visibility'); this.renderer2.removeStyle(this.tooltip.nativeElement, 'transform'); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TooltipComponent, deps: [{ token: i1.PositionService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TooltipComponent, selector: "d-tooltip", inputs: { content: "content", position: "position", triggerElementRef: "triggerElementRef", showAnimation: "showAnimation" }, host: { listeners: { "@directionFadeInOut.done": "onAnimationEnd($event)" }, properties: { "style.display": "this.display", "class": "this.class", "@directionFadeInOut": "this.state", "@.disabled": "this.disabled" } }, ngImport: i0, template: "<div class=\"devui-tooltip-arrow\"></div>\n<div class=\"devui-tooltip-inner\" [innerHTML]=\"content\"></div>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host-context(.devui-tooltip){position:absolute;z-index:var(--devui-z-index-pop-up, 1060);display:block;font-style:normal;font-weight:400;line-height:1.5;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:var(--devui-font-size, 12px);opacity:1}:host-context(.devui-tooltip) .devui-tooltip-arrow{display:block}:host-context(.devui-tooltip).top{margin-top:-5px;padding:0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 8px 24px 0) rgba(var(--devui-text, #191919),.2)}:host-context(.devui-tooltip).top .devui-tooltip-arrow{bottom:-5px;left:50%;transform:translate(-50%);border-width:5px 5px 0;border-top-color:var(--devui-feedback-overlay-bg, #333333)}:host-context(.devui-tooltip).bottom{margin-top:5px;padding:0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 8px 24px 0) rgba(var(--devui-text, #191919),.2)}:host-context(.devui-tooltip).bottom .devui-tooltip-arrow{top:-5px;left:50%;transform:translate(-50%);border-width:0 5px 5px;border-bottom-color:var(--devui-feedback-overlay-bg, #333333)}:host-context(.devui-tooltip).left{margin-left:-5px;padding:0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 8px 24px 0) rgba(var(--devui-text, #191919),.2)}:host-context(.devui-tooltip).left .devui-tooltip-arrow{top:50%;right:-5px;transform:translateY(-50%);border-width:5px 0 5px 5px;border-left-color:var(--devui-feedback-overlay-bg, #333333)}:host-context(.devui-tooltip).right{margin-left:5px;padding:0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 8px 24px 0) rgba(var(--devui-text, #191919),.2)}:host-context(.devui-tooltip).right .devui-tooltip-arrow{top:50%;left:-5px;transform:translateY(-50%);border-width:5px 5px 5px 0;border-right-color:var(--devui-feedback-overlay-bg, #333333)}:host-context(.devui-tooltip) .devui-tooltip-inner{max-width:200px;padding:4px 16px;font-size:var(--devui-font-size, 12px);color:var(--devui-feedback-overlay-text, #f0f0f0);letter-spacing:0;line-height:1.5;background:var(--devui-feedback-overlay-bg, #333333);box-shadow:none;overflow-wrap:break-word;word-break:break-word;word-wrap:break-word;text-align:start;border-radius:var(--devui-border-radius-feedback, 4px);min-height:26px}:host-context(.devui-tooltip) .devui-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}\n"], animations: [ directionFadeInOut ] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TooltipComponent, decorators: [{ type: Component, args: [{ selector: 'd-tooltip', animations: [ directionFadeInOut ], preserveWhitespaces: false, template: "<div class=\"devui-tooltip-arrow\"></div>\n<div class=\"devui-tooltip-inner\" [innerHTML]=\"content\"></div>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host-context(.devui-tooltip){position:absolute;z-index:var(--devui-z-index-pop-up, 1060);display:block;font-style:normal;font-weight:400;line-height:1.5;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:var(--devui-font-size, 12px);opacity:1}:host-context(.devui-tooltip) .devui-tooltip-arrow{display:block}:host-context(.devui-tooltip).top{margin-top:-5px;padding:0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 8px 24px 0) rgba(var(--devui-text, #191919),.2)}:host-context(.devui-tooltip).top .devui-tooltip-arrow{bottom:-5px;left:50%;transform:translate(-50%);border-width:5px 5px 0;border-top-color:var(--devui-feedback-overlay-bg, #333333)}:host-context(.devui-tooltip).bottom{margin-top:5px;padding:0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 8px 24px 0) rgba(var(--devui-text, #191919),.2)}:host-context(.devui-tooltip).bottom .devui-tooltip-arrow{top:-5px;left:50%;transform:translate(-50%);border-width:0 5px 5px;border-bottom-color:var(--devui-feedback-overlay-bg, #333333)}:host-context(.devui-tooltip).left{margin-left:-5px;padding:0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 8px 24px 0) rgba(var(--devui-text, #191919),.2)}:host-context(.devui-tooltip).left .devui-tooltip-arrow{top:50%;right:-5px;transform:translateY(-50%);border-width:5px 0 5px 5px;border-left-color:var(--devui-feedback-overlay-bg, #333333)}:host-context(.devui-tooltip).right{margin-left:5px;padding:0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 8px 24px 0) rgba(var(--devui-text, #191919),.2)}:host-context(.devui-tooltip).right .devui-tooltip-arrow{top:50%;left:-5px;transform:translateY(-50%);border-width:5px 5px 5px 0;border-right-color:var(--devui-feedback-overlay-bg, #333333)}:host-context(.devui-tooltip) .devui-tooltip-inner{max-width:200px;padding:4px 16px;font-size:var(--devui-font-size, 12px);color:var(--devui-feedback-overlay-text, #f0f0f0);letter-spacing:0;line-height:1.5;background:var(--devui-feedback-overlay-bg, #333333);box-shadow:none;overflow-wrap:break-word;word-break:break-word;word-wrap:break-word;text-align:start;border-radius:var(--devui-border-radius-feedback, 4px);min-height:26px}:host-context(.devui-tooltip) .devui-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}\n"] }] }], ctorParameters: () => [{ type: i1.PositionService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { content: [{ type: Input }], position: [{ type: Input }], triggerElementRef: [{ type: Input }], showAnimation: [{ type: Input }], display: [{ type: HostBinding, args: ['style.display'] }], class: [{ type: HostBinding, args: ['class'] }], state: [{ type: HostBinding, args: ['@directionFadeInOut'] }], disabled: [{ type: HostBinding, args: ['@.disabled'] }], onAnimationEnd: [{ type: HostListener, args: ['@directionFadeInOut.done', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2dWkvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDVSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUN0RSxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7QUFZL0MsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixJQUFhLFFBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxHQUFHO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMzRCxDQUFDO0lBUUQsSUFBMEIsS0FBSztRQUM3QixPQUFPLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDakQsQ0FBQztJQUVELElBQXdDLEtBQUs7UUFDM0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUErQixRQUFRO1FBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzdCLENBQUM7SUFHRCxZQUNVLGVBQWdDLEVBQ2hDLE9BQW1CLEVB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Y0FHVDt3QkFDVixrQkFBa0I7cUJBQ25CLHVCQUNvQixLQUFLO3FJQUdqQixPQUFPO3NCQUFmLEtBQUs7Z0JBRU8sUUFBUTtzQkFBcEIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsS0FBSztnQkFJd0IsT0FBTztzQkFBcEMsV0FBVzt1QkFBQyxlQUFlO2dCQUNGLEtBQUs7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFJb0IsS0FBSztzQkFBNUMsV0FBVzt1QkFBQyxxQkFBcUI7Z0JBR0gsUUFBUTtzQkFBdEMsV0FBVzt1QkFBQyxZQUFZO2dCQXdDekIsY0FBYztzQkFEYixZQUFZO3VCQUFDLDBCQUEwQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LFxuICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3NpdGlvblNlcnZpY2UgfSBmcm9tICduZy1kZXZ1aS9wb3NpdGlvbic7XG5pbXBvcnQgeyBkaXJlY3Rpb25GYWRlSW5PdXQgfSBmcm9tICduZy1kZXZ1aS91dGlscyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9zaXRpb25UeXBlIH0gZnJvbSAnLi90b29sdGlwLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZC10b29sdGlwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b29sdGlwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICBkaXJlY3Rpb25GYWRlSW5PdXRcbiAgXSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmc7XG4gIF9wb3NpdGlvbjogUG9zaXRpb25UeXBlIHwgUG9zaXRpb25UeXBlW107XG4gIEBJbnB1dCgpIGdldCBwb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XG4gIH1cbiAgc2V0IHBvc2l0aW9uKHBvcykge1xuICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zO1xuICAgIHRoaXMuY3VycmVudFBvc2l0aW9uID0gQXJyYXkuaXNBcnJheShwb3MpID8gcG9zWzBdIDogcG9zO1xuICB9XG4gIGN1cnJlbnRQb3NpdGlvbjogUG9zaXRpb25UeXBlO1xuICBASW5wdXQoKSB0cmlnZ2VyRWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgQElucHV0KCkgIHNob3dBbmltYXRpb24gID0gdHJ1ZTtcbiAgc2Nyb2xsRWxlbWVudDogRWxlbWVudDtcbiAgYW5pbWF0ZVN0YXRlOiBzdHJpbmcgO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpIGRpc3BsYXkgPSAnYmxvY2snO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiAnZGV2dWktdG9vbHRpcCAnICsgdGhpcy5jdXJyZW50UG9zaXRpb247XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ0BkaXJlY3Rpb25GYWRlSW5PdXQnKSBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0ZVN0YXRlO1xuICB9XG4gIEBIb3N0QmluZGluZygnQC5kaXNhYmxlZCcpIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd0FuaW1hdGlvbjtcbiAgfVxuICBfb25TY3JvbGw6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvc2l0aW9uU2VydmljZTogUG9zaXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9vbHRpcDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyXG4gICkge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcbiAgICB0aGlzLnNjcm9sbEVsZW1lbnQgPSB0aGlzLnBvc2l0aW9uU2VydmljZS5nZXRTY3JvbGxQYXJlbnQodGhpcy50cmlnZ2VyRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLl9vblNjcm9sbCA9IGZyb21FdmVudCgodGhpcy5zY3JvbGxFbGVtZW50IHx8IHdpbmRvdyksICdzY3JvbGwnKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX29uU2Nyb2xsKSB7XG4gICAgICB0aGlzLl9vblNjcm9sbC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2hvdygpIHtcbiAgICB0aGlzLmFuaW1hdGVTdGF0ZSA9IHRoaXMuY3VycmVudFBvc2l0aW9uO1xuICB9XG5cbiAgb25IaWRlKCkge1xuICAgIHRoaXMuYW5pbWF0ZVN0YXRlID0gJ3ZvaWQnO1xuICB9XG5cbiAgLy8gd2lsbCBiZSBvdmVyd3JpdGUgYnkgdG9vbHRpcCBkaXJlY3RpdmVcbiAgb25IaWRkZW4oKSB7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdAZGlyZWN0aW9uRmFkZUluT3V0LmRvbmUnLCBbJyRldmVudCddKVxuICBvbkFuaW1hdGlvbkVuZChldmVudCkge1xuICAgIGlmIChldmVudC50b1N0YXRlID09PSAndm9pZCcpIHtcbiAgICAgIHRoaXMub25IaWRkZW4oKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICAvLyDop6PlhrN0b29sdGlw6Ieq6Lqr5aSn5bCP5a+86Ie05Ye6546w5rua5Yqo5p2h77yM5b2x5ZON5L2N572u6K6h566XXG4gICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy50b29sdGlwLm5hdGl2ZUVsZW1lbnQsICd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMudG9vbHRpcC5uYXRpdmVFbGVtZW50LCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgwLCAtOTk5OTlweCknKTtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5wb3NpdGlvblNlcnZpY2UucG9zaXRpb25FbGVtZW50cyh0aGlzLnRyaWdnZXJFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLnRvb2x0aXAubmF0aXZlRWxlbWVudCwgdGhpcy5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7IC8vIOmihOmYsuiEj+ajgOafpVxuICAgICAgdGhpcy5jdXJyZW50UG9zaXRpb24gPSByZWN0LnBsYWNlbWVudFByaW1hcnk7XG4gICAgfSk7XG4gICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy50b29sdGlwLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgYCR7cmVjdC5sZWZ0fXB4YCk7XG4gICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy50b29sdGlwLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHtyZWN0LnRvcH1weGApO1xuICAgIC8vIOenu+mZpOagt+W8j1xuICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZVN0eWxlKHRoaXMudG9vbHRpcC5uYXRpdmVFbGVtZW50LCAndmlzaWJpbGl0eScpO1xuICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZVN0eWxlKHRoaXMudG9vbHRpcC5uYXRpdmVFbGVtZW50LCAndHJhbnNmb3JtJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkZXZ1aS10b29sdGlwLWFycm93XCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwiZGV2dWktdG9vbHRpcC1pbm5lclwiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvZGl2PlxuIl19