@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
JavaScript
/**
* @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"
[]="animationState"
(.start)="onAnimationStart($event)"
(.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=