@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
256 lines • 22.6 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { transition, trigger, useAnimation } from '@angular/animations';
import { CommonModule } from '@angular/common';
import { Component, EventEmitter, HostBinding, Input, NgModule, NgZone, Output } from '@angular/core';
import { fadeIn, fadeOut, slideInBottom, slideOutBottom } from '../animations/main';
let NEXT_ID = 0;
/**
* **Ignite UI for Angular Snackbar** -
* [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/snackbar.html)
*
* The Ignite UI Snack Bar provides feedback about an operation with a single-line message, which can
* include a link to an action such as Undo.
*
* Example:
* ```html
* <button (click)="snackbar.show()">Send message</button>
* <div>
* <igx-snackbar #snackbar message="Message sent">
* </igx-snackbar>
* </div>
* ```
*/
let IgxSnackbarComponent = class IgxSnackbarComponent {
constructor(zone) {
this.zone = zone;
/**
* Sets/gets the `id` of the snackbar.
* If not set, the `id` of the first snackbar component will be `"igx-snackbar-0"`;
* ```html
* <igx-snackbar id = "Snackbar1"></igx-snackbar>
* ```
* ```typescript
* let snackbarId = this.snackbar.id;
* ```
* @memberof IgxSnackbarComponent
*/
this.id = `igx-snackbar-${NEXT_ID++}`;
/**
* Enables/Disables the visibility of the snackbar.
* If not set, the `isVisible` attribute will have value `false`.
* ```html
* <igx-snackbar [isVisible] = "true"></igx-snackbar>
* ```
* ```typescript
* let isVisible = this.snackbar.isVisible;
* ```
*/
this.isVisible = false;
/**
* Sets/gets if the snackbar will be automatically hidden after the `displayTime` is over.
* Default value is `true`.
* ```html
* <igx-snackbar [autoHide] = "false"></igx-snackbar>
* ```
* ```typescript
* let autoHide = this.snackbar.autoHide;
* ```
*/
this.autoHide = true;
/**
* Sets/gets the duration of time(in milliseconds) in which the snackbar will be visible after it is being shown.
* Default value is 4000.
* ```html
* <igx-snackbar [displayTime] = "2000"></igx-snackbar>
* ```
* ```typescript
* let displayTime = this.snackbar.displayTime;
* ```
*/
this.displayTime = 4000;
/**
* An event that will be emitted when the action is executed.
* Provides reference to the `IgxSnackbarComponent` as an argument.
* ```html
* <igx-snackbar (onAction) = "onAction($event)"></igx-snackbar>
* ```
*/
this.onAction = new EventEmitter();
/**
* An event that will be emitted when the snackbar animation starts.
* Provides reference to the `AnimationEvent` interface as an argument.
* ```html
* <igx-snackbar (animationStarted) = "animationStarted($event)"></igx-snackbar>
* ```
*/
this.animationStarted = new EventEmitter();
/**
* An event that will be emitted when the snackbar animation ends.
* Provides reference to the `AnimationEvent` interface as an argument.
* ```html
* <igx-snackbar (animationDone) = "animationDone($event)"></igx-snackbar>
* ```
*/
this.animationDone = new EventEmitter();
}
/**
* Shows the snackbar and hides it after the `displayTime` is over if `autoHide` is set to `true`.
* ```typescript
* this.snackbar.show();
* ```
*/
show() {
clearTimeout(this.timeoutId);
setTimeout(this.timeoutId);
this.isVisible = true;
if (this.autoHide) {
this.timeoutId = setTimeout(() => {
this.hide();
}, this.displayTime);
}
}
/**
* Hides the snackbar.
* ```typescript
* this.snackbar.hide();
* ```
*/
hide() {
this.isVisible = false;
clearTimeout(this.timeoutId);
}
/**
*@hidden
*/
triggerAction() {
this.onAction.emit(this);
}
/**
*@hidden
* @memberof IgxSnackbarComponent
*/
snackbarAnimationStarted(evt) {
if (evt.fromState === 'void') {
this.animationStarted.emit(evt);
}
}
/**
*@hidden
* @memberof IgxSnackbarComponent
*/
snackbarAnimationDone(evt) {
if (evt.fromState === 'show') {
this.animationDone.emit(evt);
}
}
};
IgxSnackbarComponent.ctorParameters = () => [
{ type: NgZone }
];
__decorate([
HostBinding('attr.id'),
Input(),
__metadata("design:type", Object)
], IgxSnackbarComponent.prototype, "id", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxSnackbarComponent.prototype, "message", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxSnackbarComponent.prototype, "isVisible", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxSnackbarComponent.prototype, "autoHide", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxSnackbarComponent.prototype, "displayTime", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxSnackbarComponent.prototype, "actionText", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxSnackbarComponent.prototype, "onAction", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxSnackbarComponent.prototype, "animationStarted", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxSnackbarComponent.prototype, "animationDone", void 0);
IgxSnackbarComponent = __decorate([
Component({
animations: [
trigger('slideInOut', [
transition('void => *', [
useAnimation(slideInBottom, {
params: {
duration: '.35s',
easing: 'cubic-bezier(0.0, 0.0, 0.2, 1)',
fromPosition: 'translateY(100%)',
toPosition: 'translateY(0)'
}
})
]),
transition('* => void', [
useAnimation(slideOutBottom, {
params: {
duration: '.2s',
easing: 'cubic-bezier(0.4, 0.0, 1, 1)',
fromPosition: 'translateY(0)',
toOpacity: 1,
toPosition: 'translateY(100%)'
}
})
])
]),
trigger('fadeInOut', [
transition('void => *', [
useAnimation(fadeIn, {
params: {
duration: '.35s',
easing: 'ease-out'
}
})
]),
transition('* => void', [
useAnimation(fadeOut, {
params: {
duration: '.2s',
easing: 'ease-out'
}
})
])
])
],
selector: 'igx-snackbar',
template: "<div class=\"igx-snackbar\" *ngIf=\"isVisible\" (@slideInOut.start)=\"snackbarAnimationStarted($event)\" (@slideInOut.done)=\"snackbarAnimationDone($event)\"\n [@slideInOut]=\"isVisible\">\n <div class=\"igx-snackbar__message\" [@fadeInOut]=\"isVisible\">\n {{ message }}\n <ng-content></ng-content>\n </div>\n <button class=\"igx-snackbar__button\" igxRipple=\"white\" *ngIf=\"actionText\" [@fadeInOut] (click)=\"triggerAction()\">\n {{ actionText }}\n </button>\n</div>\n",
styles: [`
:host {
display: block;
}
`]
}),
__metadata("design:paramtypes", [NgZone])
], IgxSnackbarComponent);
export { IgxSnackbarComponent };
/**
* @hidden
*/
let IgxSnackbarModule = class IgxSnackbarModule {
};
IgxSnackbarModule = __decorate([
NgModule({
declarations: [IgxSnackbarComponent],
exports: [IgxSnackbarComponent],
imports: [CommonModule]
})
], IgxSnackbarModule);
export { IgxSnackbarModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9zbmFja2Jhci9zbmFja2Jhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFlBQVksRUFDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDaEI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBcURILElBQWEsb0JBQW9CLEdBQWpDLE1BQWEsb0JBQW9CO0lBc0c3QixZQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQXBHaEM7Ozs7Ozs7Ozs7V0FVRztRQUdJLE9BQUUsR0FBRyxnQkFBZ0IsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQVl4Qzs7Ozs7Ozs7O1dBU0c7UUFDYSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxDOzs7Ozs7Ozs7V0FTRztRQUNhLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEM7Ozs7Ozs7OztXQVNHO1FBQ2EsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFVbkM7Ozs7OztXQU1HO1FBQ2MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRXJFOzs7Ozs7V0FNRztRQUNjLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRXZFOzs7Ozs7V0FNRztRQUNjLGtCQUFhLEdB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QyxXQUFXLEVBQUU7b0JBQ3BCLFlBQVksQ0FBQyxPQUFPLEVBQUU7d0JBQ2xCLE1BQU0sRUFBRTs0QkFDSixRQUFRLEVBQUUsS0FBSzs0QkFDZixNQUFNLEVBQUUsVUFBVTt5QkFDckI7cUJBQ0osQ0FBQztpQkFDTCxDQUFDO2FBQ0wsQ0FBQztTQUNMO1FBQ0QsUUFBUSxFQUFFLGNBQWM7UUFDeEIseWdCQUFzQztpQkFDN0I7Ozs7S0FJUjtLQUNKLENBQUM7cUNBdUc0QixNQUFNO0dBdEd2QixvQkFBb0IsQ0E0SmhDO1NBNUpZLG9CQUFvQjtBQThKakM7O0dBRUc7QUFNSCxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtDQUFJLENBQUE7QUFBckIsaUJBQWlCO0lBTDdCLFFBQVEsQ0FBQztRQUNOLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQ3BDLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQy9CLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztLQUMxQixDQUFDO0dBQ1csaUJBQWlCLENBQUk7U0FBckIsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBbmltYXRpb25FdmVudCxcbiAgICB0cmFuc2l0aW9uLFxuICAgIHRyaWdnZXIsXG4gICAgdXNlQW5pbWF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmFkZUluLCBmYWRlT3V0LCBzbGlkZUluQm90dG9tLCBzbGlkZU91dEJvdHRvbSB9IGZyb20gJy4uL2FuaW1hdGlvbnMvbWFpbic7XG5cbmxldCBORVhUX0lEID0gMDtcbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgU25hY2tiYXIqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvc25hY2tiYXIuaHRtbClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIFNuYWNrIEJhciBwcm92aWRlcyBmZWVkYmFjayBhYm91dCBhbiBvcGVyYXRpb24gd2l0aCBhIHNpbmdsZS1saW5lIG1lc3NhZ2UsIHdoaWNoIGNhblxuICogaW5jbHVkZSBhIGxpbmsgdG8gYW4gYWN0aW9uIHN1Y2ggYXMgVW5kby5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiAoY2xpY2spPVwic25hY2tiYXIuc2hvdygpXCI+U2VuZCBtZXNzYWdlPC9idXR0b24+XG4gKiA8ZGl2PlxuICogICA8aWd4LXNuYWNrYmFyICNzbmFja2JhciBtZXNzYWdlPVwiTWVzc2FnZSBzZW50XCI+XG4gKiAgIDwvaWd4LXNuYWNrYmFyPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdzbGlkZUluT3V0JywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICAgICAgICAgIHVzZUFuaW1hdGlvbihzbGlkZUluQm90dG9tLCB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ICcuMzVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogJ2N1YmljLWJlemllcigwLjAsIDAuMCwgMC4yLCAxKScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tUG9zaXRpb246ICd0cmFuc2xhdGVZKDEwMCUpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvUG9zaXRpb246ICd0cmFuc2xhdGVZKDApJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgW1xuICAgICAgICAgICAgICAgIHVzZUFuaW1hdGlvbihzbGlkZU91dEJvdHRvbSwge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAnLjJzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogJ2N1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiAndHJhbnNsYXRlWSgwKScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b09wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b1Bvc2l0aW9uOiAndHJhbnNsYXRlWSgxMDAlKSdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignZmFkZUluT3V0JywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICAgICAgICAgIHVzZUFuaW1hdGlvbihmYWRlSW4sIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogJy4zNXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiAnZWFzZS1vdXQnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgdXNlQW5pbWF0aW9uKGZhZGVPdXQsIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogJy4ycycsXG4gICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICdlYXNlLW91dCdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgc2VsZWN0b3I6ICdpZ3gtc25hY2tiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnc25hY2tiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICBgXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTbmFja2JhckNvbXBvbmVudCB7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBpZGAgb2YgdGhlIHNuYWNrYmFyLlxuICAgICAqIElmIG5vdCBzZXQsIHRoZSBgaWRgIG9mIHRoZSBmaXJzdCBzbmFja2JhciBjb21wb25lbnQgIHdpbGwgYmUgYFwiaWd4LXNuYWNrYmFyLTBcImA7XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc25hY2tiYXIgaWQgPSBcIlNuYWNrYmFyMVwiPjwvaWd4LXNuYWNrYmFyPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgc25hY2tiYXJJZCA9IHRoaXMuc25hY2tiYXIuaWQ7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneFNuYWNrYmFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtc25hY2tiYXItJHtORVhUX0lEKyt9YDtcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBtZXNzYWdlYCBhdHRyaWJ1dGUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc25hY2tiYXIgW21lc3NhZ2VdID0gXCInU25hY2tiYXIgQ29tcG9uZW50J1wiPjwvaWd4LXNuYWNrYmFyPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgbWVzc2FnZSA9ICB0aGlzLnNuYWNrYmFyLm1lc3NhZ2U7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvRGlzYWJsZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHNuYWNrYmFyLlxuICAgICAqIElmIG5vdCBzZXQsIHRoZSBgaXNWaXNpYmxlYCBhdHRyaWJ1dGUgd2lsbCBoYXZlIHZhbHVlIGBmYWxzZWAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc25hY2tiYXIgW2lzVmlzaWJsZV0gPSBcInRydWVcIj48L2lneC1zbmFja2Jhcj5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzVmlzaWJsZSA9ICB0aGlzLnNuYWNrYmFyLmlzVmlzaWJsZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgaWYgdGhlIHNuYWNrYmFyIHdpbGwgYmUgYXV0b21hdGljYWxseSBoaWRkZW4gYWZ0ZXIgdGhlIGBkaXNwbGF5VGltZWAgaXMgb3Zlci5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGB0cnVlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zbmFja2JhciBbYXV0b0hpZGVdID0gXCJmYWxzZVwiPjwvaWd4LXNuYWNrYmFyPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXV0b0hpZGUgPSAgdGhpcy5zbmFja2Jhci5hdXRvSGlkZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b0hpZGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBkdXJhdGlvbiBvZiB0aW1lKGluIG1pbGxpc2Vjb25kcykgaW4gd2hpY2ggdGhlIHNuYWNrYmFyIHdpbGwgYmUgdmlzaWJsZSBhZnRlciBpdCBpcyBiZWluZyBzaG93bi5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIDQwMDAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc25hY2tiYXIgW2Rpc3BsYXlUaW1lXSA9IFwiMjAwMFwiPjwvaWd4LXNuYWNrYmFyPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgZGlzcGxheVRpbWUgPSB0aGlzLnNuYWNrYmFyLmRpc3BsYXlUaW1lO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5VGltZSA9IDQwMDA7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBhY3Rpb25UZXh0YCBhdHRyaWJ1dGUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc25hY2tiYXIgW2FjdGlvblRleHRdID0gXCInQWN0aW9uIFRleHQnXCI+PC9pZ3gtc25hY2tiYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGFjdGlvblRleHQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IHdpbGwgYmUgZW1pdHRlZCB3aGVuIHRoZSBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAgICogUHJvdmlkZXMgcmVmZXJlbmNlIHRvIHRoZSBgSWd4U25hY2tiYXJDb21wb25lbnRgIGFzIGFuIGFyZ3VtZW50LlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNuYWNrYmFyIChvbkFjdGlvbikgPSBcIm9uQWN0aW9uKCRldmVudClcIj48L2lneC1zbmFja2Jhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxJZ3hTbmFja2JhckNvbXBvbmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgd2lsbCBiZSBlbWl0dGVkIHdoZW4gdGhlIHNuYWNrYmFyIGFuaW1hdGlvbiBzdGFydHMuXG4gICAgICogUHJvdmlkZXMgcmVmZXJlbmNlIHRvIHRoZSBgQW5pbWF0aW9uRXZlbnRgIGludGVyZmFjZSBhcyBhbiBhcmd1bWVudC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zbmFja2JhciAoYW5pbWF0aW9uU3RhcnRlZCkgPSBcImFuaW1hdGlvblN0YXJ0ZWQoJGV2ZW50KVwiPjwvaWd4LXNuYWNrYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgYW5pbWF0aW9uU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IHdpbGwgYmUgZW1pdHRlZCB3aGVuIHRoZSBzbmFja2JhciBhbmltYXRpb24gZW5kcy5cbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdG8gdGhlIGBBbmltYXRpb25FdmVudGAgaW50ZXJmYWNlIGFzIGFuIGFyZ3VtZW50LlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNuYWNrYmFyIChhbmltYXRpb25Eb25lKSA9IFwiYW5pbWF0aW9uRG9uZSgkZXZlbnQpXCI+PC9pZ3gtc25hY2tiYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBhbmltYXRpb25Eb25lID0gbmV3IEV2ZW50RW1pdHRlcjxBbmltYXRpb25FdmVudD4oKTtcbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIHRpbWVvdXRJZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lKSB7IH1cblxuICAgIC8qKlxuICAgICAqIFNob3dzIHRoZSBzbmFja2JhciBhbmQgaGlkZXMgaXQgYWZ0ZXIgdGhlIGBkaXNwbGF5VGltZWAgaXMgb3ZlciBpZiBgYXV0b0hpZGVgIGlzIHNldCB0byBgdHJ1ZWAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuc25hY2tiYXIuc2hvdygpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SWQpO1xuICAgICAgICBzZXRUaW1lb3V0KHRoaXMudGltZW91dElkKTtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9IaWRlKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfSwgdGhpcy5kaXNwbGF5VGltZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlcyB0aGUgc25hY2tiYXIuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuc25hY2tiYXIuaGlkZSgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgdHJpZ2dlckFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkFjdGlvbi5lbWl0KHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKiBAbWVtYmVyb2YgSWd4U25hY2tiYXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc25hY2tiYXJBbmltYXRpb25TdGFydGVkKGV2dDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2dC5mcm9tU3RhdGUgPT09ICd2b2lkJykge1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25TdGFydGVkLmVtaXQoZXZ0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKiBAbWVtYmVyb2YgSWd4U25hY2tiYXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc25hY2tiYXJBbmltYXRpb25Eb25lKGV2dDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2dC5mcm9tU3RhdGUgPT09ICdzaG93Jykge1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLmVtaXQoZXZ0KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbSWd4U25hY2tiYXJDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtJZ3hTbmFja2JhckNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4U25hY2tiYXJNb2R1bGUgeyB9XG4iXX0=