UNPKG

@kushki/ng-suka

Version:

<p align="center"> <h1 align="center">Suka Components Angular</h1> <p align="center"> An Angular implementation of the Suka Design System </p> </p>

293 lines 19.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, HostBinding, Input, ChangeDetectorRef, ElementRef, Renderer2, ViewContainerRef, ComponentFactoryResolver } from '@angular/core'; import { Loading } from '../loading/loading.module'; /** * Buttons are used primarily for actions, such as “Add”, “Close”, “Cancel”, or “Save”. * Plain buttons, which look similar to links, are used for less important or less commonly used actions, such as “view shipping settings”. * * For navigational actions that appear within or directly following a sentence, use the link component. */ var Button = /** @class */ (function () { function Button(ref, el, renderer, viewContainerRef, componentFactoryResolver) { this.ref = ref; this.el = el; this.renderer = renderer; this.viewContainerRef = viewContainerRef; this.componentFactoryResolver = componentFactoryResolver; /** * Sets the button type. Can be `primary`, `basic`, `plain`, `destructive` or `outline_white`. */ this.sukaButton = 'basic'; /** * Button size. Can be `md` (Medium), `sm` (Small) or `lg` (Large). */ this.size = 'md'; /** * Set to `true` for a skeleton state button. */ this.skeleton = false; /** * Set to `true` to display the outline version of the button. */ this.outline = false; /** * Set to `true` for a hover effect. */ this.hover = false; /** * Set to `true` for a button that uses the full horizontal width; */ this.fullWidth = false; /** * Sets to `true` when the button is on a button group. */ this.inGroup = false; /** * Set to `true` for a loading button. */ this.loading = false; } Object.defineProperty(Button.prototype, "basic", { get: /** * @return {?} */ function () { return this.getType('basic'); }, enumerable: true, configurable: true }); Object.defineProperty(Button.prototype, "primary", { get: /** * @return {?} */ function () { return this.getType('primary'); }, enumerable: true, configurable: true }); Object.defineProperty(Button.prototype, "plain", { get: /** * @return {?} */ function () { return this.getType('plain'); }, enumerable: true, configurable: true }); Object.defineProperty(Button.prototype, "destructive", { get: /** * @return {?} */ function () { return this.getType('destructive'); }, enumerable: true, configurable: true }); Object.defineProperty(Button.prototype, "outline_white", { get: /** * @return {?} */ function () { return this.getType('outline_white'); }, enumerable: true, configurable: true }); Object.defineProperty(Button.prototype, "buttonSmall", { get: /** * @return {?} */ function () { return this.size === 'sm'; }, enumerable: true, configurable: true }); Object.defineProperty(Button.prototype, "buttonLarge", { get: /** * @return {?} */ function () { return this.size === 'lg'; }, enumerable: true, configurable: true }); /** * @private * @param {?} type * @return {?} */ Button.prototype.getType = /** * @private * @param {?} type * @return {?} */ function (type) { return this.sukaButton === type; }; /** * @return {?} */ Button.prototype.ngOnInit = /** * @return {?} */ function () { if (!this.sukaButton) { this.sukaButton = 'basic'; } // Create the spinner /** @type {?} */ var factory = this.componentFactoryResolver.resolveComponentFactory(Loading); /** @type {?} */ var componentRef = this.viewContainerRef.createComponent(factory); this.loadingSpinner = componentRef.instance; this.loadingSpinner.size = 'sm'; this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'none'); this.renderer.appendChild(this.el.nativeElement, this.loadingSpinner.elementRef.nativeElement); if (this.loading) { this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'inherit'); this.el.nativeElement.disabled = true; } }; /** * @param {?} changes * @return {?} */ Button.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes.loading && this.loadingSpinner) { if (this.loading) { this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'inherit'); } else { this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'none'); } this.el.nativeElement.disabled = changes.loading.currentValue; } }; /** * @return {?} */ Button.prototype.ngAfterViewInit = /** * @return {?} */ function () { this.ref.detectChanges(); }; Button.decorators = [ { type: Directive, args: [{ selector: '[sukaButton]' },] } ]; /** @nocollapse */ Button.ctorParameters = function () { return [ { type: ChangeDetectorRef }, { type: ElementRef }, { type: Renderer2 }, { type: ViewContainerRef }, { type: ComponentFactoryResolver } ]; }; Button.propDecorators = { sukaButton: [{ type: Input }], size: [{ type: Input }], basic: [{ type: HostBinding, args: ['class.btn--basic',] }], primary: [{ type: HostBinding, args: ['class.btn--primary',] }], plain: [{ type: HostBinding, args: ['class.btn--plain',] }], destructive: [{ type: HostBinding, args: ['class.btn--destructive',] }], outline_white: [{ type: HostBinding, args: ['class.btn--outline_white',] }], skeleton: [{ type: HostBinding, args: ['class.skeleton',] }, { type: Input }], outline: [{ type: HostBinding, args: ['class.btn--outline',] }, { type: Input }], hover: [{ type: HostBinding, args: ['class.btn--hover',] }, { type: Input }], fullWidth: [{ type: HostBinding, args: ['class.btn--full_width',] }, { type: Input }], inGroup: [{ type: HostBinding, args: ['class.btn--group_item',] }, { type: Input }], loading: [{ type: HostBinding, args: ['class.btn--loading',] }, { type: Input }], buttonSmall: [{ type: HostBinding, args: ['class.btn--sm',] }], buttonLarge: [{ type: HostBinding, args: ['class.btn--lg',] }] }; return Button; }()); export { Button }; if (false) { /** * Sets the button type. Can be `primary`, `basic`, `plain`, `destructive` or `outline_white`. * @type {?} */ Button.prototype.sukaButton; /** * Button size. Can be `md` (Medium), `sm` (Small) or `lg` (Large). * @type {?} */ Button.prototype.size; /** * Set to `true` for a skeleton state button. * @type {?} */ Button.prototype.skeleton; /** * Set to `true` to display the outline version of the button. * @type {?} */ Button.prototype.outline; /** * Set to `true` for a hover effect. * @type {?} */ Button.prototype.hover; /** * Set to `true` for a button that uses the full horizontal width; * @type {?} */ Button.prototype.fullWidth; /** * Sets to `true` when the button is on a button group. * @type {?} */ Button.prototype.inGroup; /** * Set to `true` for a loading button. * @type {?} */ Button.prototype.loading; /** * @ignore * @type {?} */ Button.prototype.loadingSpinner; /** * @type {?} * @private */ Button.prototype.ref; /** * @type {?} * @private */ Button.prototype.el; /** * @type {?} * @private */ Button.prototype.renderer; /** * @type {?} * @private */ Button.prototype.viewContainerRef; /** * @type {?} * @private */ Button.prototype.componentFactoryResolver; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrdXNoa2kvbmctc3VrYS8iLCJzb3VyY2VzIjpbImxpYi9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUlMLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQix3QkFBd0IsRUFFekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBVXBEO0lBbUVFLGdCQUNVLEdBQXNCLEVBQ3RCLEVBQWMsRUFDZCxRQUFtQixFQUNuQixnQkFBa0MsRUFDbEMsd0JBQWtEO1FBSmxELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjs7OztRQWpFbkQsZUFBVSxHQUFlLE9BQU8sQ0FBQzs7OztRQUtqQyxTQUFJLEdBQXdCLElBQUksQ0FBQzs7OztRQXFCRixhQUFRLEdBQUssS0FBSyxDQUFDOzs7O1FBSWYsWUFBTyxHQUFLLEtBQUssQ0FBQzs7OztRQUlwQixVQUFLLEdBQUssS0FBSyxDQUFDOzs7O1FBSVgsY0FBUyxHQUFLLEtBQUssQ0FBQzs7OztRQUlwQixZQUFPLEdBQUssS0FBSyxDQUFDOzs7O1FBSXJCLFlBQU8sR0FBSyxLQUFLLENBQUM7SUFvQjNELENBQUM7SUEzREosc0JBQXFDLHlCQUFLOzs7O1FBQTFDO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLENBQUM7OztPQUFBO0lBQ0Qsc0JBQXVDLDJCQUFPOzs7O1FBQTlDO1lBQ0Us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QUM7SUFDM0IsQ0FBQzs7Z0JBbkhGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztpQkFDekI7Ozs7Z0JBbkJDLGlCQUFpQjtnQkFDakIsVUFBVTtnQkFDVixTQUFTO2dCQUNULGdCQUFnQjtnQkFDaEIsd0JBQXdCOzs7NkJBb0J2QixLQUFLO3VCQUtMLEtBQUs7d0JBRUwsV0FBVyxTQUFDLGtCQUFrQjswQkFHOUIsV0FBVyxTQUFDLG9CQUFvQjt3QkFHaEMsV0FBVyxTQUFDLGtCQUFrQjs4QkFHOUIsV0FBVyxTQUFDLHdCQUF3QjtnQ0FHcEMsV0FBVyxTQUFDLDBCQUEwQjsyQkFPdEMsV0FBVyxTQUFDLGdCQUFnQixjQUFHLEtBQUs7MEJBSXBDLFdBQVcsU0FBQyxvQkFBb0IsY0FBRyxLQUFLO3dCQUl4QyxXQUFXLFNBQUMsa0JBQWtCLGNBQUcsS0FBSzs0QkFJdEMsV0FBVyxTQUFDLHVCQUF1QixjQUFHLEtBQUs7MEJBSTNDLFdBQVcsU0FBQyx1QkFBdUIsY0FBRyxLQUFLOzBCQUkzQyxXQUFXLFNBQUMsb0JBQW9CLGNBQUcsS0FBSzs4QkFFeEMsV0FBVyxTQUFDLGVBQWU7OEJBRzNCLFdBQVcsU0FBQyxlQUFlOztJQTBEOUIsYUFBQztDQUFBLEFBcEhELElBb0hDO1NBakhZLE1BQU07Ozs7OztJQUlqQiw0QkFBMEM7Ozs7O0lBSzFDLHNCQUEwQzs7Ozs7SUFxQjFDLDBCQUEyRDs7Ozs7SUFJM0QseUJBQThEOzs7OztJQUk5RCx1QkFBMEQ7Ozs7O0lBSTFELDJCQUFtRTs7Ozs7SUFJbkUseUJBQWlFOzs7OztJQUlqRSx5QkFBOEQ7Ozs7O0lBWTlELGdDQUF3Qjs7Ozs7SUFHdEIscUJBQThCOzs7OztJQUM5QixvQkFBc0I7Ozs7O0lBQ3RCLDBCQUEyQjs7Ozs7SUFDM0Isa0NBQTBDOzs7OztJQUMxQywwQ0FBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBFbGVtZW50UmVmLFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvYWRpbmcgfSBmcm9tICcuLi9sb2FkaW5nL2xvYWRpbmcubW9kdWxlJztcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tICcuL2J1dHRvbi10eXBlcyc7XG5cblxuLyoqXG4gKiBCdXR0b25zIGFyZSB1c2VkIHByaW1hcmlseSBmb3IgYWN0aW9ucywgc3VjaCBhcyDigJxBZGTigJ0sIOKAnENsb3Nl4oCdLCDigJxDYW5jZWzigJ0sIG9yIOKAnFNhdmXigJ0uXG4gKiBQbGFpbiBidXR0b25zLCB3aGljaCBsb29rIHNpbWlsYXIgdG8gbGlua3MsIGFyZSB1c2VkIGZvciBsZXNzIGltcG9ydGFudCBvciBsZXNzIGNvbW1vbmx5IHVzZWQgYWN0aW9ucywgc3VjaCBhcyDigJx2aWV3IHNoaXBwaW5nIHNldHRpbmdz4oCdLlxuICpcbiAqIEZvciBuYXZpZ2F0aW9uYWwgYWN0aW9ucyB0aGF0IGFwcGVhciB3aXRoaW4gb3IgZGlyZWN0bHkgZm9sbG93aW5nIGEgc2VudGVuY2UsIHVzZSB0aGUgbGluayBjb21wb25lbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzdWthQnV0dG9uXSdcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogU2V0cyB0aGUgYnV0dG9uIHR5cGUuIENhbiBiZSBgcHJpbWFyeWAsIGBiYXNpY2AsIGBwbGFpbmAsIGBkZXN0cnVjdGl2ZWAgb3IgYG91dGxpbmVfd2hpdGVgLlxuICAgKi9cbiAgQElucHV0KCkgc3VrYUJ1dHRvbjogQnV0dG9uVHlwZSA9ICdiYXNpYyc7XG5cbiAgLyoqXG4gICAqIEJ1dHRvbiBzaXplLiBDYW4gYmUgYG1kYCAoTWVkaXVtKSwgYHNtYCAoU21hbGwpIG9yIGBsZ2AgKExhcmdlKS5cbiAgICovXG4gIEBJbnB1dCgpIHNpemU/OiAnbWQnIHwgJ3NtJyB8ICdsZycgPSAnbWQnO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1iYXNpYycpIGdldCBiYXNpYygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlKCdiYXNpYycpO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1wcmltYXJ5JykgZ2V0IHByaW1hcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHlwZSgncHJpbWFyeScpO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1wbGFpbicpIGdldCBwbGFpbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlKCdwbGFpbicpO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1kZXN0cnVjdGl2ZScpIGdldCBkZXN0cnVjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlKCdkZXN0cnVjdGl2ZScpO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1vdXRsaW5lX3doaXRlJykgZ2V0IG91dGxpbmVfd2hpdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHlwZSgnb3V0bGluZV93aGl0ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgc2tlbGV0b24gc3RhdGUgYnV0dG9uLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za2VsZXRvbicpIEBJbnB1dCgpIHNrZWxldG9uID8gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgdG8gZGlzcGxheSB0aGUgb3V0bGluZSB2ZXJzaW9uIG9mIHRoZSBidXR0b24uXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi0tb3V0bGluZScpIEBJbnB1dCgpIG91dGxpbmUgPyA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0IHRvIGB0cnVlYCBmb3IgYSBob3ZlciBlZmZlY3QuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi0taG92ZXInKSBASW5wdXQoKSBob3ZlciA/ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIGJ1dHRvbiB0aGF0IHVzZXMgdGhlIGZ1bGwgaG9yaXpvbnRhbCB3aWR0aDtcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1mdWxsX3dpZHRoJykgQElucHV0KCkgZnVsbFdpZHRoID8gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldHMgdG8gYHRydWVgIHdoZW4gdGhlIGJ1dHRvbiBpcyBvbiBhIGJ1dHRvbiBncm91cC5cbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1ncm91cF9pdGVtJykgQElucHV0KCkgaW5Hcm91cCA/ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIGxvYWRpbmcgYnV0dG9uLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tLWxvYWRpbmcnKSBASW5wdXQoKSBsb2FkaW5nID8gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi0tc20nKSBnZXQgYnV0dG9uU21hbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ3NtJztcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi0tbGcnKSBnZXQgYnV0dG9uTGFyZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ2xnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBsb2FkaW5nU3Bpbm5lcjogTG9hZGluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgKSB7fVxuXG4gIHByaXZhdGUgZ2V0VHlwZSh0eXBlOiBCdXR0b25UeXBlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3VrYUJ1dHRvbiA9PT0gdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc3VrYUJ1dHRvbikge1xuICAgICAgdGhpcy5zdWthQnV0dG9uID0gJ2Jhc2ljJztcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIHNwaW5uZXJcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTG9hZGluZyk7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICB0aGlzLmxvYWRpbmdTcGlubmVyID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgdGhpcy5sb2FkaW5nU3Bpbm5lci5zaXplID0gJ3NtJztcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5sb2FkaW5nU3Bpbm5lci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcblxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmxvYWRpbmdTcGlubmVyLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMubG9hZGluZ1NwaW5uZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdpbmhlcml0Jyk7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5sb2FkaW5nICYmIHRoaXMubG9hZGluZ1NwaW5uZXIpIHtcbiAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmxvYWRpbmdTcGlubmVyLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnaW5oZXJpdCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmxvYWRpbmdTcGlubmVyLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSBjaGFuZ2VzLmxvYWRpbmcuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiJdfQ==