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>

189 lines (188 loc) 14.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Inject, TemplateRef, HostListener, EventEmitter, HostBinding } from '@angular/core'; import { SheetRef } from './sheet-ref'; import { SHEET_CONTENT_DATA } from './sheet.tokens'; import { trigger, state, style, transition, animate } from '@angular/animations'; /** @type {?} */ const ESCAPE_KEY = 27; /** @type {?} */ const SHEET_ANIMATION_TIMINGS = '200ms cubic-bezier(0.64, 0, 0.35, 1)'; export class SheetContainer { /** * @param {?} dialogRef * @param {?} content */ constructor(dialogRef, content) { this.dialogRef = dialogRef; this.content = content; this.animationState = 'enter'; this.animationStateChanged = new EventEmitter(); this.showFooter = false; this.baseClass = true; } /** * @return {?} */ ngOnInit() { if (this.content.actions && this.content.actions.length > 0) { this.showFooter = true; this.primaryActions = this.content.actions.filter((/** * @param {?} action * @return {?} */ (action) => action.type === 'primary')); this.secondaryActions = this.content.actions.filter((/** * @param {?} action * @return {?} */ (action) => action.type === 'secondary')); } } /** * @param {?} value * @return {?} */ isTemplate(value) { return value instanceof TemplateRef; } /** * @param {?=} event * @return {?} */ onClose(event) { this.dialogRef.close('cancel'); } /** * @param {?} tag * @return {?} */ onAction(tag) { this.dialogRef.close(tag); } /** * @param {?} event * @return {?} */ handleKeydown(event) { // tslint:disable-next-line: deprecation if (event.keyCode === ESCAPE_KEY) { this.dialogRef.close('cancel'); } } /** * @param {?} event * @return {?} */ onAnimationStart(event) { this.animationStateChanged.emit(event); } /** * @param {?} event * @return {?} */ onAnimationDone(event) { this.animationStateChanged.emit(event); } /** * @return {?} */ startExitAnimation() { this.animationState = 'leave'; } /** * @param {?} $event * @return {?} */ closeSheet($event) { this.dialogRef.close($event); } } SheetContainer.decorators = [ { type: Component, args: [{ selector: 'suka-sheet', template: ` <div class="sheet" [@slideContent]="animationState" (@slideContent.start)="onAnimationStart($event)" (@slideContent.done)="onAnimationDone($event)" cdkTrapFocus > <div class="sheet__header"> <h5> <ng-container *ngIf="!isTemplate(content.title)">{{content.title}}</ng-container> <ng-template *ngIf="isTemplate(content.title)" [ngTemplateOutlet]="content.title"></ng-template> </h5> <button sukaButton="plain" (click)="onClose($event)" > <suka-icon icon="x"></suka-icon> </button> </div> <div class="sheet__content"> <ng-container *ngIf="!isTemplate(content.body)">{{content.body}}</ng-container> <ng-container *ngIf="isTemplate(content.body)"> <ng-container *ngTemplateOutlet="content.body; context: {closeSheet: closeSheet.bind(this)}" ></ng-container> </ng-container> </div> <div class="sheet__footer" *ngIf="showFooter"> <button *ngFor="let secondaryAction of secondaryActions" sukaButton="plain" (click)="onAction(secondaryAction.tag)" > {{secondaryAction.label}} </button> <button *ngFor="let primaryAction of primaryActions" sukaButton="primary" (click)="onAction(primaryAction.tag)" > {{primaryAction.label}} </button> </div> </div> `, animations: [ trigger('slideContent', [ state('void', style({ transform: 'translate3d(20rem, 0, 0)', opacity: 0 })), state('enter', style({ transform: 'none', opacity: 1 })), state('leave', style({ transform: 'translate3d(20rem, 0, 0)', opacity: 0 })), transition('* => *', animate(SHEET_ANIMATION_TIMINGS)), ]) ] }] } ]; /** @nocollapse */ SheetContainer.ctorParameters = () => [ { type: SheetRef }, { type: undefined, decorators: [{ type: Inject, args: [SHEET_CONTENT_DATA,] }] } ]; SheetContainer.propDecorators = { baseClass: [{ type: HostBinding, args: ['class.sheet--default',] }], handleKeydown: [{ type: HostListener, args: ['document:keydown', ['$event'],] }] }; if (false) { /** @type {?} */ SheetContainer.prototype.animationState; /** @type {?} */ SheetContainer.prototype.animationStateChanged; /** @type {?} */ SheetContainer.prototype.showFooter; /** @type {?} */ SheetContainer.prototype.primaryActions; /** @type {?} */ SheetContainer.prototype.secondaryActions; /** @type {?} */ SheetContainer.prototype.baseClass; /** @type {?} */ SheetContainer.prototype.dialogRef; /** @type {?} */ SheetContainer.prototype.content; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrdXNoa2kvbmctc3VrYS8iLCJzb3VyY2VzIjpbImxpYi9zaGVldC9zaGVldC1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQWtCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7TUFFM0YsVUFBVSxHQUFHLEVBQUU7O01BQ2YsdUJBQXVCLEdBQUcsc0NBQXNDO0FBMkR0RSxNQUFNLE9BQU8sY0FBYzs7Ozs7SUFTekIsWUFDUyxTQUFtQixFQUNTLE9BQVk7UUFEeEMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNTLFlBQU8sR0FBUCxPQUFPLENBQUs7UUFWMUMsbUJBQWMsR0FBK0IsT0FBTyxDQUFDO1FBQ3JELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQ2xFLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFJa0IsY0FBUyxHQUFHLElBQUksQ0FBQztJQUtsRCxDQUFDOzs7O0lBRUUsUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU07Ozs7WUFBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTTs7OztZQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBQyxDQUFDO1NBQzlGO0lBQ0gsQ0FBQzs7Ozs7SUFFTSxVQUFVLENBQUMsS0FBSztRQUNyQixPQUFPLEtBQUssWUFBWSxXQUFXLENBQUM7SUFDdEMsQ0FBQzs7Ozs7SUFFTSxPQUFPLENBQUMsS0FBVztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7OztJQUVNLFFBQVEsQ0FBQyxHQUFXO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBRW9ELGFBQWEsQ0FBQyxLQUFvQjtRQUNyRix3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtZQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsS0FBcUI7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs7OztJQUVELGVBQWUsQ0FBQyxLQUFxQjtRQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Ozs7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7SUFDaEMsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsTUFBVztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDOzs7WUFoSEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDtnQkFDRCxVQUFVLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTt3QkFDdEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzNFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDeEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzVFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7cUJBQ3ZELENBQUM7aUJBQ0g7YUFDRjs7OztZQS9EUSxRQUFROzRDQTJFWixNQUFNLFNBQUMsa0JBQWtCOzs7d0JBSjNCLFdBQVcsU0FBQyxzQkFBc0I7NEJBMkJsQyxZQUFZLFNBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Ozs7SUFqQzVDLHdDQUE0RDs7SUFDNUQsK0NBQWtFOztJQUNsRSxvQ0FBbUI7O0lBQ25CLHdDQUFtQjs7SUFDbkIsMENBQXFCOztJQUVyQixtQ0FBc0Q7O0lBR3BELG1DQUEwQjs7SUFDMUIsaUNBQStDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIFRlbXBsYXRlUmVmLCBIb3N0TGlzdGVuZXIsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTaGVldFJlZiB9IGZyb20gJy4vc2hlZXQtcmVmJztcbmltcG9ydCB7IFNIRUVUX0NPTlRFTlRfREFUQSB9IGZyb20gJy4vc2hlZXQudG9rZW5zJztcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50LCB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuY29uc3QgRVNDQVBFX0tFWSA9IDI3O1xuY29uc3QgU0hFRVRfQU5JTUFUSU9OX1RJTUlOR1MgPSAnMjAwbXMgY3ViaWMtYmV6aWVyKDAuNjQsIDAsIDAuMzUsIDEpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3VrYS1zaGVldCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInNoZWV0XCJcbiAgICAgIFtAc2xpZGVDb250ZW50XT1cImFuaW1hdGlvblN0YXRlXCJcbiAgICAgIChAc2xpZGVDb250ZW50LnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAoQHNsaWRlQ29udGVudC5kb25lKT1cIm9uQW5pbWF0aW9uRG9uZSgkZXZlbnQpXCJcbiAgICAgIGNka1RyYXBGb2N1c1xuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaGVldF9faGVhZGVyXCI+XG4gICAgICAgIDxoNT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoY29udGVudC50aXRsZSlcIj57e2NvbnRlbnQudGl0bGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoY29udGVudC50aXRsZSlcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50LnRpdGxlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9oNT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHN1a2FCdXR0b249XCJwbGFpblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3VrYS1pY29uIGljb249XCJ4XCI+PC9zdWthLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2hlZXRfX2NvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGNvbnRlbnQuYm9keSlcIj57e2NvbnRlbnQuYm9keX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RlbXBsYXRlKGNvbnRlbnQuYm9keSlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnQuYm9keTsgY29udGV4dDoge2Nsb3NlU2hlZXQ6IGNsb3NlU2hlZXQuYmluZCh0aGlzKX1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaGVldF9fZm9vdGVyXCIgKm5nSWY9XCJzaG93Rm9vdGVyXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2Vjb25kYXJ5QWN0aW9uIG9mIHNlY29uZGFyeUFjdGlvbnNcIlxuICAgICAgICAgIHN1a2FCdXR0b249XCJwbGFpblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKHNlY29uZGFyeUFjdGlvbi50YWcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7c2Vjb25kYXJ5QWN0aW9uLmxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwcmltYXJ5QWN0aW9uIG9mIHByaW1hcnlBY3Rpb25zXCJcbiAgICAgICAgICBzdWthQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKHByaW1hcnlBY3Rpb24udGFnKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7e3ByaW1hcnlBY3Rpb24ubGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignc2xpZGVDb250ZW50JywgW1xuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDIwcmVtLCAwLCAwKScsIG9wYWNpdHk6IDAgfSkpLFxuICAgICAgc3RhdGUoJ2VudGVyJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdub25lJywgb3BhY2l0eTogMSB9KSksXG4gICAgICBzdGF0ZSgnbGVhdmUnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDIwcmVtLCAwLCAwKScsIG9wYWNpdHk6IDAgfSkpLFxuICAgICAgdHJhbnNpdGlvbignKiA9PiAqJywgYW5pbWF0ZShTSEVFVF9BTklNQVRJT05fVElNSU5HUykpLFxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hlZXRDb250YWluZXIgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgYW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgfCAnbGVhdmUnID0gJ2VudGVyJztcbiAgcHVibGljIGFuaW1hdGlvblN0YXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XG4gIHNob3dGb290ZXIgPSBmYWxzZTtcbiAgcHJpbWFyeUFjdGlvbnM6IFtdO1xuICBzZWNvbmRhcnlBY3Rpb25zOiBbXTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNoZWV0LS1kZWZhdWx0JykgYmFzZUNsYXNzID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBTaGVldFJlZixcbiAgICBASW5qZWN0KFNIRUVUX0NPTlRFTlRfREFUQSkgcHVibGljIGNvbnRlbnQ6IGFueVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb250ZW50LmFjdGlvbnMgJiYgdGhpcy5jb250ZW50LmFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zaG93Rm9vdGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucHJpbWFyeUFjdGlvbnMgPSB0aGlzLmNvbnRlbnQuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnR5cGUgPT09ICdwcmltYXJ5Jyk7XG4gICAgICB0aGlzLnNlY29uZGFyeUFjdGlvbnMgPSB0aGlzLmNvbnRlbnQuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnR5cGUgPT09ICdzZWNvbmRhcnknKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNUZW1wbGF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2UoZXZlbnQ/OiBhbnkpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgnY2FuY2VsJyk7XG4gIH1cblxuICBwdWJsaWMgb25BY3Rpb24odGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0YWcpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pIHB1YmxpYyBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBkZXByZWNhdGlvblxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBFU0NBUEVfS0VZKSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgnY2FuY2VsJyk7XG4gICAgfVxuICB9XG5cbiAgb25BbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uQW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHN0YXJ0RXhpdEFuaW1hdGlvbigpIHtcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlID0gJ2xlYXZlJztcbiAgfVxuXG4gIGNsb3NlU2hlZXQoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgkZXZlbnQpO1xuICB9XG59XG4iXX0=