import { __extends } from "tslib";
import { Component, Input } from '@angular/core';
import { MarkerType_$type } from "./MarkerType";
import { MarkerOutlineMode_$type } from "./MarkerOutlineMode";
import { MarkerFillMode_$type } from "./MarkerFillMode";
import { IgxSeriesComponent } from "./igx-series-component";
import { ensureBool, ensureEnum, brushToString, stringToBrush } from "igniteui-angular-core";
import * as i0 from "@angular/core";
/**
 * Represents the base class for series containing markers.
*
* MarkerSeries represents the base class for series containing markers.
*
* Example:
*
* ```html
* <igx-data-chart
*     [dataSource]="data">
* 	<igx-category-x-axis
*         label="label"
*         #xAxis
*         >
*       </igx-category-x-axis>
*       <igx-numeric-y-axis
*         minimumValue="0"
*         #yAxis>
*       </igx-numeric-y-axis>
* 	 <igx-column-series
*         #series
*         [xAxis]="xAxis"
*         [yAxis]="yAxis"
*      valueMemberPath="value">
*      </igx-column-series>
* </igx-data-chart>
* ```
*
* ```ts
* let series: IgxMarkerSeriesComponent = new IgxMarkerSeriesComponent();
* series.xAxis = this.xAxis;
* series.yAxis = this.yAxis;
* series.valueMemberPath = "value";
* this.chart.series.add(series);
* ```
*/
var IgxMarkerSeriesComponent = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(IgxMarkerSeriesComponent, _super);
    function IgxMarkerSeriesComponent() {
        return _super.call(this) || this;
    }
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "i", {
        /**
                                     * @hidden
                                     */
        get: function () {
            return this._implementation;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "hasMarkers", {
        /**
         * Returns whether the current series supports visual markers.
        *
        * `HasMarkers` property is overriden, it returns whether the current series supports visual markers. You can use it like this:
        *
        * ```ts
        *  let gotMarkers: boolean = this.series.hasMarkers;
        * ```
        */
        get: function () {
            return this.i.hasMarkers;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "hasVisibleMarkers", {
        get: function () {
            return this.i.el;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "markerType", {
        /**
         * Gets or sets the marker type for the current series object.
         * This property is ignored when the MarkerTemplate property is set
        *
        * `MarkerType` property gets or sets the marker type for the current series object. For example, you can set it like this:
        *
        * ```html
        * <igx-data-chart
        *     [dataSource]="data">
        * 	 <igx-category-x-axis
        *         label="label"
        *         #xAxis>
        *     </igx-category-x-axis>
        *     <igx-numeric-y-axis
        *         #yAxis>
        *     </igx-numeric-y-axis>
        * 	 <igx-column-series
        *         #series
        *         [xAxis]="xAxis"
        *         [yAxis]="yAxis"
        *      valueMemberPath="value"
        * 	 markerType = "circle">
        *      </igx-column-series>
        * </igx-data-chart>
        * ```
        *
        * ```ts
        * this.series.markerType = "circle";
        * ```
        */
        get: function () {
            return this.i.w8;
        },
        set: function (v) {
            this.i.w8 = ensureEnum(MarkerType_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "actualMarkerType", {
        /**
         * Represents the resolved marker type for the series.
        */
        get: function () {
            return this.i.w6;
        },
        set: function (v) {
            this.i.w6 = ensureEnum(MarkerType_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "isCustomMarkerCircular", {
        /**
         * Gets or sets whether the marker for the current series object should be treated as circular.
        */
        get: function () {
            return this.i.xb;
        },
        set: function (v) {
            this.i.xb = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "effectiveIsMarkerCircular", {
        /**
         * Gets whether the markers for the current series are in circular shape
        */
        get: function () {
            return this.i.xa;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "markerOutlineMode", {
        /**
         * Gets or sets whether the marker outline is based on the marker brush of the series rather than the marker outlines collection.
        */
        get: function () {
            return this.i.w2;
        },
        set: function (v) {
            this.i.w2 = ensureEnum(MarkerOutlineMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "markerFillMode", {
        /**
         * Gets or sets whether the marker fill is based on the marker outline of the series rather than the marker brushes collection.
        */
        get: function () {
            return this.i.wy;
        },
        set: function (v) {
            this.i.wy = ensureEnum(MarkerFillMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "markerTemplate", {
        /**
         * Gets or sets the MarkerTemplate for the current series object.
        *
        * `MarkerTemplate` property gets or sets the MarkerTemplate for the current series object. For example, you can use it like this:
        *
        * ```html
        * <igx-data-chart
        *     [dataSource]="data">
        * 	<igx-category-x-axis
        *         label="label"
        *         #xAxis>
        *       </igx-category-x-axis>
        *       <igx-numeric-y-axis #yAxis>
        *       </igx-numeric-y-axis>
        * 	 <igx-column-series
        *         #series
        *         [xAxis]="xAxis"
        *         [yAxis]="yAxis"
        *      valueMemberPath="value"
        * 	 markerTemplate="circleMarkerTemplate">
        *      </igx-column-series>
        * </igx-data-chart>
        * ```
        */
        get: function () {
            return this.i.x0;
        },
        set: function (v) {
            this.i.x0 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "markerThickness", {
        /**
         * Gets or sets thickness of the marker outline
        */
        get: function () {
            return this.i.xh;
        },
        set: function (v) {
            this.i.xh = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "actualMarkerTemplate", {
        /**
         * Gets the effective marker template for the current series object.
        *
        * `ActualMarkerTemplate` property gets the effective marker template for the current series object. You can use it like this:
        *
        * ```ts
        *  let effectiveMarkerTemplate: IgxDataTemplate = this.series.actualMarkerTemplate;
        * ```
        */
        get: function () {
            return this.i.xy;
        },
        set: function (v) {
            this.i.xy = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "markerBrush", {
        /**
         * Gets or sets the brush that specifies how the current series object's marker interiors are painted.
        *
        * `MarkerBrush` property gets or sets the brush that specifies how the current series object's marker interiors are painted. You can use it like this:
        *
        * ```html
        * <igx-data-chart
        *     [dataSource]="data">
        * 	<igx-category-x-axis
        *         label="label"
        *         #xAxis>
        *       </igx-category-x-axis>
        *       <igx-numeric-y-axis #yAxis>
        *       </igx-numeric-y-axis>
        * 	 <igx-column-series
        *         #series
        *         [xAxis]="xAxis"
        *         [yAxis]="yAxis"
        *      valueMemberPath="value"
        * 	 markerBrush = "blue">
        *      </igx-column-series>
        * </igx-data-chart>
        * ```
        *
        * ```ts
        * this.series.markerBrush = "red";
        * ```
        */
        get: function () {
            return brushToString(this.i.yh);
        },
        set: function (v) {
            this.i.yh = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "actualMarkerBrush", {
        /**
         * Gets the effective marker brush for the current series object.
        *
        * `ActualMarkerBrush` property gets the effective marker brush for the current series object. For example, you can use it like this:
        *
        * ```ts
        *  let effectiveMarkerBrush: string = this.series.actualMarkerBrush;
        *
        * ```
        */
        get: function () {
            return brushToString(this.i.yf);
        },
        set: function (v) {
            this.i.yf = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "markerOutline", {
        /**
         * Gets or sets the brush that specifies how the current series object's marker outlines are painted.
        *
        * `MarkerOutline` property gets or sets the brush that specifies how the current series object's marker outlines are painted. You can use it like this:
        *
        * ```html
        * <igx-data-chart
        *     [dataSource]="data">
        * 	<igx-category-x-axis
        *         label="label"
        *         #xAxis>
        *       </igx-category-x-axis>
        *       <igx-numeric-y-axis #yAxis>
        *       </igx-numeric-y-axis>
        * 	 <igx-column-series
        *         #series
        *         [xAxis]="xAxis"
        *         [yAxis]="yAxis"
        *      valueMemberPath="value"
        * 	 markerOutline = "blue">
        *      </igx-column-series>
        * </igx-data-chart>
        * ```
        *
        * ```ts
        * this.series.markerOutline = "red";
        * ```
        */
        get: function () {
            return brushToString(this.i.yi);
        },
        set: function (v) {
            this.i.yi = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxMarkerSeriesComponent.prototype, "actualMarkerOutline", {
        /**
         * Gets the effective marker outline for the current series object.
        *
        *     `ActualMarkerOutline` property gets the effective marker outline for the current series object. You can use it like this:
        *
        * ```ts
        *  let effectiveMarkerOutline: string = this.series.actualMarkerOutline;
        *
        * ```
        */
        get: function () {
            return brushToString(this.i.yg);
        },
        set: function (v) {
            this.i.yg = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    IgxMarkerSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxMarkerSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    IgxMarkerSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: IgxMarkerSeriesComponent, selector: "ng-component", inputs: { markerType: "markerType", actualMarkerType: "actualMarkerType", isCustomMarkerCircular: "isCustomMarkerCircular", markerOutlineMode: "markerOutlineMode", markerFillMode: "markerFillMode", markerTemplate: "markerTemplate", markerThickness: "markerThickness", actualMarkerTemplate: "actualMarkerTemplate", markerBrush: "markerBrush", actualMarkerBrush: "actualMarkerBrush", markerOutline: "markerOutline", actualMarkerOutline: "actualMarkerOutline" }, usesInheritance: true, ngImport: i0, template: "", isInline: true });
    return IgxMarkerSeriesComponent;
}(IgxSeriesComponent));
export { IgxMarkerSeriesComponent };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxMarkerSeriesComponent, decorators: [{
            type: Component,
            args: [{
                    template: "",
                }]
        }], ctorParameters: function () { return []; }, propDecorators: { markerType: [{
                type: Input
            }], actualMarkerType: [{
                type: Input
            }], isCustomMarkerCircular: [{
                type: Input
            }], markerOutlineMode: [{
                type: Input
            }], markerFillMode: [{
                type: Input
            }], markerTemplate: [{
                type: Input
            }], markerThickness: [{
                type: Input
            }], actualMarkerTemplate: [{
                type: Input
            }], markerBrush: [{
                type: Input
            }], actualMarkerBrush: [{
                type: Input
            }], markerOutline: [{
                type: Input
            }], actualMarkerOutline: [{
                type: Input
            }] } });
