UNPKG

ng-zorro-antd

Version:

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

214 lines 25.3 kB
import { __decorate } from "tslib"; import { OverlayModule } from '@angular/cdk/overlay'; import { NgClass, NgStyle } from '@angular/common'; import { ChangeDetectionStrategy, Component, Directive, EventEmitter, Host, Input, Optional, Output, ViewEncapsulation } from '@angular/core'; import { zoomBigMotion } from 'ng-zorro-antd/core/animation'; import { isPresetColor } from 'ng-zorro-antd/core/color'; import { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation'; import { NzOutletModule } from 'ng-zorro-antd/core/outlet'; import { NzOverlayModule } from 'ng-zorro-antd/core/overlay'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import { isTooltipEmpty, NzTooltipBaseComponent, NzTooltipBaseDirective } from './base'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/core/no-animation"; import * as i2 from "@angular/cdk/bidi"; import * as i3 from "@angular/cdk/overlay"; import * as i4 from "ng-zorro-antd/core/outlet"; import * as i5 from "ng-zorro-antd/core/overlay"; export class NzTooltipDirective extends NzTooltipBaseDirective { constructor(elementRef, hostView, renderer, noAnimation) { super(elementRef, hostView, renderer, noAnimation); this.titleContext = null; this.trigger = 'hover'; this.placement = 'top'; this.cdkConnectedOverlayPush = true; // eslint-disable-next-line @angular-eslint/no-output-rename this.visibleChange = new EventEmitter(); this.componentRef = this.hostView.createComponent(NzToolTipComponent); } getProxyPropertyMap() { return { ...super.getProxyPropertyMap(), nzTooltipColor: ['nzColor', () => this.nzTooltipColor], titleContext: ['nzTitleContext', () => this.titleContext] }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: NzTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i1.NzNoAnimationDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: NzTooltipDirective, isStandalone: true, selector: "[nz-tooltip]", inputs: { title: ["nzTooltipTitle", "title"], titleContext: ["nzTooltipTitleContext", "titleContext"], directiveTitle: ["nz-tooltip", "directiveTitle"], trigger: ["nzTooltipTrigger", "trigger"], placement: ["nzTooltipPlacement", "placement"], origin: ["nzTooltipOrigin", "origin"], visible: ["nzTooltipVisible", "visible"], mouseEnterDelay: ["nzTooltipMouseEnterDelay", "mouseEnterDelay"], mouseLeaveDelay: ["nzTooltipMouseLeaveDelay", "mouseLeaveDelay"], overlayClassName: ["nzTooltipOverlayClassName", "overlayClassName"], overlayStyle: ["nzTooltipOverlayStyle", "overlayStyle"], arrowPointAtCenter: ["nzTooltipArrowPointAtCenter", "arrowPointAtCenter"], cdkConnectedOverlayPush: "cdkConnectedOverlayPush", nzTooltipColor: "nzTooltipColor" }, outputs: { visibleChange: "nzTooltipVisibleChange" }, host: { properties: { "class.ant-tooltip-open": "visible" } }, exportAs: ["nzTooltip"], usesInheritance: true, ngImport: i0 }); } } __decorate([ InputBoolean() ], NzTooltipDirective.prototype, "arrowPointAtCenter", void 0); __decorate([ InputBoolean() ], NzTooltipDirective.prototype, "cdkConnectedOverlayPush", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: NzTooltipDirective, decorators: [{ type: Directive, args: [{ selector: '[nz-tooltip]', exportAs: 'nzTooltip', host: { '[class.ant-tooltip-open]': 'visible' }, standalone: true }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i1.NzNoAnimationDirective, decorators: [{ type: Host }, { type: Optional }] }], propDecorators: { title: [{ type: Input, args: ['nzTooltipTitle'] }], titleContext: [{ type: Input, args: ['nzTooltipTitleContext'] }], directiveTitle: [{ type: Input, args: ['nz-tooltip'] }], trigger: [{ type: Input, args: ['nzTooltipTrigger'] }], placement: [{ type: Input, args: ['nzTooltipPlacement'] }], origin: [{ type: Input, args: ['nzTooltipOrigin'] }], visible: [{ type: Input, args: ['nzTooltipVisible'] }], mouseEnterDelay: [{ type: Input, args: ['nzTooltipMouseEnterDelay'] }], mouseLeaveDelay: [{ type: Input, args: ['nzTooltipMouseLeaveDelay'] }], overlayClassName: [{ type: Input, args: ['nzTooltipOverlayClassName'] }], overlayStyle: [{ type: Input, args: ['nzTooltipOverlayStyle'] }], arrowPointAtCenter: [{ type: Input, args: ['nzTooltipArrowPointAtCenter'] }], cdkConnectedOverlayPush: [{ type: Input }], nzTooltipColor: [{ type: Input }], visibleChange: [{ type: Output, args: ['nzTooltipVisibleChange'] }] } }); export class NzToolTipComponent extends NzTooltipBaseComponent { constructor(cdr, directionality, noAnimation) { super(cdr, directionality, noAnimation); this.nzTitle = null; this.nzTitleContext = null; this._contentStyleMap = {}; } isEmpty() { return isTooltipEmpty(this.nzTitle); } updateStyles() { const isColorPreset = this.nzColor && isPresetColor(this.nzColor); this._classMap = { [this.nzOverlayClassName]: true, [`${this._prefix}-placement-${this.preferredPlacement}`]: true, [`${this._prefix}-${this.nzColor}`]: isColorPreset }; this._contentStyleMap = { backgroundColor: !!this.nzColor && !isColorPreset ? this.nzColor : null, '--color': this.nzColor }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: NzToolTipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.Directionality, optional: true }, { token: i1.NzNoAnimationDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: NzToolTipComponent, isStandalone: true, selector: "nz-tooltip", exportAs: ["nzTooltipComponent"], usesInheritance: true, ngImport: i0, template: ` <ng-template #overlay="cdkConnectedOverlay" cdkConnectedOverlay nzConnectedOverlay [cdkConnectedOverlayOrigin]="origin" [cdkConnectedOverlayOpen]="_visible" [cdkConnectedOverlayPositions]="_positions" [cdkConnectedOverlayPush]="cdkConnectedOverlayPush" [nzArrowPointAtCenter]="nzArrowPointAtCenter" (overlayOutsideClick)="onClickOutside($event)" (detach)="hide()" (positionChange)="onPositionChange($event)" > <div class="ant-tooltip" [class.ant-tooltip-rtl]="dir === 'rtl'" [ngClass]="_classMap" [ngStyle]="nzOverlayStyle" [@.disabled]="!!noAnimation?.nzNoAnimation" [nzNoAnimation]="noAnimation?.nzNoAnimation" [@zoomBigMotion]="'active'" > <div class="ant-tooltip-content"> <div class="ant-tooltip-arrow"> <span class="ant-tooltip-arrow-content" [ngStyle]="_contentStyleMap"></span> </div> <div class="ant-tooltip-inner" [ngStyle]="_contentStyleMap"> <ng-container *nzStringTemplateOutlet="nzTitle; context: nzTitleContext">{{ nzTitle }}</ng-container> </div> </div> </div> </ng-template> `, isInline: true, dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NzNoAnimationDirective, selector: "[nzNoAnimation]", inputs: ["nzNoAnimation"], exportAs: ["nzNoAnimation"] }, { kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: i4.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }, { kind: "ngmodule", type: NzOverlayModule }, { kind: "directive", type: i5.NzConnectedOverlayDirective, selector: "[cdkConnectedOverlay][nzConnectedOverlay]", inputs: ["nzArrowPointAtCenter"], exportAs: ["nzConnectedOverlay"] }], animations: [zoomBigMotion], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: NzToolTipComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tooltip', exportAs: 'nzTooltipComponent', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [zoomBigMotion], template: ` <ng-template #overlay="cdkConnectedOverlay" cdkConnectedOverlay nzConnectedOverlay [cdkConnectedOverlayOrigin]="origin" [cdkConnectedOverlayOpen]="_visible" [cdkConnectedOverlayPositions]="_positions" [cdkConnectedOverlayPush]="cdkConnectedOverlayPush" [nzArrowPointAtCenter]="nzArrowPointAtCenter" (overlayOutsideClick)="onClickOutside($event)" (detach)="hide()" (positionChange)="onPositionChange($event)" > <div class="ant-tooltip" [class.ant-tooltip-rtl]="dir === 'rtl'" [ngClass]="_classMap" [ngStyle]="nzOverlayStyle" [@.disabled]="!!noAnimation?.nzNoAnimation" [nzNoAnimation]="noAnimation?.nzNoAnimation" [@zoomBigMotion]="'active'" > <div class="ant-tooltip-content"> <div class="ant-tooltip-arrow"> <span class="ant-tooltip-arrow-content" [ngStyle]="_contentStyleMap"></span> </div> <div class="ant-tooltip-inner" [ngStyle]="_contentStyleMap"> <ng-container *nzStringTemplateOutlet="nzTitle; context: nzTitleContext">{{ nzTitle }}</ng-container> </div> </div> </div> </ng-template> `, preserveWhitespaces: false, imports: [OverlayModule, NgClass, NgStyle, NzNoAnimationDirective, NzOutletModule, NzOverlayModule], standalone: true }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.Directionality, decorators: [{ type: Optional }] }, { type: i1.NzNoAnimationDirective, decorators: [{ type: Host }, { type: Optional }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFHTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQWlCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUNMLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsc0JBQXNCLEVBR3ZCLE1BQU0sUUFBUSxDQUFDOzs7Ozs7O0FBVWhCLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxzQkFBc0I7SUF1QjVELFlBQ0UsVUFBc0IsRUFDdEIsUUFBMEIsRUFFMUIsUUFBbUIsRUFDQyxXQUFvQztRQUV4RCxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUExQnJCLGlCQUFZLEdBQW1CLElBQUksQ0FBQztRQUVoQyxZQUFPLEdBQXNCLE9BQU8sQ0FBQztRQUNuQyxjQUFTLEdB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RUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUN2RSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDeEIsQ0FBQztJQUNKLENBQUM7OEdBakNVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLCtIQXRDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDVCwyREFFUyxhQUFhLGlpQ0FBRSxPQUFPLG9GQUFFLE9BQU8sMkVBQUUsc0JBQXNCLG1IQUFFLGNBQWMsZ1BBQUUsZUFBZSx5TUFwQ3RGLENBQUMsYUFBYSxDQUFDOzsyRkF1Q2hCLGtCQUFrQjtrQkE1QzlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDVDtvQkFDRCxtQkFBbUIsRUFBRSxLQUFLO29CQUMxQixPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDO29CQUNuRyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQVdJLFFBQVE7OzBCQUNSLElBQUk7OzBCQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgem9vbUJpZ01vdGlvbiB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9hbmltYXRpb24nO1xuaW1wb3J0IHsgaXNQcmVzZXRDb2xvciwgTnpQcmVzZXRDb2xvciB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9jb2xvcic7XG5pbXBvcnQgeyBOek5vQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL25vLWFuaW1hdGlvbic7XG5pbXBvcnQgeyBOek91dGxldE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9vdXRsZXQnO1xuaW1wb3J0IHsgTnpPdmVybGF5TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL292ZXJsYXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOZ1N0eWxlSW50ZXJmYWNlLCBOelRTVHlwZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdXRpbCc7XG5cbmltcG9ydCB7XG4gIGlzVG9vbHRpcEVtcHR5LFxuICBOelRvb2x0aXBCYXNlQ29tcG9uZW50LFxuICBOelRvb2x0aXBCYXNlRGlyZWN0aXZlLFxuICBOelRvb2x0aXBUcmlnZ2VyLFxuICBQcm9wZXJ0eU1hcHBpbmdcbn0gZnJvbSAnLi9iYXNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW256LXRvb2x0aXBdJyxcbiAgZXhwb3J0QXM6ICduelRvb2x0aXAnLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5hbnQtdG9vbHRpcC1vcGVuXSc6ICd2aXNpYmxlJ1xuICB9LFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE56VG9vbHRpcERpcmVjdGl2ZSBleHRlbmRzIE56VG9vbHRpcEJhc2VEaXJlY3RpdmUge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpUb29sdGlwQXJyb3dQb2ludEF0Q2VudGVyOiBCb29sZWFuSW5wdXQ7XG5cbiAgQElucHV0KCduelRvb2x0aXBUaXRsZScpIG92ZXJyaWRlIHRpdGxlPzogTnpUU1R5cGUgfCBudWxsO1xuICBASW5wdXQoJ256VG9vbHRpcFRpdGxlQ29udGV4dCcpIHRpdGxlQ29udGV4dD86IE9iamVjdCB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoJ256LXRvb2x0aXAnKSBvdmVycmlkZSBkaXJlY3RpdmVUaXRsZT86IE56VFNUeXBlIHwgbnVsbDtcbiAgQElucHV0KCduelRvb2x0aXBUcmlnZ2VyJykgb3ZlcnJpZGUgdHJpZ2dlcj86IE56VG9vbHRpcFRyaWdnZXIgPSAnaG92ZXInO1xuICBASW5wdXQoJ256VG9vbHRpcFBsYWNlbWVudCcpIG92ZXJyaWRlIHBsYWNlbWVudD86IHN0cmluZyB8IHN0cmluZ1tdID0gJ3RvcCc7XG4gIEBJbnB1dCgnbnpUb29sdGlwT3JpZ2luJykgb3ZlcnJpZGUgb3JpZ2luPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBJbnB1dCgnbnpUb29sdGlwVmlzaWJsZScpIG92ZXJyaWRlIHZpc2libGU/OiBib29sZWFuO1xuICBASW5wdXQoJ256VG9vbHRpcE1vdXNlRW50ZXJEZWxheScpIG92ZXJyaWRlIG1vdXNlRW50ZXJEZWxheT86IG51bWJlcjtcbiAgQElucHV0KCduelRvb2x0aXBNb3VzZUxlYXZlRGVsYXknKSBvdmVycmlkZSBtb3VzZUxlYXZlRGVsYXk/OiBudW1iZXI7XG4gIEBJbnB1dCgnbnpUb29sdGlwT3ZlcmxheUNsYXNzTmFtZScpIG92ZXJyaWRlIG92ZXJsYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgnbnpUb29sdGlwT3ZlcmxheVN0eWxlJykgb3ZlcnJpZGUgb3ZlcmxheVN0eWxlPzogTmdTdHlsZUludGVyZmFjZTtcbiAgQElucHV0KCduelRvb2x0aXBBcnJvd1BvaW50QXRDZW50ZXInKSBASW5wdXRCb29sZWFuKCkgb3ZlcnJpZGUgYXJyb3dQb2ludEF0Q2VudGVyPzogYm9vbGVhbjtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG92ZXJyaWRlIGNka0Nvbm5lY3RlZE92ZXJsYXlQdXNoPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG56VG9vbHRpcENvbG9yPzogc3RyaW5nO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZVxuICBAT3V0cHV0KCduelRvb2x0aXBWaXNpYmxlQ2hhbmdlJykgb3ZlcnJpZGUgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBvdmVycmlkZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxOelRvb2xUaXBDb21wb25lbnQ+ID0gdGhpcy5ob3N0Vmlldy5jcmVhdGVDb21wb25lbnQoTnpUb29sVGlwQ29tcG9uZW50KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGhvc3RWaWV3OiBWaWV3Q29udGFpbmVyUmVmLFxuXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASG9zdCgpIEBPcHRpb25hbCgpIG5vQW5pbWF0aW9uPzogTnpOb0FuaW1hdGlvbkRpcmVjdGl2ZVxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCBob3N0VmlldywgcmVuZGVyZXIsIG5vQW5pbWF0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXRQcm94eVByb3BlcnR5TWFwKCk6IFByb3BlcnR5TWFwcGluZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldFByb3h5UHJvcGVydHlNYXAoKSxcbiAgICAgIG56VG9vbHRpcENvbG9yOiBbJ256Q29sb3InLCAoKSA9PiB0aGlzLm56VG9vbHRpcENvbG9yXSxcbiAgICAgIHRpdGxlQ29udGV4dDogWyduelRpdGxlQ29udGV4dCcsICgpID0+IHRoaXMudGl0bGVDb250ZXh0XVxuICAgIH07XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnotdG9vbHRpcCcsXG4gIGV4cG9ydEFzOiAnbnpUb29sdGlwQ29tcG9uZW50JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFt6b29tQmlnTW90aW9uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICNvdmVybGF5PVwiY2RrQ29ubmVjdGVkT3ZlcmxheVwiXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBuekNvbm5lY3RlZE92ZXJsYXlcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cIm9yaWdpblwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiX3Zpc2libGVcIlxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiX3Bvc2l0aW9uc1wiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVB1c2hdPVwiY2RrQ29ubmVjdGVkT3ZlcmxheVB1c2hcIlxuICAgICAgW256QXJyb3dQb2ludEF0Q2VudGVyXT1cIm56QXJyb3dQb2ludEF0Q2VudGVyXCJcbiAgICAgIChvdmVybGF5T3V0c2lkZUNsaWNrKT1cIm9uQ2xpY2tPdXRzaWRlKCRldmVudClcIlxuICAgICAgKGRldGFjaCk9XCJoaWRlKClcIlxuICAgICAgKHBvc2l0aW9uQ2hhbmdlKT1cIm9uUG9zaXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFudC10b29sdGlwXCJcbiAgICAgICAgW2NsYXNzLmFudC10b29sdGlwLXJ0bF09XCJkaXIgPT09ICdydGwnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiX2NsYXNzTWFwXCJcbiAgICAgICAgW25nU3R5bGVdPVwibnpPdmVybGF5U3R5bGVcIlxuICAgICAgICBbQC5kaXNhYmxlZF09XCIhIW5vQW5pbWF0aW9uPy5uek5vQW5pbWF0aW9uXCJcbiAgICAgICAgW256Tm9BbmltYXRpb25dPVwibm9BbmltYXRpb24/Lm56Tm9BbmltYXRpb25cIlxuICAgICAgICBbQHpvb21CaWdNb3Rpb25dPVwiJ2FjdGl2ZSdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYW50LXRvb2x0aXAtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbnQtdG9vbHRpcC1hcnJvd1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbnQtdG9vbHRpcC1hcnJvdy1jb250ZW50XCIgW25nU3R5bGVdPVwiX2NvbnRlbnRTdHlsZU1hcFwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW50LXRvb2x0aXAtaW5uZXJcIiBbbmdTdHlsZV09XCJfY29udGVudFN0eWxlTWFwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwibnpUaXRsZTsgY29udGV4dDogbnpUaXRsZUNvbnRleHRcIj57eyBuelRpdGxlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGltcG9ydHM6IFtPdmVybGF5TW9kdWxlLCBOZ0NsYXNzLCBOZ1N0eWxlLCBOek5vQW5pbWF0aW9uRGlyZWN0aXZlLCBOek91dGxldE1vZHVsZSwgTnpPdmVybGF5TW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOelRvb2xUaXBDb21wb25lbnQgZXh0ZW5kcyBOelRvb2x0aXBCYXNlQ29tcG9uZW50IHtcbiAgb3ZlcnJpZGUgbnpUaXRsZTogTnpUU1R5cGUgfCBudWxsID0gbnVsbDtcbiAgbnpUaXRsZUNvbnRleHQ6IE9iamVjdCB8IG51bGwgPSBudWxsO1xuXG4gIG56Q29sb3I/OiBzdHJpbmcgfCBOelByZXNldENvbG9yO1xuXG4gIF9jb250ZW50U3R5bGVNYXA6IE5nU3R5bGVJbnRlcmZhY2UgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIGRpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eSxcbiAgICBASG9zdCgpIEBPcHRpb25hbCgpIG5vQW5pbWF0aW9uPzogTnpOb0FuaW1hdGlvbkRpcmVjdGl2ZVxuICApIHtcbiAgICBzdXBlcihjZHIsIGRpcmVjdGlvbmFsaXR5LCBub0FuaW1hdGlvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUb29sdGlwRW1wdHkodGhpcy5uelRpdGxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVTdHlsZXMoKTogdm9pZCB7XG4gICAgY29uc3QgaXNDb2xvclByZXNldCA9IHRoaXMubnpDb2xvciAmJiBpc1ByZXNldENvbG9yKHRoaXMubnpDb2xvcik7XG5cbiAgICB0aGlzLl9jbGFzc01hcCA9IHtcbiAgICAgIFt0aGlzLm56T3ZlcmxheUNsYXNzTmFtZV06IHRydWUsXG4gICAgICBbYCR7dGhpcy5fcHJlZml4fS1wbGFjZW1lbnQtJHt0aGlzLnByZWZlcnJlZFBsYWNlbWVudH1gXTogdHJ1ZSxcbiAgICAgIFtgJHt0aGlzLl9wcmVmaXh9LSR7dGhpcy5uekNvbG9yfWBdOiBpc0NvbG9yUHJlc2V0XG4gICAgfTtcblxuICAgIHRoaXMuX2NvbnRlbnRTdHlsZU1hcCA9IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogISF0aGlzLm56Q29sb3IgJiYgIWlzQ29sb3JQcmVzZXQgPyB0aGlzLm56Q29sb3IgOiBudWxsLFxuICAgICAgJy0tY29sb3InOiB0aGlzLm56Q29sb3JcbiAgICB9O1xuICB9XG59XG4iXX0=