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>

191 lines 14.8 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 { ModalRef } from './modal-ref'; import { MODAL_CONTENT_DATA } from './modal.tokens'; import { trigger, state, style, transition, animate } from '@angular/animations'; /** @type {?} */ const ESCAPE_KEY = 27; /** @type {?} */ const MODAL_ANIMATION_TIMINGS = '200ms cubic-bezier(0.64, 0, 0.35, 1)'; export class ModalContainer { /** * @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 {?} */ closeModal($event) { this.dialogRef.close($event); } } ModalContainer.decorators = [ { type: Component, args: [{ selector: 'suka-modal', template: ` <div class="modal" [@slideContent]="animationState" (@slideContent.start)="onAnimationStart($event)" (@slideContent.done)="onAnimationDone($event)" cdkTrapFocus > <div class="modal__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 *ngIf="content.closeButton" sukaButton="plain" (click)="onClose($event)" > <suka-icon icon="x"></suka-icon> </button> </div> <div class="modal__content"> <ng-container *ngIf="!isTemplate(content.body)">{{content.body}}</ng-container> <ng-container *ngIf="isTemplate(content.body)"> <ng-container *ngTemplateOutlet="content.body; context: {closeModal: closeModal.bind(this)}" ></ng-container> </ng-container> </div> <div class="modal__footer" *ngIf="showFooter"> <suka-button-group> <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> </suka-button-group> </div> </div> `, animations: [ trigger('slideContent', [ state('void', style({ transform: 'translate3d(0, 20rem, 0)', opacity: 0 })), state('enter', style({ transform: 'none', opacity: 1 })), state('leave', style({ transform: 'translate3d(0, 20rem, 0)', opacity: 0 })), transition('* => *', animate(MODAL_ANIMATION_TIMINGS)), ]) ] }] } ]; /** @nocollapse */ ModalContainer.ctorParameters = () => [ { type: ModalRef }, { type: undefined, decorators: [{ type: Inject, args: [MODAL_CONTENT_DATA,] }] } ]; ModalContainer.propDecorators = { baseClass: [{ type: HostBinding, args: ['class.modal--default',] }], handleKeydown: [{ type: HostListener, args: ['document:keydown', ['$event'],] }] }; if (false) { /** @type {?} */ ModalContainer.prototype.animationState; /** @type {?} */ ModalContainer.prototype.animationStateChanged; /** @type {?} */ ModalContainer.prototype.showFooter; /** @type {?} */ ModalContainer.prototype.primaryActions; /** @type {?} */ ModalContainer.prototype.secondaryActions; /** @type {?} */ ModalContainer.prototype.baseClass; /** @type {?} */ ModalContainer.prototype.dialogRef; /** @type {?} */ ModalContainer.prototype.content; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrdXNoa2kvbmctc3VrYS8iLCJzb3VyY2VzIjpbImxpYi9tb2RhbC9tb2RhbC1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQWtCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7TUFFM0YsVUFBVSxHQUFHLEVBQUU7O01BQ2YsdUJBQXVCLEdBQUcsc0NBQXNDO0FBNkR0RSxNQUFNLE9BQU8sY0FBYzs7Ozs7SUFTekIsWUFDUyxTQUFtQixFQUNTLE9BQVk7UUFEeEMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNTLFlBQU8sR0FBUCxPQUFPLENBQUs7UUFWMUMsbUJBQWMsR0FBK0IsT0FBTyxDQUFDO1FBQ3JELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQ2xFLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFJa0IsY0FBUyxHQUFHLElBQUksQ0FBQztJQUtsRCxDQUFDOzs7O0lBRUUsUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU07Ozs7WUFBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTTs7OztZQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBQyxDQUFDO1NBQzlGO0lBQ0gsQ0FBQzs7Ozs7SUFFTSxVQUFVLENBQUMsS0FBSztRQUNyQixPQUFPLEtBQUssWUFBWSxXQUFXLENBQUM7SUFDdEMsQ0FBQzs7Ozs7SUFFTSxPQUFPLENBQUMsS0FBVztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7OztJQUVNLFFBQVEsQ0FBQyxHQUFXO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBRW9ELGFBQWEsQ0FBQyxLQUFvQjtRQUNyRix3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtZQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsS0FBcUI7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs7OztJQUVELGVBQWUsQ0FBQyxLQUFxQjtRQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Ozs7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7SUFDaEMsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsTUFBVztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDOzs7WUFsSEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NUO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsY0FBYyxFQUFFO3dCQUN0QixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDM0UsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN4RCxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDNUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztxQkFDdkQsQ0FBQztpQkFDSDthQUNGOzs7O1lBakVRLFFBQVE7NENBNkVaLE1BQU0sU0FBQyxrQkFBa0I7Ozt3QkFKM0IsV0FBVyxTQUFDLHNCQUFzQjs0QkEyQmxDLFlBQVksU0FBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7OztJQWpDNUMsd0NBQTREOztJQUM1RCwrQ0FBa0U7O0lBQ2xFLG9DQUFtQjs7SUFDbkIsd0NBQW1COztJQUNuQiwwQ0FBcUI7O0lBRXJCLG1DQUFzRDs7SUFHcEQsbUNBQTBCOztJQUMxQixpQ0FBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgVGVtcGxhdGVSZWYsIEhvc3RMaXN0ZW5lciwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1vZGFsUmVmIH0gZnJvbSAnLi9tb2RhbC1yZWYnO1xuaW1wb3J0IHsgTU9EQUxfQ09OVEVOVF9EQVRBIH0gZnJvbSAnLi9tb2RhbC50b2tlbnMnO1xuaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQsIHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5jb25zdCBFU0NBUEVfS0VZID0gMjc7XG5jb25zdCBNT0RBTF9BTklNQVRJT05fVElNSU5HUyA9ICcyMDBtcyBjdWJpYy1iZXppZXIoMC42NCwgMCwgMC4zNSwgMSknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdWthLW1vZGFsJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIlxuICAgICAgW0BzbGlkZUNvbnRlbnRdPVwiYW5pbWF0aW9uU3RhdGVcIlxuICAgICAgKEBzbGlkZUNvbnRlbnQuc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCJcbiAgICAgIChAc2xpZGVDb250ZW50LmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgICAgY2RrVHJhcEZvY3VzXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsX19oZWFkZXJcIj5cbiAgICAgICAgPGg1PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShjb250ZW50LnRpdGxlKVwiPnt7Y29udGVudC50aXRsZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShjb250ZW50LnRpdGxlKVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnQudGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2g1PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb250ZW50LmNsb3NlQnV0dG9uXCJcbiAgICAgICAgICBzdWthQnV0dG9uPVwicGxhaW5cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN1a2EtaWNvbiBpY29uPVwieFwiPjwvc3VrYS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsX19jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShjb250ZW50LmJvZHkpXCI+e3tjb250ZW50LmJvZHl9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZW1wbGF0ZShjb250ZW50LmJvZHkpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50LmJvZHk7IGNvbnRleHQ6IHtjbG9zZU1vZGFsOiBjbG9zZU1vZGFsLmJpbmQodGhpcyl9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWxfX2Zvb3RlclwiICpuZ0lmPVwic2hvd0Zvb3RlclwiPlxuICAgICAgICA8c3VrYS1idXR0b24tZ3JvdXA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY29uZGFyeUFjdGlvbiBvZiBzZWNvbmRhcnlBY3Rpb25zXCJcbiAgICAgICAgICAgIHN1a2FCdXR0b249XCJwbGFpblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oc2Vjb25kYXJ5QWN0aW9uLnRhZylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7c2Vjb25kYXJ5QWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJpbWFyeUFjdGlvbiBvZiBwcmltYXJ5QWN0aW9uc1wiXG4gICAgICAgICAgICBzdWthQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24ocHJpbWFyeUFjdGlvbi50YWcpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e3ByaW1hcnlBY3Rpb24ubGFiZWx9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3N1a2EtYnV0dG9uLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZUNvbnRlbnQnLCBbXG4gICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMjByZW0sIDApJywgb3BhY2l0eTogMCB9KSksXG4gICAgICBzdGF0ZSgnZW50ZXInLCBzdHlsZSh7IHRyYW5zZm9ybTogJ25vbmUnLCBvcGFjaXR5OiAxIH0pKSxcbiAgICAgIHN0YXRlKCdsZWF2ZScsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMjByZW0sIDApJywgb3BhY2l0eTogMCB9KSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKE1PREFMX0FOSU1BVElPTl9USU1JTkdTKSksXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbnRhaW5lciBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBhbmltYXRpb25TdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyB8ICdsZWF2ZScgPSAnZW50ZXInO1xuICBwdWJsaWMgYW5pbWF0aW9uU3RhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxBbmltYXRpb25FdmVudD4oKTtcbiAgc2hvd0Zvb3RlciA9IGZhbHNlO1xuICBwcmltYXJ5QWN0aW9uczogW107XG4gIHNlY29uZGFyeUFjdGlvbnM6IFtdO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubW9kYWwtLWRlZmF1bHQnKSBiYXNlQ2xhc3MgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1vZGFsUmVmLFxuICAgIEBJbmplY3QoTU9EQUxfQ09OVEVOVF9EQVRBKSBwdWJsaWMgY29udGVudDogYW55XG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQuYWN0aW9ucyAmJiB0aGlzLmNvbnRlbnQuYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNob3dGb290ZXIgPSB0cnVlO1xuICAgICAgdGhpcy5wcmltYXJ5QWN0aW9ucyA9IHRoaXMuY29udGVudC5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24udHlwZSA9PT0gJ3ByaW1hcnknKTtcbiAgICAgIHRoaXMuc2Vjb25kYXJ5QWN0aW9ucyA9IHRoaXMuY29udGVudC5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24udHlwZSA9PT0gJ3NlY29uZGFyeScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZShldmVudD86IGFueSkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCdjYW5jZWwnKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFjdGlvbih0YWc6IHN0cmluZykge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRhZyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSkgcHVibGljIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRlcHJlY2F0aW9uXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRV9LRVkpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCdjYW5jZWwnKTtcbiAgICB9XG4gIH1cblxuICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIHRoaXMuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25BbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIHRoaXMuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgc3RhcnRFeGl0QW5pbWF0aW9uKCkge1xuICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUgPSAnbGVhdmUnO1xuICB9XG5cbiAgY2xvc2VNb2RhbCgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCRldmVudCk7XG4gIH1cbn1cbiJdfQ==