import * as tslib_1 from "tslib";
var IgxScatterPolygonSeriesComponent_1;
import { Component, forwardRef, Input, ChangeDetectionStrategy } from '@angular/core';
import { Style } from "igniteui-angular-core/ES2015/igx-style";
import { MarkerType, MarkerType_$type } from "./MarkerType";
import { CollisionAvoidanceType, CollisionAvoidanceType_$type } from "./CollisionAvoidanceType";
import { IgxShapeSeriesBaseComponent } from "./igx-shape-series-base-component";
import { IgxSeriesComponent } from "./igx-series-component";
import { ScatterPolygonSeries } from "./ScatterPolygonSeries";
import { ensureEnum, brushToString, stringToBrush } from "igniteui-angular-core/ES2015/componentUtil";
import { StyleSelector } from "./StyleSelector";
/**
 * Series class which renders polygons as Paths based on lists of points in the ItemsSource.
*/
export const IgxScatterPolygonSeriesComponent_PROVIDERS = [{ provide: IgxShapeSeriesBaseComponent, useExisting: forwardRef(() => IgxScatterPolygonSeriesComponent) }, { provide: IgxSeriesComponent, useExisting: forwardRef(() => IgxScatterPolygonSeriesComponent) }];
let IgxScatterPolygonSeriesComponent = IgxScatterPolygonSeriesComponent_1 = class IgxScatterPolygonSeriesComponent extends IgxShapeSeriesBaseComponent {
    constructor() {
        super();
    }
    createImplementation() {
        return new ScatterPolygonSeries();
    }
    /**
                                 * @hidden
                                 */
    get i() {
        return this._implementation;
    }
    /**
     * Returns whether the current series supports visual markers.
    */
    get hasMarkers() {
        return this.i.hasMarkers;
    }
    /**
     * The StyleSelector which is used to select a style for each Shape.
    */
    get shapeStyleSelector() {
        return this.i.nh;
    }
    set shapeStyleSelector(v) {
        this.i.nh = v;
    }
    /**
     * The default style to apply to all Shapes in the series.
    */
    get shapeStyle() {
        if (this.i.oe == null) {
            return null;
        }
        if (!this.i.oe.externalObject) {
            let e = new Style();
            e._implementation = this.i.oe;
            this.i.oe.externalObject = e;
        }
        return this.i.oe.externalObject;
    }
    set shapeStyle(v) {
        v == null ? this.i.oe = null : this.i.oe = v.i;
    }
    /**
     * Gets or sets the marker type for the current series object.
     * If the MarkerTemplate property is set, the setting of the MarkerType property will be ignored.
    */
    get markerType() {
        return this.i.nc;
    }
    set markerType(v) {
        this.i.nc = ensureEnum(MarkerType_$type, v);
    }
    /**
     * Gets or sets the MarkerTemplate for the current series object.
    */
    get markerTemplate() {
        return this.i.nw;
    }
    set markerTemplate(v) {
        this.i.nw = v;
    }
    /**
     * Gets the effective marker template for the current series object.
    */
    get actualMarkerTemplate() {
        return this.i.nv;
    }
    set actualMarkerTemplate(v) {
        this.i.nv = v;
    }
    /**
     * Gets or sets the brush that specifies how the current series object's marker interiors are painted.
    */
    get markerBrush() {
        return brushToString(this.i.oa);
    }
    set markerBrush(v) {
        this.i.oa = stringToBrush(v);
    }
    /**
     * Gets the effective marker brush for the current series object.
    */
    get actualMarkerBrush() {
        return brushToString(this.i.n8);
    }
    set actualMarkerBrush(v) {
        this.i.n8 = stringToBrush(v);
    }
    /**
     * Gets or sets the brush that specifies how the current series object's marker outlines are painted.
    */
    get markerOutline() {
        return brushToString(this.i.ob);
    }
    set markerOutline(v) {
        this.i.ob = stringToBrush(v);
    }
    /**
     * Gets the effective marker outline for the current series object.
    */
    get actualMarkerOutline() {
        return brushToString(this.i.n9);
    }
    set actualMarkerOutline(v) {
        this.i.n9 = stringToBrush(v);
    }
    /**
     * The desired behavior for markers in this series which are placed too close together for the current view, resulting in a collision.
    */
    get markerCollisionAvoidance() {
        return this.i.nb;
    }
    set markerCollisionAvoidance(v) {
        this.i.nb = ensureEnum(CollisionAvoidanceType_$type, v);
    }
};
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", StyleSelector),
    tslib_1.__metadata("design:paramtypes", [StyleSelector])
], IgxScatterPolygonSeriesComponent.prototype, "shapeStyleSelector", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Style),
    tslib_1.__metadata("design:paramtypes", [Style])
], IgxScatterPolygonSeriesComponent.prototype, "shapeStyle", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Number),
    tslib_1.__metadata("design:paramtypes", [Number])
], IgxScatterPolygonSeriesComponent.prototype, "markerType", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Object),
    tslib_1.__metadata("design:paramtypes", [Object])
], IgxScatterPolygonSeriesComponent.prototype, "markerTemplate", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Object),
    tslib_1.__metadata("design:paramtypes", [Object])
], IgxScatterPolygonSeriesComponent.prototype, "actualMarkerTemplate", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", String),
    tslib_1.__metadata("design:paramtypes", [String])
], IgxScatterPolygonSeriesComponent.prototype, "markerBrush", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", String),
    tslib_1.__metadata("design:paramtypes", [String])
], IgxScatterPolygonSeriesComponent.prototype, "actualMarkerBrush", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", String),
    tslib_1.__metadata("design:paramtypes", [String])
], IgxScatterPolygonSeriesComponent.prototype, "markerOutline", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", String),
    tslib_1.__metadata("design:paramtypes", [String])
], IgxScatterPolygonSeriesComponent.prototype, "actualMarkerOutline", null);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Number),
    tslib_1.__metadata("design:paramtypes", [Number])
], IgxScatterPolygonSeriesComponent.prototype, "markerCollisionAvoidance", null);
IgxScatterPolygonSeriesComponent = IgxScatterPolygonSeriesComponent_1 = tslib_1.__decorate([
    Component({
        selector: 'igx-scatter-polygon-series',
        template: ``,
        providers: [{ provide: IgxShapeSeriesBaseComponent, useExisting: forwardRef(() => IgxScatterPolygonSeriesComponent_1) }, { provide: IgxSeriesComponent, useExisting: forwardRef(() => IgxScatterPolygonSeriesComponent_1) }],
        changeDetection: ChangeDetectionStrategy.OnPush
    }),
    tslib_1.__metadata("design:paramtypes", [])
], IgxScatterPolygonSeriesComponent);
export { IgxScatterPolygonSeriesComponent };
//# sourceMappingURL=igx-scatter-polygon-series-component.js.map