/*
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 { Base, markType } from "igniteui-angular-core";
import { IAnchoredCategorySeriesInteractionManager_$type } from "./IAnchoredCategorySeriesInteractionManager";
import { Rect } from "igniteui-angular-core";
import { ScalerParams } from "./ScalerParams";
import { truncate, intDivide, isNaN_ } from "igniteui-angular-core";
import { stringIsNullOrEmpty } from "igniteui-angular-core";
/**
 * @hidden
 */
export let AnchoredCategorySeriesInteractionManager = /*@__PURE__*/ (() => {
    class AnchoredCategorySeriesInteractionManager extends Base {
        c$b(a, b, c, d, e, f, g, h) {
            if (!g) {
                return h(b);
            }
            if (e == null || e.cn || f == null || d == null || isNaN_(b.x) || isNaN_(b.y)) {
                return h(b);
            }
            if (c <= 1) {
                return h(b);
            }
            let i = truncate(Math.round(a.ir(b)));
            if (i < 0 || i >= a.dn.count) {
                return h(b);
            }
            let j = intDivide(i, c);
            let k = c * j;
            let l = Math.min(k + c, d.count - 1);
            let m = a.wh(a.cv);
            let n = new ScalerParams(0, a.db.wk, a.db.wj, f.ch, a.db.v8);
            let o = m.top;
            let p = m.bottom;
            let q = o + (p - o) * b.y;
            let r = f.eo(q, n);
            let s = 1.7976931348623157E+308;
            let t = k;
            for (let u = k; u <= l; u++) {
                let v = Math.abs(d.item(u) - r);
                if (v < s) {
                    s = v;
                    t = u;
                }
            }
            return a.dn.item(t);
        }
        c$a(a, b, c, d, e, f) {
            let g = a.cv.by;
            g = g.copy();
            let h = a.cv.bx;
            let i = new Rect(0, 0, 0, 1, 1);
            let j = !g.isEmpty && !h.isEmpty && a.dn != null ? a.dn.indexOf(f) : -1;
            let k = a.wj(a.cv);
            let l = new ScalerParams(0, i, i, c.ch, k);
            let m = new ScalerParams(0, i, i, d.ch, k);
            m.b = a.iy();
            let n = c != null ? c.el(j, l) : NaN;
            n += e;
            let o = d != null && b != null && j < b.count ? d.el(b.item(j), m) : NaN;
            if (!isNaN_(n)) {
                if (n < g.left + 0.1 * g.width) {
                    n = n + 0.4 * g.width;
                    g.x = n - 0.5 * g.width;
                }
                if (n > g.right - 0.1 * g.width) {
                    n = n - 0.4 * g.width;
                    g.x = n - 0.5 * g.width;
                }
            }
            if (!isNaN_(o)) {
                if (o < g.top + 0.1 * g.height) {
                    o = o + 0.4 * g.height;
                    g.y = o - 0.5 * g.height;
                }
                if (o > g.bottom - 0.1 * g.height) {
                    o = o - 0.4 * g.height;
                    g.y = o - 0.5 * g.height;
                }
            }
            if (a.c3 != null) {
                a.c3.au(a.db, g, true);
            }
            return j >= 0;
        }
        c$c(a, b) {
            let c = "<div class='ui-chart-default-tooltip-content'>";
            let d = null;
            d = a.a0();
            if (d.ce) {
                let e = d;
                c += "<span>${item." + e.dateTimeMemberPath + "}</span><br/>";
            }
            else if (d != null && d.f2 != null) {
                c += "<span>${item." + d.f2.toString() + "}</span><br/>";
            }
            c += "<span";
            let f = a.ba.a$u(a);
            if (!stringIsNullOrEmpty(f)) {
                c += " style='color:" + f + "'";
            }
            c += ">${series.title}: </span><span class='ui-priority-primary'>" + "${item." + b + "}</span></div>";
            return c;
        }
        c$d(a, b, c, d, e, f, g, h) {
            if (c == null || d == null) {
                return Rect.empty;
            }
            let i = a.v5(b);
            let j = a.cv.by;
            let k = a.cv.bx;
            let l = a.getEffectiveViewport1(a.cv);
            let m = new ScalerParams(0, j, k, d.ch, l);
            m.b = a.iy();
            let n = a.an(a.a0(), e.f, f, g, b, true);
            if (n == null) {
                return Rect.empty;
            }
            let o = n[0];
            let p = n[1];
            let q = Math.abs(i.x - o[0]);
            let r = Math.abs(i.x - p[0]);
            let s = d.el(d.me, m);
            let t = c.k8(j, k, l);
            if (q < r) {
                let u = o[0] - 0.5 * t;
                let v = h(o);
                let w = s;
                return new Rect(0, u, Math.min(v, w), t, Math.max(v, w) - Math.min(v, w));
            }
            else {
                let x = p[0] - 0.5 * t;
                let y = h(p);
                let z = s;
                return new Rect(0, x, Math.min(y, z), t, Math.max(y, z) - Math.min(y, z));
            }
        }
    }
    AnchoredCategorySeriesInteractionManager.$t = markType(AnchoredCategorySeriesInteractionManager, 'AnchoredCategorySeriesInteractionManager', Base.$, [IAnchoredCategorySeriesInteractionManager_$type]);
    return AnchoredCategorySeriesInteractionManager;
})();
