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 { 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);
* ```
*/
export let IgxMarkerSeriesComponent = /*@__PURE__*/ (() => {
    class IgxMarkerSeriesComponent extends IgxSeriesComponent {
        constructor() {
            super();
        }
        /**
                                     * @hidden
                                     */
        get i() {
            return this._implementation;
        }
        /**
         * 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 hasMarkers() {
            return this.i.hasMarkers;
        }
        /**
         * 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 markerType() {
            return this.i.qc;
        }
        set markerType(v) {
            this.i.qc = ensureEnum(MarkerType_$type, v);
        }
        /**
         * Gets or sets whether the marker outline is based on the marker brush of the series rather than the marker outlines collection.
        */
        get markerOutlineMode() {
            return this.i.p9;
        }
        set markerOutlineMode(v) {
            this.i.p9 = ensureEnum(MarkerOutlineMode_$type, v);
        }
        /**
         * Gets or sets whether the marker fill is based on the marker outline of the series rather than the marker brushes collection.
        */
        get markerFillMode() {
            return this.i.p5;
        }
        set markerFillMode(v) {
            this.i.p5 = ensureEnum(MarkerFillMode_$type, v);
        }
        /**
         * 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 markerTemplate() {
            return this.i.qy;
        }
        set markerTemplate(v) {
            this.i.qy = v;
        }
        /**
         * Gets or sets thickness of the marker outline
        */
        get markerThickness() {
            return this.i.qh;
        }
        set markerThickness(v) {
            this.i.qh = +v;
        }
        /**
         * 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 actualMarkerTemplate() {
            return this.i.qw;
        }
        set actualMarkerTemplate(v) {
            this.i.qw = v;
        }
        /**
         * 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 markerBrush() {
            return brushToString(this.i.re);
        }
        set markerBrush(v) {
            this.i.re = stringToBrush(v);
        }
        /**
         * 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 actualMarkerBrush() {
            return brushToString(this.i.rc);
        }
        set actualMarkerBrush(v) {
            this.i.rc = stringToBrush(v);
        }
        /**
         * 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 markerOutline() {
            return brushToString(this.i.rf);
        }
        set markerOutline(v) {
            this.i.rf = stringToBrush(v);
        }
        /**
         * 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 actualMarkerOutline() {
            return brushToString(this.i.rd);
        }
        set actualMarkerOutline(v) {
            this.i.rd = stringToBrush(v);
        }
    }
    IgxMarkerSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: IgxMarkerSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    IgxMarkerSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: IgxMarkerSeriesComponent, selector: "ng-component", inputs: { markerType: "markerType", 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;
})();
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: IgxMarkerSeriesComponent, decorators: [{
            type: Component,
            args: [{
                    template: ``,
                }]
        }], ctorParameters: function () { return []; }, propDecorators: { markerType: [{
                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
            }] } });
