// #region Imports
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { CssLength } from '@breadstone/mosaik-themes';
import { Dimensionable } from '../../../Behaviors/Dimensionable';
import { Fitable } from '../../../Behaviors/Fitable';
import { Variantable } from '../../../Behaviors/Variantable';
import { Property } from '../../../Decorators/PropertyDecorator';
import { Watch } from '../../../Decorators/WatchDecorator';
import { Fit } from '../../../Types/Fit';
import { Variant } from '../../../Types/Variant';
import { CustomElement } from '../../Abstracts/CustomElement';
// #endregion
/**
 * The `{@link ChartBaseElement}` element.
 *
 * @public
 * @abstract
 */
export class ChartBaseElement extends Variantable(Fitable(Dimensionable(CustomElement))) {
    // #region Fields
    _header;
    _subHeader;
    // #endregion
    // #region Ctor
    /**
     * @protected
     */
    constructor() {
        super();
        this._header = '';
        this._subHeader = '';
    }
    // #endregion
    // #region Properties
    /**
        * Gets or sets the `header` property.
        *
        * @public
        */
    get header() {
        return this._header;
    }
    set header(value) {
        if (this._header !== value) {
            this._header = value;
            this.requestUpdate('header');
        }
    }
    /**
     * Gets or sets the `subHeader` property.
     *
     * @public
     */
    get subHeader() {
        return this._subHeader;
    }
    set subHeader(value) {
        if (this._subHeader !== value) {
            this._subHeader = value;
            this.requestUpdate('subHeader');
        }
    }
    // #endregion
    // #region Methods
    /**
     * @protected
     */
    onVariantPropertyChanged(oldValue, newValue) {
        // override
    }
    /**
     * @protected
     */
    onFitPropertyChanged(oldValue, newValue) {
        // override
    }
    /**
     * @protected
     */
    onWidthPropertyChanged(oldValue, newValue) {
        // override
    }
    /**
     * @protected
     */
    onHeightPropertyChanged(oldValue, newValue) {
        // override
    }
    /**
     * @protected
     */
    onHeaderPropertyChanged(oldValue, newValue) {
        // override
    }
    /**
     * @protected
     */
    onSubHeaderPropertyChanged(oldValue, newValue) {
        // override
    }
}
__decorate([
    Property({ type: String }),
    __metadata("design:type", String),
    __metadata("design:paramtypes", [String])
], ChartBaseElement.prototype, "header", null);
__decorate([
    Property({ type: String }),
    __metadata("design:type", String),
    __metadata("design:paramtypes", [String])
], ChartBaseElement.prototype, "subHeader", null);
__decorate([
    Watch('variant'),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [String, String]),
    __metadata("design:returntype", void 0)
], ChartBaseElement.prototype, "onVariantPropertyChanged", null);
__decorate([
    Watch('fit'),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [String, String]),
    __metadata("design:returntype", void 0)
], ChartBaseElement.prototype, "onFitPropertyChanged", null);
__decorate([
    Watch('width'),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [Object, Object]),
    __metadata("design:returntype", void 0)
], ChartBaseElement.prototype, "onWidthPropertyChanged", null);
__decorate([
    Watch('height'),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [Object, Object]),
    __metadata("design:returntype", void 0)
], ChartBaseElement.prototype, "onHeightPropertyChanged", null);
__decorate([
    Watch('header'),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [String, String]),
    __metadata("design:returntype", void 0)
], ChartBaseElement.prototype, "onHeaderPropertyChanged", null);
__decorate([
    Watch('subHeader'),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [String, String]),
    __metadata("design:returntype", void 0)
], ChartBaseElement.prototype, "onSubHeaderPropertyChanged", null);
//# sourceMappingURL=ChartBaseElement.js.map