/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes} checked by tsc
 */
import * as tslib_1 from "tslib";
import { EventEmitter, Input, Output } from '@angular/core';
/**
 * @record
 */
export function IValueChangedEventArgs() { }
function IValueChangedEventArgs_tsickle_Closure_declarations() {
    /** @type {?} */
    IValueChangedEventArgs.prototype.oldValue;
    /** @type {?} */
    IValueChangedEventArgs.prototype.newValue;
}
/**
 * @abstract
 */
var ItemPropertyValueChanged = /** @class */ (function () {
    function ItemPropertyValueChanged(propName) {
        this.valueChanged = new EventEmitter();
        this._propName = propName;
    }
    Object.defineProperty(ItemPropertyValueChanged.prototype, "object", {
        get: /**
         * @return {?}
         */
        function () {
            return this._object;
        },
        set: /**
         * @param {?} value
         * @return {?}
         */
        function (value) {
            if (value) {
                this._object = value;
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(ItemPropertyValueChanged.prototype, "value", {
        get: /**
         * @return {?}
         */
        function () {
            return (this.object) ? this.object[this._propName] : null;
        },
        set: /**
         * @param {?} value
         * @return {?}
         */
        function (value) {
            this.onValueChanged(value);
        },
        enumerable: true,
        configurable: true
    });
    /**
     * @param {?} value
     * @return {?}
     */
    ItemPropertyValueChanged.prototype.onValueChanged = /**
     * @param {?} value
     * @return {?}
     */
    function (value) {
        var /** @type {?} */ currentValue = this.value;
        if (value !== currentValue) {
            this.object[this._propName] = value;
            this.valueChanged.emit({ oldValue: currentValue, newValue: value });
        }
    };
    ItemPropertyValueChanged.propDecorators = {
        "value": [{ type: Input },],
        "valueChanged": [{ type: Output },],
    };
    return ItemPropertyValueChanged;
}());
export { ItemPropertyValueChanged };
function ItemPropertyValueChanged_tsickle_Closure_declarations() {
    /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
    ItemPropertyValueChanged.propDecorators;
    /** @type {?} */
    ItemPropertyValueChanged.prototype._object;
    /** @type {?} */
    ItemPropertyValueChanged.prototype._propName;
    /** @type {?} */
    ItemPropertyValueChanged.prototype.valueChanged;
}
var ColumnChooserItemBase = /** @class */ (function (_super) {
    tslib_1.__extends(ColumnChooserItemBase, _super);
    function ColumnChooserItemBase(prop) {
        var _this = _super.call(this, prop) || this;
        _this.prop = prop;
        _this.indentation = 30;
        return _this;
    }
    Object.defineProperty(ColumnChooserItemBase.prototype, "column", {
        get: /**
         * @return {?}
         */
        function () {
            return this.object;
        },
        set: /**
         * @param {?} value
         * @return {?}
         */
        function (value) {
            if (value) {
                this.object = value;
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(ColumnChooserItemBase.prototype, "name", {
        get: /**
         * @return {?}
         */
        function () {
            return (this.column) ? ((this.column.header) ? this.column.header : this.column.field) : '';
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(ColumnChooserItemBase.prototype, "level", {
        get: /**
         * @return {?}
         */
        function () {
            return this.column.level;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(ColumnChooserItemBase.prototype, "calcIndent", {
        get: /**
         * @return {?}
         */
        function () {
            return this.indentation * this.level;
        },
        enumerable: true,
        configurable: true
    });
    ColumnChooserItemBase.propDecorators = {
        "column": [{ type: Input },],
        "indentation": [{ type: Input },],
        "container": [{ type: Input },],
    };
    return ColumnChooserItemBase;
}(ItemPropertyValueChanged));
export { ColumnChooserItemBase };
function ColumnChooserItemBase_tsickle_Closure_declarations() {
    /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
    ColumnChooserItemBase.propDecorators;
    /** @type {?} */
    ColumnChooserItemBase.prototype.indentation;
    /** @type {?} */
    ColumnChooserItemBase.prototype.container;
    /** @type {?} */
    ColumnChooserItemBase.prototype.prop;
}

//# sourceMappingURL=data:application/json;base64, 