/*
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 { NativeUIElementBridge } from "./NativeUIElementBridge";
import { runOn, enumGetBox, typeCast, EnumUtil, markType } from "./type";
import { NativeUIComponent } from "./NativeUIComponent";
import { NativeUIButtonClickedEventArgs } from "./NativeUIButtonClickedEventArgs";
import { NativeUIDisplayDensity_$type } from "./NativeUIDisplayDensity";
/**
 * @hidden
 */
export let IgcButtonBridge = /*@__PURE__*/ (() => {
    class IgcButtonBridge extends NativeUIElementBridge {
        constructor() {
            super(...arguments);
            this.e = null;
            this.c = null;
            this.f = null;
            this.g = null;
            this.d = null;
        }
        addHandler(a, b, c, d) {
            switch (c) {
                case 1:
                    let e = a;
                    this.e = e.listen("click", runOn(this, this.h));
                    this.c = d;
                    this.f = b;
                    break;
            }
        }
        h(a) {
            if (this.c != null) {
                let b = new NativeUIButtonClickedEventArgs();
                this.c(this.f, b);
            }
        }
        getValue(a, b) {
            switch (b) {
                case 3: return this.d != null ? this.d : this.g;
                case 1:
                    let c = a.getProperty("size");
                    let d = 1;
                    switch (c) {
                        case "small":
                            d = 2;
                            break;
                        case "medium":
                            d = 3;
                            break;
                        case "large":
                            d = 1;
                            break;
                        default:
                            d = 1;
                            break;
                    }
                    return enumGetBox(NativeUIDisplayDensity_$type, d);
            }
            return null;
        }
        removeHandler(a, b, c, d) {
            switch (c) {
                case 1:
                    if (this.e != null) {
                        this.e();
                    }
                    this.c = null;
                    this.f = null;
                    break;
            }
        }
        setValue(a, b, c) {
            switch (b) {
                case 3:
                    if (typeCast(NativeUIComponent.$, c) !== null) {
                        this.d = c;
                        a.append(this.d.u);
                    }
                    else {
                        this.g = c == null ? null : c.toString();
                        a.setText(this.g);
                    }
                    break;
                case 1:
                    let d = "large";
                    switch (EnumUtil.getEnumValue(NativeUIDisplayDensity_$type, c)) {
                        case 0:
                            d = "large";
                            break;
                        case 1:
                            d = "large";
                            break;
                        case 2:
                            d = "small";
                            break;
                        case 3:
                            d = "medium";
                            break;
                    }
                    a.setProperty("size", d);
                    break;
            }
        }
    }
    IgcButtonBridge.$t = markType(IgcButtonBridge, 'IgcButtonBridge', NativeUIElementBridge.$);
    return IgcButtonBridge;
})();
