com.phloxui
Version:
PhloxUI Ng2+ Framework
265 lines (264 loc) • 18.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, EventEmitter, Output } from '@angular/core';
import { AbstractRippleButton } from './AbstractRippleButton';
import { PhloxAppService } from '../service/PhloxAppService.service';
import { NeedFocusService } from '../service/NeedFocusService.service';
import { CLICK_EVENT, BEFORE_CLICK_EVENT } from '../share/CustomEventType';
import { Option } from '../decorator/Option.decorator';
import { EventUtils } from '../share/utils/EventUtils';
var /** @type {?} */ TYPE_NAME = "phx-simple-ripple-btn";
var SimpleRippleButton = /** @class */ (function (_super) {
tslib_1.__extends(SimpleRippleButton, _super);
function SimpleRippleButton(phloxAppService, needFocusService) {
var _this = _super.call(this, phloxAppService, needFocusService) || this;
_this.beforeClickEvent = new EventEmitter();
_this.clickEvent = new EventEmitter();
return _this;
}
/**
* @return {?}
*/
SimpleRippleButton.prototype.ngOnInit = /**
* @return {?}
*/
function () {
};
/**
* @param {?} $event
* @return {?}
*/
SimpleRippleButton.prototype.doFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
};
/**
* @param {?} $event
* @return {?}
*/
SimpleRippleButton.prototype.doLostFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
};
/**
* @param {?} label
* @return {?}
*/
SimpleRippleButton.prototype.setLabel = /**
* @param {?} label
* @return {?}
*/
function (label) {
this.label = label;
};
/**
* @return {?}
*/
SimpleRippleButton.prototype.getLabel = /**
* @return {?}
*/
function () {
return this.label;
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
SimpleRippleButton.prototype.onClick = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
_super.prototype.onClick.call(this, $event);
if (this.clickHandler !== null && typeof this.clickHandler === 'function') {
this.clickHandler.call(this, $event);
}
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeClickEvent', $event, fireEvent, function ($browserEvent) {
// Do nothing while clicked.
}, this.emitBeforeClickEvent, this.emitClickEvent);
};
/**
* @param {?=} $event
* @return {?}
*/
SimpleRippleButton.prototype.emitBeforeClickEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
// emit event
var /** @type {?} */ data = {
event: $event,
instance: this
};
var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_CLICK_EVENT, this, data, $event);
if (this.beforeClickEvent !== null && this.beforeClickEvent !== undefined) {
this.beforeClickEvent.emit(ev);
}
};
/**
* @param {?=} $event
* @return {?}
*/
SimpleRippleButton.prototype.emitClickEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
// emit event
var /** @type {?} */ data = {
event: $event,
instance: this
};
var /** @type {?} */ ev = EventUtils.newCustomEvent(CLICK_EVENT, this, data, $event);
if (this.clickEvent !== null && this.clickEvent !== undefined) {
this.clickEvent.emit(ev);
}
};
/**
* @return {?}
*/
SimpleRippleButton.prototype.getClickEvent = /**
* @return {?}
*/
function () {
return this.clickEvent;
};
/**
* @param {?} event
* @return {?}
*/
SimpleRippleButton.prototype.setClickEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.clickEvent = event;
};
/**
* @return {?}
*/
SimpleRippleButton.prototype.getBeforeClickEvent = /**
* @return {?}
*/
function () {
return this.beforeClickEvent;
};
/**
* @param {?} event
* @return {?}
*/
SimpleRippleButton.prototype.setBeforeClickEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeClickEvent = event;
};
/**
* @return {?}
*/
SimpleRippleButton.prototype.isDisabled = /**
* @return {?}
*/
function () {
return this.disabled;
};
SimpleRippleButton.TYPE_NAME = TYPE_NAME;
SimpleRippleButton.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"phx-simple-ripple-btn\" [class.disabled]=\"isDisabled()\">\n <button type=\"button\" (click)=\"onClick($event)\" (focusin)=\"onFocusing($event)\" (blur)=\"onLostFocusing($event)\">\n <div class=\"table-wrapper fluid\">\n <div class=\"table-cell-wrapper middle\">\n {{getLabel()}}\n </div>\n </div>\n </button>\n</div>\n"
},] },
];
/** @nocollapse */
SimpleRippleButton.ctorParameters = function () { return [
{ type: PhloxAppService, },
{ type: NeedFocusService, },
]; };
SimpleRippleButton.propDecorators = {
"label": [{ type: Input },],
"disabled": [{ type: Input },],
"clickHandler": [{ type: Input },],
"beforeClickEvent": [{ type: Output, args: ['phxBeforeClick',] },],
"clickEvent": [{ type: Output, args: ['phxClick',] },],
"dataParent": [{ type: Input },],
"beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },],
"focusEvent": [{ type: Output, args: ['phxFocus',] },],
"beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },],
"lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },],
};
tslib_1.__decorate([
Option('beforeClick'),
tslib_1.__metadata("design:type", EventEmitter)
], SimpleRippleButton.prototype, "beforeClickEvent", void 0);
tslib_1.__decorate([
Option('click'),
tslib_1.__metadata("design:type", EventEmitter)
], SimpleRippleButton.prototype, "clickEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], SimpleRippleButton.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], SimpleRippleButton.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], SimpleRippleButton.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], SimpleRippleButton.prototype, "lostFocusEvent", void 0);
return SimpleRippleButton;
}(AbstractRippleButton));
export { SimpleRippleButton };
function SimpleRippleButton_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
SimpleRippleButton.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
SimpleRippleButton.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
SimpleRippleButton.propDecorators;
/** @type {?} */
SimpleRippleButton.TYPE_NAME;
/** @type {?} */
SimpleRippleButton.prototype.label;
/** @type {?} */
SimpleRippleButton.prototype.disabled;
/** @type {?} */
SimpleRippleButton.prototype.clickHandler;
/** @type {?} */
SimpleRippleButton.prototype.beforeClickEvent;
/** @type {?} */
SimpleRippleButton.prototype.clickEvent;
/** @type {?} */
SimpleRippleButton.prototype.dataParent;
/** @type {?} */
SimpleRippleButton.prototype.beforeFocusEvent;
/** @type {?} */
SimpleRippleButton.prototype.focusEvent;
/** @type {?} */
SimpleRippleButton.prototype.beforeLostFocusEvent;
/** @type {?} */
SimpleRippleButton.prototype.lostFocusEvent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2ltcGxlUmlwcGxlQnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9TaW1wbGVSaXBwbGVCdXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJdkQscUJBQU0sU0FBUyxHQUFXLHVCQUF1QixDQUFDOztJQWdCViw4Q0FBb0I7SUErQjFELDRCQUFZLGVBQWdDLEVBQUUsZ0JBQWtDO1FBQWhGLFlBQ0Usa0JBQU0sZUFBZSxFQUFFLGdCQUFnQixDQUFDLFNBS3pDO1FBSEMsS0FBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0MsS0FBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDOztLQUMzQzs7OztJQUVNLHFDQUFROzs7Ozs7Ozs7SUFJTCxvQ0FBTzs7OztJQUFqQixVQUFrQixNQUFhO0tBRTlCOzs7OztJQUVTLHdDQUFXOzs7O0lBQXJCLFVBQXNCLE1BQWE7S0FFbEM7Ozs7O0lBRU0scUNBQVE7Ozs7Y0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDOzs7OztJQUdkLHFDQUFROzs7O1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7SUFHYixvQ0FBTzs7Ozs7Y0FBQyxNQUFrQixFQUFFLFNBQW1CO1FBQ3BELGlCQUFNLE9BQU8sWUFBQyxNQUFNLENBQUMsQ0FBQztRQUV0QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDdEM7UUFFRCxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2xELFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDbEI7UUFFRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBQyxhQUFvQjs7U0FFL0YsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDOzs7Ozs7SUFHM0MsaURBQW9COzs7O0lBQTlCLFVBQStCLE1BQVk7O1FBRXpDLHFCQUFJLElBQUksR0FBUTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YscUJBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEM7S0FDRjs7Ozs7SUFFUywyQ0FBYzs7OztJQUF4QixVQUF5QixNQUFZOztRQUVuQyxxQkFBSSxJQUFJLEdBQVE7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLHFCQUFJLEVBQUUsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMxQjtLQUNGOzs7O0lBRU0sMENBQWE7Ozs7UUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Ozs7OztJQUdsQiwwQ0FBYTs7OztjQUFDLEtBQXdCO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDOzs7OztJQUduQixnREFBbUI7Ozs7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzs7Ozs7O0lBR3hCLGdEQUFtQjs7OztjQUFDLEtBQVU7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQzs7Ozs7SUFHekIsdUNBQVU7Ozs7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7bUNBcEhvQixTQUFTOztnQkFoQnJELFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ25CLFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUUsdVdBU1g7aUJBQ0E7Ozs7Z0JBeEJRLGVBQWU7Z0JBQ2YsZ0JBQWdCOzs7MEJBNEJ0QixLQUFLOzZCQUVMLEtBQUs7aUNBRUwsS0FBSztxQ0FHTCxNQUFNLFNBQUMsZ0JBQWdCOytCQUd2QixNQUFNLFNBQUMsVUFBVTsrQkFFakIsS0FBSztxQ0FFTCxNQUFNLFNBQUMsZ0JBQWdCOytCQUd2QixNQUFNLFNBQUMsVUFBVTt5Q0FHakIsTUFBTSxTQUFDLG9CQUFvQjttQ0FHM0IsTUFBTSxTQUFDLGNBQWM7OztRQWpCckIsTUFBTSxDQUFDLGFBQWEsQ0FBQzswQ0FFSSxZQUFZOzs7UUFDckMsTUFBTSxDQUFDLE9BQU8sQ0FBQzswQ0FFSSxZQUFZOzs7UUFJL0IsTUFBTSxDQUFDLGFBQWEsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQzswQ0FDTSxZQUFZOzs7UUFFakMsTUFBTSxDQUFDLGlCQUFpQixDQUFDOzBDQUNNLFlBQVk7OztRQUUzQyxNQUFNLENBQUMsV0FBVyxDQUFDOzBDQUNNLFlBQVk7OzZCQXhEeEM7RUEyQndDLG9CQUFvQjtTQUEvQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFJpcHBsZUJ1dHRvbiB9IGZyb20gJy4vQWJzdHJhY3RSaXBwbGVCdXR0b24nO1xuaW1wb3J0IHsgUGhsb3hBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9QaGxveEFwcFNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBOZWVkRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9OZWVkRm9jdXNTZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ0xJQ0tfRVZFTlQsIEJFRk9SRV9DTElDS19FVkVOVCB9IGZyb20gJy4uL3NoYXJlL0N1c3RvbUV2ZW50VHlwZSc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4vSUhhc0RhdGEnO1xuaW1wb3J0IHsgRXZlbnRVdGlscyB9IGZyb20gJy4uL3NoYXJlL3V0aWxzL0V2ZW50VXRpbHMnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtc2ltcGxlLXJpcHBsZS1idG5cIjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1zaW1wbGUtcmlwcGxlLWJ0blwiIFtjbGFzcy5kaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiIChmb2N1c2luKT1cIm9uRm9jdXNpbmcoJGV2ZW50KVwiIChibHVyKT1cIm9uTG9zdEZvY3VzaW5nKCRldmVudClcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtd3JhcHBlciBmbHVpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNlbGwtd3JhcHBlciBtaWRkbGVcIj5cbiAgICAgICAge3tnZXRMYWJlbCgpfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuYFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVSaXBwbGVCdXR0b24gZXh0ZW5kcyBBYnN0cmFjdFJpcHBsZUJ1dHRvbiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICBASW5wdXQoKVxuICBwcml2YXRlIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgY2xpY2tIYW5kbGVyOiBGdW5jdGlvbjtcbiAgQE9wdGlvbignYmVmb3JlQ2xpY2snKVxuICBAT3V0cHV0KCdwaHhCZWZvcmVDbGljaycpXG4gIHByaXZhdGUgYmVmb3JlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ2NsaWNrJylcbiAgQE91dHB1dCgncGh4Q2xpY2snKVxuICBwcml2YXRlIGNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUZvY3VzJylcbiAgQE9wdGlvbignYmVmb3JlRm9jdXMnKVxuICBwcm90ZWN0ZWQgYmVmb3JlRm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeEZvY3VzJylcbiAgQE9wdGlvbignZm9jdXMnKVxuICBwcm90ZWN0ZWQgZm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUxvc3RGb2N1cycpXG4gIEBPcHRpb24oJ2JlZm9yZUxvc3RGb2N1cycpXG4gIHByb3RlY3RlZCBiZWZvcmVMb3N0Rm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeExvc3RGb2N1cycpXG4gIEBPcHRpb24oJ2xvc3RGb2N1cycpXG4gIHByb3RlY3RlZCBsb3N0Rm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgY29uc3RydWN0b3IocGhsb3hBcHBTZXJ2aWNlOiBQaGxveEFwcFNlcnZpY2UsIG5lZWRGb2N1c1NlcnZpY2U6IE5lZWRGb2N1c1NlcnZpY2UpIHtcbiAgICBzdXBlcihwaGxveEFwcFNlcnZpY2UsIG5lZWRGb2N1c1NlcnZpY2UpO1xuXG4gICAgdGhpcy5iZWZvcmVDbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgdGhpcy5jbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBkb0ZvY3VzKCRldmVudDogRXZlbnQpOiB2b2lkIHtcblxuICB9XG5cbiAgcHJvdGVjdGVkIGRvTG9zdEZvY3VzKCRldmVudDogRXZlbnQpOiB2b2lkIHtcblxuICB9XG5cbiAgcHVibGljIHNldExhYmVsKGxhYmVsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrKCRldmVudDogTW91c2VFdmVudCwgZmlyZUV2ZW50PzogYm9vbGVhbik6IHZvaWQge1xuICAgIHN1cGVyLm9uQ2xpY2soJGV2ZW50KTtcblxuICAgIGlmICh0aGlzLmNsaWNrSGFuZGxlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5jbGlja0hhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuY2xpY2tIYW5kbGVyLmNhbGwodGhpcywgJGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAoZmlyZUV2ZW50ID09PSBudWxsIHx8IGZpcmVFdmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmaXJlRXZlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIEV2ZW50VXRpbHMuaGFuZGxlQnJvd3NlckV2ZW50KHRoaXMsICdiZWZvcmVDbGlja0V2ZW50JywgJGV2ZW50LCBmaXJlRXZlbnQsICgkYnJvd3NlckV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgLy8gRG8gbm90aGluZyB3aGlsZSBjbGlja2VkLlxuICAgIH0sIHRoaXMuZW1pdEJlZm9yZUNsaWNrRXZlbnQsIHRoaXMuZW1pdENsaWNrRXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVtaXRCZWZvcmVDbGlja0V2ZW50KCRldmVudD86IGFueSk6IHZvaWQge1xuICAgIC8vIGVtaXQgZXZlbnRcbiAgICBsZXQgZGF0YTogYW55ID0ge1xuICAgICAgZXZlbnQ6ICRldmVudCxcbiAgICAgIGluc3RhbmNlOiB0aGlzXG4gICAgfTtcbiAgICBsZXQgZXYgPSBFdmVudFV0aWxzLm5ld0N1c3RvbUV2ZW50KEJFRk9SRV9DTElDS19FVkVOVCwgdGhpcywgZGF0YSwgJGV2ZW50KTtcblxuICAgIGlmICh0aGlzLmJlZm9yZUNsaWNrRXZlbnQgIT09IG51bGwgJiYgdGhpcy5iZWZvcmVDbGlja0V2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYmVmb3JlQ2xpY2tFdmVudC5lbWl0KGV2KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdENsaWNrRXZlbnQoJGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgLy8gZW1pdCBldmVudFxuICAgIGxldCBkYXRhOiBhbnkgPSB7XG4gICAgICBldmVudDogJGV2ZW50LFxuICAgICAgaW5zdGFuY2U6IHRoaXNcbiAgICB9O1xuICAgIGxldCBldiA9IEV2ZW50VXRpbHMubmV3Q3VzdG9tRXZlbnQoQ0xJQ0tfRVZFTlQsIHRoaXMsIGRhdGEsICRldmVudCk7XG5cbiAgICBpZiAodGhpcy5jbGlja0V2ZW50ICE9PSBudWxsICYmIHRoaXMuY2xpY2tFdmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChldik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldENsaWNrRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNsaWNrRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2xpY2tFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRCZWZvcmVDbGlja0V2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iZWZvcmVDbGlja0V2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldEJlZm9yZUNsaWNrRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYmVmb3JlQ2xpY2tFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XG4gIH1cbn1cbiJdfQ==