import { __extends } from "tslib";
import { Component, Input } from '@angular/core';
import { IgxSeriesComponent } from "./igx-series-component";
import { ensureBool, fromPoint, toPoint } from "igniteui-angular-core";
import * as i0 from "@angular/core";
/**
 * Represents the base class for annotation layer types. Annotations will usually disable some of the default hover/touch behaviors of the chart when they are introduced to the series collection.
 * In return they provide some valuable information as the cursor is moved by hovering over the chart, or performing a press-hold-drag interaction in touch mode.
*/
var IgxAnnotationLayerComponent = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(IgxAnnotationLayerComponent, _super);
    function IgxAnnotationLayerComponent() {
        return _super.call(this) || this;
    }
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "i", {
        /**
                                     * @hidden
                                     */
        get: function () {
            return this._implementation;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "useIndex", {
        /**
         * Gets or sets whether this series should take up an index for auto brush coloring.
        */
        get: function () {
            return this.i.qi;
        },
        set: function (v) {
            this.i.qi = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "useLegend", {
        /**
         * Gets or sets whether this series interacts with the chart legend.
        */
        get: function () {
            return this.i.qj;
        },
        set: function (v) {
            this.i.qj = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "cursorPosition", {
        /**
         * Gets or sets the world position to use instead of the pointer position for this annotation layer. If you set this value, rather than responding to the pointer, this layer will be fixed on the provided world position.
         * A world position has x and y values that range from 0 to 1 that represent the global position of the cursor relative to the entire ranges of the axes. The default of (NaN, NaN) means that the layer should react to pointer movement.
        */
        get: function () {
            return fromPoint(this.i.ra);
        },
        set: function (v) {
            this.i.ra = toPoint(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "isDefaultCrosshairDisabled", {
        /**
         * Gets or sets whether the series viewer's default crosshair should be disabled by the presence of this layer.
        */
        get: function () {
            return this.i.qd;
        },
        set: function (v) {
            this.i.qd = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "isDefaultCrosshairBehaviorDisabled", {
        /**
         * Gets whether or not the default crosshair behavior is disabled.
        */
        get: function () {
            return this.i.dk;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "isIndexed", {
        /**
         * Gets if the series uses an index, which can be used to auto-assign it a color.
        */
        get: function () {
            return this.i.dz;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "isUsableInLegend", {
        /**
         * Gets if the series should appear in any legends.
        */
        get: function () {
            return this.i.isUsableInLegend;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "isAnnotationLayer", {
        /**
         * Gets whether this series is an annotation layer.
        */
        get: function () {
            return this.i.dc;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgxAnnotationLayerComponent.prototype, "shouldRenderAsOverlay", {
        /**
         * Gets or sets whether this layer renders as an overlay or not.
        */
        get: function () {
            return this.i.qh;
        },
        set: function (v) {
            this.i.qh = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    IgxAnnotationLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: IgxAnnotationLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    IgxAnnotationLayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.14", type: IgxAnnotationLayerComponent, selector: "ng-component", inputs: { useIndex: "useIndex", useLegend: "useLegend", cursorPosition: "cursorPosition", isDefaultCrosshairDisabled: "isDefaultCrosshairDisabled", shouldRenderAsOverlay: "shouldRenderAsOverlay" }, usesInheritance: true, ngImport: i0, template: "", isInline: true });
    return IgxAnnotationLayerComponent;
}(IgxSeriesComponent));
export { IgxAnnotationLayerComponent };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: IgxAnnotationLayerComponent, decorators: [{
            type: Component,
            args: [{
                    template: "",
                }]
        }], ctorParameters: function () { return []; }, propDecorators: { useIndex: [{
                type: Input
            }], useLegend: [{
                type: Input
            }], cursorPosition: [{
                type: Input
            }], isDefaultCrosshairDisabled: [{
                type: Input
            }], shouldRenderAsOverlay: [{
                type: Input
            }] } });
