UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

335 lines (334 loc) 26.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { AbstractInputDataView } from './AbstractInputDataView'; import { Option } from '../../../decorator/Option.decorator'; /** * @abstract */ var AbstractHasFormatterInputDataView = /** @class */ (function (_super) { tslib_1.__extends(AbstractHasFormatterInputDataView, _super); function AbstractHasFormatterInputDataView(elementRef, formatterFactory, needFocusService) { var _this = _super.call(this, elementRef, needFocusService) || this; _this.formatterFactory = formatterFactory; _this._formatterInited = false; return _this; } /** * @param {?} formatter * @param {?} data * @return {?} */ AbstractHasFormatterInputDataView.resolveFormattedData = /** * @param {?} formatter * @param {?} data * @return {?} */ function (formatter, data) { if (formatter !== null && typeof formatter !== 'undefined') { return formatter.format(data); } return data; }; /** * @param {?} formatter * @param {?} formattedData * @return {?} */ AbstractHasFormatterInputDataView.parseFormattedData = /** * @param {?} formatter * @param {?} formattedData * @return {?} */ function (formatter, formattedData) { if (formatter !== null && typeof formatter !== 'undefined') { return formatter.parse(formattedData); } return formattedData; }; Object.defineProperty(AbstractHasFormatterInputDataView.prototype, "formattedData", { get: /** * @return {?} */ function () { if (!this.formatterUsePropertyValue && this._formatterInited) { return this.getFormattedData(); } else { return this._formattedData; } }, set: /** * @param {?} formattedData * @return {?} */ function (formattedData) { this.setFormattedData(formattedData); }, enumerable: true, configurable: true }); /** * @return {?} */ AbstractHasFormatterInputDataView.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); // Initialize formatter. if (this.formatter !== null && this.formatter !== undefined) { // Call setFormatter() method to initialize. this.setFormatter(this.formatter); } else if (this.formatterName !== null && this.formatterName !== undefined) { // Call setFormatterName() method to initialize. this.setFormatterName(this.formatterName); } else { this.formatter = null; this.formatterName = null; } this._formatterInited = true; }; // Override to auto parse "any" object value to "string" data type. /** * @param {?} typeOfData * @param {?} inputVal * @return {?} */ AbstractHasFormatterInputDataView.prototype._castValueToData = /** * @param {?} typeOfData * @param {?} inputVal * @return {?} */ function (typeOfData, inputVal) { var /** @type {?} */ type = typeOfData; if (inputVal === null || inputVal === undefined) { // Return default behavior from super. return _super.prototype._castValueToData.call(this, typeOfData, inputVal); } if (type === null || type === undefined || type.toLowerCase() === AbstractInputDataView.TYPE_AUTO) { // Auto resolve "typeOfData" of inputVal. type = typeof inputVal; } if (type === 'string' && typeof inputVal !== 'string') { // If inputVal is not string but data type is string, try to parse it to string using formatter. if (this.formatter !== null && this.formatter !== undefined) { return this.formatter.format(inputVal); } } // Return default behavior from super. return _super.prototype._castValueToData.call(this, typeOfData, inputVal); }; /** * @param {?} data * @return {?} */ AbstractHasFormatterInputDataView.prototype.setData = /** * @param {?} data * @return {?} */ function (data) { _super.prototype.setData.call(this, data); this._formattedData = this.getFormattedData(); }; /** * @param {?} inputVal * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractHasFormatterInputDataView.prototype.setInputValue = /** * @param {?} inputVal * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (inputVal, $event, fireEvent) { _super.prototype.setInputValue.call(this, inputVal, $event, fireEvent); this._formattedData = this.getFormattedData(); }; /** * @return {?} */ AbstractHasFormatterInputDataView.prototype.isFormatterUsePropertyValue = /** * @return {?} */ function () { return this.formatterUsePropertyValue; }; /** * @return {?} */ AbstractHasFormatterInputDataView.prototype.getFormatterName = /** * @return {?} */ function () { return this.formatterName; }; /** * @param {?} formatterName * @return {?} */ AbstractHasFormatterInputDataView.prototype.setFormatterName = /** * @param {?} formatterName * @return {?} */ function (formatterName) { this.formatterName = formatterName; var /** @type {?} */ formatter = null; if (this.formatterFactory !== null && typeof this.formatterFactory !== 'undefined') { formatter = this.formatterFactory.createFormatter(formatterName); } this.formatter = formatter; this.setFormatterOptions(this.formatterOptions); }; /** * @return {?} */ AbstractHasFormatterInputDataView.prototype.getFormatterOptions = /** * @return {?} */ function () { return this.formatterOptions; }; /** * @param {?} options * @return {?} */ AbstractHasFormatterInputDataView.prototype.setFormatterOptions = /** * @param {?} options * @return {?} */ function (options) { this.formatterOptions = options; if (this.formatter !== null && typeof this.formatter !== 'undefined') { var /** @type {?} */ f = this.formatter; if (typeof f.setOptions === 'function') { f.setOptions(this.formatterOptions); } } this._formattedData = this.getFormattedData(); }; /** * @return {?} */ AbstractHasFormatterInputDataView.prototype.getFormatter = /** * @return {?} */ function () { return this.formatter; }; /** * @param {?} formatter * @return {?} */ AbstractHasFormatterInputDataView.prototype.setFormatter = /** * @param {?} formatter * @return {?} */ function (formatter) { this.formatter = formatter; if (this.formatter !== null && typeof this.formatter !== 'undefined') { this.formatterName = this.formatter.getName(); } else { this.formatterName = null; } this.setFormatterOptions(this.formatterOptions); }; /** * @param {?} options * @return {?} */ AbstractHasFormatterInputDataView.prototype.setOptions = /** * @param {?} options * @return {?} */ function (options) { _super.prototype.setOptions.call(this, options); if (this.formatter !== null && typeof this.formatter !== 'undefined') { this.setFormatter(this.formatter); } else if (this.formatterName !== null && typeof this.formatterName !== 'undefined') { this.setFormatterName(this.formatterName); } else { this.formatter = null; this.formatterName = null; } }; /** * @return {?} */ AbstractHasFormatterInputDataView.prototype.getFormattedData = /** * @return {?} */ function () { return AbstractHasFormatterInputDataView.resolveFormattedData(this.formatter, this.getInputValue()); }; /** * @param {?} formattedData * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractHasFormatterInputDataView.prototype.setFormattedData = /** * @param {?} formattedData * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (formattedData, $event, fireEvent) { this._formattedData = formattedData; var /** @type {?} */ parsed = AbstractHasFormatterInputDataView.parseFormattedData(this.formatter, formattedData); this.setInputValue(parsed, $event, fireEvent); }; /** * @return {?} */ AbstractHasFormatterInputDataView.prototype.refreshFormattedData = /** * @return {?} */ function () { this._formattedData = this.getFormattedData(); }; tslib_1.__decorate([ Option('formatter.name'), tslib_1.__metadata("design:type", String) ], AbstractHasFormatterInputDataView.prototype, "formatterName", void 0); tslib_1.__decorate([ Option('formatter.options'), tslib_1.__metadata("design:type", Object) ], AbstractHasFormatterInputDataView.prototype, "formatterOptions", void 0); tslib_1.__decorate([ Option('formatter.instance'), tslib_1.__metadata("design:type", Object) ], AbstractHasFormatterInputDataView.prototype, "formatter", void 0); tslib_1.__decorate([ Option('formatter.usePropertyValue'), tslib_1.__metadata("design:type", Boolean) ], AbstractHasFormatterInputDataView.prototype, "formatterUsePropertyValue", void 0); return AbstractHasFormatterInputDataView; }(AbstractInputDataView)); export { AbstractHasFormatterInputDataView }; function AbstractHasFormatterInputDataView_tsickle_Closure_declarations() { /** @type {?} */ AbstractHasFormatterInputDataView.prototype._formattedData; /** @type {?} */ AbstractHasFormatterInputDataView.prototype.formatterName; /** @type {?} */ AbstractHasFormatterInputDataView.prototype.formatterOptions; /** @type {?} */ AbstractHasFormatterInputDataView.prototype.formatter; /** @type {?} */ AbstractHasFormatterInputDataView.prototype.formatterUsePropertyValue; /** @type {?} */ AbstractHasFormatterInputDataView.prototype.formatterFactory; /** @type {?} */ AbstractHasFormatterInputDataView.prototype._formatterInited; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RIYXNGb3JtYXR0ZXJJbnB1dERhdGFWaWV3LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L2lucHV0L0Fic3RyYWN0SGFzRm9ybWF0dGVySW5wdXREYXRhVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7SUFJRyw2REFBcUI7SUE2Q25GLDJDQUFZLFVBQXNCLEVBQUUsZ0JBQWtDLEVBQUUsZ0JBQWtDO1FBQTFHLFlBQ0Usa0JBQU0sVUFBVSxFQUFFLGdCQUFnQixDQUFDLFNBSXBDO1FBRkMsS0FBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLEtBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7O0tBQy9COzs7Ozs7SUFoRGEsc0RBQW9COzs7OztjQUFDLFNBQXFCLEVBQUUsSUFBUztRQUNqRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDOzs7Ozs7O0lBR0Esb0RBQWtCOzs7OztjQUFDLFNBQXFCLEVBQUUsYUFBa0I7UUFDeEUsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQzs7MEJBa0JaLDREQUFhOzs7OztZQUN0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QUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7OztJQUcvRiw0REFBZ0I7Ozs7OztjQUFDLGFBQWtCLEVBQUUsTUFBYyxFQUFFLFNBQW1CO1FBQzdFLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBRXBDLHFCQUFJLE1BQU0sR0FBUSxpQ0FBaUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRXRHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQzs7Ozs7SUFHekMsZ0VBQW9COzs7O1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7OztRQXRLL0MsTUFBTSxDQUFDLGdCQUFnQixDQUFDOzs7O1FBRXhCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQzs7OztRQUUzQixNQUFNLENBQUMsb0JBQW9CLENBQUM7Ozs7UUFFNUIsTUFBTSxDQUFDLDRCQUE0QixDQUFDOzs7NENBbEN2QztFQVFnRSxxQkFBcUI7U0FBL0QsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdElucHV0RGF0YVZpZXcgfSBmcm9tICcuL0Fic3RyYWN0SW5wdXREYXRhVmlldyc7XG5pbXBvcnQgeyBJSGFzRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vSUhhc0Zvcm1hdHRlcic7XG5pbXBvcnQgeyBJRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmUvZm9ybWF0dGVyL0lGb3JtYXR0ZXInO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgRm9ybWF0dGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvRm9ybWF0dGVyRmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IE5lZWRGb2N1c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL05lZWRGb2N1c1NlcnZpY2Uuc2VydmljZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEhhc0Zvcm1hdHRlcklucHV0RGF0YVZpZXcgZXh0ZW5kcyBBYnN0cmFjdElucHV0RGF0YVZpZXcgaW1wbGVtZW50cyBPbkluaXQsIElIYXNGb3JtYXR0ZXIge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVzb2x2ZUZvcm1hdHRlZERhdGEoZm9ybWF0dGVyOiBJRm9ybWF0dGVyLCBkYXRhOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtYXR0ZXIgIT09IG51bGwgJiYgdHlwZW9mIGZvcm1hdHRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUZvcm1hdHRlZERhdGEoZm9ybWF0dGVyOiBJRm9ybWF0dGVyLCBmb3JtYXR0ZWREYXRhOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtYXR0ZXIgIT09IG51bGwgJiYgdHlwZW9mIGZvcm1hdHRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmb3JtYXR0ZXIucGFyc2UoZm9ybWF0dGVkRGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGE7XG4gIH1cblxuICBwdWJsaWMgX2Zvcm1hdHRlZERhdGE6IGFueTtcblxuICBAT3B0aW9uKCdmb3JtYXR0ZXIubmFtZScpXG4gIHByb3RlY3RlZCBmb3JtYXR0ZXJOYW1lOiBzdHJpbmc7XG4gIEBPcHRpb24oJ2Zvcm1hdHRlci5vcHRpb25zJylcbiAgcHJvdGVjdGVkIGZvcm1hdHRlck9wdGlvbnM6IGFueTtcbiAgQE9wdGlvbignZm9ybWF0dGVyLmluc3RhbmNlJylcbiAgcHJvdGVjdGVkIGZvcm1hdHRlcjogSUZvcm1hdHRlcjtcbiAgQE9wdGlvbignZm9ybWF0dGVyLnVzZVByb3BlcnR5VmFsdWUnKVxuICBwcm90ZWN0ZWQgZm9ybWF0dGVyVXNlUHJvcGVydHlWYWx1ZTogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgZm9ybWF0dGVyRmFjdG9yeTogRm9ybWF0dGVyRmFjdG9yeTtcbiAgcHJvdGVjdGVkIF9mb3JtYXR0ZXJJbml0ZWQ6IGJvb2xlYW47XG5cbiAgLy8gVXNlIHRoaXMgcHJvcGVydHkgYWNjZXNzb3IgbWV0aG9kIHRvIGJpbmQgd2l0aCBodG1sIHRlbXBsYXRlLlxuICBwdWJsaWMgZ2V0IGZvcm1hdHRlZERhdGEoKTogYW55IHtcbiAgICBpZiAoIXRoaXMuZm9ybWF0dGVyVXNlUHJvcGVydHlWYWx1ZSAmJiB0aGlzLl9mb3JtYXR0ZXJJbml0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdHRlZERhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZERhdGE7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBmb3JtYXR0ZWREYXRhKGZvcm1hdHRlZERhdGE6IGFueSkge1xuICAgIHRoaXMuc2V0Rm9ybWF0dGVkRGF0YShmb3JtYXR0ZWREYXRhKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGZvcm1hdHRlckZhY3Rvcnk6IEZvcm1hdHRlckZhY3RvcnksIG5lZWRGb2N1c1NlcnZpY2U6IE5lZWRGb2N1c1NlcnZpY2UpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCBuZWVkRm9jdXNTZXJ2aWNlKTtcblxuICAgIHRoaXMuZm9ybWF0dGVyRmFjdG9yeSA9IGZvcm1hdHRlckZhY3Rvcnk7XG4gICAgdGhpcy5fZm9ybWF0dGVySW5pdGVkID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIEluaXRpYWxpemUgZm9ybWF0dGVyLlxuICAgIGlmICh0aGlzLmZvcm1hdHRlciAhPT0gbnVsbCAmJiB0aGlzLmZvcm1hdHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBDYWxsIHNldEZvcm1hdHRlcigpIG1ldGhvZCB0byBpbml0aWFsaXplLlxuICAgICAgdGhpcy5zZXRGb3JtYXR0ZXIodGhpcy5mb3JtYXR0ZXIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtYXR0ZXJOYW1lICE9PSBudWxsICYmIHRoaXMuZm9ybWF0dGVyTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBDYWxsIHNldEZvcm1hdHRlck5hbWUoKSBtZXRob2QgdG8gaW5pdGlhbGl6ZS5cbiAgICAgIHRoaXMuc2V0Rm9ybWF0dGVyTmFtZSh0aGlzLmZvcm1hdHRlck5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1hdHRlciA9IG51bGw7XG4gICAgICB0aGlzLmZvcm1hdHRlck5hbWUgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLl9mb3JtYXR0ZXJJbml0ZWQgPSB0cnVlO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgdG8gYXV0byBwYXJzZSBcImFueVwiIG9iamVjdCB2YWx1ZSB0byBcInN0cmluZ1wiIGRhdGEgdHlwZS5cbiAgcHJvdGVjdGVkIF9jYXN0VmFsdWVUb0RhdGEodHlwZU9mRGF0YTogc3RyaW5nLCBpbnB1dFZhbDogYW55KTogYW55IHtcbiAgICBsZXQgdHlwZTogc3RyaW5nID0gdHlwZU9mRGF0YTtcblxuICAgIGlmIChpbnB1dFZhbCA9PT0gbnVsbCB8fCBpbnB1dFZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBSZXR1cm4gZGVmYXVsdCBiZWhhdmlvciBmcm9tIHN1cGVyLlxuICAgICAgcmV0dXJuIHN1cGVyLl9jYXN0VmFsdWVUb0RhdGEodHlwZU9mRGF0YSwgaW5wdXRWYWwpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZS50b0xvd2VyQ2FzZSgpID09PSBBYnN0cmFjdElucHV0RGF0YVZpZXcuVFlQRV9BVVRPKSB7XG4gICAgICAvLyBBdXRvIHJlc29sdmUgXCJ0eXBlT2ZEYXRhXCIgb2YgaW5wdXRWYWwuXG4gICAgICB0eXBlID0gdHlwZW9mIGlucHV0VmFsO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgaW5wdXRWYWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBJZiBpbnB1dFZhbCBpcyBub3Qgc3RyaW5nIGJ1dCBkYXRhIHR5cGUgaXMgc3RyaW5nLCB0cnkgdG8gcGFyc2UgaXQgdG8gc3RyaW5nIHVzaW5nIGZvcm1hdHRlci5cbiAgICAgIGlmICh0aGlzLmZvcm1hdHRlciAhPT0gbnVsbCAmJiB0aGlzLmZvcm1hdHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5mb3JtYXQoaW5wdXRWYWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBkZWZhdWx0IGJlaGF2aW9yIGZyb20gc3VwZXIuXG4gICAgcmV0dXJuIHN1cGVyLl9jYXN0VmFsdWVUb0RhdGEodHlwZU9mRGF0YSwgaW5wdXRWYWwpO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgc2V0RGF0YSgpIHRvIGF1dG8gcmVzb2x2ZSBcInRoaXMuX2Zvcm1hdHRlZERhdGFcIi5cbiAgcHVibGljIHNldERhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuc2V0RGF0YShkYXRhKTtcblxuICAgIHRoaXMuX2Zvcm1hdHRlZERhdGEgPSB0aGlzLmdldEZvcm1hdHRlZERhdGEoKTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIHNldElucHV0VmFsdWUoKSB0byBhdXRvIHJlc29sdmUgXCJ0aGlzLl9mb3JtYXR0ZWREYXRhXCIuXG4gIHB1YmxpYyBzZXRJbnB1dFZhbHVlKGlucHV0VmFsOiBhbnksICRldmVudD86IEV2ZW50LCBmaXJlRXZlbnQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0SW5wdXRWYWx1ZShpbnB1dFZhbCwgJGV2ZW50LCBmaXJlRXZlbnQpO1xuXG4gICAgdGhpcy5fZm9ybWF0dGVkRGF0YSA9IHRoaXMuZ2V0Rm9ybWF0dGVkRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGlzRm9ybWF0dGVyVXNlUHJvcGVydHlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXJVc2VQcm9wZXJ0eVZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdHRlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXJOYW1lO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1hdHRlck5hbWUoZm9ybWF0dGVyTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtYXR0ZXJOYW1lID0gZm9ybWF0dGVyTmFtZTtcblxuICAgIGxldCBmb3JtYXR0ZXI6IGFueSA9IG51bGw7XG4gICAgaWYgKHRoaXMuZm9ybWF0dGVyRmFjdG9yeSAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5mb3JtYXR0ZXJGYWN0b3J5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZm9ybWF0dGVyID0gdGhpcy5mb3JtYXR0ZXJGYWN0b3J5LmNyZWF0ZUZvcm1hdHRlcihmb3JtYXR0ZXJOYW1lKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG5cbiAgICB0aGlzLnNldEZvcm1hdHRlck9wdGlvbnModGhpcy5mb3JtYXR0ZXJPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtYXR0ZXJPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyT3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBzZXRGb3JtYXR0ZXJPcHRpb25zKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybWF0dGVyT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBpZiAodGhpcy5mb3JtYXR0ZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZm9ybWF0dGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IGY6IGFueSA9IHRoaXMuZm9ybWF0dGVyO1xuICAgICAgaWYgKHR5cGVvZiBmLnNldE9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZi5zZXRPcHRpb25zKHRoaXMuZm9ybWF0dGVyT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fZm9ybWF0dGVkRGF0YSA9IHRoaXMuZ2V0Rm9ybWF0dGVkRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdHRlcigpOiBJRm9ybWF0dGVyIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcjogSUZvcm1hdHRlcik6IHZvaWQge1xuICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyO1xuXG4gICAgaWYgKHRoaXMuZm9ybWF0dGVyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmZvcm1hdHRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuZm9ybWF0dGVyTmFtZSA9IHRoaXMuZm9ybWF0dGVyLmdldE5hbWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtYXR0ZXJOYW1lID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnNldEZvcm1hdHRlck9wdGlvbnModGhpcy5mb3JtYXR0ZXJPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRPcHRpb25zKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIHN1cGVyLnNldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICBpZiAodGhpcy5mb3JtYXR0ZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZm9ybWF0dGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5zZXRGb3JtYXR0ZXIodGhpcy5mb3JtYXR0ZXIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtYXR0ZXJOYW1lICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmZvcm1hdHRlck5hbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLnNldEZvcm1hdHRlck5hbWUodGhpcy5mb3JtYXR0ZXJOYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtYXR0ZXIgPSBudWxsO1xuICAgICAgdGhpcy5mb3JtYXR0ZXJOYW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybWF0dGVkRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiBBYnN0cmFjdEhhc0Zvcm1hdHRlcklucHV0RGF0YVZpZXcucmVzb2x2ZUZvcm1hdHRlZERhdGEodGhpcy5mb3JtYXR0ZXIsIHRoaXMuZ2V0SW5wdXRWYWx1ZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRGb3JtYXR0ZWREYXRhKGZvcm1hdHRlZERhdGE6IGFueSwgJGV2ZW50PzogRXZlbnQsIGZpcmVFdmVudD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtYXR0ZWREYXRhID0gZm9ybWF0dGVkRGF0YTtcblxuICAgIGxldCBwYXJzZWQ6IGFueSA9IEFic3RyYWN0SGFzRm9ybWF0dGVySW5wdXREYXRhVmlldy5wYXJzZUZvcm1hdHRlZERhdGEodGhpcy5mb3JtYXR0ZXIsIGZvcm1hdHRlZERhdGEpO1xuXG4gICAgdGhpcy5zZXRJbnB1dFZhbHVlKHBhcnNlZCwgJGV2ZW50LCBmaXJlRXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hGb3JtYXR0ZWREYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1hdHRlZERhdGEgPSB0aGlzLmdldEZvcm1hdHRlZERhdGEoKTtcbiAgfVxufVxuIl19