UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

257 lines 23.5 kB
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'; var 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> * ``` */ var IgxSnackbarComponent = /** @class */ (function () { function IgxSnackbarComponent(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(); * ``` */ IgxSnackbarComponent.prototype.show = function () { var _this = this; clearTimeout(this.timeoutId); setTimeout(this.timeoutId); this.isVisible = true; if (this.autoHide) { this.timeoutId = setTimeout(function () { _this.hide(); }, this.displayTime); } }; /** * Hides the snackbar. * ```typescript * this.snackbar.hide(); * ``` */ IgxSnackbarComponent.prototype.hide = function () { this.isVisible = false; clearTimeout(this.timeoutId); }; /** *@hidden */ IgxSnackbarComponent.prototype.triggerAction = function () { this.onAction.emit(this); }; /** *@hidden * @memberof IgxSnackbarComponent */ IgxSnackbarComponent.prototype.snackbarAnimationStarted = function (evt) { if (evt.fromState === 'void') { this.animationStarted.emit(evt); } }; /** *@hidden * @memberof IgxSnackbarComponent */ IgxSnackbarComponent.prototype.snackbarAnimationDone = function (evt) { if (evt.fromState === 'show') { this.animationDone.emit(evt); } }; IgxSnackbarComponent.ctorParameters = function () { return [ { 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: ["\n :host {\n display: block;\n }\n "] }), __metadata("design:paramtypes", [NgZone]) ], IgxSnackbarComponent); return IgxSnackbarComponent; }()); export { IgxSnackbarComponent }; /** * @hidden */ var IgxSnackbarModule = /** @class */ (function () { function IgxSnackbarModule() { } IgxSnackbarModule = __decorate([ NgModule({ declarations: [IgxSnackbarComponent], exports: [IgxSnackbarComponent], imports: [CommonModule] }) ], IgxSnackbarModule); return IgxSnackbarModule; }()); export { IgxSnackbarModule }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9zbmFja2Jhci9zbmFja2Jhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFlBQVksRUFDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDaEI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBcURIO0lBc0dJLDhCQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQXBHaEM7Ozs7Ozs7Ozs7V0FVRztRQUdJLE9BQUUsR0FBRyxrQkFBZ0IsT0FBTyxFQUFJLENBQUM7UUFZeEM7Ozs7Ozs7OztXQVNHO1FBQ2EsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQzs7Ozs7Ozs7O1dBU0c7UUFDYSxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRWhDOzs7Ozs7Ozs7V0FTRztRQUNhLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBVW5DOzs7Ozs7V0FNRztRQUNjLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUVyRTs7Ozs7O1dBTUc7UUFDYyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUV2RTs7Ozs7O1dBTUc7UUFDYyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBTWhDLENBQUM7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QUFFO3dCQUNwQixZQUFZLENBQUMsT0FBTyxFQUFFOzRCQUNsQixNQUFNLEVBQUU7Z0NBQ0osUUFBUSxFQUFFLEtBQUs7Z0NBQ2YsTUFBTSxFQUFFLFVBQVU7NkJBQ3JCO3lCQUNKLENBQUM7cUJBQ0wsQ0FBQztpQkFDTCxDQUFDO2FBQ0w7WUFDRCxRQUFRLEVBQUUsY0FBYztZQUN4Qix5Z0JBQXNDO3FCQUM3QixpRUFJUjtTQUNKLENBQUM7eUNBdUc0QixNQUFNO09BdEd2QixvQkFBb0IsQ0E0SmhDO0lBQUQsMkJBQUM7Q0FBQSxBQTVKRCxJQTRKQztTQTVKWSxvQkFBb0I7QUE4SmpDOztHQUVHO0FBTUg7SUFBQTtJQUFpQyxDQUFDO0lBQXJCLGlCQUFpQjtRQUw3QixRQUFRLENBQUM7WUFDTixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUNwQyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUMvQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDMUIsQ0FBQztPQUNXLGlCQUFpQixDQUFJO0lBQUQsd0JBQUM7Q0FBQSxBQUFsQyxJQUFrQztTQUFyQixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFuaW1hdGlvbkV2ZW50LFxuICAgIHRyYW5zaXRpb24sXG4gICAgdHJpZ2dlcixcbiAgICB1c2VBbmltYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE5nWm9uZSxcbiAgICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmYWRlSW4sIGZhZGVPdXQsIHNsaWRlSW5Cb3R0b20sIHNsaWRlT3V0Qm90dG9tIH0gZnJvbSAnLi4vYW5pbWF0aW9ucy9tYWluJztcblxubGV0IE5FWFRfSUQgPSAwO1xuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBTbmFja2JhcioqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9zbmFja2Jhci5odG1sKVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgU25hY2sgQmFyIHByb3ZpZGVzIGZlZWRiYWNrIGFib3V0IGFuIG9wZXJhdGlvbiB3aXRoIGEgc2luZ2xlLWxpbmUgbWVzc2FnZSwgd2hpY2ggY2FuXG4gKiBpbmNsdWRlIGEgbGluayB0byBhbiBhY3Rpb24gc3VjaCBhcyBVbmRvLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8YnV0dG9uIChjbGljayk9XCJzbmFja2Jhci5zaG93KClcIj5TZW5kIG1lc3NhZ2U8L2J1dHRvbj5cbiAqIDxkaXY+XG4gKiAgIDxpZ3gtc25hY2tiYXIgI3NuYWNrYmFyIG1lc3NhZ2U9XCJNZXNzYWdlIHNlbnRcIj5cbiAqICAgPC9pZ3gtc25hY2tiYXI+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXG4gICAgICAgICAgICAgICAgdXNlQW5pbWF0aW9uKHNsaWRlSW5Cb3R0b20sIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogJy4zNXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiAnY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogJ3RyYW5zbGF0ZVkoMTAwJSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9Qb3NpdGlvbjogJ3RyYW5zbGF0ZVkoMCknXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgdXNlQW5pbWF0aW9uKHNsaWRlT3V0Qm90dG9tLCB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ICcuMnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiAnY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tUG9zaXRpb246ICd0cmFuc2xhdGVZKDApJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvT3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvUG9zaXRpb246ICd0cmFuc2xhdGVZKDEwMCUpJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdmYWRlSW5PdXQnLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXG4gICAgICAgICAgICAgICAgdXNlQW5pbWF0aW9uKGZhZGVJbiwge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAnLjM1cycsXG4gICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICdlYXNlLW91dCdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFtcbiAgICAgICAgICAgICAgICB1c2VBbmltYXRpb24oZmFkZU91dCwge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAnLjJzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogJ2Vhc2Utb3V0J1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBzZWxlY3RvcjogJ2lneC1zbmFja2JhcicsXG4gICAgdGVtcGxhdGVVcmw6ICdzbmFja2Jhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIGBdXG59KVxuZXhwb3J0IGNsYXNzIElneFNuYWNrYmFyQ29tcG9uZW50IHtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGlkYCBvZiB0aGUgc25hY2tiYXIuXG4gICAgICogSWYgbm90IHNldCwgdGhlIGBpZGAgb2YgdGhlIGZpcnN0IHNuYWNrYmFyIGNvbXBvbmVudCAgd2lsbCBiZSBgXCJpZ3gtc25hY2tiYXItMFwiYDtcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zbmFja2JhciBpZCA9IFwiU25hY2tiYXIxXCI+PC9pZ3gtc25hY2tiYXI+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBzbmFja2JhcklkID0gdGhpcy5zbmFja2Jhci5pZDtcbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4U25hY2tiYXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1zbmFja2Jhci0ke05FWFRfSUQrK31gO1xuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYG1lc3NhZ2VgIGF0dHJpYnV0ZS5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zbmFja2JhciBbbWVzc2FnZV0gPSBcIidTbmFja2JhciBDb21wb25lbnQnXCI+PC9pZ3gtc25hY2tiYXI+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBtZXNzYWdlID0gIHRoaXMuc25hY2tiYXIubWVzc2FnZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcy9EaXNhYmxlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgc25hY2tiYXIuXG4gICAgICogSWYgbm90IHNldCwgdGhlIGBpc1Zpc2libGVgIGF0dHJpYnV0ZSB3aWxsIGhhdmUgdmFsdWUgYGZhbHNlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zbmFja2JhciBbaXNWaXNpYmxlXSA9IFwidHJ1ZVwiPjwvaWd4LXNuYWNrYmFyPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNWaXNpYmxlID0gIHRoaXMuc25hY2tiYXIuaXNWaXNpYmxlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1Zpc2libGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyBpZiB0aGUgc25hY2tiYXIgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGhpZGRlbiBhZnRlciB0aGUgYGRpc3BsYXlUaW1lYCBpcyBvdmVyLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNuYWNrYmFyIFthdXRvSGlkZV0gPSBcImZhbHNlXCI+PC9pZ3gtc25hY2tiYXI+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBhdXRvSGlkZSA9ICB0aGlzLnNuYWNrYmFyLmF1dG9IaWRlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvSGlkZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGR1cmF0aW9uIG9mIHRpbWUoaW4gbWlsbGlzZWNvbmRzKSBpbiB3aGljaCB0aGUgc25hY2tiYXIgd2lsbCBiZSB2aXNpYmxlIGFmdGVyIGl0IGlzIGJlaW5nIHNob3duLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgNDAwMC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zbmFja2JhciBbZGlzcGxheVRpbWVdID0gXCIyMDAwXCI+PC9pZ3gtc25hY2tiYXI+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBkaXNwbGF5VGltZSA9IHRoaXMuc25hY2tiYXIuZGlzcGxheVRpbWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRpc3BsYXlUaW1lID0gNDAwMDtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGFjdGlvblRleHRgIGF0dHJpYnV0ZS5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1zbmFja2JhciBbYWN0aW9uVGV4dF0gPSBcIidBY3Rpb24gVGV4dCdcIj48L2lneC1zbmFja2Jhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uVGV4dD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgd2lsbCBiZSBlbWl0dGVkIHdoZW4gdGhlIGFjdGlvbiBpcyBleGVjdXRlZC5cbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdG8gdGhlIGBJZ3hTbmFja2JhckNvbXBvbmVudGAgYXMgYW4gYXJndW1lbnQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc25hY2tiYXIgKG9uQWN0aW9uKSA9IFwib25BY3Rpb24oJGV2ZW50KVwiPjwvaWd4LXNuYWNrYmFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElneFNuYWNrYmFyQ29tcG9uZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCB3aWxsIGJlIGVtaXR0ZWQgd2hlbiB0aGUgc25hY2tiYXIgYW5pbWF0aW9uIHN0YXJ0cy5cbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdG8gdGhlIGBBbmltYXRpb25FdmVudGAgaW50ZXJmYWNlIGFzIGFuIGFyZ3VtZW50LlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXNuYWNrYmFyIChhbmltYXRpb25TdGFydGVkKSA9IFwiYW5pbWF0aW9uU3RhcnRlZCgkZXZlbnQpXCI+PC9pZ3gtc25hY2tiYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBhbmltYXRpb25TdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBbmltYXRpb25FdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgd2lsbCBiZSBlbWl0dGVkIHdoZW4gdGhlIHNuYWNrYmFyIGFuaW1hdGlvbiBlbmRzLlxuICAgICAqIFByb3ZpZGVzIHJlZmVyZW5jZSB0byB0aGUgYEFuaW1hdGlvbkV2ZW50YCBpbnRlcmZhY2UgYXMgYW4gYXJndW1lbnQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtc25hY2tiYXIgKGFuaW1hdGlvbkRvbmUpID0gXCJhbmltYXRpb25Eb25lKCRldmVudClcIj48L2lneC1zbmFja2Jhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIGFuaW1hdGlvbkRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPEFuaW1hdGlvbkV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgdGltZW91dElkO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHsgfVxuXG4gICAgLyoqXG4gICAgICogU2hvd3MgdGhlIHNuYWNrYmFyIGFuZCBoaWRlcyBpdCBhZnRlciB0aGUgYGRpc3BsYXlUaW1lYCBpcyBvdmVyIGlmIGBhdXRvSGlkZWAgaXMgc2V0IHRvIGB0cnVlYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5zbmFja2Jhci5zaG93KCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZCk7XG4gICAgICAgIHNldFRpbWVvdXQodGhpcy50aW1lb3V0SWQpO1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuYXV0b0hpZGUpIHtcbiAgICAgICAgICAgIHRoaXMudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9LCB0aGlzLmRpc3BsYXlUaW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSBzbmFja2Jhci5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5zbmFja2Jhci5oaWRlKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGhpZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyB0cmlnZ2VyQWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQWN0aW9uLmVtaXQodGhpcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqIEBtZW1iZXJvZiBJZ3hTbmFja2JhckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzbmFja2JhckFuaW1hdGlvblN0YXJ0ZWQoZXZ0OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZ0LmZyb21TdGF0ZSA9PT0gJ3ZvaWQnKSB7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvblN0YXJ0ZWQuZW1pdChldnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqIEBtZW1iZXJvZiBJZ3hTbmFja2JhckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzbmFja2JhckFuaW1hdGlvbkRvbmUoZXZ0OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZ0LmZyb21TdGF0ZSA9PT0gJ3Nob3cnKSB7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkRvbmUuZW1pdChldnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hTbmFja2JhckNvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0lneFNuYWNrYmFyQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTbmFja2Jhck1vZHVsZSB7IH1cbiJdfQ==