/*
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, Point_$type, markType } from "igniteui-react-core";
import { Rect } from "igniteui-react-core";
import { Random } from "igniteui-react-core";
import { isNaN_, isInfinity } from "igniteui-react-core";
/**
 * @hidden
 */
export let CategoryTransitionSourceFramePreparer = /*@__PURE__*/ (() => {
    class CategoryTransitionSourceFramePreparer extends Base {
        constructor() {
            super(...arguments);
            this.a = new Random(0);
        }
        s(a, b, c, d, e, f, g, h, i, j, k, l) {
            b.aa = new Rect(0, 0, 0, 1, 1);
            b.f.clear();
            b.k.clear();
            b.m.clear();
            b.p.clear();
            b.i.clear();
            b.h.clear();
            b.g.clear();
            let m = false;
            let n = false;
            if (f != null) {
                m = f.ch;
            }
            if (e != null) {
                n = e.ch;
            }
            let o = g;
            if (o == 0) {
                o = h;
            }
            let p = null;
            if (o == 20) {
                if (a.bi == null) {
                    o = 1;
                }
                p = a.jw();
            }
            switch (o) {
                case 20:
                    let q = k();
                    this.v(p, b, c, q, d);
                    break;
                case 1:
                    let r = k();
                    this.x(b, c, r, d);
                    break;
                case 7:
                    this.u(b, c, false, d, l);
                    break;
                case 9:
                    this.w(b, c, true, d, l);
                    break;
                case 10:
                    this.w(b, c, false, d, l);
                    break;
                case 8:
                    this.u(b, c, true, d, l);
                    break;
                case 2:
                    this.y(b, c, false);
                    break;
                case 3:
                    this.y(b, c, true);
                    break;
                case 4:
                    this.z(b, c, true);
                    break;
                case 5:
                    this.z(b, c, false);
                    break;
                case 6:
                    this.j(b, c);
                    b.aa = new Rect(0, 0.5, 0.5, 0, 0);
                    break;
                case 16:
                    if (d) {
                        this.w(b, c, m, d, l);
                    }
                    else {
                        this.u(b, c, n, d, l);
                    }
                    break;
                case 17:
                    if (d) {
                        this.w(b, c, !m, d, l);
                    }
                    else {
                        this.u(b, c, !n, d, l);
                    }
                    break;
                case 18:
                    if (d) {
                        this.u(b, c, n, d, l);
                    }
                    else {
                        this.w(b, c, m, d, l);
                    }
                    break;
                case 19:
                    if (d) {
                        this.u(b, c, !n, d, l);
                    }
                    else {
                        this.w(b, c, !m, d, l);
                    }
                    break;
                case 12:
                    if (d) {
                        this.z(b, c, m);
                    }
                    else {
                        this.y(b, c, n);
                    }
                    break;
                case 13:
                    if (d) {
                        this.z(b, c, !m);
                    }
                    else {
                        this.y(b, c, !n);
                    }
                    break;
                case 14:
                    if (d) {
                        this.y(b, c, n);
                    }
                    else {
                        this.z(b, c, m);
                    }
                    break;
                case 15:
                    if (d) {
                        this.y(b, c, !n);
                    }
                    else {
                        this.z(b, c, !m);
                    }
                    break;
                case 11:
                    this.t(b, c);
                    break;
            }
            if (i == 0) {
                i = j;
            }
            b.v();
            c.v();
            switch (i) {
                case 3:
                    this.b(b.f.count, o, b.o, c.o, e, f, d, l);
                    this.b(b.m.count, o, b.n, c.n, e, f, d, l);
                    this.b(b.p.count, o, b.q, c.q, e, f, d, l);
                    this.b(b.i.count, o, b.l, c.l, e, f, d, l);
                    this.b(b.h.count, o, b.j, c.j, e, f, d, l);
                    break;
                case 2:
                    let s = k();
                    this.d(b.f.count, s, o, b.f, c.f, b.o, c.o, e, f, d, l);
                    this.f(b.m.count, s, o, b.m, c.m, b.n, c.n, e, f, d, l);
                    this.f(b.p.count, s, o, b.p, c.p, b.q, c.q, e, f, d, l);
                    this.f(b.i.count, s, o, b.i, c.i, b.l, c.l, e, f, d, l);
                    this.e(b.h.count, s, o, b.h, c.h, b.j, c.j, e, f, d, l);
                    break;
                case 4:
                    this.c(b.f.count, o, b.o, c.o);
                    this.c(b.m.count, o, b.n, c.n);
                    this.c(b.p.count, o, b.q, c.q);
                    this.c(b.i.count, o, b.l, c.l);
                    this.c(b.h.count, o, b.j, c.j);
                    break;
            }
        }
        v(a, b, c, d, e) {
            this.m(a.f, b.f, c.f, e, d, true);
            this.o(a.k, b.k, c.k, e, d, true);
            this.r(a.m, b.m, c.m, e, d, true);
            this.r(a.p, b.p, c.p, e, d, true);
            this.r(a.i, b.i, c.i, e, d, true);
            this.o(a.h, b.h, c.h, e, d, true);
            this.o(a.g, b.g, c.g, e, d, true);
        }
        c(a, b, c, d) {
            if (a == 0) {
                return;
            }
            for (let e = 0; e < a; e++) {
                c.add(1 + this.a.nextDouble());
                d.add(1 + this.a.nextDouble());
            }
        }
        d(a, b, c, d, e, f, g, h, i, j, k) {
            if (a == 0) {
                return;
            }
            let l = false;
            let m = i;
            if (j) {
                m = h;
            }
            if (m != null) {
                l = m.ch;
            }
            let n = k.bottom;
            let o = k.bottom;
            let p = k.top;
            if (j) {
                o = k.right;
                p = k.left;
            }
            if (l) {
                o = k.top;
                p = k.bottom;
                if (j) {
                    o = k.left;
                    p = k.right;
                }
            }
            b = Math.max(b, Math.min(p, o));
            b = Math.min(b, Math.max(p, o));
            n = 0;
            let q;
            for (let r = 0; r < a; r++) {
                q = e._inner[r];
                for (let s = 1; s < q.length; s++) {
                    if (isNaN_(q[s]) || isInfinity(q[s])) {
                        continue;
                    }
                    n = Math.max(n, Math.abs(b - q[s]));
                }
            }
            let t;
            let u;
            let v;
            for (let w = 0; w < a; w++) {
                q = e._inner[w];
                t = Math.abs(q[1] - b);
                u = Math.abs(q[1] - b);
                for (let x = 1; x < q.length; x++) {
                    if (isNaN_(q[x]) || isInfinity(q[x])) {
                        continue;
                    }
                    t = Math.max(Math.abs(q[x] - b), t);
                    u = Math.min(Math.abs(q[x] - b), u);
                }
                let y = (t + u) / 2;
                if (isNaN_(y) || n == 0) {
                    v = 1;
                }
                else {
                    v = y / n;
                }
                f.add(2 - v);
                g.add(2 - v);
            }
        }
        f(a, b, c, d, e, f, g, h, i, j, k) {
            if (a == 0) {
                return;
            }
            let l = false;
            let m = i;
            if (j) {
                m = h;
            }
            if (m != null) {
                l = m.ch;
            }
            let n = k.bottom;
            let o = k.bottom;
            let p = k.top;
            if (j) {
                o = k.right;
                p = k.left;
            }
            if (l) {
                o = k.top;
                p = k.bottom;
                if (j) {
                    o = k.left;
                    p = k.right;
                }
            }
            b = Math.max(b, Math.min(p, o));
            b = Math.min(b, Math.max(p, o));
            n = 0;
            let q;
            for (let r = 0; r < a; r++) {
                q = e._inner[r];
                if (j) {
                    if (isNaN_(q.x) || isInfinity(q.x)) {
                        continue;
                    }
                    n = Math.max(n, Math.abs(q.x - b));
                }
                else {
                    if (isNaN_(q.y) || isInfinity(q.y)) {
                        continue;
                    }
                    n = Math.max(n, Math.abs(q.y - b));
                }
            }
            let s;
            for (let t = 0; t < a; t++) {
                q = e._inner[t];
                let u;
                if (j) {
                    u = q.x;
                }
                else {
                    u = q.y;
                }
                if (isNaN_(u) || isInfinity(u) || n == 0) {
                    s = 1;
                }
                else {
                    s = Math.abs(u - b) / n;
                }
                f.add(2 - s);
                g.add(2 - s);
            }
        }
        e(a, b, c, d, e, f, g, h, i, j, k) {
            if (a == 0) {
                return;
            }
            let l = false;
            let m = i;
            if (j) {
                m = h;
            }
            if (m != null) {
                l = m.ch;
            }
            let n = k.bottom;
            let o = k.bottom;
            let p = k.top;
            if (j) {
                o = k.right;
                p = k.left;
            }
            if (l) {
                o = k.top;
                p = k.bottom;
                if (j) {
                    o = k.left;
                    p = k.right;
                }
            }
            b = Math.max(b, Math.min(p, o));
            b = Math.min(b, Math.max(p, o));
            n = 0;
            let q;
            for (let r = 0; r < a; r++) {
                q = e._inner[r];
                if (isNaN_(q) || isInfinity(q)) {
                    continue;
                }
                n = Math.max(n, Math.abs(q - b));
            }
            let s;
            for (let t = 0; t < a; t++) {
                q = e._inner[t];
                let u;
                u = q;
                if (n == 0 || isNaN_(u) || isInfinity(u)) {
                    s = 1;
                }
                else {
                    s = Math.abs(u - b) / n;
                }
                f.add(2 - s);
                g.add(2 - s);
            }
        }
        b(a, b, c, d, e, f, g, h) {
            if (a == 0) {
                return;
            }
            let i = e;
            if (g) {
                i = f;
            }
            let j = false;
            if (i != null) {
                j = i.ch;
            }
            let k;
            for (let l = 0; l < a; l++) {
                if (a == 1) {
                    k = 1;
                }
                else {
                    k = l / (a - 1);
                }
                k = 1 - k;
                c.add(1 + k);
                d.add(1 + k);
            }
        }
        t(a, b) {
            a.f.clear();
            a.k.clear();
            a.m.clear();
            a.p.clear();
            a.i.clear();
            a.h.clear();
            a.g.clear();
            this.g(a.f, b.f);
            this.h(a.k, b.k);
            this.k(a.m, b.m);
            this.k(a.p, b.p);
            this.k(a.i, b.i);
            this.h(a.h, b.h);
            this.h(a.g, b.g);
            let c = a.f.count;
            let d = a.f;
            let e;
            let f;
            let g;
            let h;
            for (let i = 0; i < c; i++) {
                e = d._inner[i];
                f = e[1];
                g = e[1];
                for (let j = 2; j < e.length; j++) {
                    f = Math.min(f, e[j]);
                    g = Math.max(g, e[j]);
                }
                h = (f + g) / 2;
                for (let k = 1; k < e.length; k++) {
                    e[k] = h;
                }
            }
            let l = a.h.count;
            let m = a.h;
            let n = a.g;
            for (let o = 0; o < l; o++) {
                m._inner[o] = 0;
                n._inner[o] = 0;
            }
        }
        y(a, b, c) {
            if (c) {
                this.j(a, b);
                a.aa = new Rect(0, 1, 0, 0, 1);
            }
            else {
                this.j(a, b);
                a.aa = new Rect(0, 0, 0, 0, 1);
            }
        }
        z(a, b, c) {
            if (c) {
                this.j(a, b);
                a.aa = new Rect(0, 0, 0, 1, 0);
            }
            else {
                this.j(a, b);
                a.aa = new Rect(0, 0, 1, 1, 0);
            }
        }
        j(a, b) {
            a.f.clear();
            a.k.clear();
            a.m.clear();
            a.p.clear();
            a.i.clear();
            a.h.clear();
            a.g.clear();
            this.g(a.f, b.f);
            this.h(a.k, b.k);
            this.k(a.m, b.m);
            this.k(a.p, b.p);
            this.k(a.i, b.i);
            this.h(a.h, b.h);
            this.h(a.g, b.g);
        }
        q(a, b, c, d, e) {
            let f = b.count;
            let g;
            let h;
            for (let i = 0; i < f; i++) {
                g = b._inner[i];
                if (e) {
                    if (c) {
                        h = { $type: Point_$type, x: d, y: g.y };
                    }
                    else {
                        h = { $type: Point_$type, x: g.x, y: d };
                    }
                }
                else {
                    if (c) {
                        h = { $type: Point_$type, x: g.x, y: d };
                    }
                    else {
                        h = { $type: Point_$type, x: d, y: g.y };
                    }
                }
                a.add(h);
            }
        }
        r(a, b, c, d, e, f) {
            let g = c.count;
            let h;
            let i;
            let j = a.count;
            for (let k = 0; k < g; k++) {
                h = c._inner[k];
                if (j > k) {
                    h = a._inner[k];
                }
                if (f) {
                    if (d) {
                        i = { $type: Point_$type, x: h.x, y: h.y };
                    }
                    else {
                        i = { $type: Point_$type, x: h.x, y: h.y };
                    }
                }
                else {
                    if (d) {
                        i = { $type: Point_$type, x: h.x, y: h.y };
                    }
                    else {
                        i = { $type: Point_$type, x: h.x, y: h.y };
                    }
                }
                b.add(i);
            }
        }
        k(a, b) {
            let c = b.count;
            let d;
            let e;
            for (let f = 0; f < c; f++) {
                d = b._inner[f];
                e = { $type: Point_$type, x: d.x, y: d.y };
                a.add(e);
            }
        }
        g(a, b) {
            let c = b.count;
            let d = b;
            let e;
            let f;
            let g = a;
            for (let h = 0; h < c; h++) {
                f = d._inner[h];
                e = new Array(f.length);
                for (let i = 0; i < e.length; i++) {
                    e[i] = f[i];
                }
                g.add(e);
            }
        }
        l(a, b, c, d, e) {
            let f = b.count;
            let g = b;
            let h;
            let i;
            let j = a;
            for (let k = 0; k < f; k++) {
                i = g._inner[k];
                h = new Array(i.length);
                if (e) {
                    h[0] = i[0];
                    for (let l = 1; l < h.length; l++) {
                        h[l] = d;
                    }
                }
                else {
                    h[0] = d;
                    for (let m = 1; m < h.length; m++) {
                        h[m] = i[m];
                    }
                }
                j.add(h);
            }
        }
        m(a, b, c, d, e, f) {
            let g = c.count;
            let h = c;
            let i;
            let j;
            let k;
            let l;
            let m = a.count;
            let n = b;
            for (let o = 0; o < g; o++) {
                j = h._inner[o];
                l = j;
                if (m > o) {
                    j = a._inner[o];
                }
                i = new Array(j.length);
                if (f) {
                    i[0] = l[0];
                    for (let p = 1; p < i.length; p++) {
                        i[p] = j[p];
                    }
                }
                else {
                    i[0] = l[0];
                    for (let q = 1; q < i.length; q++) {
                        i[q] = j[q];
                    }
                }
                n.add(i);
            }
        }
        p(a, b) {
            let c = b.count;
            let d;
            for (let e = 0; e < c; e++) {
                d = b._inner[e];
                a.add(d);
            }
        }
        i(a, b) {
            let c = b.count;
            let d;
            for (let e = 0; e < c; e++) {
                d = b._inner[e];
                a.add(d);
            }
        }
        h(a, b) {
            let c = b.count;
            let d;
            for (let e = 0; e < c; e++) {
                d = b._inner[e];
                a.add(d);
            }
        }
        n(a, b, c, d, e) {
            let f = b.count;
            let g;
            for (let h = 0; h < f; h++) {
                g = b._inner[h];
                a.add(g);
            }
        }
        o(a, b, c, d, e, f) {
            let g = c.count;
            let h;
            let i = a.count;
            for (let j = 0; j < g; j++) {
                if (i > j) {
                    h = a._inner[j];
                }
                else {
                    h = c._inner[j];
                }
                b.add(h);
            }
        }
        u(a, b, c, d, e) {
            let f = e.right;
            if (!c) {
                f = e.left;
            }
            let g = false;
            if (d) {
                g = true;
            }
            this.l(a.f, b.f, d, f, g);
            this.n(a.k, b.k, d, f, g);
            this.q(a.m, b.m, d, f, g);
            this.q(a.p, b.p, d, f, g);
            this.q(a.i, b.i, d, f, g);
            this.n(a.h, b.h, d, f, g);
            this.n(a.g, b.g, d, f, g);
        }
        w(a, b, c, d, e) {
            let f = e.bottom;
            if (c) {
                f = e.top;
            }
            let g = true;
            if (d) {
                g = false;
            }
            this.l(a.f, b.f, d, f, g);
            this.n(a.k, b.k, d, f, g);
            this.q(a.m, b.m, d, f, g);
            this.q(a.p, b.p, d, f, g);
            this.q(a.i, b.i, d, f, g);
            this.n(a.h, b.h, d, f, g);
            this.n(a.g, b.g, d, f, g);
        }
        x(a, b, c, d) {
            this.l(a.f, b.f, d, c, true);
            this.n(a.k, b.k, d, c, true);
            this.q(a.m, b.m, d, c, true);
            this.q(a.p, b.p, d, c, true);
            this.q(a.i, b.i, d, c, true);
            this.n(a.h, b.h, d, c, true);
            this.n(a.g, b.g, d, c, true);
        }
    }
    CategoryTransitionSourceFramePreparer.$t = /*@__PURE__*/ markType(CategoryTransitionSourceFramePreparer, 'CategoryTransitionSourceFramePreparer');
    return CategoryTransitionSourceFramePreparer;
})();
