com.phloxui
Version:
PhloxUI Ng2+ Framework
749 lines (748 loc) • 51.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter, Type } from '@angular/core';
import { AbstractFloatingHeaderPanel } from './AbstractFloatingHeaderPanel';
import { NeedFocusService } from '../../service/NeedFocusService.service';
import { Option } from '../../decorator/Option.decorator';
import { I18N } from '../../decorator/I18N.decorator';
var /** @type {?} */ TYPE_NAME = "phx-component-floating-header-panel";
var /** @type {?} */ ANIMATE_MOVE_UP = "animate-move-up";
var /** @type {?} */ ANIMATE_MOVE_UP_CLASS = "." + ANIMATE_MOVE_UP;
var /** @type {?} */ ANIMATE_OPACITY = "animate-opacity";
var /** @type {?} */ ANIMATE_OPACITY_CLASS = "." + ANIMATE_OPACITY;
var /** @type {?} */ ANIMATE_LABEL_HEADER = "animate-label-header";
var /** @type {?} */ ANIMATE_LABEL_HEADER_CLASS = "." + ANIMATE_LABEL_HEADER;
var ComponentFloatingHeaderPanel = /** @class */ (function (_super) {
tslib_1.__extends(ComponentFloatingHeaderPanel, _super);
function ComponentFloatingHeaderPanel(elementRef, needFocusService) {
var _this = _super.call(this, elementRef, needFocusService) || this;
_this.scroll = function (event) {
var /** @type {?} */ scrollTop = $(event.target).scrollTop();
var /** @type {?} */ bodyY = (_this.getScrollOffsetEnd() === null || _this.getScrollOffsetEnd() === undefined) ? $(_this.getBodyInstance().elementRef.nativeElement).position().top - _this.getScrollOffsetStart() : _this.getScrollOffsetEnd() - _this.getScrollOffsetStart();
if (scrollTop <= bodyY) {
$(_this.elementRef.nativeElement).find(ANIMATE_LABEL_HEADER_CLASS).css({
'margin-top': (_this.heightFloating - _this.heightFloating * (scrollTop / bodyY)) + 'px',
'opacity': (scrollTop / bodyY) + ''
});
$(_this.elementRef.nativeElement).find(ANIMATE_LABEL_HEADER_CLASS).css({
'margin-top': (_this.heightFloating - _this.heightFloating * (scrollTop / bodyY)) + 'px',
'opacity': (scrollTop / bodyY) + ''
});
$(_this.elementRef.nativeElement).find(ANIMATE_MOVE_UP_CLASS).css({
'margin-top': (_this.heightFloating - _this.heightFloating * (scrollTop / bodyY)) + 'px',
});
$(_this.elementRef.nativeElement).find(ANIMATE_OPACITY_CLASS).css({
'opacity': (scrollTop / bodyY) + ''
});
}
else {
$(_this.elementRef.nativeElement).find(ANIMATE_LABEL_HEADER_CLASS).css({
'margin-top': '0px',
'opacity': '1'
});
$(_this.elementRef.nativeElement).find(ANIMATE_MOVE_UP_CLASS).css({
'margin-top': '0px',
});
$(_this.elementRef.nativeElement).find(ANIMATE_OPACITY_CLASS).css({
'opacity': '1'
});
}
_this.onScroll(event);
};
_this.elementRef = elementRef;
_this.setAlwaysShowHeader(false);
// this.floatingHeaderHandler = (event: any) => {
// this.floatingHeaderInstance = event.instance;
// };
// this.floatingHeaderHandler = (event: any) => {
// this.floatingHeaderInstance = event.instance;
// };
_this._headerHandler = function (event) {
_this.headerInstance = event.instance;
if (_this.headerHandler !== null && typeof _this.headerHandler === 'function') {
_this.headerHandler(event);
}
};
_this._floatingMenuHandler = function (event) {
_this.floatingMenuInstance = event.instance;
if (_this.floatingMenuHandler !== null && typeof _this.floatingMenuHandler === 'function') {
_this.floatingMenuHandler(event);
}
};
_this._bodyHandler = function (event) {
_this.bodyInstance = event.instance;
if (_this.bodyHandler !== null && typeof _this.bodyHandler === 'function') {
_this.bodyHandler(event);
}
};
return _this;
}
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
_super.prototype.ngOnInit.call(this);
setTimeout(function () {
window.addEventListener('scroll', _this.scroll, true);
_this.setScrollOffsetStart(53);
_this.heightFloating = 82;
}, 50);
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
window.removeEventListener('scroll', this.scroll, true);
};
/**
* @param {?} inputValue
* @param {?} results
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.onValidationEnd = /**
* @param {?} inputValue
* @param {?} results
* @return {?}
*/
function (inputValue, results) {
};
/**
* @param {?} data
* @param {?} inputVal
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.onDataChange = /**
* @param {?} data
* @param {?} inputVal
* @return {?}
*/
function (data, inputVal) {
};
/**
* @param {?} $event
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.doFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
};
/**
* @param {?} $event
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.doLostFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.isSelfDataDirty = /**
* @return {?}
*/
function () {
return false;
};
/**
* @param {?} data
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.selfSaveData = /**
* @param {?} data
* @return {?}
*/
function (data) {
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.selfResetData = /**
* @return {?}
*/
function () {
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getFloatingHeaderLabel = /**
* @return {?}
*/
function () {
return this.floatingHeaderLabel;
};
/**
* @param {?} floatingHeaderLabel
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setFloatingHeaderLabel = /**
* @param {?} floatingHeaderLabel
* @return {?}
*/
function (floatingHeaderLabel) {
this.floatingHeaderLabel = floatingHeaderLabel;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getHeaderType = /**
* @return {?}
*/
function () {
return this.headerType;
};
/**
* @param {?} headerType
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setHeaderType = /**
* @param {?} headerType
* @return {?}
*/
function (headerType) {
this.headerType = headerType;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getFloatingMenuType = /**
* @return {?}
*/
function () {
return this.floatingMenuType;
};
/**
* @param {?} floatingMenuType
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setFloatingMenuType = /**
* @param {?} floatingMenuType
* @return {?}
*/
function (floatingMenuType) {
this.floatingMenuType = floatingMenuType;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getBodyType = /**
* @return {?}
*/
function () {
return this.bodyType;
};
/**
* @param {?} bodyType
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setBodyType = /**
* @param {?} bodyType
* @return {?}
*/
function (bodyType) {
this.bodyType = bodyType;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getHeaderModel = /**
* @return {?}
*/
function () {
return this.headerModel;
};
/**
* @param {?} headerModel
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setHeaderModel = /**
* @param {?} headerModel
* @return {?}
*/
function (headerModel) {
this.headerModel = headerModel;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getFloatingMenuModel = /**
* @return {?}
*/
function () {
return this.floatingMenuModel;
};
/**
* @param {?} floatingMenuModel
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setFloatingMenuModel = /**
* @param {?} floatingMenuModel
* @return {?}
*/
function (floatingMenuModel) {
this.floatingMenuModel = floatingMenuModel;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getBodyModel = /**
* @return {?}
*/
function () {
return this.bodyModel;
};
/**
* @param {?} bodyModel
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setBodyModel = /**
* @param {?} bodyModel
* @return {?}
*/
function (bodyModel) {
this.bodyModel = bodyModel;
};
/**
* @param {?} headerInstance
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setHeaderInstance = /**
* @param {?} headerInstance
* @return {?}
*/
function (headerInstance) {
this.headerInstance = headerInstance;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getHeaderInstance = /**
* @return {?}
*/
function () {
return this.headerInstance;
};
/**
* @param {?} floatingMenuInstance
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setFloatingMenuInstance = /**
* @param {?} floatingMenuInstance
* @return {?}
*/
function (floatingMenuInstance) {
this.floatingMenuInstance = floatingMenuInstance;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getFloatingMenuInstance = /**
* @return {?}
*/
function () {
return this.floatingMenuInstance;
};
/**
* @param {?} bodyInstance
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setBodyInstance = /**
* @param {?} bodyInstance
* @return {?}
*/
function (bodyInstance) {
this.bodyInstance = bodyInstance;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getBodyInstance = /**
* @return {?}
*/
function () {
return this.bodyInstance;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getHeaderHandler = /**
* @return {?}
*/
function () {
return this.headerHandler;
};
/**
* @param {?} headerHandler
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setHeaderHandler = /**
* @param {?} headerHandler
* @return {?}
*/
function (headerHandler) {
this.headerHandler = headerHandler;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getFloatingMenuHandler = /**
* @return {?}
*/
function () {
return this.floatingMenuHandler;
};
/**
* @param {?} floatingMenuHandler
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setFloatingMenuHandler = /**
* @param {?} floatingMenuHandler
* @return {?}
*/
function (floatingMenuHandler) {
this.floatingMenuHandler = floatingMenuHandler;
};
/**
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.getBodyHandler = /**
* @return {?}
*/
function () {
return this.bodyHandler;
};
/**
* @param {?} bodyHandler
* @return {?}
*/
ComponentFloatingHeaderPanel.prototype.setBodyHandler = /**
* @param {?} bodyHandler
* @return {?}
*/
function (bodyHandler) {
this.bodyHandler = bodyHandler;
};
ComponentFloatingHeaderPanel.TYPE_NAME = TYPE_NAME;
ComponentFloatingHeaderPanel.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"phx-component-floating-header-panel\">\n <div class=\"floating-header-panel-container\">\n <phx-component-wrapper\n [type]=\"getHeaderType()\"\n [data]=\"getData()\"\n [handler]=\"_headerHandler\"\n [dataParent]=\"this\"\n [model]=\"getHeaderModel()\">\n </phx-component-wrapper>\n <phx-component-wrapper\n [type]=\"getFloatingMenuType()\"\n [data]=\"getData()\"\n [handler]=\"_floatingMenuHandler\"\n [dataParent]=\"this\"\n [model]=\"getFloatingMenuModel()\">\n </phx-component-wrapper>\n <phx-component-wrapper\n [type]=\"getBodyType()\"\n [data]=\"getData()\"\n [handler]=\"_bodyHandler\"\n [dataParent]=\"this\"\n [model]=\"getBodyModel()\">\n </phx-component-wrapper>\n </div>\n</div>\n"
},] },
];
/** @nocollapse */
ComponentFloatingHeaderPanel.ctorParameters = function () { return [
{ type: ElementRef, },
{ type: NeedFocusService, },
]; };
ComponentFloatingHeaderPanel.propDecorators = {
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"data": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"disabled": [{ type: Input },],
"field": [{ type: Input },],
"name": [{ type: Input },],
"typeOfData": [{ type: Input },],
"readOnly": [{ type: Input },],
"help": [{ type: Input },],
"scrollOffset": [{ type: Input },],
"allowShowFloatingHeaderPanel": [{ type: Input },],
"floatingHeaderLabel": [{ type: Input },],
"headerType": [{ type: Input },],
"headerModel": [{ type: Input },],
"headerHandler": [{ type: Input },],
"floatingMenuType": [{ type: Input },],
"floatingMenuModel": [{ type: Input },],
"floatingMenuHandler": [{ type: Input },],
"bodyType": [{ type: Input },],
"bodyModel": [{ type: Input },],
"bodyHandler": [{ type: Input },],
"loadEvent": [{ type: Output, args: ['phxLoad',] },],
"startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },],
"endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },],
"beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },],
"focusEvent": [{ type: Output, args: ['phxFocus',] },],
"beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },],
"lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },],
"beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },],
"changeEvent": [{ type: Output, args: ['phxChange',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentFloatingHeaderPanel.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentFloatingHeaderPanel.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentFloatingHeaderPanel.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentFloatingHeaderPanel.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentFloatingHeaderPanel.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentFloatingHeaderPanel.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentFloatingHeaderPanel.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentFloatingHeaderPanel.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentFloatingHeaderPanel.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], ComponentFloatingHeaderPanel.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentFloatingHeaderPanel.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentFloatingHeaderPanel.prototype, "field", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentFloatingHeaderPanel.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentFloatingHeaderPanel.prototype, "typeOfData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentFloatingHeaderPanel.prototype, "readOnly", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentFloatingHeaderPanel.prototype, "help", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Number)
], ComponentFloatingHeaderPanel.prototype, "scrollOffset", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentFloatingHeaderPanel.prototype, "allowShowFloatingHeaderPanel", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentFloatingHeaderPanel.prototype, "floatingHeaderLabel", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Type)
], ComponentFloatingHeaderPanel.prototype, "headerType", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentFloatingHeaderPanel.prototype, "headerModel", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentFloatingHeaderPanel.prototype, "headerHandler", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Type)
], ComponentFloatingHeaderPanel.prototype, "floatingMenuType", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentFloatingHeaderPanel.prototype, "floatingMenuModel", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentFloatingHeaderPanel.prototype, "floatingMenuHandler", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Type)
], ComponentFloatingHeaderPanel.prototype, "bodyType", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentFloatingHeaderPanel.prototype, "bodyModel", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentFloatingHeaderPanel.prototype, "bodyHandler", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('startValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "startValidateEvent", void 0);
tslib_1.__decorate([
Option('endValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "endValidateEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentFloatingHeaderPanel.prototype, "changeEvent", void 0);
return ComponentFloatingHeaderPanel;
}(AbstractFloatingHeaderPanel));
export { ComponentFloatingHeaderPanel };
function ComponentFloatingHeaderPanel_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ComponentFloatingHeaderPanel.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ComponentFloatingHeaderPanel.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ComponentFloatingHeaderPanel.propDecorators;
/** @type {?} */
ComponentFloatingHeaderPanel.TYPE_NAME;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.dataParent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.ignoreParentData;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.data;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.ignoreParentDisabled;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.delegateHistory;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.onDisabled;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.onEnabled;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.loadingEnabled;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.i18nKey;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.bypass;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.options;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.disabled;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.field;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.name;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.typeOfData;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.readOnly;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.help;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.scrollOffset;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.allowShowFloatingHeaderPanel;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.floatingHeaderLabel;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.headerType;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.headerModel;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.headerHandler;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.floatingMenuType;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.floatingMenuModel;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.floatingMenuHandler;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.bodyType;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.bodyModel;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.bodyHandler;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.heightFloating;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.headerInstance;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.floatingMenuInstance;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.bodyInstance;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype._headerHandler;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype._floatingMenuHandler;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype._bodyHandler;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.loadEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.startValidateEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.endValidateEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.beforeFocusEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.focusEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.beforeLostFocusEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.lostFocusEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.beforeChangeEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.changeEvent;
/** @type {?} */
ComponentFloatingHeaderPanel.prototype.scroll;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50RmxvYXRpbmdIZWFkZXJQYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZGF0YXZpZXcvQ29tcG9uZW50RmxvYXRpbmdIZWFkZXJQYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEyQixZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHdEQscUJBQU0sU0FBUyxHQUFXLHFDQUFxQyxDQUFDO0FBQ2hFLHFCQUFNLGVBQWUsR0FBVyxpQkFBaUIsQ0FBQztBQUNsRCxxQkFBTSxxQkFBcUIsR0FBVyxHQUFHLEdBQUcsZUFBZSxDQUFDO0FBQzVELHFCQUFNLGVBQWUsR0FBVyxpQkFBaUIsQ0FBQztBQUNsRCxxQkFBTSxxQkFBcUIsR0FBVyxHQUFHLEdBQUcsZUFBZSxDQUFDO0FBQzVELHFCQUFNLG9CQUFvQixHQUFXLHNCQUFzQixDQUFDO0FBQzVELHFCQUFNLDBCQUEwQixHQUFXLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQzs7SUFnQ3BCLHdEQUEyQjtJQWtKM0Usc0NBQVksVUFBc0IsRUFBRSxnQkFBa0M7UUFBdEUsWUFDRSxrQkFBTSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsU0FnQ3BDO3VCQVllLFVBQUMsS0FBVTtZQUV6QixxQkFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENB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TyxDQUFDOzBDQUNNLFlBQVk7OztRQUVqQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7MENBQ00sWUFBWTs7O1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUM7MENBQ00sWUFBWTs7O1FBRXJDLE1BQU0sQ0FBQyxjQUFjLENBQUM7MENBQ00sWUFBWTs7O1FBRXhDLE1BQU0sQ0FBQyxRQUFRLENBQUM7MENBQ00sWUFBWTs7dUNBaE1yQztFQWdEa0QsMkJBQTJCO1NBQWhFLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgT3V0cHV0LCBIb3N0TGlzdGVuZXIsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZsb2F0aW5nSGVhZGVyUGFuZWwgfSBmcm9tICcuL0Fic3RyYWN0RmxvYXRpbmdIZWFkZXJQYW5lbCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L21vZGVsL1ZhbGlkYXRpb25SZXN1bHQnO1xuaW1wb3J0IHsgTmVlZEZvY3VzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvTmVlZEZvY3VzU2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudEZsb2F0aW5nTW9kZWwgfSBmcm9tICcuLi8uL21vZGVsL0NvbXBvbmVudEZsb2F0aW5nTW9kZWwnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi9JSGFzRGF0YSc7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL0kxOE4uZGVjb3JhdG9yJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC1jb21wb25lbnQtZmxvYXRpbmctaGVhZGVyLXBhbmVsXCI7XG5jb25zdCBBTklNQVRFX01PVkVfVVA6IHN0cmluZyA9IFwiYW5pbWF0ZS1tb3ZlLXVwXCI7XG5jb25zdCBBTklNQVRFX01PVkVfVVBfQ0xBU1M6IHN0cmluZyA9IFwiLlwiICsgQU5JTUFURV9NT1ZFX1VQO1xuY29uc3QgQU5JTUFURV9PUEFDSVRZOiBzdHJpbmcgPSBcImFuaW1hdGUtb3BhY2l0eVwiO1xuY29uc3QgQU5JTUFURV9PUEFDSVRZX0NMQVNTOiBzdHJpbmcgPSBcIi5cIiArIEFOSU1BVEVfT1BBQ0lUWTtcbmNvbnN0IEFOSU1BVEVfTEFCRUxfSEVBREVSOiBzdHJpbmcgPSBcImFuaW1hdGUtbGFiZWwtaGVhZGVyXCI7XG5jb25zdCBBTklNQVRFX0xBQkVMX0hFQURFUl9DTEFTUzogc3RyaW5nID0gXCIuXCIgKyBBTklNQVRFX0xBQkVMX0hFQURFUjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1jb21wb25lbnQtZmxvYXRpbmctaGVhZGVyLXBhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsb2F0aW5nLWhlYWRlci1wYW5lbC1jb250YWluZXJcIj5cbiAgICAgICAgPHBoeC1jb21wb25lbnQtd3JhcHBlclxuICAgICAgICAgICAgW3R5cGVdPVwiZ2V0SGVhZGVyVHlwZSgpXCJcbiAgICAgICAgICAgIFtkYXRhXT1cImdldERhdGEoKVwiXG4gICAgICAgICAgICBbaGFuZGxlcl09XCJfaGVhZGVySGFuZGxlclwiXG4gICAgICAgICAgICBbZGF0YVBhcmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgIFttb2RlbF09XCJnZXRIZWFkZXJNb2RlbCgpXCI+XG4gICAgICAgIDwvcGh4LWNvbXBvbmVudC13cmFwcGVyPlxuICAgICAgICA8cGh4LWNvbXBvbmVudC13cmFwcGVyXG4gICAgICAgICAgICBbdHlwZV09XCJnZXRGbG9hdGluZ01lbnVUeXBlKClcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZ2V0RGF0YSgpXCJcbiAgICAgICAgICAgIFtoYW5kbGVyXT1cIl9mbG9hdGluZ01lbnVIYW5kbGVyXCJcbiAgICAgICAgICAgIFtkYXRhUGFyZW50XT1cInRoaXNcIlxuICAgICAgICAgICAgW21vZGVsXT1cImdldEZsb2F0aW5nTWVudU1vZGVsKClcIj5cbiAgICAgICAgPC9waHgtY29tcG9uZW50LXdyYXBwZXI+XG4gICAgICAgIDxwaHgtY29tcG9uZW50LXdyYXBwZXJcbiAgICAgICAgICAgIFt0eXBlXT1cImdldEJvZHlUeXBlKClcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZ2V0RGF0YSgpXCJcbiAgICAgICAgICAgIFtoYW5kbGVyXT1cIl9ib2R5SGFuZGxlclwiXG4gICAgICAgICAgICBbZGF0YVBhcmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgIFttb2RlbF09XCJnZXRCb2R5TW9kZWwoKVwiPlxuICAgICAgICA8L3BoeC1jb21wb25lbnQtd3JhcHBlcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuYFxufSlcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRGbG9hdGluZ0hlYWRlclBhbmVsIGV4dGVuZHMgQWJzdHJhY3RGbG9hdGluZ0hlYWRlclBhbmVsIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBASW5wdXQuXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YVxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERhdGE6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGF0YTogYW55O1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRlbGVnYXRlSGlzdG9yeTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkRpc2FibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGxvYWRpbmdFbmFibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGkxOG5LZXk6IHN0cmluZztcbiAgQElucHV0KCdpMThuQnlwYXNzJylcbiAgQE9wdGlvbignaTE4bkJ5cGFzcycpXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0RGF0YVZpZXdcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBmaWVsZDogc3RyaW5nO1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdElucHV0RGF0YVZpZXdcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgdHlwZU9mRGF0YTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHJlYWRPbmx5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBASTE4TigpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaGVscDogYW55O1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdEZsb2F0aW5nSGVhZGVyUGFuZWxcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBzY3JvbGxPZmZzZXQ6IG51bWJlcjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBhbGxvd1Nob3dGbG9hdGluZ0hlYWRlclBhbmVsOiBib29sZWFuO1xuICAvLyAtLS0gU2VsZlxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJpdmF0ZSBmbG9hdGluZ0hlYWRlckxhYmVsOiBzdHJpbmc7XG4gIC8vIEBJbnB1dCgpXG4gIC8vIEBPcHRpb24oKVxuICAvLyBwcml2YXRlIGZsb2F0aW5nSGVhZGVyVHlwZTogYW55O1xuICAvLyBASW5wdXQoKVxuICAvLyBAT3B0aW9uKClcbiAgLy8gcHJpdmF0ZSBmbG9hdGluZ0hlYWRlck1vZGVsOiBhbnk7XG4gIC8vIHByaXZhdGUgZmxvYXRpbmdIZWFkZXJJbnN0YW5jZTogYW55O1xuICAvLyBwcml2YXRlIGZsb2F0aW5nSGVhZGVySGFuZGxlcjogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcml2YXRlIGhlYWRlclR5cGU6IFR5cGU8YW55PjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgaGVhZGVyTW9kZWw6IGFueTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgaGVhZGVySGFuZGxlcjogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcml2YXRlIGZsb2F0aW5nTWVudVR5cGU6IFR5cGU8YW55PjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgZmxvYXRpbmdNZW51TW9kZWw6IGFueTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgZmxvYXRpbmdNZW51SGFuZGxlcjogRnVuY3Rpb25cbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgYm9keVR5cGU6IFR5cGU8YW55PjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgYm9keU1vZGVsOiBhbnk7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcml2YXRlIGJvZHlIYW5kbGVyOiBGdW5jdGlvbjtcblxuICBwcml2YXRlIGhlaWdodEZsb2F0aW5nOiBudW1iZXI7XG4gIHByaXZhdGUgaGVhZGVySW5zdGFuY2U6IGFueTtcbiAgcHJpdmF0ZSBmbG9hdGluZ01lbnVJbnN0YW5jZTogYW55O1xuICBwcml2YXRlIGJvZHlJbnN0YW5jZTogYW55O1xuICBwdWJsaWMgX2hlYWRlckhhbmRsZXI6IEZ1bmN0aW9uO1xuICBwdWJsaWMgX2Zsb2F0aW5nTWVudUhhbmRsZXI6IEZ1bmN0aW9uO1xuICBwdWJsaWMgX2JvZHlIYW5kbGVyOiBGdW5jdGlvbjtcblxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQE91dHB1dC5cbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXG4gIEBPdXRwdXQoJ3BoeExvYWQnKVxuICBAT3B0aW9uKCdsb2FkJylcbiAgcHJvdGVjdGVkIGxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0RGF0YVZpZXdcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RJbnB1dERhdGFWaWV3XG4gIEBPdXRwdXQoJ3BoeFN0YXJ0VmFsaWRhdGUnKVxuICBAT3B0aW9uKCdzdGFydFZhbGlkYXRlJylcbiAgcHJvdGVjdGVkIHN0YXJ0VmFsaWRhdGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeEVuZFZhbGlkYXRlJylcbiAgQE9wdGlvbignZW5kVmFsaWRhdGUnKVxuICBwcm90ZWN0ZWQgZW5kVmFsaWRhdGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUZvY3VzJylcbiAgQE9wdGlvbignYmVmb3JlRm9jdXMnKVxuICBwcm90ZWN0ZWQgYmVmb3JlRm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeEZvY3VzJylcbiAgQE9wdGlvbignZm9jdXMnKVxuICBwcm90ZWN0ZWQgZm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUxvc3RGb2N1cycpXG4gIEBPcHRpb24oJ2JlZm9yZUxvc3RGb2N1cycpXG4gIHByb3RlY3RlZCBiZWZvcmVMb3N0Rm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeExvc3RGb2N1cycpXG4gIEBPcHRpb24oJ2xvc3RGb2N1cycpXG4gIHByb3RlY3RlZCBsb3N0Rm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUNoYW5nZScpXG4gIEBPcHRpb24oJ2JlZm9yZUNoYW5nZScpXG4gIHByb3RlY3RlZCBiZWZvcmVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeENoYW5nZScpXG4gIEBPcHRpb24oJ2NoYW5nZScpXG4gIHByb3RlY3RlZCBjaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgbmVlZEZvY3VzU2VydmljZTogTmVlZEZvY3VzU2VydmljZSkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIG5lZWRGb2N1c1NlcnZpY2UpO1xuXG4gICAgdGhpcy5lbGVtZW50UmVmID0gZWxlbWVudFJlZjtcbiAgICB0aGlzLnNldEFsd2F5c1Nob3dIZWFkZXIoZmFsc2UpO1xuXG4gICAgLy8gdGhpcy5mbG9hdGluZ0hlYWRlckhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIC8vICAgdGhpcy5mbG9hdGluZ0hlYWRlckluc3RhbmNlID0gZXZlbnQuaW5zdGFuY2U7XG4gICAgLy8gfTtcblxuICAgIHRoaXMuX2hlYWRlckhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5oZWFkZXJJbnN0YW5jZSA9IGV2ZW50Lmluc3RhbmNlO1xuXG4gICAgICBpZiAodGhpcy5oZWFkZXJIYW5kbGVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmhlYWRlckhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJIYW5kbGVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5fZmxvYXRpbmdNZW51SGFuZGxlciA9IChldmVudDogYW55KSA9PiB7XG4gICAgICB0aGlzLmZsb2F0aW5nTWVudUluc3RhbmNlID0gZXZlbnQuaW5zdGFuY2U7XG5cbiAgICAgIGlmICh0aGlzLmZsb2F0aW5nTWVudUhhbmRsZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZmxvYXRpbmdNZW51SGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmZsb2F0aW5nTWVudUhhbmRsZXIoZXZlbnQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLl9ib2R5SGFuZGxlciA9IChldmVudDogYW55KSA9PiB7XG4gICAgICB0aGlzLmJvZHlJbnN0YW5jZSA9IGV2ZW50Lmluc3RhbmNlO1xuXG4gICAgICBpZiAodGhpcy5ib2R5SGFuZGxlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5ib2R5SGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmJvZHlIYW5kbGVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbCwgdHJ1ZSk7XG4gICAgICB0aGlzLnNldFNjcm9sbE9mZnNldFN0YXJ0KDUzKTtcbiAgICAgIHRoaXMuaGVpZ2h0RmxvYXRpbmcgPSA4MjtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBwdWJsaWMgc2Nyb2xsID0gKGV2ZW50OiBhbnkpOiB2b2lkID0+IHtcblxuICAgIGxldCBzY3JvbGxUb3AgPSAkKGV2ZW50LnRhcmdldCkuc2Nyb2xsVG9wKCk7XG4gICAgbGV0IGJvZHlZID0gKHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0RW5kKCkgPT09IG51bGwgfHwgdGhpcy5nZXRTY3JvbGxPZmZzZXRFbmQoKSA9PT0gdW5kZWZpbmVkKSA/ICQodGhpcy5nZXRCb2R5SW5zdGFuY2UoKS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLnBvc2l0aW9uKCkudG9wIC0gdGhpcy5nZXRTY3JvbGxPZmZzZXRTdGFydCgpIDogdGhpcy5nZXRTY3JvbGxPZmZzZXRFbmQoKSAtIHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0U3RhcnQoKTtcblxuICAgIGlmIChzY3JvbGxUb3AgPD0gYm9keVkpIHtcbiAgICAgICQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmZpbmQoQU5JTUFURV9MQUJFTF9IRUFERVJfQ0xBU1MpLmNzcyh7XG4gICAgICAgICdtYXJnaW4tdG9wJzogKHRoaXMuaGVpZ2h0RmxvYXRpbmcgLSB0aGlzLmhlaWdodEZsb2F0aW5nICogKHNjcm9sbFRvcCAvIGJvZHlZKSkgKyAncHgnLFxuICAgICAgICAnb3BhY2l0eSc6IChzY3JvbGxUb3AgLyBib2R5WSkgKyAnJ1xuICAgICAgfSk7XG5cbiAgICAgICQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmZpbmQoQU5JTUFURV9MQUJFTF9IRUFERVJfQ0xBU1MpLmNzcyh7XG4gICAgICAgICdtYXJnaW4tdG9wJzogKHRoaXMuaGVpZ2h0RmxvYXRpbmcgLSB0aGlzLmhlaWdodEZsb2F0aW5nICogKHNjcm9sbFRvcCAvIGJvZHlZKSkgKyAncHgnLFxuICAgICAgICAnb3BhY2l0eSc6IChzY3JvbGxUb3AgLyBib2R5WSkgKyAnJ1xuICAgICAgfSk7XG5cbiAgICAgICQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmZpbmQoQU5JTUFURV9NT1ZFX1VQX0NMQVNTKS5jc3Moe1xuICAgICAgICAnbWFyZ2luLXRvcCc6ICh0aGlzLmhlaWdodEZsb2F0aW5nIC0gdGhpcy5oZWlnaHRGbG9hdGluZyAqIChzY3JvbGxUb3AgLyBib2R5WSkpICsgJ3B4JyxcbiAgICAgIH0pO1xuXG4gICAgICAkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5maW5kKEFOSU1BVEVfT1BBQ0lUWV9DTEFTUykuY3NzKHtcbiAgICAgICAgJ29wYWNpdHknOiAoc2Nyb2xsVG9wIC8gYm9keVkpICsgJydcbiAgICAgIH0pO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgICQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmZpbmQoQU5JTUFURV9MQUJFTF9IRUFERVJfQ0xBU1MpLmNzcyh7XG4gICAgICAgICdtYXJnaW4tdG9wJzogJzBweCcsXG4gICAgICAgICdvcGFjaXR5JzogJzEnXG4gICAgICB9KTtcblxuICAgICAgJCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZmluZChBTklNQVRFX01PVkVfVVBfQ0xBU1MpLmNzcyh7XG4gICAgICAgICdtYXJnaW4tdG9wJzogJzBweCcsXG4gICAgICB9KTtcblxuICAgICAgJCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZmluZChBTklNQVRFX09QQUNJVFlfQ0xBU1MpLmNzcyh7XG4gICAgICAgICdvcGFjaXR5JzogJzEnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLm9uU2Nyb2xsKGV2ZW50KTtcbiAgfTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblZhbGlkYXRpb25FbmQoaW5wdXRWYWx1ZTogYW55LCByZXN1bHRzOiBWYWxpZGF0aW9uUmVzdWx0W10pOiB2b2lkIHtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRhdGFDaGFuZ2UoZGF0YTogYW55LCBpbnB1dFZhbDogYW55KTogdm9pZCB7XG4gIH1cblxuICBwcm90ZWN0ZWQgZG9Gb2N1cygkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gIH1cblxuICBwcm90ZWN0ZWQgZG9Mb3N0Rm9jdXMoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIGlzU2VsZkRhdGFEaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2VsZlNhdmVEYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIHNlbGZSZXNldERhdGEoKTogdm9pZCB7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmxvYXRpbmdIZWFkZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZsb2F0aW5nSGVhZGVyTGFiZWw7XG4gIH1cblxuICBwdWJsaWMgc2V0RmxvYXRpbmdIZWFkZXJMYWJlbChmbG9hdGluZ0hlYWRlckxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZsb2F0aW5nSGVhZGVyTGFiZWwgPSBmbG9hdGluZ0hlYWRlckxhYmVsO1xuICB9XG5cbiAgcHVibGljIGdldEhlYWRlclR5cGUoKTogVHlwZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJUeXBlO1xuICB9XG5cbiAgcHVibGljIHNldEhlYWRlclR5cGUoaGVhZGVyVHlwZTogVHlwZTxhbnk+KSB7XG4gICAgdGhpcy5oZWFkZXJUeXBlID0gaGVhZGVyVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGbG9hdGluZ01lbnVUeXBlKCk6IFR5cGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRpbmdNZW51VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRGbG9hdGluZ01lbnVUeXBlKGZsb2F0aW5nTWVudVR5cGU6IFR5cGU8YW55Pikge1xuICAgIHRoaXMuZmxvYXRpbmdNZW51VHlwZSA9IGZsb2F0aW5nTWVudVR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0Qm9keVR5cGUoKTogVHlwZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5ib2R5VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRCb2R5VHlwZShib2R5VHlwZTogVHlwZTxhbnk+KSB7XG4gICAgdGhpcy5ib2R5VHlwZSA9IGJvZHlUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldEhlYWRlck1vZGVsKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyTW9kZWw7XG4gIH1cblxuICBwdWJsaWMgc2V0SGVhZGVyTW9kZWwoaGVhZGVyTW9kZWw6IGFueSkge1xuICAgIHRoaXMuaGVhZGVyTW9kZWwgPSBoZWFkZXJNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGbG9hdGluZ01lbnVNb2RlbCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZsb2F0aW5nTWVudU1vZGVsO1xuICB9XG5cbiAgcHVibGljIHNldEZsb2F0aW5nTWVudU1vZGVsKGZsb2F0aW5nTWVudU1vZGVsOiBhbnkpIHtcbiAgICB0aGlzLmZsb2F0aW5nTW