/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE  AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE:  you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { IgrCategoryAngleAxis } from './igr-category-angle-axis';
import { IgrNumericRadiusAxis } from './igr-numeric-radius-axis';
import { IgrMarkerSeries } from './igr-marker-series';
import { toPoint, ensureBool } from "igniteui-react-core/ES2015/componentUtil";
/**
 * Represents the base class for all IgxDataChartComponent radial series
*/
export class IgrRadialBase extends IgrMarkerSeries {
    constructor(props) {
        super(props);
    }
    set angleAxisName(value) {
        this._angleAxisName = value;
    }
    get angleAxisName() {
        return this._angleAxisName;
    }
    set valueAxisName(value) {
        this._valueAxisName = value;
    }
    get valueAxisName() {
        return this._valueAxisName;
    }
    bindAxes(axes) {
        for (let i = 0; i < axes.length; i++) {
            if (axes[i].name == this.angleAxisName) {
                this.angleAxis = axes[i];
            }
            if (axes[i].name == this.valueAxisName) {
                this.valueAxis = axes[i];
            }
        }
    }
    get i() {
        return this._implementation;
    }
    /**
 * Checks if this series is a radial series
*/
    get isRadial() {
        return this.i.c2;
    }
    /**
     * Gets the effective angle axis for the current series object.
    */
    get angleAxis() {
        if (this.i.mt == null) {
            return null;
        }
        if (!this.i.mt.externalObject) {
            let e = new IgrCategoryAngleAxis(null);
            e._implementation = this.i.mt;
            this.i.mt.externalObject = e;
        }
        return this.i.mt.externalObject;
    }
    set angleAxis(v) {
        v == null ? this.i.mt = null : this.i.mt = v.i;
    }
    /**
     * Gets the effective value axis for the current series object.
    */
    get valueAxis() {
        if (this.i.mv == null) {
            return null;
        }
        if (!this.i.mv.externalObject) {
            let e = new IgrNumericRadiusAxis(null);
            e._implementation = this.i.mv;
            this.i.mv.externalObject = e;
        }
        return this.i.mv.externalObject;
    }
    set valueAxis(v) {
        v == null ? this.i.mv = null : this.i.mv = v.i;
    }
    /**
     * Gets or sets whether to clip the series to the bounds.
     * Setting this property to true will decrease chart performance.
    */
    get clipSeriesToBounds() {
        return this.i.m4;
    }
    set clipSeriesToBounds(v) {
        this.i.m4 = ensureBool(v);
    }
    /**
 * Determine if object can be used as ValueAxis

* @param axis  * The object to check
*/
    canUseAsValueAxis(axis) {
        let iv = this.i.m3(axis);
        return (iv);
    }
    /**
     * Determine if object can be used as AngleAxis
    
    * @param axis  * The object to check
    */
    canUseAsAngleAxis(axis) {
        let iv = this.i.m2(axis);
        return (iv);
    }
    /**
     * Gets the item that is the best match for the specified world coordinates.
    
    * @param world  * The world coordinates to use.
    */
    getItem(world) {
        let iv = this.i.fm(toPoint(world));
        return (iv);
    }
    /**
     * Gets the angle to the provided world position from the center of the radial series.
    
    * @param world  * The world position to get the angle for
    */
    getAngleFromWorld(world) {
        let iv = this.i.m6(toPoint(world));
        return (iv);
    }
    /**
     * Gets the precise item index, if possible, based on the closeness to the previous or next whole integer. If the series cannot provide this information, GetExactItemIndex will return the same integer value as GetItemIndex.
    
    * @param world  * The world position for which to return the index.
    */
    getExactItemIndex(world) {
        let iv = this.i.m7(toPoint(world));
        return (iv);
    }
    /**
     * Get the index of the item near the provided world coordinates.
    
    * @param world  * The world coordinates for which to getch the item index.
    */
    getItemIndex(world) {
        let iv = this.i.e5(toPoint(world));
        return (iv);
    }
    /**
     * Scrolls the specified item into the view.
    
    * @param item  * The item to scroll into view.
    */
    scrollIntoView(item) {
        let iv = this.i.c8(item);
        return (iv);
    }
    /**
     * Returns the offset value for this series if grouped on a category axis.
    
    */
    getOffsetValue() {
        let iv = this.i.getOffsetValue();
        return (iv);
    }
    /**
     * Returns the width of the category grouping this series is in.
    
    */
    getCategoryWidth() {
        let iv = this.i.getCategoryWidth();
        return (iv);
    }
}
