/*
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 * as tslib_1 from "tslib";
import { Base, Delegate_$type, runOn, delegateCombine, fromEnum, typeCast, Array_$type, delegateRemove, markType, INotifyPropertyChanged_$type, PropertyChangedEventArgs, enumGetBox, String_$type } from "igniteui-webcomponents-core";
import { Popup } from "igniteui-webcomponents-layouts";
import { Suffix } from "igniteui-webcomponents-inputs";
import { InputGroup } from "igniteui-webcomponents-inputs";
import { Label } from "igniteui-webcomponents-inputs";
import { Input } from "igniteui-webcomponents-inputs";
import { List$1 } from "igniteui-webcomponents-core";
import { Icon } from "igniteui-webcomponents-inputs";
import { GridCellPosition } from "./GridCellPosition";
import { Rect } from "igniteui-webcomponents-core";
import { GotFocusEventArgs } from "./GotFocusEventArgs";
import { LostFocusEventArgs } from "./LostFocusEventArgs";
import { FilterFactory } from "igniteui-webcomponents-core";
import { ColumnComparisonFilterCondition } from "./ColumnComparisonFilterCondition";
import { NativeUI } from "igniteui-webcomponents-core";
import { FontInfo } from "igniteui-webcomponents-core";
import { MultiColumnComboBoxUtilities } from "./MultiColumnComboBoxUtilities";
import { ColumnWidth } from "./ColumnWidth";
import { SortMode_$type } from "./SortMode";
import { IDataSourceUpdateNotifier_$type } from "igniteui-webcomponents-core";
import { MultipleDataSourceNotifier } from "./MultipleDataSourceNotifier";
import { TextHeaderCellModel } from "./TextHeaderCellModel";
import { CornerRadius } from "igniteui-webcomponents-core";
import { stringEmpty, stringIsNullOrEmpty } from "igniteui-webcomponents-core";
import { stringFormat } from "igniteui-webcomponents-core";
import { BaseControlTheme_$type } from "igniteui-webcomponents-core";
import { Thickness } from "igniteui-webcomponents-core";
import { ControlDisplayDensity_$type } from "igniteui-webcomponents-core";
import { StringComparer } from "igniteui-webcomponents-core";
import { ThemeResolver } from "igniteui-webcomponents-inputs";
import { MultiColumnComboBoxTextChangedEventArgs } from "./MultiColumnComboBoxTextChangedEventArgs";
import { MultiColumnComboBoxValueChangedEventArgs } from "./MultiColumnComboBoxValueChangedEventArgs";
import { FastReflectionHelper } from "igniteui-webcomponents-core";
import { MultiColumnComboVisualModelExport } from "./MultiColumnComboVisualModelExport";
import { AppearanceHelper } from "igniteui-webcomponents-core";
import { FontUtil } from "igniteui-webcomponents-core";
import { BrushUtil } from "igniteui-webcomponents-core";
import { isNaN_ } from "igniteui-webcomponents-core";
/**
 * @hidden
 */
var MultiColumnComboBoxView = /** @class */ /*@__PURE__*/ (function (_super) {
    tslib_1.__extends(MultiColumnComboBoxView, _super);
    function MultiColumnComboBoxView() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this.ac = null;
        _this.ak = null;
        _this.f = null;
        _this.ai = null;
        _this.k = null;
        _this.ah = null;
        _this.j = null;
        _this.aj = null;
        _this.l = null;
        _this.h = null;
        _this.ae = null;
        _this.i = null;
        _this.af = null;
        _this.m = null;
        _this.ag = null;
        _this.d = null;
        _this.aq = null;
        _this.ab = new List$1(Delegate_$type, 0);
        _this.au = null;
        _this.aa = true;
        _this.ap = 0;
        _this.x = false;
        _this.a = null;
        _this.c = 0;
        _this.w = false;
        _this.s = false;
        _this.r = false;
        _this.p = false;
        _this.an = null;
        _this.am = null;
        _this.v = false;
        _this.ao = -1;
        _this.z = false;
        _this.t = false;
        return _this;
    }
    Object.defineProperty(MultiColumnComboBoxView.prototype, "e", {
        get: function () {
            return this.d;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBoxView.prototype, "y", {
        get: function () {
            return this.ap == 46;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBoxView.prototype, "n", {
        get: function () {
            return this.m;
        },
        enumerable: true,
        configurable: true
    });
    MultiColumnComboBoxView.prototype.bf = function (a) {
        this.ak = a;
        this.b1();
    };
    MultiColumnComboBoxView.prototype.bg = function (a) {
        this.f = a;
    };
    MultiColumnComboBoxView.prototype.bp = function () {
    };
    MultiColumnComboBoxView.prototype.b1 = function () {
        this.ag = this.ac.createElement("div");
        this.cs();
        this.a1();
        this.a0();
        this.ak.append(this.ai);
        this.ck();
        this.cm();
        document.addEventListener("click", runOn(this, this.a2), false);
        window.addEventListener("resize", runOn(this, this.cy), false);
    };
    MultiColumnComboBoxView.prototype.aw = function (a) {
        var b = this.g.n();
        if (null == b) {
            return;
        }
        this.p = false;
        if (b.eo != a) {
            b.eo = a;
            this.p = true;
        }
        else {
            this.a3();
        }
    };
    MultiColumnComboBoxView.prototype.ay = function () {
        var a = this.e;
        a.c1 = null;
    };
    MultiColumnComboBoxView.prototype.az = function () {
        var a = this.n;
        if (null != a) {
            a.ao();
        }
        this.cm();
        var b = this.g.n();
        if (null != b) {
            var c = b.eo;
            if (null != c) {
                b.eo = null;
            }
        }
    };
    MultiColumnComboBoxView.prototype.u = function (a) {
        if (null == a) {
            return false;
        }
        var b = this.ai.getNativeElement();
        var c = this.ag.getNativeElement();
        var d = this.am.getNativeElement();
        return b.contains(a) || c.contains(a) || d.contains(a);
    };
    MultiColumnComboBoxView.prototype.a0 = function () {
        var a = this.ad;
        var b = this.g;
        this.ai = a.createElement("div");
        this.ai.setStyleProperty("display", "flex");
        this.ai.setStyleProperty("height", "100%");
        this.ai.setAttribute("tabIndex", "0");
        this.ai.setAttribute("outline", "none !important");
        this.ai.listen("focusin", runOn(this, this.bm));
        this.ai.listen("focusout", runOn(this, this.bn));
        var c = a.getSubRenderer(this.ai);
        this.k = new InputGroup();
        this.k.provideContainer(c);
        this.k.k = 2;
        this.aj = a.createElement("div");
        var d = a.getSubRenderer(this.aj);
        this.l = new Label();
        this.l.provideContainer(d);
        if (this.f.actualLabelVisible) {
            this.cv();
        }
        this.ah = a.createElement("div");
        this.ah.addClass("ig-input");
        this.ah.setRawStyleProperty("flex-grow", "1");
        var e = a.getSubRenderer(this.ah);
        this.j = new Input();
        this.j.provideContainer(e);
        a.getExternal(this.j, a.rootWrapper, a.getExternal(b, null, null));
        this.j.b1 = "text";
        this.j.cg = b.fc;
        var f = this.j;
        f.changing = delegateCombine(f.changing, runOn(this, this.bh));
        var g = this.j;
        g.compositionEnd = delegateCombine(g.compositionEnd, runOn(this, this.bi));
        var h = this.j;
        h.keyDown = delegateCombine(h.keyDown, runOn(this, this.bk));
        var i = this.j;
        i.gotFocus = delegateCombine(i.gotFocus, runOn(this, this.bj));
        var j = this.j;
        j.mouseDown = delegateCombine(j.mouseDown, runOn(this, this.bl));
        this.k.appendContentChild(this.ah);
        this.k.inputs.add(this.j);
        this.a5(this.g.a7);
        var k = a.createElement("div");
        var l = a.getSubRenderer(k);
        var m = new Suffix();
        m.provideContainer(l);
        this.ae = a.createElement("div");
        this.h = new Icon();
        var n = a.getSubRenderer(this.ae);
        this.h.provideContainer(n);
        this.h.svgPath = MultiColumnComboBoxView.ar;
        this.ae.setStyleProperty("height", "16px");
        this.ae.setStyleProperty("width", "16px");
        m.appendContentChild(this.ae);
        this.k.appendContentChild(k);
        this.k.inputs.add(m);
        this.ch();
        var o = a.createElement("div");
        var p = a.getSubRenderer(o);
        var q = new Suffix();
        q.provideContainer(p);
        this.af = a.createElement("div");
        this.i = new Icon();
        var r = a.getSubRenderer(this.af);
        this.i.provideContainer(r);
        this.i.svgPath = MultiColumnComboBoxView.at;
        q.appendContentChild(this.af);
        this.k.appendContentChild(o);
        this.k.inputs.add(q);
        this.ae.listen("click", runOn(this, this.ax));
        this.af.listen("click", runOn(this, this.a4));
    };
    MultiColumnComboBoxView.prototype.a1 = function () {
        var a = this.ac.createElement("div");
        var b = this.ac.getSubRenderer(a);
        this.m = new Popup();
        this.m.provideRenderer(b);
        this.am = this.ac.createElement("div");
        this.am.setStyleProperty("padding", "4px");
        this.am.setStyleProperty("white-space", "nowrap");
        this.an = this.ac.createElement("div");
        this.an.append(this.am);
        this.an.append(this.ag);
        this.m.appendPopupContent(this.an);
    };
    MultiColumnComboBoxView.prototype.bt = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.bw = function (a, b, c) {
    };
    MultiColumnComboBoxView.prototype.bs = function () {
        switch (this.c) {
            case 2:
            case 1:
                if (null == this.a) {
                    this.c = 0;
                }
                break;
        }
        var a = null;
        switch (this.c) {
            case 2:
                {
                    var b = this.a.actualCount;
                    if (b == 0) {
                        this.g.c1 = null;
                    }
                    else {
                        if (b > 1) {
                        }
                        a = this.a.getItemAtIndex(0);
                        var c = this.g.i();
                        var d = new List$1(Base.$, 0);
                        for (var f = 0; f < c.length; f++) {
                            var e = c[f];
                            var g = this.a.getItemProperty(a, e);
                            d.add1(g);
                        }
                        this.g.c1 = d.count == 1 ? d._inner[0] : d.toArray();
                    }
                }
                break;
            case 1:
                {
                    var h = this.a.actualCount;
                    if (h == 0) {
                        this.g.fc = stringEmpty();
                    }
                    else {
                        if (h > 1) {
                        }
                        var i = this.g.eq();
                        a = this.a.getItemAtIndex(0);
                        var j = this.a.getItemProperty(a, i).toString();
                        this.g.fc = j;
                    }
                    var k = this.b();
                    var l = k.indexOfItem(a);
                    this.cg(l);
                }
                break;
            case 0:
            default: return;
        }
        if (null != a) {
            var m = this.b();
            var n = m.indexOfItem(a);
            this.cg(n);
        }
        else {
            this.cg(-1);
        }
        if (this.a != null) {
            this.a.updateNotifier = null;
            this.a = null;
        }
        this.c = 0;
    };
    MultiColumnComboBoxView.prototype.bu = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.bv = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.bz = function (a, b) {
        var c = this.e;
        if (null != c) {
            var d = c.c1;
            if (null != d) {
                if (d.b >= a && d.b <= b) {
                    this.ce(d.b);
                    this.ct();
                }
            }
        }
    };
    MultiColumnComboBoxView.prototype.b4 = function (a, b, c) {
    };
    MultiColumnComboBoxView.prototype.br = function () {
        this.b7();
        if (this.w) {
            var a = this.b();
            var b = a.actualCount;
            if (this.aa && b > 0) {
                this.b9();
            }
            else {
                this.ca();
            }
        }
        else {
            this.cr();
        }
    };
    MultiColumnComboBoxView.prototype.b0 = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.b2 = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.o = function () {
        var a = document.activeElement;
        return this.u(a);
    };
    MultiColumnComboBoxView.prototype.a3 = function () {
        this.cw();
        this.bo();
        var a = this.n;
        if (a.t) {
            return;
        }
        var b = this.cz();
        a.q = !this.w;
        a.showRelativeToExclusionRect(b, 1, 1);
        this.cm();
    };
    MultiColumnComboBoxView.prototype.cz = function () {
        var a = this.ac.rootWrapper.getNativeElement();
        var b = (a.getBoundingClientRect());
        return new Rect(0, b.left + window.pageXOffset, b.top + window.pageYOffset, b.width, b.height);
    };
    MultiColumnComboBoxView.prototype.b = function () {
        var a = this.e;
        if (null != a) {
            return a.actualDataSource;
        }
        return null;
    };
    MultiColumnComboBoxView.prototype.q = function (a) {
        var b = this.d.ad;
        var c = b.count;
        if (0 == c) {
            a = null;
            return {
                ret: true,
                p0: a
            };
        }
        else if (1 == c) {
            a = b._inner[0];
        }
        else {
            a = b._inner[0];
        }
        return {
            ret: null != a,
            p0: a
        };
    };
    MultiColumnComboBoxView.prototype.a8 = function (a) {
        var b = null != a ? a.b : -1;
        this.ce(b);
    };
    MultiColumnComboBoxView.prototype.bc = function () {
        var _this = this;
        if (this.v) {
            return;
        }
        var a = this.g;
        var b;
        var c = ((function () { var d = _this.q(b); b = d.p0; return d.ret; })());
        if (!c) {
            return;
        }
        if (b == null) {
            return;
        }
        a.f0(b);
    };
    MultiColumnComboBoxView.prototype.bo = function () {
        this.n.ar();
    };
    MultiColumnComboBoxView.prototype.bq = function () {
        var a = this.n;
        if (a.t) {
            this.az();
            var b = this.j;
            b.focus();
            var c = b.cg;
            var d = null != c ? b.cg.length : 0;
            b.df(d, d);
        }
    };
    MultiColumnComboBoxView.prototype.bx = function () {
        this.k.ah = true;
        this.j.dd();
        var a = new GotFocusEventArgs();
        this.g.fw(a);
    };
    MultiColumnComboBoxView.prototype.by = function () {
        this.az();
        this.k.mj();
        var a = new LostFocusEventArgs();
        this.g.fy(a);
    };
    MultiColumnComboBoxView.prototype.b3 = function (a) {
        var e_1, _a;
        if (a == null) {
            this.ac = null;
            try {
                for (var _b = tslib_1.__values(fromEnum(this.ab)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var b = _c.value;
                    b();
                }
            }
            catch (e_1_1) {
                e_1 = { error: e_1_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_1)
                        throw e_1.error;
                }
            }
            this.ab.clear();
            return;
        }
        this.ac = a;
        var c = a.rootWrapper;
        this.bf(c);
    };
    MultiColumnComboBoxView.prototype.b5 = function (a, b) {
        var c = this.b();
        if (null == c) {
            return;
        }
        if (null != this.a) {
            if (a != this.c) {
            }
            this.a.updateNotifier = null;
            this.a = null;
        }
        this.c = a;
        var d = new FilterFactory();
        var e = null;
        var f = null;
        switch (a) {
            case 2:
                {
                    var g = this.g.eq();
                    if (stringIsNullOrEmpty(g)) {
                        return;
                    }
                    e = b.toString();
                    var h = d.property(g);
                    f = h.isEqualTo(e);
                }
                break;
            case 1:
                {
                    var i = this.g.i();
                    if (i == null || i.length < 1) {
                        return;
                    }
                    var j = typeCast(Array_$type, b) !== null ? b : [b];
                    if (i.length != j.length) {
                        return;
                    }
                    for (var k = 0; k < i.length; k++) {
                        var l = i[k];
                        e = j[k];
                        var m = d.property(l);
                        var n = m.isEqualTo(e);
                        if (null == f) {
                            f = n;
                        }
                        else {
                            f.and(n);
                        }
                    }
                }
                break;
            case 0:
            default: return;
        }
        this.a = c.clone();
        this.a.filterExpressions.clear();
        this.a.updateNotifier = new MultiColumnComboBoxDataSourceNotificationHandler(this, true);
        this.a.filterExpressions.add(f);
        if (!this.a.isVirtual) {
            this.a.flushAutoRefresh();
        }
    };
    MultiColumnComboBoxView.prototype.b6 = function () {
        this.cp();
        var a = this.f.fc;
        var b = this.au.length;
        var c = !stringIsNullOrEmpty(a) ? a.length : 0;
        if (this.x && !stringIsNullOrEmpty(this.au) && b > 0) {
            b--;
        }
        this.j.df(b, c);
    };
    MultiColumnComboBoxView.prototype.b7 = function () {
        if (this.p) {
            this.p = false;
            this.a3();
        }
    };
    MultiColumnComboBoxView.prototype.b8 = function (a) {
        this.au = a;
        this.aa = !this.y;
        this.cb();
        this.ch();
    };
    MultiColumnComboBoxView.prototype.b9 = function () {
        if (stringIsNullOrEmpty(this.au)) {
            this.ay();
        }
        else {
            this.cg(0);
        }
        this.b6();
        this.w = false;
    };
    MultiColumnComboBoxView.prototype.ch = function () {
        if (this.ae != null && this.j != null) {
            if (this.g.be == false) {
                this.ae.setStyleProperty("display", "none");
            }
            else if ((this.g.c1 != null && this.g.c1 != "") || (this.j.cg != null && this.j.cg != "")) {
                this.ae.show();
            }
            else {
                this.ae.setStyleProperty("display", "none");
            }
        }
    };
    MultiColumnComboBoxView.prototype.a5 = function (a) {
        if (this.j != null) {
            this.j.disabled = !a;
        }
    };
    MultiColumnComboBoxView.prototype.ca = function () {
        var a = this.d;
        a.selectedItemsChanged = delegateRemove(a.selectedItemsChanged, runOn(this, this.bd));
        this.v = true;
        try {
            this.g.f7(this.au);
        }
        finally {
            this.v = false;
            var b = this.d;
            b.selectedItemsChanged = delegateCombine(b.selectedItemsChanged, runOn(this, this.bd));
        }
        this.w = false;
    };
    MultiColumnComboBoxView.prototype.cb = function () {
        var a = this.g.n();
        if (null == a) {
            return;
        }
        this.w = true;
        if (stringIsNullOrEmpty(this.au)) {
            if (null != a.eo) {
                this.aw(null);
            }
            else {
                this.ca();
            }
        }
        else {
            var b = new ColumnComparisonFilterCondition();
            b.e = 11;
            b.j = this.au;
            b.g = false;
            this.aw(b);
        }
    };
    MultiColumnComboBoxView.prototype.cc = function () {
        this.ap = 0;
        this.x = false;
    };
    MultiColumnComboBoxView.prototype.ce = function (a) {
        var b = this.b();
        var c = b.isPlaceholderItem(a);
        if (c) {
        }
        else {
            var d = this.e;
            if (a < 0) {
                this.s = false;
                d.ad.clear();
                if (!this.s) {
                    this.bc();
                }
                return;
            }
            d.selectedItemsChanged = delegateRemove(d.selectedItemsChanged, runOn(this, this.bd));
            try {
                d.ad.clear();
            }
            finally {
                d.selectedItemsChanged = delegateCombine(d.selectedItemsChanged, runOn(this, this.bd));
            }
            if (a >= 0) {
                var e = b.getItemAtIndex(a);
                this.s = false;
                d.ad.add1(e);
                if (!this.s) {
                    this.bc();
                }
            }
        }
    };
    MultiColumnComboBoxView.prototype.cg = function (a) {
        var b = this.e;
        if (-1 == a) {
            b.c1 = null;
            return;
        }
        var c = b.c1;
        var d = new GridCellPosition();
        var e;
        if (null != c) {
            e = c.d;
        }
        else {
            if (b.actualColumns.count == 0) {
                this.ao = a;
                return;
            }
            var f = this.g;
            var g = this.g.n();
            e = g.h6();
        }
        d.d = e;
        d.b = a;
        this.r = false;
        b.c1 = d;
        if (!this.r) {
            this.a8(b.c1);
        }
        this.ct();
    };
    MultiColumnComboBoxView.prototype.cj = function (a) {
        this.b5(2, a);
    };
    MultiColumnComboBoxView.prototype.ci = function (a) {
        this.b5(1, a);
    };
    MultiColumnComboBoxView.prototype.ck = function () {
        var a = this.g;
        if (null != this.k) {
            this.k.h = a.density;
            this.k.d = a.ab;
            this.k.oy = a.g2;
            this.k.oz = a.g3;
            this.k.cu = a.bz;
            this.k.tj = a.h1;
            this.k.m3 = a.gd;
            this.k.h = a.ag;
            this.k.sq = a.g4;
            this.k.hc = a.b0;
            this.k.sr = a.g5;
            this.k.hd = a.b1;
            this.k.he = a.b2;
            this.k.ss = a.g6;
            this.k.hf = a.b3;
            this.k.hg = a.b4;
            this.k.s7 = a.hb;
            this.k.h1 = a.b5;
            this.k.s8 = a.hc;
            this.k.h2 = a.b6;
            this.k.h3 = a.b7;
            this.k.h4 = a.b8;
        }
        if (null != this.j) {
            this.j.dv = a.ha;
            this.j.ac = a.au;
            this.j.b8 = a.e6;
        }
        if (null != this.l) {
            this.l.text = a.ev;
            this.l.dc = a.g7;
            this.l.y = a.as;
        }
        if (null != this.am) {
            NativeUI.n(this.am, a.g9);
            NativeUI.j(this.am, a.g8);
            if (null != a.at) {
                this.am.setStyleProperty("font", a.at.fontString);
            }
            this.am.setRawText(a.actualNoMatchesFoundLabel);
            this.bo();
        }
        if (null != this.d) {
            this.d.fl = a.density;
            var b = a.columnHeadersVisible;
            this.d.lt = b ? -1 : 0;
            this.d.l3 = a.rowSeparatorsVisible ? 1 : 0;
        }
        if (null != this.af) {
            var c = a.dropDownButtonVisible;
            MultiColumnComboBoxUtilities.c(this.af, c);
        }
    };
    MultiColumnComboBoxView.prototype.cp = function () {
        if (!this.v) {
            if (null != this.j) {
                var a = this.f.fc;
                this.j.cg = a;
            }
        }
    };
    MultiColumnComboBoxView.prototype.cm = function () {
        var a = this.n;
        var b = null != a ? a.t : false;
        this.i.svgPath = b ? MultiColumnComboBoxView.as : MultiColumnComboBoxView.at;
    };
    MultiColumnComboBoxView.prototype.co = function () {
        var a = this.d.k7 + 3;
        var b = this.d.k8 + this.d.l3;
        var c = this.d.actualDataSource;
        var d = null != c ? c.actualCount : 0;
        if (d > 8) {
            d = 8;
        }
        var e = d * b;
        e += a;
        var f = stringFormat("{0}px", e);
        this.ag.setStyleProperty("height", f);
        var g = 0;
        var h = this.d.actualColumns.count;
        var i = 100;
        if (this.d.defaultColumnWidth != null) {
            i = this.d.defaultColumnWidth.f;
        }
        g = h * i;
        g += 2;
        var j = stringFormat("{0}px", g);
        this.ag.setStyleProperty("width", j);
        if (null != this.am) {
            var k = this.g;
            var l = MultiColumnComboBoxUtilities.e(this.ad, k.actualNoMatchesFoundLabel, k.as);
            var m = l.width;
            var n = l.height;
            var o = stringFormat("{0}px", m);
            var p = stringFormat("{0}px", n);
            this.am.setStyleProperty("width", o);
            this.am.setStyleProperty("height", p);
        }
    };
    MultiColumnComboBoxView.prototype.cq = function () {
        if (this.w) {
            return;
        }
        this.au = null;
        var a = this.g.n();
        if (null != a) {
            var b = a.eo;
            if (null != b) {
                a.eo = null;
            }
            else {
                this.cr();
            }
        }
    };
    MultiColumnComboBoxView.prototype.cr = function () {
        var a = this.g;
        if (null != a.c1) {
            var b = this.g.c1;
            var c = typeCast(Array_$type, b) !== null ? b : [b];
            var d = this.b();
            var e = d.indexOfKey(c);
            if (-1 != e) {
                this.cg(e);
            }
        }
    };
    MultiColumnComboBoxView.prototype.cs = function () {
        var _this = this;
        if (null == this.d) {
            this.ac.getPortal(this.ag, "DataGrid", function (a) {
                _this.aq = a.componentRef;
                _this.aq.height = '100%';
                _this.aq.width = '100%';
                _this.d = (_this.aq.i);
                _this.cu();
                _this.d.dy = 1;
                _this.d.dw = 0;
                _this.d.cm = 1;
                _this.d.defaultColumnWidth = _this.f.defaultColumnWidth;
                _this.cn();
                _this.d.cg = 0;
                _this.d.hx = false;
                _this.d.ho = false;
                _this.d.u1 = new CornerRadius(0, 0);
                _this.d.ha = false;
                var b = _this.d;
                b.activeCellChanged = delegateCombine(b.activeCellChanged, runOn(_this, _this.a7));
                var c = _this.d;
                c.selectedItemsChanged = delegateCombine(c.selectedItemsChanged, runOn(_this, _this.bd));
                var d = _this.d;
                d.cellClicked = delegateCombine(d.cellClicked, runOn(_this, _this.ba));
                var e = _this.d;
                e.sizeChanged = delegateCombine(e.sizeChanged, runOn(_this, _this.be));
                var f = _this.d;
                f.actualColumnsChanged = delegateCombine(f.actualColumnsChanged, runOn(_this, _this.a9));
                var g = _this.d;
                g.columnWidthChanged = delegateCombine(g.columnWidthChanged, runOn(_this, _this.bb));
                _this.ck();
            }, false);
        }
    };
    MultiColumnComboBoxView.prototype.cl = function (a) {
        if (this.d != null) {
            this.d.defaultColumnWidth = a;
            this.co();
        }
    };
    MultiColumnComboBoxView.prototype.cn = function () {
        if (this.d != null) {
            var a = 0;
            switch (this.f.x) {
                case 0:
                    a = 0;
                    break;
                case 1:
                    a = 1;
                    break;
                case 2:
                    a = 2;
                    break;
                case 3:
                    a = 3;
                    break;
                case 4:
                    a = 4;
                    break;
            }
            this.d.d5 = a;
        }
    };
    MultiColumnComboBoxView.prototype.ct = function () {
        if (!this.t) {
            return;
        }
        var a = this.d;
        var b = a.c1;
        if (null != b) {
            var c = this.b();
            if (null != c) {
                var d = c.getItemAtIndex(b.b);
                if (null == d) {
                    return;
                }
                a.i6(d);
            }
        }
        else {
            a.t5(0);
        }
    };
    MultiColumnComboBoxView.prototype.cu = function () {
        if (null != this.aq) {
            var a = this.g;
            var b = a.itemsSource;
            this.d.ad.clear();
            if (this.d.actualDataSource != null) {
                var c = this.d.actualDataSource;
                c.schemaChanged = delegateRemove(c.schemaChanged, runOn(this, this.av));
            }
            this.aq.dataSource = b;
            this.aq.autoGenerateDesiredProperties = a.g;
            this.d.l = a.i();
            this.ao = -1;
            var d = this.b();
            if (null != d) {
                var e = d.updateNotifier;
                var f = new MultiColumnComboBoxDataSourceNotificationHandler(this, false);
                var g = new MultipleDataSourceNotifier(1, [e, f]);
                d.updateNotifier = g;
                d.propertiesRequested = a.f;
                d.schemaChanged = delegateCombine(d.schemaChanged, runOn(this, this.av));
                if (this.g.c1 != null) {
                    this.b5(1, this.g.c1);
                }
            }
            this.a = null;
        }
    };
    MultiColumnComboBoxView.prototype.av = function (a, b) {
        if (this.ao != -1) {
            this.cg(this.ao);
            this.ao = -1;
        }
    };
    MultiColumnComboBoxView.prototype.cv = function () {
        if (null != this.aj) {
            var a = this.f.actualLabelVisible;
            if (a) {
                this.k.appendContentChild(this.aj);
                this.k.inputs.add(this.l);
            }
            else {
                this.k.mi(this.aj);
                this.k.inputs.remove(this.l);
            }
        }
    };
    MultiColumnComboBoxView.prototype.cf = function (a) {
        if (this.j != null) {
            this.j.disabled = !a;
        }
        if (this.k != null) {
            this.k.disabled = !a;
        }
    };
    MultiColumnComboBoxView.prototype.cw = function () {
        this.co();
        if (!this.w) {
            this.z = false;
        }
        else {
            var a = this.b();
            this.z = a.actualCount == 0;
        }
        MultiColumnComboBoxUtilities.c(this.am, this.z);
        MultiColumnComboBoxUtilities.c(this.ag, !this.z);
    };
    MultiColumnComboBoxView.prototype.a6 = function (a) {
        if (this.j != null) {
            this.j.focus(a);
        }
    };
    MultiColumnComboBoxView.prototype.cd = function () {
        if (this.j != null) {
            this.j.dd();
        }
    };
    Object.defineProperty(MultiColumnComboBoxView.prototype, "al", {
        get: function () {
            return this.ak;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBoxView.prototype, "g", {
        get: function () {
            return this.f;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBoxView.prototype, "ad", {
        get: function () {
            return this.ac;
        },
        enumerable: true,
        configurable: true
    });
    MultiColumnComboBoxView.prototype.cx = function () {
        if (null != this.al) {
            this.al.setStyleProperty("box-sizing", "border-box");
        }
    };
    MultiColumnComboBoxView.prototype.a2 = function (a) {
        var b = a.target;
        if (!this.o()) {
            this.by();
        }
        else if (!this.u(b)) {
            this.by();
        }
    };
    MultiColumnComboBoxView.prototype.ax = function (a) {
        this.d.ad.clear();
        this.j.cg = "";
        this.g.fc = "";
        this.g.c1 = null;
    };
    MultiColumnComboBoxView.prototype.a4 = function (a) {
        var b = this.n;
        if (b.t) {
            this.az();
        }
        else {
            this.aw(null);
        }
        if (null != this.j) {
            this.j.focus();
            this.j.dd();
        }
    };
    MultiColumnComboBoxView.prototype.a7 = function (a, b) {
        var c = b.newActiveCell;
        this.a8(c);
        this.r = true;
    };
    MultiColumnComboBoxView.prototype.a9 = function (a, b) {
        this.cq();
    };
    MultiColumnComboBoxView.prototype.ba = function (a, b) {
        if (typeCast(TextHeaderCellModel.$, b.cellInfo) !== null) {
            return;
        }
        this.bq();
    };
    MultiColumnComboBoxView.prototype.bb = function (a, b) {
        this.co();
        this.bo();
    };
    MultiColumnComboBoxView.prototype.bd = function (a, b) {
        this.bc();
        this.s = true;
        this.ch();
    };
    MultiColumnComboBoxView.prototype.be = function (a, b) {
        this.t = b.b != 0 && b.a != 0;
        this.ct();
    };
    MultiColumnComboBoxView.prototype.bh = function (a, b) {
        if (b.isCompositionInProgress) {
            return;
        }
        this.f.fv(b);
        var c = b.value;
        this.b8(c);
    };
    MultiColumnComboBoxView.prototype.bi = function (a, b) {
        var c = this.j.cg;
        this.b8(c);
    };
    MultiColumnComboBoxView.prototype.bj = function (a, b) {
        this.cc();
    };
    MultiColumnComboBoxView.prototype.bk = function (a, b) {
        this.f.fx(b);
        if (b.defaultPrevented) {
            return;
        }
        var c = b.keyCode;
        this.ap = c;
        this.x = false;
        var d = b.modifiers;
        switch (c) {
            case 8:
                var e = this.j.selectionStart;
                if (0 == e) {
                    break;
                }
                var f = this.j.cg;
                if (stringIsNullOrEmpty(f)) {
                    break;
                }
                var g = f.length;
                var h = this.j.selectionEnd;
                var i = h - e;
                if (i > 0 && i < g && h == g) {
                    this.x = true;
                }
                break;
            case 40:
                if (d == 1) {
                    this.a3();
                    this.cq();
                    b.preventDefault();
                }
                else {
                    var j = this.e;
                    if (null == j) {
                        return;
                    }
                    var k = this.e.c1;
                    if (null != j.c1) {
                        this.d.ik(false, false);
                        b.preventDefault();
                    }
                    else {
                        var l = this.b();
                        if (null != l) {
                            var m = l.actualCount;
                            if (m > 0) {
                                this.cg(0);
                                b.preventDefault();
                            }
                        }
                    }
                }
                break;
            case 38:
                if (d == 1) {
                    this.az();
                    b.preventDefault();
                }
                else {
                    var n = this.e;
                    if (null == n) {
                        return;
                    }
                    var o = this.e.c1;
                    if (null != n.c1) {
                        this.d.iy(false, false);
                        b.preventDefault();
                    }
                    else {
                        var p = this.b();
                        if (null != p) {
                            var q = p.actualCount;
                            if (q > 0) {
                                this.cg(q - 1);
                                b.preventDefault();
                            }
                        }
                    }
                }
                break;
            case 13:
                if (this.n.t) {
                    b.stopPropagation();
                }
                this.bq();
                break;
            case 27:
                this.az();
                break;
        }
    };
    MultiColumnComboBoxView.prototype.bl = function (a, b) {
        if (false == this.o()) {
            this.j.dd();
            b.handled = true;
        }
    };
    MultiColumnComboBoxView.prototype.bm = function (a) {
        this.j.focus();
        var b = (a.originalEvent.relatedTarget);
        if (!this.u(b)) {
            this.bx();
        }
    };
    MultiColumnComboBoxView.prototype.bn = function (a) {
        var b = (a.originalEvent.relatedTarget);
        if (!this.u(b)) {
            this.by();
        }
    };
    MultiColumnComboBoxView.prototype.cy = function (a) {
        var b = this.n;
        if (null == b || false == b.t) {
            return;
        }
        var c = this.cz();
        this.m.as(c);
    };
    MultiColumnComboBoxView.$t = markType(MultiColumnComboBoxView, 'MultiColumnComboBoxView');
    MultiColumnComboBoxView.ar = "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z";
    MultiColumnComboBoxView.at = "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z";
    MultiColumnComboBoxView.as = "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z";
    return MultiColumnComboBoxView;
}(Base));
export { MultiColumnComboBoxView };
/**
 * @hidden
 */
var MultiColumnComboBox = /** @class */ /*@__PURE__*/ (function (_super) {
    tslib_1.__extends(MultiColumnComboBox, _super);
    function MultiColumnComboBox() {
        var _this = _super.call(this) || this;
        _this.c0 = null;
        _this.hi = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.r6, InputGroup.qq);
        _this.hj = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.r7, InputGroup.qr);
        _this.cb = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gk, InputGroup.er);
        _this.h3 = ThemeResolver.f(MultiColumnComboBox.aa, InputGroup.tx, InputGroup.tr);
        _this.gf = ThemeResolver.d(MultiColumnComboBox.aa, InputGroup.nh, InputGroup.nb);
        _this.hk = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.r8, InputGroup.qs);
        _this.cc = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gl, InputGroup.es);
        _this.hl = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.sa, InputGroup.qu);
        _this.cd = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gm, InputGroup.et);
        _this.ce = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gn, InputGroup.eu);
        _this.hm = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.sb, InputGroup.qv);
        _this.cf = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.go, InputGroup.ev);
        _this.cg = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gp, InputGroup.ew);
        _this.hn = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.sc, InputGroup.qw);
        _this.ch = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gq, InputGroup.ex);
        _this.ho = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.sd, InputGroup.qx);
        _this.ci = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gr, InputGroup.ey);
        _this.cj = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gs, InputGroup.ez);
        _this.ck = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gt, InputGroup.e0);
        _this.ax = null;
        _this.v = null;
        _this.a4 = true;
        _this.c = null;
        _this.o = ColumnWidth.a;
        _this.gr = null;
        _this.gg = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.rc, InputGroup.pw);
        _this.z = 0;
        _this.y = 1;
        _this.gs = null;
        _this.gh = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.rd, InputGroup.px);
        _this.bp = NaN;
        _this.bf = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.fu, InputGroup.d1);
        _this.a8 = true;
        _this.h0 = new Thickness(1, NaN, NaN, NaN, NaN);
        _this.hz = ThemeResolver.f(MultiColumnComboBox.aa, InputGroup.tv, InputGroup.tp);
        _this.gc = new CornerRadius(1, NaN, NaN, NaN, NaN);
        _this.gb = ThemeResolver.d(MultiColumnComboBox.aa, InputGroup.nf, InputGroup.m9);
        _this.b = null;
        _this.af = 0;
        _this.ae = 0;
        _this.ba = true;
        _this.gt = null;
        _this.gi = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.ru, InputGroup.qe);
        _this.bq = NaN;
        _this.bg = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.f5, InputGroup.ec);
        _this.gu = null;
        _this.gj = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.rw, InputGroup.qg);
        _this.br = NaN;
        _this.bh = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.f6, InputGroup.ed);
        _this.bs = NaN;
        _this.bi = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.f7, InputGroup.ee);
        _this.gv = null;
        _this.gk = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.rx, InputGroup.qh);
        _this.bt = NaN;
        _this.bj = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.f8, InputGroup.ef);
        _this.bu = NaN;
        _this.bk = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.f9, InputGroup.eg);
        _this.cu = null;
        _this.ex = null;
        _this.gw = null;
        _this.gl = MultiColumnComboBox.hf;
        _this.ap = null;
        _this.am = null;
        _this.a5 = false;
        _this.e0 = null;
        _this.dn = "No Matches Found";
        _this.gx = null;
        _this.gm = MultiColumnComboBox.hg;
        _this.gy = null;
        _this.gn = MultiColumnComboBox.hh;
        _this.aq = null;
        _this.an = null;
        _this.e7 = "";
        _this.a3 = true;
        _this.gz = MultiColumnComboBox.hp;
        _this.go = MultiColumnComboBox.hp;
        _this.ar = null;
        _this.ao = null;
        _this.g0 = null;
        _this.gp = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.se, InputGroup.qy);
        _this.bv = NaN;
        _this.bl = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gu, InputGroup.e1);
        _this.g1 = null;
        _this.gq = ThemeResolver.e(MultiColumnComboBox.aa, InputGroup.sf, InputGroup.qz);
        _this.bw = NaN;
        _this.bm = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gv, InputGroup.e2);
        _this.bx = NaN;
        _this.bn = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gw, InputGroup.e3);
        _this.by = NaN;
        _this.bo = ThemeResolver.b(MultiColumnComboBox.aa, InputGroup.gx, InputGroup.e4);
        _this.a2 = true;
        _this.w = 0;
        _this.c3 = null;
        _this.c2 = null;
        _this.d = null;
        _this.a = null;
        _this.cv = null;
        _this.bc = false;
        _this.gotFocus = null;
        _this.lostFocus = null;
        _this.textChanged = null;
        _this.valueChanged = null;
        _this.keyDown = null;
        _this.change = null;
        _this.changing = null;
        _this.propertyChanged = null;
        _this.o = new ColumnWidth();
        _this.o.f = 100;
        var a = _this.u();
        _this.v = a;
        a.bg(_this);
        return _this;
    }
    MultiColumnComboBox.prototype.u = function () {
        return new MultiColumnComboBoxView();
    };
    MultiColumnComboBox.prototype.f4 = function (a, b, c) {
        switch (a) {
            case "BackgroundColor":
                this.g2 = this.hd != null ? this.hd : this.hi;
                break;
            case "BorderColor":
                this.g3 = this.he != null ? this.he : this.hj;
                break;
            case "BorderWidth":
                this.bz = !isNaN_(this.b9) ? this.b9 : this.cb;
                break;
            case "ContentPadding":
                this.h1 = InputGroup.ti(this.h2, this.h3);
                break;
            case "CornerRadius":
                this.gd = InputGroup.m2(this.ge, this.gf);
                break;
            case "FocusBorderColor":
                this.g4 = this.hq != null ? this.hq : this.hk;
                break;
            case "FocusBorderWidth":
                this.b0 = !isNaN_(this.cl) ? this.cl : this.cc;
                break;
            case "FocusUnderlineColor":
                this.g5 = this.hr != null ? this.hr : this.hl;
                break;
            case "FocusUnderlineOpacity":
                this.b1 = !isNaN_(this.cm) ? this.cm : this.cd;
                break;
            case "FocusUnderlineRippleOpacity":
                this.b2 = !isNaN_(this.cn) ? this.cn : this.ce;
                break;
            case "HoverUnderlineColor":
                this.g6 = this.hs != null ? this.hs : this.hm;
                break;
            case "HoverUnderlineOpacity":
                this.b3 = !isNaN_(this.co) ? this.co : this.cf;
                break;
            case "HoverUnderlineWidth":
                this.b4 = !isNaN_(this.cp) ? this.cp : this.cg;
                break;
            case "ItemsSource":
            case "ValueField":
            case "DataSourceDesiredProperties":
            case "Fields":
                this.v.cu();
                break;
            case "DefaultColumnWidth":
                this.v.cl(this.defaultColumnWidth);
                break;
            case "LabelTextColor":
                this.g7 = this.ht != null ? this.ht : MultiColumnComboBox.hf;
                break;
            case "LabelTextStyle":
                this.as = this.az != null ? this.az : MultiColumnComboBox.av;
                break;
            case "NoMatchesFoundLabelTextColor":
                this.g9 = this.hv != null ? this.hv : MultiColumnComboBox.hh;
                break;
            case "NoMatchesFoundLabelBackgroundColor":
                this.g8 = this.hu != null ? this.hu : MultiColumnComboBox.hg;
                break;
            case "NoMatchesFoundLabelTextStyle":
                this.at = this.a0 != null ? this.a0 : MultiColumnComboBox.aw;
                break;
            case "UnderlineColor":
                this.hb = this.hx != null ? this.hx : this.hn;
                break;
            case "UnderlineOpacity":
                this.b5 = !isNaN_(this.cq) ? this.cq : this.ch;
                break;
            case "UnderlineRippleColor":
                this.hc = this.hy != null ? this.hy : this.ho;
                break;
            case "UnderlineRippleOpacity":
                this.b6 = !isNaN_(this.cr) ? this.cr : this.ci;
                break;
            case "UnderlineRippleWidth":
                this.b7 = !isNaN_(this.cs) ? this.cs : this.cj;
                break;
            case "UnderlineWidth":
                this.b8 = !isNaN_(this.ct) ? this.ct : this.ck;
                break;
            case "BaseTheme":
                this.ab = this.ac == 0 ? 1 : this.ac;
                break;
            case "Density":
                this.ag = this.density == 0 ? 0 : this.density;
                break;
            case "TextColor":
                this.ha = this.hw != null ? this.hw : MultiColumnComboBox.hp;
                break;
            case "TextStyle":
                this.au = this.a1 != null ? this.a1 : null;
                break;
            case "ActualDensity":
            case "ActualBaseTheme":
            case "ActualTextColor":
            case "ActualTextStyle":
            case "ActualBackgroundColor":
            case "ActualBorderColor":
            case "ActualBorderWidth":
            case "ActualContentPadding":
            case "ActualCornerRadius":
            case "ActualFocusBorderColor":
            case "ActualFocusBorderWidth":
            case "ActualFocusUnderlineColor":
            case "ActualFocusUnderlineOpacity":
            case "ActualFocusUnderlineRippleOpacity":
            case "ActualHoverUnderlineColor":
            case "ActualHoverUnderlineOpacity":
            case "ActualHoverUnderlineWidth":
            case "ActualLabelTextColor":
            case "ActualLabelTextStyle":
            case "ActualUnderlineColor":
            case "ActualUnderlineOpacity":
            case "ActualUnderlineRippleColor":
            case "ActualUnderlineRippleOpacity":
            case "ActualUnderlineRippleWidth":
            case "ActualUnderlineWidth":
            case "DropDownButtonVisible":
            case "ColumnHeadersVisible":
            case "RowSeparatorsVisible":
            case "ActualNoMatchesFoundLabel":
            case "ActualNoMatchesFoundLabelTextColor":
            case "ActualNoMatchesFoundLabelTextStyle":
            case MultiColumnComboBox.dq:
                this.v.ck();
                break;
            case "NoMatchesFoundLabel":
                this.actualNoMatchesFoundLabel = stringIsNullOrEmpty(this.e1) ? "No Matches Found" : this.e1;
                break;
            case "ActualLabelVisible":
                this.v.cv();
                break;
            case "Label":
            case "PlaceholderText":
                this.v.ck();
                this.actualLabelVisible = !stringIsNullOrEmpty(this.ex);
                break;
            case "Text":
                this.v.cp();
                var d = b != null ? b.toString() : null;
                var e = c != null ? c.toString() : null;
                this.f1(new MultiColumnComboBoxTextChangedEventArgs(d, e));
                this.f3(1, e);
                break;
            case "Value":
                this.f2(new MultiColumnComboBoxValueChangedEventArgs(b, c));
                this.f3(0, c);
                break;
            case "ShowClearButton":
                this.v.ch();
                break;
            case "AllowFilter":
                this.v.a5(this.a7);
                break;
            case "SortMode":
                this.v.cn();
                break;
        }
    };
    MultiColumnComboBox.prototype.ga = function () {
        this.v.cx();
    };
    Object.defineProperty(MultiColumnComboBox.prototype, "ay", {
        get: function () {
            if (null == this.ax) {
                this.ax = new FontInfo();
                this.ax.n = "'Segoe UI', Verdana";
                this.ax.d = 16;
            }
            return this.ax;
        },
        enumerable: true,
        configurable: true
    });
    MultiColumnComboBox.prototype.focus = function (a) {
        this.v.a6(a);
    };
    Object.defineProperty(MultiColumnComboBox.prototype, "be", {
        get: function () {
            return this.a4;
        },
        set: function (a) {
            var b = this.a4;
            this.a4 = a;
            if (b != this.a4) {
                this.fz("ShowClearButton", b, this.a4);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g", {
        get: function () {
            return this.c;
        },
        set: function (a) {
            var b = this.c;
            this.c = a;
            if (b != this.c) {
                this.fz("Fields", b, this.c);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "defaultColumnWidth", {
        get: function () {
            return this.o;
        },
        set: function (a) {
            var b = this.o;
            this.o = a;
            if (b != this.o) {
                this.fz("DefaultColumnWidth", b, this.o);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hd", {
        get: function () {
            return this.gr;
        },
        set: function (a) {
            var b = this.gr;
            this.gr = a;
            if (b != this.gr) {
                this.fz("BackgroundColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g2", {
        get: function () {
            return this.gg;
        },
        set: function (a) {
            var b = this.gg;
            this.gg = a;
            if (b != this.gg) {
                this.fz("ActualBackgroundColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ac", {
        get: function () {
            return this.z;
        },
        set: function (a) {
            var b = this.z;
            this.z = a;
            if (b != this.z) {
                this.fz("BaseTheme", enumGetBox(BaseControlTheme_$type, b), enumGetBox(BaseControlTheme_$type, a));
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ab", {
        get: function () {
            return this.y;
        },
        set: function (a) {
            var b = this.y;
            this.y = a;
            if (b != this.y) {
                this.fz("ActualBaseTheme", enumGetBox(BaseControlTheme_$type, b), enumGetBox(BaseControlTheme_$type, a));
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "he", {
        get: function () {
            return this.gs;
        },
        set: function (a) {
            var b = this.gs;
            this.gs = a;
            if (b != this.gs) {
                this.fz("BorderColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g3", {
        get: function () {
            return this.gh;
        },
        set: function (a) {
            var b = this.gh;
            this.gh = a;
            if (b != this.gh) {
                this.fz("ActualBorderColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b9", {
        get: function () {
            return this.bp;
        },
        set: function (a) {
            var b = this.bp;
            this.bp = a;
            if (b != this.bp) {
                this.fz("BorderWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "bz", {
        get: function () {
            return this.bf;
        },
        set: function (a) {
            var b = this.bf;
            this.bf = a;
            if (b != this.bf) {
                this.fz("ActualBorderWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "columnHeadersVisible", {
        get: function () {
            return this.a8;
        },
        set: function (a) {
            var b = this.a8;
            this.a8 = a;
            if (b != this.a8) {
                this.fz("ColumnHeadersVisible", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "h2", {
        get: function () {
            return this.h0;
        },
        set: function (a) {
            var b = this.h0;
            this.h0 = a;
            if (b != this.h0) {
                this.fz("ContentPadding", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "h1", {
        get: function () {
            return this.hz;
        },
        set: function (a) {
            var b = this.hz;
            this.hz = a;
            if (b != this.hz) {
                this.fz("ActualContentPadding", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ge", {
        get: function () {
            return this.gc;
        },
        set: function (a) {
            var b = this.gc;
            this.gc = a;
            if (b != this.gc) {
                this.fz("CornerRadius", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "gd", {
        get: function () {
            return this.gb;
        },
        set: function (a) {
            var b = this.gb;
            this.gb = a;
            if (b != this.gb) {
                this.fz("ActualCornerRadius", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "f", {
        get: function () {
            return this.b;
        },
        set: function (a) {
            var b = this.b;
            this.b = a;
            if (b != this.b) {
                this.fz("DataSourceDesiredProperties", b, this.b);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "density", {
        get: function () {
            return this.af;
        },
        set: function (a) {
            var b = this.af;
            this.af = a;
            if (b != this.af) {
                this.fz("Density", enumGetBox(ControlDisplayDensity_$type, b), enumGetBox(ControlDisplayDensity_$type, a));
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ag", {
        get: function () {
            return this.ae;
        },
        set: function (a) {
            var b = this.ae;
            this.ae = a;
            if (b != this.ae) {
                this.fz("ActualDensity", enumGetBox(ControlDisplayDensity_$type, b), enumGetBox(ControlDisplayDensity_$type, a));
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "dropDownButtonVisible", {
        get: function () {
            return this.ba;
        },
        set: function (a) {
            var b = this.ba;
            this.ba = a;
            if (b != this.ba) {
                this.fz("DropDownButtonVisible", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hq", {
        get: function () {
            return this.gt;
        },
        set: function (a) {
            var b = this.gt;
            this.gt = a;
            if (b != this.gt) {
                this.fz("FocusBorderColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g4", {
        get: function () {
            return this.gi;
        },
        set: function (a) {
            var b = this.gi;
            this.gi = a;
            if (b != this.gi) {
                this.fz("ActualFocusBorderColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cl", {
        get: function () {
            return this.bq;
        },
        set: function (a) {
            var b = this.bq;
            this.bq = a;
            if (b != this.bq) {
                this.fz("FocusBorderWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b0", {
        get: function () {
            return this.bg;
        },
        set: function (a) {
            var b = this.bg;
            this.bg = a;
            if (b != this.bg) {
                this.fz("ActualFocusBorderWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hr", {
        get: function () {
            return this.gu;
        },
        set: function (a) {
            var b = this.gu;
            this.gu = a;
            if (b != this.gu) {
                this.fz("FocusUnderlineColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g5", {
        get: function () {
            return this.gj;
        },
        set: function (a) {
            var b = this.gj;
            this.gu = a;
            if (b != this.gj) {
                this.fz("ActualFocusUnderlineColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cm", {
        get: function () {
            return this.br;
        },
        set: function (a) {
            var b = this.br;
            this.br = a;
            if (b != this.br) {
                this.fz("FocusUnderlineOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b1", {
        get: function () {
            return this.bh;
        },
        set: function (a) {
            var b = this.bh;
            this.bh = a;
            if (b != this.bh) {
                this.fz("ActualFocusUnderlineOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cn", {
        get: function () {
            return this.bs;
        },
        set: function (a) {
            var b = this.bs;
            this.bs = a;
            if (b != this.bs) {
                this.fz("FocusUnderlineRippleOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b2", {
        get: function () {
            return this.bi;
        },
        set: function (a) {
            var b = this.bi;
            this.bi = a;
            if (b != this.bi) {
                this.fz("ActualFocusUnderlineRippleOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hs", {
        get: function () {
            return this.gv;
        },
        set: function (a) {
            var b = this.gv;
            this.gv = a;
            if (b != this.gv) {
                this.fz("HoverUnderlineColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g6", {
        get: function () {
            return this.gk;
        },
        set: function (a) {
            var b = this.gk;
            this.gk = a;
            if (b != this.gk) {
                this.fz("ActualHoverUnderlineColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "co", {
        get: function () {
            return this.bt;
        },
        set: function (a) {
            var b = this.bt;
            this.bt = a;
            if (b != this.bt) {
                this.fz("HoverUnderlineOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b3", {
        get: function () {
            return this.bj;
        },
        set: function (a) {
            var b = this.bj;
            this.bj = a;
            if (b != this.bj) {
                this.fz("ActualHoverUnderlineOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cp", {
        get: function () {
            return this.bu;
        },
        set: function (a) {
            var b = this.bu;
            this.bu = a;
            if (b != this.bu) {
                this.fz("HoverUnderlineWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b4", {
        get: function () {
            return this.bk;
        },
        set: function (a) {
            var b = this.bk;
            this.bk = a;
            if (b != this.bk) {
                this.fz("ActualHoverUnderlineWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "itemsSource", {
        get: function () {
            return this.cu;
        },
        set: function (a) {
            var b = this.cu;
            this.cu = a;
            if (b != this.cu) {
                this.fz("ItemsSource", b, this.cu);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "actualDataSource", {
        get: function () {
            return this.v.b();
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ev", {
        get: function () {
            return this.ex;
        },
        set: function (a) {
            var b = this.ev;
            if (0 == StringComparer.b.compare(a, b)) {
                return;
            }
            this.ex = a;
            this.fz("Label", b, this.ex);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ht", {
        get: function () {
            return this.gw;
        },
        set: function (a) {
            var b = this.gw;
            this.gw = a;
            if (b != this.gw) {
                this.fz("LabelTextColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g7", {
        get: function () {
            return this.gl;
        },
        set: function (a) {
            var b = this.gl;
            this.gl = a;
            if (b != this.gl) {
                this.fz("ActualLabelTextColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "az", {
        get: function () {
            return this.ap;
        },
        set: function (a) {
            var b = this.ap;
            this.ap = a;
            if (b != this.ap) {
                this.fz("LabelTextStyle", b, this.ap);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "as", {
        get: function () {
            return this.am;
        },
        set: function (a) {
            var b = this.am;
            this.am = a;
            if (this.am != b) {
                this.fz("ActualLabelTextStyle", b, this.am);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "actualLabelVisible", {
        get: function () {
            return this.a5;
        },
        set: function (a) {
            var b = this.a5;
            this.a5 = a;
            if (b != this.a5) {
                this.fz("ActualLabelVisible", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "e1", {
        get: function () {
            return this.e0;
        },
        set: function (a) {
            var b = this.e0;
            if (0 == StringComparer.b.compare(a, b)) {
                return;
            }
            this.e0 = a;
            this.fz("NoMatchesFoundLabel", b, this.e0);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "actualNoMatchesFoundLabel", {
        get: function () {
            return this.dn;
        },
        set: function (a) {
            var b = this.dn;
            this.dn = a;
            if (b != this.dn) {
                this.fz("ActualNoMatchesFoundLabel", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hu", {
        get: function () {
            return this.gx;
        },
        set: function (a) {
            var b = this.gx;
            this.gx = a;
            if (b != this.gx) {
                this.fz("NoMatchesFoundLabelBackgroundColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g8", {
        get: function () {
            return this.gm;
        },
        set: function (a) {
            var b = this.gm;
            this.gm = a;
            if (b != this.gm) {
                this.fz(MultiColumnComboBox.dq, b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hv", {
        get: function () {
            return this.gy;
        },
        set: function (a) {
            var b = this.gy;
            this.gy = a;
            if (b != this.gy) {
                this.fz("NoMatchesFoundLabelTextColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g9", {
        get: function () {
            return this.gn;
        },
        set: function (a) {
            var b = this.gn;
            this.gn = a;
            if (b != this.gn) {
                this.fz("ActualNoMatchesFoundLabelTextColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "a0", {
        get: function () {
            return this.aq;
        },
        set: function (a) {
            var b = this.aq;
            this.aq = a;
            if (b != this.aq) {
                this.fz("NoMatchesFoundLabelTextStyle", b, this.aq);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "at", {
        get: function () {
            return this.an;
        },
        set: function (a) {
            var b = this.an;
            this.an = a;
            if (this.an != b) {
                this.fz("ActualNoMatchesFoundLabelTextStyle", b, this.an);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "e6", {
        get: function () {
            return this.e7;
        },
        set: function (a) {
            var b = this.e6;
            if (0 == StringComparer.b.compare(a, b)) {
                return;
            }
            this.e7 = a;
            this.fz("PlaceholderText", b, this.e7);
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "rowSeparatorsVisible", {
        get: function () {
            return this.a3;
        },
        set: function (a) {
            var b = this.a3;
            this.a3 = a;
            if (b != this.a3) {
                this.fz("RowSeparatorsVisible", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hw", {
        get: function () {
            return this.gz;
        },
        set: function (a) {
            var b = this.gz;
            this.gz = a;
            if (b != this.gz) {
                this.fz("TextColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ha", {
        get: function () {
            return this.go;
        },
        set: function (a) {
            var b = this.go;
            this.go = a;
            if (b != this.go) {
                this.fz("ActualTextColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "a1", {
        get: function () {
            return this.ar;
        },
        set: function (a) {
            var b = this.ar;
            this.ar = a;
            if (b != this.ar) {
                this.fz("TextStyle", b, this.ar);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "au", {
        get: function () {
            return this.ao;
        },
        set: function (a) {
            var b = this.ao;
            this.ao = a;
            if (this.ao != b) {
                this.fz("ActualTextStyle", b, this.ao);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hx", {
        get: function () {
            return this.g0;
        },
        set: function (a) {
            var b = this.g0;
            this.g0 = a;
            if (b != this.g0) {
                this.fz("UnderlineColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hb", {
        get: function () {
            return this.gp;
        },
        set: function (a) {
            var b = this.gp;
            this.gp = a;
            if (b != this.gp) {
                this.fz("ActualUnderlineColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cq", {
        get: function () {
            return this.bv;
        },
        set: function (a) {
            var b = this.bv;
            this.bv = a;
            if (b != this.bv) {
                this.fz("UnderlineOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b5", {
        get: function () {
            return this.bl;
        },
        set: function (a) {
            var b = this.bl;
            this.bl = a;
            if (b != this.bl) {
                this.fz("ActualUnderlineOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hy", {
        get: function () {
            return this.g1;
        },
        set: function (a) {
            var b = this.g1;
            this.g1 = a;
            if (b != this.g1) {
                this.fz("UnderlineRippleColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hc", {
        get: function () {
            return this.gq;
        },
        set: function (a) {
            var b = this.gq;
            this.gq = a;
            if (b != this.gq) {
                this.fz("ActualUnderlineRippleColor", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cr", {
        get: function () {
            return this.bw;
        },
        set: function (a) {
            var b = this.bw;
            this.bw = a;
            if (b != this.bw) {
                this.fz("UnderlineRippleOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b6", {
        get: function () {
            return this.bm;
        },
        set: function (a) {
            var b = this.bm;
            this.bm = a;
            if (b != this.bm) {
                this.fz("ActualUnderlineRippleOpacity", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cs", {
        get: function () {
            return this.bx;
        },
        set: function (a) {
            var b = this.bx;
            this.bx = a;
            if (b != this.bx) {
                this.fz("UnderlineRippleWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b7", {
        get: function () {
            return this.bn;
        },
        set: function (a) {
            var b = this.bn;
            this.bn = a;
            if (b != this.bn) {
                this.fz("ActualUnderlineRippleWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ct", {
        get: function () {
            return this.by;
        },
        set: function (a) {
            var b = this.by;
            this.by = a;
            if (b != this.by) {
                this.fz("UnderlineWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "b8", {
        get: function () {
            return this.bo;
        },
        set: function (a) {
            var b = this.bo;
            this.bo = a;
            if (b != this.bo) {
                this.fz("ActualUnderlineWidth", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "a7", {
        get: function () {
            return this.a2;
        },
        set: function (a) {
            var b = this.a2;
            this.a2 = a;
            if (b != this.a2) {
                this.fz("AllowFilter", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "x", {
        get: function () {
            return this.w;
        },
        set: function (a) {
            var b = this.w;
            this.w = a;
            if (b != this.w) {
                this.fz("SortMode", enumGetBox(SortMode_$type, b), enumGetBox(SortMode_$type, this.w));
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "fe", {
        get: function () {
            return this.c3;
        },
        set: function (a) {
            var b = this.c3;
            this.c3 = a;
            if (b != this.c3) {
                this.fz("TextField", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "fc", {
        get: function () {
            return this.c2;
        },
        set: function (a) {
            var b = this.c2;
            this.c2 = a;
            if (b != this.c2) {
                this.fz("Text", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "j", {
        get: function () {
            return this.d;
        },
        set: function (a) {
            var b = this.d;
            this.d = a;
            if (b != this.d) {
                this.fz("ValueField", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "e", {
        get: function () {
            return this.a;
        },
        set: function (a) {
            var b = this.a;
            this.a = a;
            if (b != this.a) {
                this.fz("ActualValueField", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "c1", {
        get: function () {
            return this.cv;
        },
        set: function (a) {
            var b = this.cv;
            this.cv = a;
            if (b != this.cv) {
                this.fz("Value", b, a);
            }
        },
        enumerable: true,
        configurable: true
    });
    MultiColumnComboBox.prototype.cx = function (a, b) {
        var c = new FastReflectionHelper(false, b);
        return c.getPropertyValue(a);
    };
    MultiColumnComboBox.prototype.n = function () {
        var a = this.eq();
        return this.m(a);
    };
    MultiColumnComboBox.prototype.eq = function () {
        return this.ep(this.fe);
    };
    MultiColumnComboBox.prototype.cy = function (a) {
        var b = this.i();
        if (null == b || b.length == 0) {
            return null;
        }
        var c = new List$1(Base.$, 0);
        for (var e = 0; e < b.length; e++) {
            var d = b[e];
            var f = this.cx(a, d);
            c.add1(f);
        }
        if (c.count == 1) {
            return c._inner[0];
        }
        return c.toArray();
    };
    MultiColumnComboBox.prototype.eo = function (a) {
        var b = this.eq();
        var c;
        if (null != b) {
            var d = this.cx(a, b);
            c = null != d ? d.toString() : null;
        }
        else {
            c = null;
        }
        return c;
    };
    MultiColumnComboBox.prototype.m = function (a) {
        var e_2, _a;
        var b = this.v.e;
        if (null == b) {
            return null;
        }
        var c = b.actualColumns;
        if (null == c || 0 == c.count) {
            return null;
        }
        if (stringIsNullOrEmpty(a)) {
            return c._inner[0];
        }
        try {
            for (var _b = tslib_1.__values(fromEnum(c)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var d = _c.value;
                if (0 == StringComparer.b.compare(d.h4, a)) {
                    return d;
                }
            }
        }
        catch (e_2_1) {
            e_2 = { error: e_2_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_2)
                    throw e_2.error;
            }
        }
        return null;
    };
    MultiColumnComboBox.prototype.ep = function (a) {
        if (stringIsNullOrEmpty(a)) {
            var b = this.actualDataSource;
            if (null == b) {
                return null;
            }
            var c = b.actualSchema;
            if (null == c) {
                return null;
            }
            var d = c.propertyNames;
            if (0 == d.length) {
                return null;
            }
            return d[0];
        }
        return a;
    };
    MultiColumnComboBox.prototype.h = function (a) {
        var b = new List$1(String_$type, 0);
        if (null == a || a.length == 0) {
            var c = this.ep(null);
            if (stringIsNullOrEmpty(c)) {
                return null;
            }
            b.add(c);
            return b.toArray();
        }
        for (var e = 0; e < a.length; e++) {
            var d = a[e];
            var f = this.ep(d);
            if (null != f) {
                b.add(f);
            }
        }
        if (b.count > 0) {
            return b.toArray();
        }
        return null;
    };
    MultiColumnComboBox.prototype.i = function () {
        var a = this.j;
        return this.h(a);
    };
    MultiColumnComboBox.prototype.f0 = function (a) {
        this.f3(2, a);
    };
    MultiColumnComboBox.prototype.f3 = function (a, b) {
        if (this.bc) {
            return;
        }
        this.bc = true;
        try {
            switch (a) {
                case 2:
                    {
                        var c = b;
                        var d = void 0;
                        var e = void 0;
                        if (null != c) {
                            d = this.eo(c);
                            e = this.cy(c);
                        }
                        else {
                            d = stringEmpty();
                            e = null;
                        }
                        if (this.fc != d) {
                            this.fc = d;
                        }
                        if (this.c1 != e) {
                            this.c1 = e;
                        }
                    }
                    break;
                case 1:
                    this.v.cj(b.toString());
                    break;
                case 0:
                    this.v.ci(b);
                    break;
            }
        }
        finally {
            this.bc = false;
        }
        this.v.ch();
    };
    MultiColumnComboBox.prototype.f7 = function (a) {
        this.fc = a;
    };
    MultiColumnComboBox.prototype.f9 = function () {
        this.au = (null == this.a1) ? this.ay : this.a1;
        this.as = (null == this.az) ? this.ay : this.az;
    };
    MultiColumnComboBox.prototype.f8 = function () {
    };
    MultiColumnComboBox.prototype.closeUp = function () {
        this.v.az();
    };
    MultiColumnComboBox.prototype.destroy = function () {
        this.provideRenderer(null);
    };
    MultiColumnComboBox.prototype.dropDown = function () {
        this.v.a3();
    };
    MultiColumnComboBox.prototype.select = function () {
        this.v.cd();
    };
    MultiColumnComboBox.prototype.notifySizeChanged = function () {
        this.v.bp();
    };
    MultiColumnComboBox.prototype.provideRenderer = function (a) {
        this.v.b3(a);
    };
    MultiColumnComboBox.prototype.cw = function () {
        return this.l();
    };
    MultiColumnComboBox.prototype.eh = function () {
        var a = this.l();
        return a.am();
    };
    MultiColumnComboBox.prototype.l = function () {
        var a = new MultiColumnComboVisualModelExport();
        a.a = AppearanceHelper.a(this.g2);
        a.j = this.ab;
        a.b = AppearanceHelper.a(this.g3);
        a.p = this.bz;
        a.columnHeadersVisible = this.columnHeadersVisible;
        a.au = this.h1;
        a.at = this.gd;
        a.k = this.ag;
        a.dropDownButtonVisible = this.dropDownButtonVisible;
        a.q = this.b1;
        a.aa = this.ev;
        a.c = AppearanceHelper.a(this.g7);
        a.actualLabelVisible = this.actualLabelVisible;
        a.actualNoMatchesFoundLabel = this.actualNoMatchesFoundLabel;
        a.d = AppearanceHelper.a(this.g8);
        a.e = AppearanceHelper.a(this.g9);
        a.al = this.e6;
        a.rowSeparatorsVisible = this.rowSeparatorsVisible;
        a.f = AppearanceHelper.a(this.ha);
        a.g = AppearanceHelper.a(this.hb);
        a.r = this.b5;
        a.h = AppearanceHelper.a(this.hc);
        a.s = this.b6;
        a.t = this.b7;
        a.u = this.b8;
        a.an = this.fc;
        a.y = this.c1;
        a.i = this.v.e.mc();
        if (this.as != null) {
            var b = this.as;
            if (this.v != null && b.n == null) {
                var c = this.v.ad;
                var d = FontUtil.getFontInfoFromString(c, b.fontString);
                b.n = d.n;
                b.d = d.d;
                b.o = d.o;
                b.q = d.q;
                b.r = d.r;
                b.s = d.s;
            }
            if (b.n != null) {
                a.ab = b.n;
            }
            if (!isNaN_(b.d)) {
                a.v = b.d;
            }
            if (b.s != null) {
                a.af = b.s;
            }
            if (b.q != null) {
                a.ad = b.q;
            }
            if (b.o != null) {
                a.ac = b.q;
            }
        }
        if (this.at != null) {
            var e = this.at;
            if (this.v != null && e.n == null) {
                var f = this.v.ad;
                var g = FontUtil.getFontInfoFromString(f, e.fontString);
                e.n = g.n;
                e.d = g.d;
                e.o = g.o;
                e.q = g.q;
                e.r = g.r;
                e.s = g.s;
            }
            if (e.n != null) {
                a.ag = e.n;
            }
            if (!isNaN_(e.d)) {
                a.w = e.d;
            }
            if (e.s != null) {
                a.ak = e.s;
            }
            if (e.q != null) {
                a.ai = e.q;
            }
            if (e.o != null) {
                a.ah = e.q;
            }
        }
        if (this.au != null) {
            var h = this.au;
            if (this.v != null && h.n == null) {
                var i = this.v.ad;
                var j = FontUtil.getFontInfoFromString(i, h.fontString);
                h.n = j.n;
                h.d = j.d;
                h.o = j.o;
                h.q = j.q;
                h.r = j.r;
                h.s = j.s;
            }
            if (h.n != null) {
                a.ao = h.n;
            }
            if (!isNaN_(h.d)) {
                a.x = h.d;
            }
            if (h.s != null) {
                a.as = h.s;
            }
            if (h.q != null) {
                a.aq = h.q;
            }
            if (h.o != null) {
                a.ap = h.q;
            }
        }
        return a;
    };
    MultiColumnComboBox.prototype.fw = function (a) {
        if (null != this.gotFocus) {
            this.gotFocus(this, a);
        }
    };
    MultiColumnComboBox.prototype.fy = function (a) {
        if (null != this.lostFocus) {
            this.lostFocus(this, a);
        }
    };
    MultiColumnComboBox.prototype.f1 = function (a) {
        if (null != this.textChanged) {
            this.textChanged(this, a);
        }
    };
    MultiColumnComboBox.prototype.f2 = function (a) {
        if (null != this.valueChanged) {
            this.valueChanged(this, a);
        }
    };
    MultiColumnComboBox.prototype.fz = function (a, b, c) {
        if (this.propertyChanged != null) {
            this.propertyChanged(this, new PropertyChangedEventArgs(a));
        }
        this.f4(a, b, c);
    };
    MultiColumnComboBox.prototype.fx = function (a) {
        if (null != this.keyDown) {
            this.keyDown(this, a);
        }
    };
    MultiColumnComboBox.prototype.fv = function (a) {
        if (null != this.changing) {
            this.changing(this, a);
        }
    };
    MultiColumnComboBox.$t = markType(MultiColumnComboBox, 'MultiColumnComboBox', Base.$, [INotifyPropertyChanged_$type]);
    MultiColumnComboBox.aa = 1;
    MultiColumnComboBox.hf = ThemeResolver.e(MultiColumnComboBox.aa, Label.c7, Label.c0);
    MultiColumnComboBox.hh = ThemeResolver.e(MultiColumnComboBox.aa, Label.c7, Label.c0);
    MultiColumnComboBox.hg = BrushUtil.g(255, 255, 255, 255);
    MultiColumnComboBox.av = null;
    MultiColumnComboBox.dq = "ActualNoMatchesFoundLabelBackgroundColor";
    MultiColumnComboBox.aw = null;
    MultiColumnComboBox.hp = BrushUtil.g(221, 0, 0, 0);
    return MultiColumnComboBox;
}(Base));
export { MultiColumnComboBox };
/**
 * @hidden
 */
var MultiColumnComboBoxDataSourceNotificationHandler = /** @class */ /*@__PURE__*/ (function (_super) {
    tslib_1.__extends(MultiColumnComboBoxDataSourceNotificationHandler, _super);
    function MultiColumnComboBoxDataSourceNotificationHandler(a, b) {
        var _this = _super.call(this) || this;
        _this.a = null;
        _this.b = false;
        _this.a = a;
        _this.b = b;
        return _this;
    }
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.rangeActualized = function (a, b) {
        if (!this.b) {
            this.a.bz(a, b);
        }
        else {
            this.a.bt(a, b);
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.notifySetItem = function (a, b, c) {
        if (!this.b) {
            this.a.b4(a, b, c);
        }
        else {
            this.a.bw(a, b, c);
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.notifyClearItems = function () {
        if (!this.b) {
            this.a.br();
        }
        else {
            this.a.bs();
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.notifyInsertItem = function (a, b) {
        if (!this.b) {
            this.a.b0(a, b);
        }
        else {
            this.a.bu(a, b);
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.notifyRemoveItem = function (a, b) {
        if (!this.b) {
            this.a.b2(a, b);
        }
        else {
            this.a.bv(a, b);
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.$t = markType(MultiColumnComboBoxDataSourceNotificationHandler, 'MultiColumnComboBoxDataSourceNotificationHandler', Base.$, [IDataSourceUpdateNotifier_$type]);
    return MultiColumnComboBoxDataSourceNotificationHandler;
}(Base));
export { MultiColumnComboBoxDataSourceNotificationHandler };
//# sourceMappingURL=MultiColumnComboBoxView_combined.js.map
