UNPKG

fundamental-ngx

Version:

SAP Fiori Fundamentals, implemented in Angular

417 lines 28.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, ElementRef, ChangeDetectorRef, ViewChild, ComponentFactoryResolver, Type, ViewContainerRef, TemplateRef, Optional, Output, EventEmitter, ViewEncapsulation, HostListener } from '@angular/core'; import { AlertRef } from './alert-utils/alert-ref'; import { alertFadeNgIf } from './alert-utils/alert-animations'; import { AbstractFdNgxClass } from '../utils/abstract-fd-ngx-class'; /** @type {?} */ var alertUniqueId = 0; /** * The component that represents an alert. It can be only be used inline. * If the AlertService is used, this component is auto-generated. */ var AlertComponent = /** @class */ (function (_super) { tslib_1.__extends(AlertComponent, _super); /** @hidden */ function AlertComponent(elRef, cdRef, componentFactoryResolver, alertRef) { var _this = _super.call(this, elRef) || this; _this.elRef = elRef; _this.cdRef = cdRef; _this.componentFactoryResolver = componentFactoryResolver; _this.alertRef = alertRef; /** * Whether the alert is dismissible. */ _this.dismissible = true; /** * Id for the alert component. If omitted, a unique one is generated. */ _this.id = 'fd-alert-' + alertUniqueId++; /** * Duration of time *in milliseconds* that the alert will be visible. Set to -1 for indefinite. */ _this.duration = 10000; /** * Whether the alert should stay open if the mouse is hovering over it. */ _this.mousePersist = false; /** * Id of the element that labels the alert. */ _this.ariaLabelledBy = null; /** * Aria label for the alert component element. */ _this.ariaLabel = null; /** * Aria label for the dismiss button. */ _this.dismissLabel = 'Dismiss'; /** * Event fired when the alert is dismissed. */ _this.onDismiss = new EventEmitter(); /** * @hidden */ _this.mouseInAlert = false; return _this; } /** @hidden */ /** * @hidden * @return {?} */ AlertComponent.prototype.ngOnInit = /** * @hidden * @return {?} */ function () { if (this.alertRef) { this.open(); } this._setProperties(); }; /** @hidden */ /** * @hidden * @return {?} */ AlertComponent.prototype.ngAfterViewInit = /** * @hidden * @return {?} */ function () { if (this.childComponentType) { if (this.childComponentType instanceof Type) { this.loadFromComponent(this.childComponentType); } else if (this.childComponentType instanceof TemplateRef) { this.loadFromTemplate(this.childComponentType); } else { this.loadFromString(this.childComponentType); } this.cdRef.detectChanges(); } }; /** * Dismisses the alert. If the alert was generated via the AlertService, it is removed from the DOM. * Otherwise, it sets the display value to none. Fires the onDismiss event. * * @param manualDismiss Set to true to skip the dismiss animation. * @param reason Data to pass back to the calling component. Only usable if alert is opened using the Service. * */ /** * Dismisses the alert. If the alert was generated via the AlertService, it is removed from the DOM. * Otherwise, it sets the display value to none. Fires the onDismiss event. * * @param {?=} reason Data to pass back to the calling component. Only usable if alert is opened using the Service. * * @param {?=} manualDismiss Set to true to skip the dismiss animation. * @return {?} */ AlertComponent.prototype.dismiss = /** * Dismisses the alert. If the alert was generated via the AlertService, it is removed from the DOM. * Otherwise, it sets the display value to none. Fires the onDismiss event. * * @param {?=} reason Data to pass back to the calling component. Only usable if alert is opened using the Service. * * @param {?=} manualDismiss Set to true to skip the dismiss animation. * @return {?} */ function (reason, manualDismiss) { if (manualDismiss === void 0) { manualDismiss = false; } if (manualDismiss) { this.elRef.nativeElement.classList.add('fd-has-display-none'); this.elRef.nativeElement.classList.remove('fd-has-display-block'); } if (this.alertRef) { this.alertRef.dismiss(reason); } else { this.elRef.nativeElement.classList.add('fd-has-display-none'); this.elRef.nativeElement.classList.remove('fd-has-display-block'); } this.onDismiss.emit(); }; /** * Opens the alert. */ /** * Opens the alert. * @return {?} */ AlertComponent.prototype.open = /** * Opens the alert. * @return {?} */ function () { var _this = this; if (!this.alertRef) { if (this.elRef.nativeElement.style.display === 'block') { return; } this.elRef.nativeElement.classList.remove('fd-has-display-none'); this.elRef.nativeElement.classList.add('fd-has-display-block'); } if (this.duration >= 0) { setTimeout((/** * @return {?} */ function () { if (_this.mousePersist) { /** @type {?} */ var wait_1 = (/** * @return {?} */ function () { if (_this.mouseInAlert === true) { setTimeout(wait_1, 500); } else { _this.dismiss(); } }); wait_1(); } else { _this.dismiss(); } }), this.duration); } }; /** @hidden */ /** * @hidden * @param {?} event * @return {?} */ AlertComponent.prototype.handleAlertMouseEvent = /** * @hidden * @param {?} event * @return {?} */ function (event) { if (event.type === 'mouseenter') { this.mouseInAlert = true; } else if (event.type === 'mouseleave') { this.mouseInAlert = false; } }; /** @hidden */ /** * @hidden * @return {?} */ AlertComponent.prototype._setProperties = /** * @hidden * @return {?} */ function () { this._addClassToElement('fd-alert'); if (this.type) { this._addClassToElement('fd-alert--' + this.type); } }; /** * @private * @param {?} template * @return {?} */ AlertComponent.prototype.loadFromTemplate = /** * @private * @param {?} template * @return {?} */ function (template) { /** @type {?} */ var context = { $implicit: this.alertRef }; this.componentRef = this.containerRef.createEmbeddedView(template, context); }; /** * @private * @param {?} componentType * @return {?} */ AlertComponent.prototype.loadFromComponent = /** * @private * @param {?} componentType * @return {?} */ function (componentType) { /** @type {?} */ var componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType); this.containerRef.clear(); this.componentRef = this.containerRef.createComponent(componentFactory); }; /** * @private * @param {?} contentString * @return {?} */ AlertComponent.prototype.loadFromString = /** * @private * @param {?} contentString * @return {?} */ function (contentString) { this.containerRef.clear(); this.message = contentString; }; AlertComponent.decorators = [ { type: Component, args: [{ selector: 'fd-alert', template: "<button class=\"fd-alert__close\"\n *ngIf=\"dismissible\"\n (click)=\"dismiss(undefined, true)\"\n [attr.aria-controls]=\"id\"\n [attr.aria-label]=\"dismissLabel\">\n</button>\n<ng-container #container>{{message}}</ng-container>\n<ng-content></ng-content>\n", host: { '[attr.aria-labelledby]': 'ariaLabelledBy', '[attr.aria-label]': 'ariaLabel', '[style.width]': 'width', '[style.min-width]': 'minWidth', 'role': 'alert', '[attr.id]': 'id', '[@fadeAlertNgIf]': '' }, animations: [ alertFadeNgIf ], encapsulation: ViewEncapsulation.None, styles: [".fd-alert{display:block}"] }] } ]; /** @nocollapse */ AlertComponent.ctorParameters = function () { return [ { type: ElementRef }, { type: ChangeDetectorRef }, { type: ComponentFactoryResolver }, { type: AlertRef, decorators: [{ type: Optional }] } ]; }; AlertComponent.propDecorators = { containerRef: [{ type: ViewChild, args: ['container', { read: ViewContainerRef },] }], dismissible: [{ type: Input }], type: [{ type: Input }], id: [{ type: Input }], duration: [{ type: Input }], mousePersist: [{ type: Input }], ariaLabelledBy: [{ type: Input }], ariaLabel: [{ type: Input }], dismissLabel: [{ type: Input }], width: [{ type: Input }], minWidth: [{ type: Input }], message: [{ type: Input }], onDismiss: [{ type: Output }], handleAlertMouseEvent: [{ type: HostListener, args: ['mouseenter', ['$event'],] }, { type: HostListener, args: ['mouseleave', ['$event'],] }] }; return AlertComponent; }(AbstractFdNgxClass)); export { AlertComponent }; if (false) { /** * @hidden * @type {?} */ AlertComponent.prototype.containerRef; /** * Whether the alert is dismissible. * @type {?} */ AlertComponent.prototype.dismissible; /** * The type of the alert. Can be one of *warning*, *success*, *information*, *error* or null. * @type {?} */ AlertComponent.prototype.type; /** * Id for the alert component. If omitted, a unique one is generated. * @type {?} */ AlertComponent.prototype.id; /** * Duration of time *in milliseconds* that the alert will be visible. Set to -1 for indefinite. * @type {?} */ AlertComponent.prototype.duration; /** * Whether the alert should stay open if the mouse is hovering over it. * @type {?} */ AlertComponent.prototype.mousePersist; /** * Id of the element that labels the alert. * @type {?} */ AlertComponent.prototype.ariaLabelledBy; /** * Aria label for the alert component element. * @type {?} */ AlertComponent.prototype.ariaLabel; /** * Aria label for the dismiss button. * @type {?} */ AlertComponent.prototype.dismissLabel; /** * Width of the alert. * @type {?} */ AlertComponent.prototype.width; /** * Minimum width of the alert. * @type {?} */ AlertComponent.prototype.minWidth; /** * Alternative way of passing in a message to the alert. * @type {?} */ AlertComponent.prototype.message; /** * Event fired when the alert is dismissed. * @type {?} */ AlertComponent.prototype.onDismiss; /** * @hidden * @type {?} */ AlertComponent.prototype.mouseInAlert; /** * @hidden * @type {?} */ AlertComponent.prototype.componentRef; /** * @hidden * @type {?} */ AlertComponent.prototype.childComponentType; /** * @type {?} * @private */ AlertComponent.prototype.elRef; /** * @type {?} * @private */ AlertComponent.prototype.cdRef; /** * @type {?} * @private */ AlertComponent.prototype.componentFactoryResolver; /** * @type {?} * @private */ AlertComponent.prototype.alertRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZnVuZGFtZW50YWwtbmd4LyIsInNvdXJjZXMiOlsibGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUVMLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsU0FBUyxFQUNULHdCQUF3QixFQUV4QixJQUFJLEVBRUosZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxRQUFRLEVBRVIsTUFBTSxFQUNOLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQ2hELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0lBRWhFLGFBQWEsR0FBVyxDQUFDOzs7OztBQU03QjtJQWtCb0MsMENBQWtCO0lBK0RsRCxjQUFjO0lBQ2Qsd0JBQW9CLEtBQWlCLEVBQ2pCLEtBQXdCLEVBQ3hCLHdCQUFrRCxFQUN0QyxRQUFrQjtRQUhsRCxZQUlJLGtCQUFNLEtBQUssQ0FBQyxTQUNmO1FBTG1CLFdBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsV0FBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsOEJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN0QyxjQUFRLEdBQVIsUUFBUSxDQUFVOzs7O1FBM0RsRCxpQkFBVyxHQUFZLElBQUksQ0FBQzs7OztRQVE1QixRQUFFLEdBQVcsV0FBVyxHQUFHLGFBQWEsRUFBRSxDQUFDOzs7O1FBSTNDLGNBQVEsR0FBVyxLQUFLLENBQUM7Ozs7UUFJekIsa0JBQVksR0FBWSxLQUFLLENBQUM7Ozs7UUFJOUIsb0JBQWMsR0FBVyxJQUFJLENBQUM7Ozs7UUFJOUIsZUFBUyxHQUFXLElBQUksQ0FBQzs7OztRQUl6QixrQkFBWSxHQUFXLFNBQVMsQ0FBQzs7OztRQWdCakMsZUFBUyxHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDOzs7O1FBR25FLGtCQUFZLEdBQVksS0FBSyxDQUFDOztJQWM5QixDQUFDO0lBRUQsY0FBYzs7Ozs7SUFDZCxpQ0FBUTs7OztJQUFSO1FBQ0ksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7Ozs7O0lBQ2Qsd0NBQWU7Ozs7SUFBZjtRQUNJLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLGtCQUFrQixZQUFZLElBQUksRUFBRTtnQkFDekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ25EO2lCQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixZQUFZLFdBQVcsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ2xEO2lCQUFNO2dCQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDaEQ7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7Ozs7Ozs7Ozs7SUFDSCxnQ0FBTzs7Ozs7Ozs7O0lBQVAsVUFBUSxNQUFZLEVBQUUsYUFBOEI7UUFBOUIsOEJBQUEsRUFBQSxxQkFBOEI7UUFDaEQsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3JFO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDckU7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCw2QkFBSTs7OztJQUFKO1FBQUEsaUJBeUJDO1FBeEJHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7Z0JBQ3BELE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDbEU7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFO1lBQ3BCLFVBQVU7OztZQUFDO2dCQUNQLElBQUksS0FBSSxDQUFDLFlBQVksRUFBRTs7d0JBQ2IsTUFBSTs7O29CQUFHO3dCQUNULElBQUksS0FBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7NEJBQzVCLFVBQVUsQ0FBQyxNQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7eUJBQ3pCOzZCQUFNOzRCQUNILEtBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt5QkFDbEI7b0JBQ0wsQ0FBQyxDQUFBO29CQUNELE1BQUksRUFBRSxDQUFDO2lCQUNWO3FCQUFNO29CQUNILEtBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDbEI7WUFDTCxDQUFDLEdBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVELGNBQWM7Ozs7OztJQUdkLDhDQUFxQjs7Ozs7SUFGckIsVUFFc0IsS0FBSztRQUN2QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzVCO2FBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTtZQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNMLENBQUM7SUFFRCxjQUFjOzs7OztJQUNkLHVDQUFjOzs7O0lBQWQ7UUFDSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckQ7SUFDTCxDQUFDOzs7Ozs7SUFFTyx5Q0FBZ0I7Ozs7O0lBQXhCLFVBQXlCLFFBQTBCOztZQUN6QyxPQUFPLEdBQUc7WUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDM0I7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Ozs7OztJQUVPLDBDQUFpQjs7Ozs7SUFBekIsVUFBMEIsYUFBd0I7O1lBQ3hDLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUM7UUFDN0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUUsQ0FBQzs7Ozs7O0lBRU8sdUNBQWM7Ozs7O0lBQXRCLFVBQXVCLGFBQXFCO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7SUFDakMsQ0FBQzs7Z0JBdE1KLFNBQVMsU0FBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIseVNBQXFDO29CQUVyQyxJQUFJLEVBQUU7d0JBQ0Ysd0JBQXdCLEVBQUUsZ0JBQWdCO3dCQUMxQyxtQkFBbUIsRUFBRSxXQUFXO3dCQUNoQyxlQUFlLEVBQUUsT0FBTzt3QkFDeEIsbUJBQW1CLEVBQUUsVUFBVTt3QkFDL0IsTUFBTSxFQUFFLE9BQU87d0JBQ2YsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLGtCQUFrQixFQUFFLEVBQUU7cUJBQ3pCO29CQUNELFVBQVUsRUFBRTt3QkFDUixhQUFhO3FCQUNoQjtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7aUJBQ3hDOzs7O2dCQXpDRyxVQUFVO2dCQUNWLGlCQUFpQjtnQkFFakIsd0JBQXdCO2dCQVduQixRQUFRLHVCQStGQSxRQUFROzs7K0JBaEVwQixTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFDOzhCQUkvQyxLQUFLO3VCQUlMLEtBQUs7cUJBSUwsS0FBSzsyQkFJTCxLQUFLOytCQUlMLEtBQUs7aUNBSUwsS0FBSzs0QkFJTCxLQUFLOytCQUlMLEtBQUs7d0JBSUwsS0FBSzsyQkFJTCxLQUFLOzBCQUlMLEtBQUs7NEJBSUwsTUFBTTt3Q0ErRk4sWUFBWSxTQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUNyQyxZQUFZLFNBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDOztJQW1DMUMscUJBQUM7Q0FBQSxBQXhNRCxDQWtCb0Msa0JBQWtCLEdBc0xyRDtTQXRMWSxjQUFjOzs7Ozs7SUFHdkIsc0NBQytCOzs7OztJQUcvQixxQ0FDNEI7Ozs7O0lBRzVCLDhCQUNhOzs7OztJQUdiLDRCQUMyQzs7Ozs7SUFHM0Msa0NBQ3lCOzs7OztJQUd6QixzQ0FDOEI7Ozs7O0lBRzlCLHdDQUM4Qjs7Ozs7SUFHOUIsbUNBQ3lCOzs7OztJQUd6QixzQ0FDaUM7Ozs7O0lBR2pDLCtCQUNjOzs7OztJQUdkLGtDQUNpQjs7Ozs7SUFHakIsaUNBQ2dCOzs7OztJQUdoQixtQ0FDbUU7Ozs7O0lBR25FLHNDQUE4Qjs7Ozs7SUFHOUIsc0NBQXVEOzs7OztJQUd2RCw0Q0FBMEQ7Ozs7O0lBRzlDLCtCQUF5Qjs7Ozs7SUFDekIsK0JBQWdDOzs7OztJQUNoQyxrREFBMEQ7Ozs7O0lBQzFELGtDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIFR5cGUsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIE9wdGlvbmFsLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLCBWaWV3RW5jYXBzdWxhdGlvbiwgSG9zdExpc3RlbmVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRSZWYgfSBmcm9tICcuL2FsZXJ0LXV0aWxzL2FsZXJ0LXJlZic7XG5pbXBvcnQgeyBhbGVydEZhZGVOZ0lmIH0gZnJvbSAnLi9hbGVydC11dGlscy9hbGVydC1hbmltYXRpb25zJztcbmltcG9ydCB7IEFic3RyYWN0RmROZ3hDbGFzcyB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0LWZkLW5neC1jbGFzcyc7XG5cbmxldCBhbGVydFVuaXF1ZUlkOiBudW1iZXIgPSAwO1xuXG4vKipcbiAqIFRoZSBjb21wb25lbnQgdGhhdCByZXByZXNlbnRzIGFuIGFsZXJ0LiBJdCBjYW4gYmUgb25seSBiZSB1c2VkIGlubGluZS5cbiAqIElmIHRoZSBBbGVydFNlcnZpY2UgaXMgdXNlZCwgdGhpcyBjb21wb25lbnQgaXMgYXV0by1nZW5lcmF0ZWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtYWxlcnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsbGVkYnldJzogJ2FyaWFMYWJlbGxlZEJ5JyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCcsXG4gICAgICAgICdbc3R5bGUud2lkdGhdJzogJ3dpZHRoJyxcbiAgICAgICAgJ1tzdHlsZS5taW4td2lkdGhdJzogJ21pbldpZHRoJyxcbiAgICAgICAgJ3JvbGUnOiAnYWxlcnQnLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1tAZmFkZUFsZXJ0TmdJZl0nOiAnJ1xuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICBhbGVydEZhZGVOZ0lmXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGZE5neENsYXNzIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywge3JlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICAgIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhbGVydCBpcyBkaXNtaXNzaWJsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc21pc3NpYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgdHlwZSBvZiB0aGUgYWxlcnQuIENhbiBiZSBvbmUgb2YgKndhcm5pbmcqLCAqc3VjY2VzcyosICppbmZvcm1hdGlvbiosICplcnJvciogb3IgbnVsbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHR5cGU6IHN0cmluZztcblxuICAgIC8qKiBJZCBmb3IgdGhlIGFsZXJ0IGNvbXBvbmVudC4gSWYgb21pdHRlZCwgYSB1bmlxdWUgb25lIGlzIGdlbmVyYXRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmQtYWxlcnQtJyArIGFsZXJ0VW5pcXVlSWQrKztcblxuICAgIC8qKiBEdXJhdGlvbiBvZiB0aW1lICppbiBtaWxsaXNlY29uZHMqIHRoYXQgdGhlIGFsZXJ0IHdpbGwgYmUgdmlzaWJsZS4gU2V0IHRvIC0xIGZvciBpbmRlZmluaXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHVyYXRpb246IG51bWJlciA9IDEwMDAwO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGFsZXJ0IHNob3VsZCBzdGF5IG9wZW4gaWYgdGhlIG1vdXNlIGlzIGhvdmVyaW5nIG92ZXIgaXQuICovXG4gICAgQElucHV0KClcbiAgICBtb3VzZVBlcnNpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBJZCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVscyB0aGUgYWxlcnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgYWxlcnQgY29tcG9uZW50IGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIGRpc21pc3MgYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzbWlzc0xhYmVsOiBzdHJpbmcgPSAnRGlzbWlzcyc7XG5cbiAgICAvKiogV2lkdGggb2YgdGhlIGFsZXJ0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgd2lkdGg6IHN0cmluZztcblxuICAgIC8qKiBNaW5pbXVtIHdpZHRoIG9mIHRoZSBhbGVydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbldpZHRoOiBzdHJpbmc7XG5cbiAgICAvKiogQWx0ZXJuYXRpdmUgd2F5IG9mIHBhc3NpbmcgaW4gYSBtZXNzYWdlIHRvIHRoZSBhbGVydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1lc3NhZ2U6IHN0cmluZztcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBhbGVydCBpcyBkaXNtaXNzZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgb25EaXNtaXNzOiBFdmVudEVtaXR0ZXI8dW5kZWZpbmVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5kZWZpbmVkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtb3VzZUluQWxlcnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaGlsZENvbXBvbmVudFR5cGU6IFR5cGU8YW55PiB8IFRlbXBsYXRlUmVmPGFueT4gfCBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGFsZXJ0UmVmOiBBbGVydFJlZikge1xuICAgICAgICBzdXBlcihlbFJlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWxlcnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldFByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRDb21wb25lbnRUeXBlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZENvbXBvbmVudFR5cGUgaW5zdGFuY2VvZiBUeXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkRnJvbUNvbXBvbmVudCh0aGlzLmNoaWxkQ29tcG9uZW50VHlwZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hpbGRDb21wb25lbnRUeXBlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRGcm9tVGVtcGxhdGUodGhpcy5jaGlsZENvbXBvbmVudFR5cGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRGcm9tU3RyaW5nKHRoaXMuY2hpbGRDb21wb25lbnRUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzbWlzc2VzIHRoZSBhbGVydC4gSWYgdGhlIGFsZXJ0IHdhcyBnZW5lcmF0ZWQgdmlhIHRoZSBBbGVydFNlcnZpY2UsIGl0IGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAqIE90aGVyd2lzZSwgaXQgc2V0cyB0aGUgZGlzcGxheSB2YWx1ZSB0byBub25lLiBGaXJlcyB0aGUgb25EaXNtaXNzIGV2ZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIG1hbnVhbERpc21pc3MgU2V0IHRvIHRydWUgdG8gc2tpcCB0aGUgZGlzbWlzcyBhbmltYXRpb24uXG4gICAgICogQHBhcmFtIHJlYXNvbiBEYXRhIHRvIHBhc3MgYmFjayB0byB0aGUgY2FsbGluZyBjb21wb25lbnQuIE9ubHkgdXNhYmxlIGlmIGFsZXJ0IGlzIG9wZW5lZCB1c2luZyB0aGUgU2VydmljZS5cbiAgICAgKlxuICAgICAqL1xuICAgIGRpc21pc3MocmVhc29uPzogYW55LCBtYW51YWxEaXNtaXNzOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKG1hbnVhbERpc21pc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC1oYXMtZGlzcGxheS1ub25lJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZmQtaGFzLWRpc3BsYXktYmxvY2snKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hbGVydFJlZikge1xuICAgICAgICAgICAgdGhpcy5hbGVydFJlZi5kaXNtaXNzKHJlYXNvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZmQtaGFzLWRpc3BsYXktbm9uZScpO1xuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2ZkLWhhcy1kaXNwbGF5LWJsb2NrJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkRpc21pc3MuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBhbGVydC5cbiAgICAgKi9cbiAgICBvcGVuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYWxlcnRSZWYpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9PT0gJ2Jsb2NrJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmZC1oYXMtZGlzcGxheS1ub25lJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZmQtaGFzLWRpc3BsYXktYmxvY2snKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmR1cmF0aW9uID49IDApIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdXNlUGVyc2lzdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3YWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW91c2VJbkFsZXJ0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh3YWl0LCA1MDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc21pc3MoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgd2FpdCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRoaXMuZHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVBbGVydE1vdXNlRXZlbnQoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgdGhpcy5tb3VzZUluQWxlcnQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICAgICAgdGhpcy5tb3VzZUluQWxlcnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FkZENsYXNzVG9FbGVtZW50KCdmZC1hbGVydCcpO1xuICAgICAgICBpZiAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRDbGFzc1RvRWxlbWVudCgnZmQtYWxlcnQtLScgKyB0aGlzLnR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRnJvbVRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXMuYWxlcnRSZWZcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZEZyb21Db21wb25lbnQoY29tcG9uZW50VHlwZTogVHlwZTxhbnk+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRUeXBlKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRnJvbVN0cmluZyhjb250ZW50U3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gY29udGVudFN0cmluZztcbiAgICB9XG5cbn1cbiJdfQ==