UNPKG

igniteui-webcomponents-charts

Version:

Ignite UI Web Components charting components for building rich data visualizations using TypeScript APIs.

5,940 lines 178 kB
/*
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 { __extends, __values } from "tslib";
import { HighlightingManager } from "igniteui-webcomponents-core";
import { Base, markType, runOn, delegateCombine, delegateRemove, fromEnum, String_$type, INotifyPropertyChanged_$type, PropertyChangedEventArgs, EventArgs, fromEn, EnumUtil, enumGetBox, typeGetValue, Point_$type } from "igniteui-webcomponents-core";
import { TreemapHighlightingMode_$type } from "./TreemapHighlightingMode";
import { RenderingContext } from "igniteui-webcomponents-core";
import { FontInfo } from "igniteui-webcomponents-core";
import { FontDefaults } from "igniteui-webcomponents-core";
import { DeviceUtils } from "igniteui-webcomponents-core";
import { Brush } from "igniteui-webcomponents-core";
import { Rect } from "igniteui-webcomponents-core";
import { CanvasViewRenderer } from "igniteui-webcomponents-core";
import { CanvasGestureDOMEventProxy } from "igniteui-webcomponents-core";
import { TreemapVisualData } from "./TreemapVisualData";
import { List$1 } from "igniteui-webcomponents-core";
import { TreemapVisual } from "./TreemapVisual";
import { Pool$1 } from "igniteui-webcomponents-core";
import { FontUtil } from "igniteui-webcomponents-core";
import { BrushUtil } from "igniteui-webcomponents-core";
import { DOMExecutionContext } from "igniteui-webcomponents-core";
import { truncate, isNaN_, logBase } from "igniteui-webcomponents-core";
import { Rectangle } from "igniteui-webcomponents-core";
import { TextBlock } from "igniteui-webcomponents-core";
import { HorizontalAlignment_$type } from "igniteui-webcomponents-core";
import { VerticalAlignment_$type } from "igniteui-webcomponents-core";
import { Thickness } from "igniteui-webcomponents-core";
import { TreemapNodeVisualData } from "./TreemapNodeVisualData";
import { TreemapLabelVisualData } from "./TreemapLabelVisualData";
import { RectangleVisualData } from "igniteui-webcomponents-core";
import { AppearanceHelper } from "igniteui-webcomponents-core";
import { PointData } from "igniteui-webcomponents-core";
import { SizeData } from "igniteui-webcomponents-core";
import { HashSet$1 } from "igniteui-webcomponents-core";
import { TreemapOrientation_$type } from "./TreemapOrientation";
import { Size } from "igniteui-webcomponents-core";
import { AreaInfo } from "./AreaInfo";
import { Dictionary$2 } from "igniteui-webcomponents-core";
import { DoubleAnimator } from "igniteui-webcomponents-core";
import { TreemapHighlightedValueDisplayMode_$type } from "./TreemapHighlightedValueDisplayMode";
import { BrushCollection } from "igniteui-webcomponents-core";
import { TreemapFillScaleMode_$type } from "./TreemapFillScaleMode";
import { TreemapLabelVerticalFitMode_$type } from "./TreemapLabelVerticalFitMode";
import { TreemapLabelHorizontalFitMode_$type } from "./TreemapLabelHorizontalFitMode";
import { TreemapHeaderDisplayMode_$type } from "./TreemapHeaderDisplayMode";
import { TreemapLayoutType_$type } from "./TreemapLayoutType";
import { FastItemsSource } from "igniteui-webcomponents-core";
import { HighlightingInfo } from "igniteui-webcomponents-core";
import { EasingFunctions } from "igniteui-webcomponents-core";
import { NotifyCollectionChangedEventArgs } from "igniteui-webcomponents-core";
import { ObservableCollection$1 } from "igniteui-webcomponents-core";
import { RectData } from "igniteui-webcomponents-core";
import { TreemapNodeVisualDataList } from "./TreemapNodeVisualDataList";
import { BrushCollectionUtil } from "igniteui-webcomponents-core";
import { TreemapValueMappingMode_$type } from "./TreemapValueMappingMode";
import { TreemapNodePointerEventArgs } from "./TreemapNodePointerEventArgs";
import { TreemapNodeStyleMappingTargetType_$type } from "./TreemapNodeStyleMappingTargetType";
import { stringIsNullOrEmpty, stringReplace } from "igniteui-webcomponents-core";
/**
 * @hidden
 */
var TreemapHighlightingManager = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapHighlightingManager, _super);
    function TreemapHighlightingManager() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    TreemapHighlightingManager.prototype.isCrossContextHighlight = function (a) {
        var b = a;
        return b.au == 3;
    };
    TreemapHighlightingManager.$t = markType(TreemapHighlightingManager, 'TreemapHighlightingManager', HighlightingManager.$);
    return TreemapHighlightingManager;
}(HighlightingManager));
export { TreemapHighlightingManager };
/**
 * @hidden
 */
var TreemapView = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapView, _super);
    function TreemapView() {
        var _this = _super.call(this) || this;
        _this.b = null;
        _this.a = null;
        _this.p = false;
        _this.af = null;
        _this.m = null;
        _this.ad = null;
        _this.t = 0;
        _this.s = 0;
        _this.g = null;
        _this.ae = null;
        _this.w = 1;
        _this.ac = null;
        _this.c = null;
        _this.u = 0;
        _this.v = 0;
        _this.a4 = null;
        _this.i = ((function () {
            var $ret = new FontInfo();
            $ret.q = FontDefaults.treemapFontFamily;
            $ret.f = DeviceUtils.f(FontDefaults.treemapFontSize);
            return $ret;
        })());
        _this.h = ((function () {
            var $ret = new FontInfo();
            $ret.q = FontDefaults.treemapFontFamily;
            $ret.f = DeviceUtils.f(FontDefaults.treemapFontSize);
            return $ret;
        })());
        _this.r = null;
        _this.n = null;
        _this.a5 = ((function () {
            var $ret = new Brush();
            $ret.fill = "rgba(0,0,0, 0.0)";
            return $ret;
        })());
        _this.f = ((function () {
            var $ret = new FontInfo();
            $ret.q = FontDefaults.treemapFontFamily;
            $ret.f = DeviceUtils.f(FontDefaults.treemapFontSize);
            return $ret;
        })());
        _this.e = ((function () {
            var $ret = new FontInfo();
            $ret.q = FontDefaults.treemapHeaderFontFamily;
            $ret.f = DeviceUtils.f(FontDefaults.treemapHeaderFontSize);
            return $ret;
        })());
        _this.o = true;
        _this.b = new TreemapViewRenderer();
        _this.b.j = ((function () {
            var $ret = new Brush();
            $ret.fill = "white";
            return $ret;
        })());
        return _this;
    }
    TreemapView.prototype.ax = function () {
    };
    TreemapView.prototype.a1 = function () {
        this.a0();
    };
    TreemapView.prototype.a2 = function () {
        if (!this.p) {
            this.p = true;
            if (this.ad != null) {
                this.ad.setTimeout(runOn(this, this.ag), 0);
            }
            else {
                window.setTimeout(runOn(this, this.ag), 0);
            }
        }
    };
    TreemapView.prototype.ag = function () {
        if (this.p) {
            this.p = false;
            this.a.i1();
        }
    };
    TreemapView.prototype.q = function () {
        return true;
    };
    TreemapView.prototype.ay = function () {
        this.w = this.a.dg;
        this.a2();
    };
    TreemapView.prototype.au = function (a) {
        if (a == null) {
            this.af = null;
            this.ad = null;
            this.m = null;
            if (this.ac != null) {
                window.removeEventListener("resize", this.ac, false);
                this.ac = null;
            }
            this.ah();
            return;
        }
        this.ad = a;
        this.ae = a;
        var b = this.ae.rootWrapper.width();
        var c = this.ae.rootWrapper.height();
        this.ar();
        this.w = (isNaN_(this.a.ee) ? this.a.dg : this.a.ee);
        var d = this.w;
        var e = Math.round(a.rootWrapper.width());
        var f = Math.round(a.rootWrapper.height());
        var g = e * d;
        var h = f * d;
        this.ad.rootWrapper.setStyleProperty("position", "relative");
        var i = a.createElement("canvas");
        i.setStyleProperty("position", "absolute");
        this.ad.rootWrapper.append(i);
        this.t = b;
        this.s = c;
        i.setAttribute("width", g.toString());
        i.setAttribute("height", h.toString());
        i.setStyleProperty("width", e.toString() + "px");
        i.setStyleProperty("height", f.toString() + "px");
        this.n = i.listen("contextmenu", function (j) { return j.preventDefault(); });
        this.a.kb = new Rect(0, 0, 0, e, f);
        this.af = i;
        var j = this.ad.get2DCanvasContext(this.af);
        this.m = new RenderingContext(new CanvasViewRenderer(), j);
        this.aq();
        this.a3();
        this.m.ad(this.g);
        this.a0();
        this.c = new CanvasGestureDOMEventProxy(this.af, this.ad, true);
        this.c.ao = function (k) { return true; };
        this.c.bl = this.a.kb;
        var k = this.c;
        k.onMouseOver = delegateCombine(k.onMouseOver, runOn(this, this.am));
        var l = this.c;
        l.onMouseUp = delegateCombine(l.onMouseUp, runOn(this, this.an));
        var m = this.c;
        m.onMouseDown = delegateCombine(m.onMouseDown, runOn(this, this.aj));
        var n = this.c;
        n.onMouseEnter = delegateCombine(n.onMouseEnter, runOn(this, this.ak));
        var o = this.c;
        o.onMouseLeave = delegateCombine(o.onMouseLeave, runOn(this, this.al));
    };
    TreemapView.prototype.al = function (a) {
        this.a.iq(a);
    };
    TreemapView.prototype.ao = function (a) {
        this.b.e(a, this.r, this);
    };
    TreemapView.prototype.ak = function (a) {
        this.a.ip(a);
    };
    TreemapView.prototype.ar = function () {
        var _this = this;
        if (this.ac == null) {
            this.ac = function (a) {
                var b = _this.a.ee;
                var c = _this.a.dg;
                if (!isNaN_(b) && b != 0) {
                    return;
                }
                if (window.devicePixelRatio != undefined && window.devicePixelRatio != c) {
                    _this.a.dg = window.devicePixelRatio;
                }
            };
            var e_ = this.ac;
            window.addEventListener("resize", e_, false);
        }
        this.ac(null);
    };
    TreemapView.prototype.ah = function () {
        if (this.n != null) {
            this.n();
            this.n = null;
        }
        if (this.c != null) {
            var a = this.c;
            a.onMouseOver = delegateRemove(a.onMouseOver, runOn(this, this.am));
            var b = this.c;
            b.onMouseUp = delegateRemove(b.onMouseUp, runOn(this, this.an));
            var c = this.c;
            c.onMouseDown = delegateRemove(c.onMouseDown, runOn(this, this.aj));
            var d = this.c;
            d.onMouseEnter = delegateRemove(d.onMouseEnter, runOn(this, this.ak));
            var e = this.c;
            e.onMouseLeave = delegateRemove(e.onMouseLeave, runOn(this, this.al));
            this.c.ao = null;
            this.c.av();
        }
    };
    TreemapView.prototype.aj = function (a) {
        if (this.c.al) {
            this.a.iu(a);
        }
        else {
            this.a.io(a);
        }
    };
    TreemapView.prototype.an = function (a) {
        if (this.c.al) {
            this.a.iv(a);
        }
        else {
            this.a.is(a);
        }
    };
    TreemapView.prototype.am = function (a, b, c) {
        this.a.ir(a);
    };
    TreemapView.prototype.aq = function () {
    };
    TreemapView.prototype.l = function () {
        return this.b.b;
    };
    TreemapView.prototype.a3 = function () {
        this.g = FontUtil.getFont(this.ad);
        if (this.h != null) {
            this.u = this.x(this.h);
        }
        else {
            this.u = this.x(this.g);
        }
        if (this.i != null) {
            this.v = this.x(this.i);
        }
        else {
            this.v = this.x(this.g);
        }
        this.a4 = new Brush();
        this.a4._fill = this.ad.rootWrapper.getStyleProperty("color");
        if (this.m != null) {
            this.m.ad(this.g);
        }
    };
    TreemapView.prototype.as = function () {
        var a = this.ae.rootWrapper.width();
        var b = this.ae.rootWrapper.height();
        this.a.kb = new Rect(0, 0, 0, a, b);
        this.ar();
    };
    TreemapView.prototype.ap = function () {
        if (this.p) {
            this.ag();
        }
    };
    TreemapView.prototype.a0 = function () {
        if (this.m == null) {
            return;
        }
        var a = this.a.kb.width;
        var b = this.a.kb.height;
        var c = Math.round(a * this.w);
        var d = Math.round(b * this.w);
        if (this.t != c || this.s != d) {
            this.af.setAttribute("width", c.toString());
            this.af.setAttribute("height", d.toString());
            this.af.setStyleProperty("width", a.toString() + "px");
            this.af.setStyleProperty("height", b.toString() + "px");
            this.t = truncate(Math.round(c));
            this.s = truncate(Math.round(d));
        }
        if (this.m.d && this.w != 1) {
            this.m.aa();
            this.m.ab(this.w, this.w);
        }
        this.b.f(this.m, this.a.kb, this.r, this.u);
        if (this.m.d && this.w != 1) {
            this.m.z();
        }
    };
    TreemapView.prototype.aw = function (a) {
        this.i = a;
        if (this.i != null) {
            this.v = this.x(this.i);
        }
        else {
            this.v = this.x(this.g);
        }
    };
    TreemapView.prototype.az = function (a) {
        this.h = a;
        if (this.h != null) {
            this.u = this.x(this.h);
        }
        else {
            this.u = this.x(this.g);
        }
        if (this.i != null) {
            this.v = this.x(this.i);
        }
        else {
            this.v = this.x(this.g);
        }
    };
    TreemapView.prototype.ai = function (a) {
        this.r = a;
        this.a0();
    };
    TreemapView.prototype.ab = function (a) {
        if (a != null) {
            if (this.h != null) {
                this.m.ad(this.h);
            }
            else {
                this.m.ad(this.f);
            }
            return this.m.g(a);
        }
        return 0;
    };
    TreemapView.prototype.z = function (a) {
        if (a != null) {
            if (this.i != null) {
                this.m.ad(this.i);
            }
            else {
                this.m.ad(this.f);
            }
            return this.m.g(a);
        }
        return 0;
    };
    TreemapView.prototype.x = function (a) {
        return FontUtil.getCurrentFontHeight(this.ad, a);
    };
    TreemapView.prototype.aa = function (a) {
        return this.u;
    };
    TreemapView.prototype.y = function (a) {
        return this.v;
    };
    TreemapView.prototype.a7 = function () {
        return ((function () {
            var $ret = new Brush();
            $ret.fill = "rgb(220,220,220)";
            return $ret;
        })());
    };
    TreemapView.prototype.a9 = function () {
        return ((function () {
            var $ret = new Brush();
            $ret.fill = "rgb(240, 240, 240)";
            return $ret;
        })());
    };
    TreemapView.prototype.a8 = function () {
        return ((function () {
            var $ret = new Brush();
            $ret.fill = "rgb(102, 102, 102)";
            return $ret;
        })());
    };
    TreemapView.prototype.bf = function () {
        return this.a5;
    };
    TreemapView.prototype.bb = function () {
        return ((function () {
            var $ret = new Brush();
            $ret.fill = "black";
            return $ret;
        })());
    };
    TreemapView.prototype.ba = function () {
        return ((function () {
            var $ret = new Brush();
            $ret.fill = "rgb(240,240,240)";
            return $ret;
        })());
    };
    TreemapView.prototype.be = function () {
        return ((function () {
            var $ret = new Brush();
            $ret.fill = "rgb(240, 240, 240)";
            return $ret;
        })());
    };
    TreemapView.prototype.a6 = function () {
        return ((function () {
            var $ret = new Brush();
            $ret.fill = "rgb(102, 102, 102)";
            return $ret;
        })());
    };
    TreemapView.prototype.k = function () {
        return this.f;
    };
    TreemapView.prototype.j = function () {
        return this.e;
    };
    TreemapView.prototype.bc = function () {
        return BrushUtil.j(153, 25, 25, 25);
    };
    TreemapView.prototype.bd = function () {
        return BrushUtil.j(153, 45, 45, 45);
    };
    TreemapView.prototype.at = function () {
        this.o = true;
        this.ar();
        if (this.c != null) {
            this.c.at(this.ad.rootWrapper, "");
        }
    };
    TreemapView.prototype.av = function () {
        this.o = false;
        if (this.c != null && this.ad != null) {
            this.c.bh(this.ad.rootWrapper, "");
        }
    };
    TreemapView.prototype.d = function () {
        return new DOMExecutionContext(this.ad);
    };
    TreemapView.$t = markType(TreemapView, 'TreemapView');
    return TreemapView;
}(Base));
export { TreemapView };
/**
 * @hidden
 */
var TreemapViewRenderer = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapViewRenderer, _super);
    function TreemapViewRenderer() {
        var _this = _super.call(this) || this;
        _this.b = null;
        _this.c = null;
        _this.j = null;
        _this.c = new List$1(TreemapVisual.$, 0);
        _this.b = ((function () {
            var $ret = new Pool$1(TreemapVisual.$);
            $ret.create = runOn(_this, _this.a);
            $ret.activate = runOn(_this, _this.g);
            $ret.disactivate = runOn(_this, _this.i);
            $ret.destroy = runOn(_this, _this.h);
            return $ret;
        })());
        return _this;
    }
    TreemapViewRenderer.prototype.a = function () {
        var a = new TreemapVisual();
        this.c.add(a);
        return a;
    };
    TreemapViewRenderer.prototype.g = function (a) {
        a.x = 0;
    };
    TreemapViewRenderer.prototype.i = function (a) {
        a.x = 1;
    };
    TreemapViewRenderer.prototype.h = function (a) {
        this.c.remove(a);
    };
    TreemapViewRenderer.prototype.d = function (a) {
        if (a.c.count != 5) {
            a.c.add1(new Rectangle());
            a.c.add1(new Rectangle());
            a.c.add1(new TextBlock());
            a.c.add1(new Rectangle());
            a.c.add1(new Rectangle());
        }
    };
    TreemapViewRenderer.prototype.f = function (a, b, c, d) {
        a.l(b.left, b.top, b.width, b.height);
        if (c != null) {
            for (var e = 0; e < c.count; e++) {
                var f = c._inner[e];
                this.d(f);
                var g = f.c._inner[0];
                var h = f.c._inner[1];
                var i = f.c._inner[2];
                var j = f.c._inner[3];
                var k = f.c._inner[4];
                g._fill = f.l;
                g._opacity = f.d;
                g.width = f.p.width;
                g.height = f.p.height;
                g.n = f.p.left;
                g.o = f.p.top;
                j._fill = f.l;
                j.width = !f.q.isEmpty ? f.q.width : 0;
                j.height = !f.q.isEmpty ? f.q.height : 0;
                j.n = !f.q.isEmpty ? f.q.left : 0;
                j.o = !f.q.isEmpty ? f.q.top : 0;
                k._fill = null;
                k._stroke = f.o;
                k.ad = f.i;
                k.width = f.p.width;
                k.height = f.p.height;
                k.n = f.p.left;
                k.o = f.p.top;
                a.ad(f.a);
                var l = a.g(f.j);
                if (f.b) {
                    i.al = f.j;
                    switch (f.k) {
                        case 0:
                            i.n = f.p.left + f.s.left;
                            break;
                        case 1:
                        case 3:
                            i.n = f.p.left + f.p.width / 2 - f.f / 2;
                            break;
                        case 2:
                            i.n = Math.max(f.p.left + f.s.left, f.p.right - (l + f.s.right));
                            break;
                    }
                    switch (f.t) {
                        case 0:
                            i.o = f.p.top + f.s.top;
                            break;
                        case 1:
                        case 3:
                            i.o = f.p.top + f.p.height / 2 - f.e / 2;
                            break;
                        case 2:
                            i.o = Math.max(f.p.top + f.s.top, f.p.bottom - (d + f.s.bottom));
                            break;
                    }
                    i.ao = f.n;
                }
                else {
                    h._fill = f.m;
                    h._stroke = f.o;
                    h.ad = f.i;
                    h.width = f.p.width;
                    h.height = f.e;
                    h.n = f.p.left;
                    h.o = f.p.top;
                    if (f.w == 0) {
                        h.width = l + f.r.left + f.r.right;
                    }
                    i.n = f.p.left + f.r.left;
                    i.o = f.p.top + f.r.top;
                    i.al = f.j;
                    i.ao = f.n;
                }
                a.ae(f.h);
                if (f.b) {
                    a.l(g.n, g.o, g.width, g.height);
                }
                a.w(g);
                if (!f.q.isEmpty) {
                    a.w(j);
                }
                if (k.ad > 0) {
                    a.w(k);
                }
                if (f.u == 0) {
                    if (!f.b) {
                        a.w(h);
                    }
                }
                a.aa();
                a.af(f.p);
                if (f.w == 0) {
                    if (!f.b) {
                        a.w(h);
                    }
                }
                a.x(i);
                a.z();
            }
        }
    };
    TreemapViewRenderer.prototype.e = function (a, b, c) {
        if (b != null) {
            for (var d = 0; d < b.count; d++) {
                var e = b._inner[d];
                this.d(e);
                var f = e.c._inner[0];
                var g = e.c._inner[1];
                var h = e.c._inner[2];
                var i = e.c._inner[3];
                var j = e.c._inner[4];
                var k = new TreemapNodeVisualData();
                k.d = new RectangleVisualData(1, "NodePath", f);
                k.d.appearance.stroke = AppearanceHelper.b(j._stroke);
                k.d.appearance.strokeExtended = AppearanceHelper.a(j._stroke);
                k.d.appearance.strokeThickness = j.ad;
                k.b = new RectangleVisualData(1, "HeaderRect", g);
                k.c = new RectangleVisualData(1, "HighlightRect", i);
                var l = new TreemapLabelVisualData();
                l.labelPosition = new PointData(h.n, h.o);
                if (e.b) {
                    l.labelSize = new SizeData(c.ab(h.al), c.aa(h.al));
                }
                else {
                    l.labelSize = new SizeData(c.z(h.al), c.y(h.al));
                }
                l.labelValue = h.al;
                l.appearance = AppearanceHelper.c(h, e.a);
                k.a = l;
                a.nodes.add(k);
            }
        }
    };
    TreemapViewRenderer.$t = markType(TreemapViewRenderer, 'TreemapViewRenderer');
    return TreemapViewRenderer;
}(Base));
export { TreemapViewRenderer };
/**
 * @hidden
 */
var TreemapLayoutCalculator = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapLayoutCalculator, _super);
    function TreemapLayoutCalculator() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    TreemapLayoutCalculator.c = function (a, b, c, d) {
        var e = a.e();
        var f = d.f;
        var g = f * f / (b.width * b.height);
        if (e / c < g) {
            return true;
        }
        return false;
    };
    TreemapLayoutCalculator.a = function (a, b, c, d, e) {
        for (var f = 0; f < c.count; f++) {
            var g = c._inner[f];
            if (!a.contains(g)) {
                return false;
            }
        }
        return true;
    };
    TreemapLayoutCalculator.b = function (a, b) {
        if (a.width < b.f || a.height < b.f) {
            return true;
        }
        return false;
    };
    TreemapLayoutCalculator.prototype.h = function (a, b, c) {
        return a.o(b);
    };
    TreemapLayoutCalculator.prototype.i = function (a, b, c) {
        var d = a.o(b);
        if (d.isEmpty) {
            return d;
        }
        if (b.b != null && b.b.count > 0) {
            var e = c.i;
            var f = e.left + e.right;
            var g = e.top + e.bottom;
            var h = a.b(b);
            if (!h) {
                return d;
            }
            var i = new Rect(0, d.left - e.left, d.top - e.top, d.width + f, d.height + g);
            return i;
        }
        else {
            return d;
        }
    };
    TreemapLayoutCalculator.prototype.g = function (a, b, c, d) {
        if (b.b != null && b.b.count > 0) {
            var e = d.i;
            var f = e.left + e.right;
            var g = e.top + e.bottom;
            if (c.width < f || c.height < g) {
                a.m(b, c);
                return;
            }
            var h = new Rect(0, c.left + e.left, c.top + e.top, c.width - f, c.height - g);
            a.m(b, h);
            a.n(b, true);
        }
        else {
            a.m(b, c);
        }
    };
    TreemapLayoutCalculator.prototype.f = function (a, b, c, d, e, f) {
        var e_1, _a;
        if (!TreemapLayoutCalculator.a(a, b, c, e, f)) {
            while (d > 0) {
                var g = 0;
                try {
                    for (var _b = (e_1 = void 0, __values(fromEnum(c))), _c = _b.next(); !_c.done; _c = _b.next()) {
                        var h = _c.value;
                        if (a.contains(h)) {
                            continue;
                        }
                        if (d > 0) {
                            var i = (d > 1) ? 1 : d;
                            var j = this.i(b, h, f);
                            if (j.isEmpty) {
                                continue;
                            }
                            this.g(b, h, new Rect(0, j.x + g, j.y, j.width + i, j.height), f);
                            d -= i;
                            g += i;
                        }
                        else {
                            var k = this.i(b, h, f);
                            if (k.isEmpty) {
                                continue;
                            }
                            this.g(b, h, new Rect(0, k.x + g, k.y, k.width, k.height), f);
                        }
                    }
                }
                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;
                    }
                }
            }
        }
    };
    TreemapLayoutCalculator.prototype.e = function (a, b, c, d, e, f) {
        var e_2, _a;
        if (!TreemapLayoutCalculator.a(a, b, c, e, f)) {
            while (d > 0) {
                var g = 0;
                try {
                    for (var _b = (e_2 = void 0, __values(fromEnum(c))), _c = _b.next(); !_c.done; _c = _b.next()) {
                        var h = _c.value;
                        if (a.contains(h)) {
                            continue;
                        }
                        if (d > 0) {
                            var i = (d > 1) ? 1 : d;
                            var j = this.i(b, h, f);
                            if (j.isEmpty) {
                                continue;
                            }
                            this.g(b, h, new Rect(0, j.x, j.y + g, j.width, j.height + i), f);
                            d -= i;
                            g += i;
                        }
                        else {
                            var k = this.i(b, h, f);
                            if (k.isEmpty) {
                                continue;
                            }
                            this.g(b, h, new Rect(0, k.x, k.y + g, k.width, k.height), f);
                        }
                    }
                }
                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;
                    }
                }
            }
        }
    };
    TreemapLayoutCalculator.$t = markType(TreemapLayoutCalculator, 'TreemapLayoutCalculator');
    return TreemapLayoutCalculator;
}(Base));
export { TreemapLayoutCalculator };
/**
 * @hidden
 */
var StrippedCalculator = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(StrippedCalculator, _super);
    function StrippedCalculator() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    StrippedCalculator.prototype.d = function (a, b) {
        a.g();
        this.o(a, b.b.a, b.h, b, 0);
    };
    StrippedCalculator.prototype.q = function (a, b, c) {
        return c.j;
    };
    StrippedCalculator.prototype.o = function (a, b, c, d, e) {
        var e_3, _a;
        if (d.g >= 0 && e > d.g) {
            return;
        }
        if (b == d.c) {
            d.d = true;
            this.g(a, b, c, d);
            var f = new Rect(0, c.left, c.top + d.e, c.width, c.height - d.e);
            c = f;
        }
        if (!d.d) {
            try {
                for (var _b = __values(fromEnum(b.b)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var g = _c.value;
                    this.o(a, g, c, d, e + 1);
                }
            }
            catch (e_3_1) {
                e_3 = { error: e_3_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_3)
                        throw e_3.error;
                }
            }
            return;
        }
        var h = this.q(b, c, d);
        var i = h.left + h.right;
        var j = h.top + h.bottom;
        var k = new Rect(0, c.left, c.top, c.width, c.height);
        var l = d.a;
        if (i >= k.width || j >= k.height) {
            return;
        }
        k.x = k.x + h.left;
        k.width = k.width - i;
        k.y = k.y + h.top;
        k.height = k.height - j;
        var m = new HashSet$1(TreemapTreeNode.$, 0);
        StrippedCalculator.p(m, d, b.b, k);
        var n = 0;
        for (var o = 0; o < b.b.count; o++) {
            var p = b.b._inner[o];
            if (!m.contains(p)) {
                n += p.e();
            }
        }
        var q = n;
        var r = (k.width * k.height) / q;
        var s = l == 0 ? k.width : k.height;
        var t = new List$1(TreemapTreeNode.$, 0);
        var u = new List$1(TreemapTreeNode.$, 0);
        for (var v = 0; v < b.b.count; v++) {
            var w = b.b._inner[v];
            if (m.contains(w) || isNaN_(w.e())) {
                continue;
            }
            var x = StrippedCalculator.j(u, s, r);
            u.add(w);
            var y = StrippedCalculator.j(u, s, r);
            if (x < y) {
                if (t.count > 0) {
                    var z = this.m(m, a, d, t, r, k, l, false);
                    k = z.p5;
                }
                u.removeAt(u.count - 1);
                t.o(u);
                u.clear();
                u.add(w);
            }
        }
        var aa = StrippedCalculator.j(t, s, r);
        var ab = StrippedCalculator.j(u, s, r);
        var ac = new List$1(TreemapTreeNode.$, 0);
        ac.o(t);
        ac.o(u);
        var ad = StrippedCalculator.j(ac, s, r);
        if (ad < (aa + ab) / 2 || k.height < d.f * 2) {
            var ae = this.m(m, a, d, ac, r, k, l, true);
            k = ae.p5;
        }
        else {
            var af = this.m(m, a, d, t, r, k, l, false);
            k = af.p5;
            var ag = this.m(m, a, d, u, r, k, l, true);
            k = ag.p5;
        }
        for (var ah = 0; ah < b.b.count; ah++) {
            var ai = b.b._inner[ah];
            if (m.contains(ai)) {
                continue;
            }
            var aj = this.h(a, ai, d);
            if (aj.isEmpty) {
                continue;
            }
            var ak = new Rect(0, aj.left, aj.top + d.e, aj.width, Math.max(aj.height - d.e, 0));
            this.o(a, ai, ak, d, e + 1);
        }
        if (b == d.c) {
            d.d = false;
        }
    };
    StrippedCalculator.prototype.m = function (a, b, c, d, e, f, g, h) {
        if (d.count == 0) {
            return {
                p5: f
            };
        }
        if (g == 0) {
            var i = this.l(a, b, c, d, e, f, h);
            f = i.p5;
        }
        else {
            var j = this.n(a, b, c, d, e, f, h);
            f = j.p5;
        }
        return {
            p5: f
        };
    };
    StrippedCalculator.prototype.l = function (a, b, c, d, e, f, g) {
        var h = StrippedCalculator.k(d);
        if (h <= 0) {
            return {
                p5: f
            };
        }
        var i = f.width;
        var j = (h * e) / i;
        var k = f.x;
        var l = 0;
        for (var m = 0; m < d.count; ++m) {
            var n = d._inner[m];
            var o = Math.floor((n.e() / h) * i);
            var p = new Rect(0, k, f.y, o, j);
            if (TreemapLayoutCalculator.b(p, c)) {
                a.add_1(n);
            }
            else {
                l = p.right;
                this.g(b, n, p, c);
            }
            if (a.contains(n)) {
                h -= n.e();
            }
            else {
                k += o;
            }
        }
        this.f(a, b, d, f.right - k, f, c);
        f.y = f.y + j;
        if (f.height < j) {
            f.height = 0;
        }
        else {
            f.height = f.height - j;
        }
        d.clear();
        return {
            p5: f
        };
    };
    StrippedCalculator.prototype.n = function (a, b, c, d, e, f, g) {
        var h = StrippedCalculator.k(d);
        if (h <= 0) {
            return {
                p5: f
            };
        }
        var i = f.height;
        var j = (h * e) / i;
        var k = f.y;
        var l = 0;
        for (var m = 0; m < d.count; ++m) {
            var n = d._inner[m];
            var o = Math.floor((n.e() / h) * i);
            var p = new Rect(0, f.x, k, j, o);
            if (TreemapLayoutCalculator.b(p, c)) {
                a.add_1(n);
            }
            else {
                l = p.bottom;
                this.g(b, n, p, c);
            }
            if (a.contains(n)) {
                h -= n.e();
            }
            else {
                k += o;
            }
        }
        this.e(a, b, d, f.bottom - k, f, c);
        f.x = f.x + j;
        if (f.width < j) {
            f.width = 0;
        }
        else {
            f.width = f.width - j;
        }
        d.clear();
        return {
            p5: f
        };
    };
    StrippedCalculator.j = function (a, b, c) {
        if (a.count == 0) {
            return 1.7976931348623157E+308;
        }
        var d = StrippedCalculator.k(a);
        var e = (d * c) / b;
        var f = 0;
        for (var g = 0; g < a.count; g++) {
            var h = a._inner[g];
            var i = (h.e() / d) * b;
            f += Math.max(i / e, e / i);
        }
        f /= a.count;
        return f;
    };
    StrippedCalculator.k = function (a) {
        var b = 0;
        for (var c = 0; c < a.count; c++) {
            var d = a._inner[c];
            b += d.e();
        }
        return b;
    };
    StrippedCalculator.p = function (a, b, c, d) {
        var e = 0;
        for (var f = 0; f < c.count; f++) {
            var g = c._inner[f];
        }
        var h = e;
        var i = b.f * b.f / (d.width * d.height);
        for (var j = 0; j < c.count; j++) {
            var k = c._inner[j];
            if (k.e() / h < i) {
                a.add_1(k);
            }
        }
    };
    StrippedCalculator.$t = markType(StrippedCalculator, 'StrippedCalculator', TreemapLayoutCalculator.$);
    return StrippedCalculator;
}(TreemapLayoutCalculator));
export { StrippedCalculator };
/**
 * @hidden
 */
var SliceAndDiceCalculator = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(SliceAndDiceCalculator, _super);
    function SliceAndDiceCalculator() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    SliceAndDiceCalculator.prototype.d = function (a, b) {
        a.g();
        this.m(a, b.b.a, b.h, b, 0);
    };
    SliceAndDiceCalculator.prototype.o = function (a, b, c) {
        return c.j;
    };
    SliceAndDiceCalculator.prototype.m = function (a, b, c, d, e) {
        var e_4, _a;
        if (d.g >= 0 && e > d.g) {
            return;
        }
        if (b == d.c) {
            d.d = true;
            this.g(a, b, c, d);
            var f = new Rect(0, c.left, c.top + d.e, c.width, c.height - d.e);
            c = f;
        }
        if (!d.d) {
            try {
                for (var _b = __values(fromEnum(b.b)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var g = _c.value;
                    this.m(a, g, c, d, e + 1);
                }
            }
            catch (e_4_1) {
                e_4 = { error: e_4_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_4)
                        throw e_4.error;
                }
            }
            return;
        }
        var h = this.o(b, c, d);
        var i = SliceAndDiceCalculator.j(b, d, e);
        var j = h.left + h.right;
        var k = h.top + h.bottom;
        var l = new Rect(0, c.left, c.top, c.width, c.height);
        if (j >= l.width || k >= l.height) {
            return;
        }
        l.x = l.x + h.left;
        l.width = l.width - j;
        l.y = l.y + h.top;
        l.height = l.height - k;
        var m = new Size(1, l.width, l.height);
        var n = l.left;
        var o = l.top;
        var p = new HashSet$1(TreemapTreeNode.$, 0);
        var q = SliceAndDiceCalculator.k(b.b, b, d, m, p);
        if (q) {
            SliceAndDiceCalculator.n(b.b, b, d, m, p);
        }
        var r = 0;
        for (var s = 0; s < b.b.count; s++) {
            var t = b.b._inner[s];
            if (!p.contains(t)) {
                r += t.e();
            }
        }
        var u = (i == 0) ? m.height : m.width;
        var v = new Rect(4);
        for (var w = 0; w < b.b.count; w++) {
            var x = b.b._inner[w];
            if (p.contains(x) || isNaN_(x.e())) {
                continue;
            }
            if (r <= 0 || u <= 0) {
                break;
            }
            var y = x.e() / r;
            v.x = n;
            v.y = o;
            if (i == 0) {
                v.width = m.width;
                v.height = Math.round(u * y);
            }
            else {
                v.width = Math.round(u * y);
                v.height = m.height;
            }
            this.g(a, x, new Rect(0, v.left, v.top, v.width, v.height), d);
            if (i == 0) {
                o += v.height;
                u -= v.height;
            }
            else {
                n += v.width;
                u -= v.width;
            }
            r -= x.e();
            var z = this.h(a, x, d);
            if (z.isEmpty) {
                continue;
            }
            var aa = new Rect(0, z.left, z.top + d.e, z.width, Math.max(z.height - d.e, 0));
            this.m(a, x, aa, d, e + 1);
        }
        if (b == d.c) {
            d.d = false;
        }
    };
    SliceAndDiceCalculator.j = function (a, b, c) {
        var d = 0;
        if (b.a == 0) {
            d = (c % 2 == 0) ? 0 : 1;
        }
        else {
            d = (c % 2 == 0) ? 1 : 0;
        }
        return d;
    };
    SliceAndDiceCalculator.k = function (a, b, c, d, e) {
        var f = true;
        var g = b.e();
        var h = Math.min(d.width, d.height);
        for (var i = 0; i < a.count; i++) {
            var j = a._inner[i];
            if (Math.round(j.e() / g * h) < c.f) {
                if (!e.contains(j)) {
                    e.add_1(j);
                }
            }
            else {
                f = false;
            }
        }
        return f;
    };
    SliceAndDiceCalculator.n = function (a, b, c, d, e) {
        var f = new List$1(TreemapTreeNode.$, 0);
        f.o(a);
        f.aa(function (g, h) {
            if (g.e() > h.e()) {
                return 1;
            }
            else if (g.e() < h.e()) {
                return -1;
            }
            return 0;
        });
        var g = 0;
        var h = Math.min(d.width, d.height);
        for (var i = 0; i < f.count; i++) {
            var j = f._inner[i];
            if (isNaN_(j.e())) {
                continue;
            }
            g += j.e();
            if (j.e() / g * h < c.f) {
                break;
            }
            else {
                if (e.contains(j)) {
                    e.remove(j);
                }
            }
        }
    };
    SliceAndDiceCalculator.$t = markType(SliceAndDiceCalculator, 'SliceAndDiceCalculator', TreemapLayoutCalculator.$);
    SliceAndDiceCalculator.l = null;
    return SliceAndDiceCalculator;
}(TreemapLayoutCalculator));
export { SliceAndDiceCalculator };
/**
 * @hidden
 */
var TreemapLayoutSettings = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapLayoutSettings, _super);
    function TreemapLayoutSettings() {
        var _this = _super.call(this) || this;
        _this.a = 0;
        _this.h = null;
        _this.b = null;
        _this.j = null;
        _this.i = null;
        _this.e = 0;
        _this.f = 0;
        _this.g = 0;
        _this.c = null;
        _this.d = false;
        _this.g = -1;
        _this.d = false;
        return _this;
    }
    TreemapLayoutSettings.$t = markType(TreemapLayoutSettings, 'TreemapLayoutSettings');
    return TreemapLayoutSettings;
}(Base));
export { TreemapLayoutSettings };
/**
 * @hidden
 */
var SquarifiedCalculator = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(SquarifiedCalculator, _super);
    function SquarifiedCalculator() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    SquarifiedCalculator.prototype.n = function (a, b, c, d, e) {
        var e_5, _a, e_6, _b, e_7, _c;
        if (d.g >= 0 && e > d.g) {
            return;
        }
        if (b == d.c) {
            d.d = true;
            this.g(a, b, c, d);
            var f = new Rect(0, c.left, c.top + d.e, c.width, c.height - d.e);
            c = f;
        }
        if (!d.d) {
            try {
                for (var _d = __values(fromEnum(b.b)), _e = _d.next(); !_e.done; _e = _d.next()) {
                    var g = _e.value;
                    this.n(a, g, c, d, e + 1);
                }
            }
            catch (e_5_1) {
                e_5 = { error: e_5_1 };
            }
            finally {
                try {
                    if (_e && !_e.done && (_a = _d.return))
                        _a.call(_d);
                }
                finally {
                    if (e_5)
                        throw e_5.error;
                }
            }
            return;
        }
        var h = this.o(b, c, d);
        var i = new Rect(0, c.left, c.top, c.width, c.height);
        var j = h.left + h.right;
        var k = h.top + h.bottom;
        if (j >= i.width || k >= i.height) {
            return;
        }
        i.x = i.x + h.left;
        i.width = i.width - j;
        i.y = i.y + h.top;
        i.height = i.height - k;
        var l = i.left;
        var m = i.top;
        var n = new List$1(TreemapTreeNode.$, 0);
        var o = b.e();
        var p = new Rect(0, i.left, i.top, i.width, i.height);
        var q = (i.width * i.height) / o;
        var r = new List$1(TreemapTreeNode.$, 1, b.b);
        r.aa(function (s, t) {
            if (t.e() < s.e()) {
                return -1;
            }
            if (t.e() > s.e()) {
                return 1;
            }
            return 0;
        });
        var s = new AreaInfo();
        s.b = i;
        s.a = o;
        var t = new HashSet$1(TreemapTreeNode.$, 0);
        try {
            for (var _f = __values(fromEnum(r)), _g = _f.next(); !_g.done; _g = _f.next()) {
                var u = _g.value;
                if (TreemapLayoutCalculator.c(u, p, o, d) || isNaN_(u.e())) {
                    t.add_1(u);
                    continue;
                }
                var v = Math.min(i.width, i.height);
                var w = SquarifiedCalculator.j(n, v, q);
                n.add(u);
                var x = SquarifiedCalculator.j(n, v, q);
                if (w <= x) {
                    n.removeAt(n.count - 1);
                    this.l(t, a, n, s, d);
                    i = s.b;
                    n.add(u);
                }
            }
        }
        catch (e_6_1) {
            e_6 = { error: e_6_1 };
        }
        finally {
            try {
                if (_g && !_g.done && (_b = _f.return))
                    _b.call(_f);
            }
            finally {
                if (e_6)
                    throw e_6.error;
            }
        }
        this.l(t, a, n, s, d);
        i = s.b;
        try {
            for (var _h = __values(fromEnum(b.b)), _j = _h.next(); !_j.done; _j = _h.next()) {
                var y = _j.value;
                if (t.contains(y)) {
                    continue;
                }
                var z = this.h(a, y, d);
                if (z.isEmpty) {
                    continue;
                }
                var aa = new Rect(0, z.left, z.top + d.e, z.width, Math.max(z.height - d.e, 0));
                this.n(a, y, aa, d, e + 1);
            }
        }
        catch (e_7_1) {
            e_7 = { error: e_7_1 };
        }
        finally {
            try {
                if (_j && !_j.done && (_c = _h.return))
                    _c.call(_h);
            }
            finally {
                if (e_7)
                    throw e_7.error;
            }
        }
        if (b == d.c) {
            d.d = false;
        }
    };
    SquarifiedCalculator.prototype.o = function (a, b, c) {
        return c.j;
    };
    SquarifiedCalculator.j = function (a, b, c) {
        var e_8, _a;
        if (a.count == 0) {
            return 1.7976931348623157E+308;
        }
        var d = 0;
        var e = 1.7976931348623157E+308;
        var f = -1.7976931348623157E+308;
        try {
            for (var _b = __values(fromEnum(a)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var g = _c.value;
                var h = g.e() * c;
                if (e > h) {
                    e = h;
                }
                if (f < h) {
                    f = h;
                }
                d += h;
            }
        }
        catch (e_8_1) {
            e_8 = { error: e_8_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_8)
                    throw e_8.error;
            }
        }
        var i = (b * b * f) / (d * d);
        var j = (d * d) / (b * b * e);
        return Math.max(i, j);
    };
    SquarifiedCalculator.prototype.l = function (a, b, c, d, e) {
        if (c.count < 1) {
            return;
        }
        var f = 0;
        for (var g = 0; g < c.count; ++g) {
            f += c._inner[g].e();
        }
        if (f <= 0) {
            return;
        }
        if (d.b.width > d.b.height) {
            this.k(a, b, c, f, d, e);
        }
        else {
            this.m(a, b, c, f, d, e);
        }
    };
    SquarifiedCalculator.prototype.m = function (a, b, c, d, e, f) {
        var g = e.b;
        var h = e.a;
        var i = Math.round((d / h) * g.height);
        var j = g.x;
        for (var k = 0; k < c.count; ++k) {
            var l = c._inner[k];
            if (g.right < j) {
                a.add_1(l);
                continue;
            }
            var m = Math.floor((l.e() / d) * g.width);
            var n = new Rect(0, j, g.y, m, i);
            if (TreemapLayoutCalculator.b(n, f)) {
                a.add_1(l);
                continue;
            }
            this.g(b, l, n, f);
            j += n.width;
        }
        this.f(a, b, c, g.right - j, g, f);
        g.y = g.y + i;
        if (g.height < i) {
            g.height = 0;
        }
        else {
            g.height = g.height - i;
        }
        h -= d;
        e.a = h;
        e.b = g;
        c.clear();
    };
    SquarifiedCalculator.prototype.k = function (a, b, c, d, e, f) {
        var g = e.b;
        var h = e.a;
        var i = Math.round((d / h) * g.width);
        var j = g.y;
        for (var k = 0; k < c.count; ++k) {
            var l = c._inner[k];
            if (g.bottom < j) {
                a.add_1(l);
                continue;
            }
            var m = Math.floor((l.e() / d) * g.height);
            var n = new Rect(0, g.x, j, i, m);
            if (TreemapLayoutCalculator.b(n, f)) {
                a.add_1(l);
                continue;
            }
            this.g(b, l, n, f);
            j += n.height;
        }
        this.e(a, b, c, g.bottom - j, g, f);
        g.x = g.x + i;
        if (g.width < i) {
            g.width = 0;
        }
        else {
            g.width = g.width - i;
        }
        h -= d;
        e.a = h;
        e.b = g;
        c.clear();
    };
    SquarifiedCalculator.prototype.d = function (a, b) {
        a.g();
        this.n(a, b.b.a, b.h, b, 0);
    };
    SquarifiedCalculator.$t = markType(SquarifiedCalculator, 'SquarifiedCalculator', TreemapLayoutCalculator.$);
    return SquarifiedCalculator;
}(TreemapLayoutCalculator));
export { SquarifiedCalculator };
/**
 * @hidden
 */
var TreemapTreeData = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapTreeData, _super);
    function TreemapTreeData() {
        var _this = _super.call(this) || this;
        _this.a = null;
        _this.b = null;
        _this.d = null;
        _this.c = null;
        _this.b = new Dictionary$2(String_$type, TreemapTreeNode.$, 0);
        _this.d = new List$1(String_$type, 0);
        _this.c = new Dictionary$2(String_$type, List$1.$.specialize(TreemapTreeNode.$), 0);
        _this.a = new TreemapTreeNode();
        return _this;
    }
    TreemapTreeData.prototype.e = function (a) {
        var e_9, _a;
        var _this = this;
        this.b.addItem(a.l, a);
        this.d.add(a.l);
        if (a.n == null) {
            this.a.b.add(a);
        }
        else if (this.b.containsKey(a.n)) {
            this.b.item(a.n).b.add(a);
        }
        else {
            var b_1;
            if (!((function () { var c = _this.c.tryGetValue(a.n, b_1); b_1 = c.p1; return c.ret; })())) {
                b_1 = new List$1(TreemapTreeNode.$, 0);
                this.c.item(a.n, b_1);
            }
            b_1.add(a);
        }
        if (this.c.containsKey(a.l)) {
            try {
                for (var _b = __values(fromEnum(this.c.item(a.l))), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var c = _c.value;
                    a.b.add(c);
                }
            }
            catch (e_9_1) {
                e_9 = { error: e_9_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_9)
                        throw e_9.error;
                }
            }
            this.c.removeItem(a.l);
        }
    };
    TreemapTreeData.prototype.g = function (a) {
        if (isNaN_(a.h)) {
            if (a.b.count > 0) {
                a.d = 0;
            }
            for (var b = 0; b < a.b.count; b++) {
                var c = a.b._inner[b];
                this.g(c);
                if (isNaN_(c.h)) {
                    a.d = a.d + c.d;
                }
                else {
                    a.d = a.d + c.h;
                }
            }
        }
    };
    TreemapTreeData.prototype.f = function () {
        this.g(this.a);
    };
    TreemapTreeData.$t = markType(TreemapTreeData, 'TreemapTreeData');
    return TreemapTreeData;
}(Base));
export { TreemapTreeData };
/**
 * @hidden
 */
var TreemapTreeNode = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapTreeNode, _super);
    function TreemapTreeNode() {
        var _this = _super.call(this) || this;
        _this.l = null;
        _this.n = null;
        _this.b = null;
        _this.c = null;
        _this.h = 0;
        _this.g = 0;
        _this.f = 0;
        _this.j = null;
        _this.d = 0;
        _this.m = null;
        _this.k = null;
        _this.i = 0;
        _this.a = false;
        _this.b = new List$1(TreemapTreeNode.$, 0);
        _this.h = NaN;
        _this.g = NaN;
        _this.f = NaN;
        _this.j = null;
        _this.c = new List$1(TreemapNodeStyleMapping.$, 0);
        _this.d = 0;
        return _this;
    }
    TreemapTreeNode.prototype.e = function () {
        if (isNaN_(this.h)) {
            return this.d;
        }
        return this.h;
    };
    TreemapTreeNode.$t = markType(TreemapTreeNode, 'TreemapTreeNode');
    return TreemapTreeNode;
}(Base));
export { TreemapTreeNode };
/**
 * @hidden
 */
var Treemap = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(Treemap, _super);
    function Treemap() {
        var _this = _super.call(this) || this;
        _this.g = null;
        _this.f = null;
        _this.e = null;
        _this.bq = false;
        _this.aq = null;
        _this.j9 = null;
        _this.ay = null;
        _this.fd = null;
        _this.fc = "Root";
        _this.e6 = " : ";
        _this.fb = null;
        _this.fa = null;
        _this.e7 = null;
        _this.e9 = null;
        _this.b9 = null;
        _this.b8 = null;
        _this.e8 = null;
        _this.cr = NaN;
        _this.k = 0;
        _this.a = new BrushCollection();
        _this.ag = new TreemapNodeStyleMappingCollection();
        _this.c = 0;
        _this.br = false;
        _this.ew = 10;
        _this.cl = NaN;
        _this.ck = NaN;
        _this.p = 0;
        _this.m = 0;
        _this.jl = null;
        _this.jf = null;
        _this.jd = null;
        _this.jk = null;
        _this.ji = null;
        _this.je = null;
        _this.jm = null;
        _this.jc = null;
        _this.jh = null;
        _this.jg = null;
        _this.a5 = null;
        _this.a4 = null;
        _this.h = 0;
        _this.co = DeviceUtils.g(5);
        _this.cq = DeviceUtils.g(3);
        _this.cp = DeviceUtils.g(5);
        _this.cn = DeviceUtils.g(3);
        _this.c1 = DeviceUtils.g(10);
        _this.c3 = DeviceUtils.g(10);
        _this.c2 = DeviceUtils.g(10);
        _this.c0 = DeviceUtils.g(10);
        _this.cv = DeviceUtils.g(5);
        _this.cx = DeviceUtils.g(3);
        _this.cw = DeviceUtils.g(5);
        _this.cu = DeviceUtils.g(3);
        _this.c6 = DeviceUtils.g(0);
        _this.da = DeviceUtils.g(0);
        _this.c8 = DeviceUtils.g(0);
        _this.c4 = DeviceUtils.g(0);
        _this.c7 = DeviceUtils.g(3);
        _this.db = DeviceUtils.g(3);
        _this.c9 = DeviceUtils.g(3);
        _this.c5 = DeviceUtils.g(3);
        _this.i9 = 1;
        _this.kc = 1;
        _this.cm = NaN;
        _this.jj = null;
        _this.dd = NaN;
        _this.cz = NaN;
        _this.ak = 0;
        _this.t = 0;
        _this.cy = DeviceUtils.g(3);
        _this.ey = 500;
        _this.de = 0;
        _this.eu = null;
        _this.a0 = null;
        _this.ev = null;
        _this.a1 = null;
        _this.bf = null;
        _this.ba = null;
        _this.be = null;
        _this.bc = null;
        _this.bd = null;
        _this.bb = null;
        _this.dc = NaN;
        _this.cd = 1;
        _this.ct = NaN;
        _this.cc = 0.5;
        _this.ex = 300;
        _this.at = 1;
        _this.as = 1;
        _this.cs = NaN;
        _this.a9 = null;
        _this.az = null;
        _this.ar = null;
        _this.bp = false;
        _this.bw = false;
        _this.b0 = false;
        _this.bv = false;
        _this.am = null;
        _this.s = null;
        _this.ce = NaN;
        _this.cj = DeviceUtils.g(1);
        _this.ci = 1;
        _this.cf = 0.3;
        _this.ch = 0.2;
        _this.cg = 1;
        _this.propertyChanged = null;
        _this.y = null;
        _this.v = null;
        _this.e4 = null;
        _this.ap = null;
        _this.ao = null;
        _this.j8 = null;
        _this.nodeStyling = null;
        _this.nodeRenderStyling = null;
        _this.nodePointerOver = null;
        _this.nodePointerEnter = null;
        _this.nodePointerLeave = null;
        _this.nodePointerPressed = null;
        _this.nodePointerReleased = null;
        var a = new TreemapView();
        a.a = _this;
        _this.s = new SquarifiedCalculator();
        _this.aq = a;
        _this.aq.ax();
        _this.eu = function (b, c) { return _this.h4(c.action, c.position, c.count, c.propertyName); };
        _this.ev = function (b, c) { return _this.h4(c.action, c.position, c.count, c.propertyName); };
        _this.j9 = Rect.empty;
        _this.g = new TreemapFrame();
        _this.f = new TreemapFrame();
        _this.e = new TreemapFrame();
        _this.bw = true;
        _this.ay = new DoubleAnimator(0, 1, _this.e3);
        _this.ay.b = EasingFunctions.cubicEase;
        var b = _this.ay;
        b.propertyChanged = delegateCombine(b.propertyChanged, runOn(_this, _this.h2));
        _this.az = new DoubleAnimator(0, 1, _this.e1);
        var c = _this.az;
        c.propertyChanged = delegateCombine(c.propertyChanged, runOn(_this, _this.ia));
        var d = _this.ag;
        d.collectionChanged = delegateCombine(d.collectionChanged, runOn(_this, _this.h0));
        var e = _this.ag;
        e.collectionResetting = delegateCombine(e.collectionResetting, runOn(_this, _this.h1));
        return _this;
    }
    Treemap.prototype.h1 = function (a, b) {
        var e_10, _a;
        try {
            for (var _b = __values(fromEnum(this.styleMappings)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var c = _c.value;
                c.propertyChanged = delegateRemove(c.propertyChanged, runOn(this, this.i4));
            }
        }
        catch (e_10_1) {
            e_10 = { error: e_10_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_10)
                    throw e_10.error;
            }
        }
        this.bw = true;
        this.b0 = true;
        this.aq.a2();
    };
    Treemap.prototype.h0 = function (a, b) {
        var e_11, _a, e_12, _b;
        if (b.oldItems != null) {
            try {
                for (var _c = __values(fromEn(b.oldItems)), _d = _c.next(); !_d.done; _d = _c.next()) {
                    var c = _d.value;
                    var d = c;
                    if (d != null) {
                        d.propertyChanged = delegateRemove(d.propertyChanged, runOn(this, this.i4));
                    }
                }
            }
            catch (e_11_1) {
                e_11 = { error: e_11_1 };
            }
            finally {
                try {
                    if (_d && !_d.done && (_a = _c.return))
                        _a.call(_c);
                }
                finally {
                    if (e_11)
                        throw e_11.error;
                }
            }
        }
        if (b.newItems != null) {
            try {
                for (var _e = __values(fromEn(b.newItems)), _f = _e.next(); !_f.done; _f = _e.next()) {
                    var e = _f.value;
                    var f = e;
                    if (f != null) {
                        f.propertyChanged = delegateCombine(f.propertyChanged, runOn(this, this.i4));
                    }
                }
            }
            catch (e_12_1) {
                e_12 = { error: e_12_1 };
            }
            finally {
                try {
                    if (_f && !_f.done && (_b = _e.return))
                        _b.call(_e);
                }
                finally {
                    if (e_12)
                        throw e_12.error;
                }
            }
        }
        this.bw = true;
        this.b0 = true;
        this.aq.a2();
    };
    Treemap.prototype.i4 = function (a, b) {
        this.bw = true;
        this.b0 = true;
        this.aq.a2();
    };
    Treemap.prototype.h4 = function (a, b, c, d) {
        this.am = null;
        this.bw = true;
        this.bv = true;
        this.b0 = true;
        this.aq.a2();
    };
    Treemap.prototype.notifySizeChanged = function () {
        this.aq.as();
    };
    Treemap.prototype.destroy = function () {
        this.provideContainer(null);
    };
    Treemap.prototype.ax = function () {
        var a = new TreemapVisualData();
        a.viewport = new RectData(this.kb.left, this.kb.top, this.kb.width, this.kb.height);
        a.nodes = new TreemapNodeVisualDataList();
        this.aq.ao(a);
        return a;
    };
    Treemap.prototype.fn = function () {
        var a = this.ax();
        a.scaleByViewport();
        return a.serialize();
    };
    Treemap.prototype.it = function (a, b, c) {
        if (this.propertyChanged != null) {
            this.propertyChanged(this, new PropertyChangedEventArgs(a));
        }
        this.iy(a, b, c);
    };
    Treemap.prototype.iy = function (a, b, c) {
        var _this = this;
        switch (a) {
            case "FocusItem":
                this.im();
                break;
            case "LayoutType":
                {
                    switch (EnumUtil.getEnumValue(TreemapLayoutType_$type, c)) {
                        case 0:
                            this.s = new SquarifiedCalculator();
                            break;
                        case 1:
                            this.s = new SliceAndDiceCalculator();
                            break;
                        case 2:
                            this.s = new StrippedCalculator();
                            break;
                    }
                    this.bw = true;
                    this.aq.a2();
                }
                break;
            case "BreadcrumbSequence":
                this.bw = true;
                this.aq.a2();
                break;
            case "RootTitle":
                this.bw = true;
                this.aq.a2();
                break;
            case "ValueMemberPath":
                if (this.a2 != null) {
                    this.a2.deregisterColumn(this.bn);
                    this.bn = this.bl(this.a2, this.hx);
                    this.am = null;
                }
                this.h6();
                this.bw = true;
                this.bv = true;
                this.aq.a2();
                break;
            case "CustomValueMemberPath":
                if (this.a2 != null) {
                    this.a2.deregisterColumn(this.bg);
                    this.bg = this.bm(this.fk);
                    this.am = null;
                }
                this.bw = true;
                this.bv = true;
                this.aq.a2();
                break;
            case "IdMemberPath":
                if (this.a2 != null) {
                    this.a2.deregisterColumn(this.bi);
                    this.bi = this.bm(this.gj);
                    this.am = null;
                }
                this.bw = true;
                this.bv = true;
                this.aq.a2();
                break;
            case "LabelMemberPath":
                if (this.a2 != null) {
                    this.a2.deregisterColumn(this.bj);
                    this.bj = this.bm(this.gt);
                    this.am = null;
                }
                this.bw = true;
                this.bv = true;
                this.aq.a2();
                break;
            case "ParentIdMemberPath":
                if (this.a2 != null) {
                    this.a2.deregisterColumn(this.bk);
                    this.bk = this.bm(this.hb);
                    this.am = null;
                }
                this.bw = true;
                this.bv = true;
                this.aq.a2();
                break;
            case "ItemsSource":
                this.a2 = ((function () {
                    var $ret = new FastItemsSource();
                    $ret.e = _this.dataSource;
                    return $ret;
                })());
                break;
            case "HighlightedValueMemberPath":
                this.h6();
                this.am = null;
                this.bw = true;
                this.bv = true;
                this.aq.a2();
                break;
            case "HighlightedItemsSource":
                this.a3 = ((function () {
                    var $ret = new FastItemsSource();
                    $ret.e = _this.highlightedDataSource;
                    return $ret;
                })());
                break;
            case "HighlightedValuesDisplayMode":
                this.am = null;
                this.bw = true;
                this.bv = true;
                this.aq.a2();
                break;
            case "HeaderLabelLeftMargin":
            case "HeaderLabelTopMargin":
            case "HeaderLabelRightMargin":
            case "HeaderLabelBottomMargin":
            case "LabelLeftMargin":
            case "LabelTopMargin":
            case "LabelRightMargin":
            case "LabelBottomMargin":
            case "ParentNodeLeftMargin":
            case "ParentNodeTopMargin":
            case "ParentNodeRightMargin":
            case "ParentNodeBottomMargin":
            case "ParentNodeLeftPadding":
            case "ParentNodeTopPadding":
            case "ParentNodeRightPadding":
            case "ParentNodeBottomPadding":
            case "HeaderTextColor":
            case "HeaderHoverTextColor":
            case "OverlayHeaderHoverBackground":
            case "HeaderHoverBackground":
            case "StrokeThickness":
            case "Outline":
            case "FillBrushes":
            case "IsFillScaleLogarithmic":
            case "FillScaleMinimumValue":
            case "FillScaleMaximumValue":
            case "HeaderBackground":
            case "OverlayHeaderBackground":
            case "HeaderHeight":
            case "FillScaleLogarithmBase":
            case "FillScaleMode":
            case "MinimumDisplaySize":
            case "LayoutOrientation":
            case "LabelHorizontalAlignment":
            case "LabelVerticalAlignment":
            case "HeaderDisplayMode":
            case "LabelHorizontalFitMode":
            case "LabelVerticalFitMode":
            case "HighlightedValueOpacity":
                this.bw = true;
                this.aq.a2();
                break;
            case "TextStyle":
                this.aq.az(this.a8);
                this.bw = true;
                this.aq.a2();
                break;
            case "HeaderTextStyle":
                this.aq.aw(this.a6);
                this.bw = true;
                this.aq.a2();
                break;
            case "PixelScalingRatio":
                if (!isNaN_(c)) {
                    this.dg = c;
                }
                break;
            case "ActualPixelScalingRatio":
                if (isNaN_(this.dv)) {
                    this.df = this.dg / 2;
                }
                if (this.aq != null) {
                    this.aq.ay();
                }
                break;
            case "InteractionPixelScalingRatio":
                if (!isNaN_(c)) {
                    this.df = c;
                }
                break;
            case "ActualInteractionPixelScalingRatio":
                if (this.aq != null) {
                    this.aq.ay();
                }
                break;
            case "TransitionProgress":
                this.e.h(this.et, this.g, this.f);
                if (this.et >= 1) {
                    this.ay.w();
                    this.aq.ay();
                    var d = this.f;
                    this.f = this.g;
                    this.g = d;
                    this.ix();
                    this.i0(this.f);
                    this.aq.a1();
                    this.aq.a2();
                    return;
                }
                this.i0(this.e);
                this.aq.a1();
                break;
            case "Viewport":
                this.bw = true;
                this.aq.a2();
                break;
            case "FastItemsSource":
                {
                    var e = b;
                    var f = c;
                    if (b != null) {
                        e.event = delegateRemove(e.event, this.eu);
                        this.bp = false;
                        e.deregisterColumn(this.bn);
                        e.deregisterColumn(this.bi);
                        e.deregisterColumn(this.bk);
                        e.deregisterColumn(this.bj);
                        e.deregisterColumn(this.bg);
                        e.deregisterColumn(this.bh);
                        this.bn = null;
                        this.bi = null;
                        this.bk = null;
                        this.bj = null;
                        this.am = null;
                        if (this.a3 == null) {
                            this.bh = null;
                        }
                    }
                    if (c != null) {
                        f.event = delegateCombine(f.event, this.eu);
                        this.bp = true;
                        this.bn = this.bl(f, this.hx);
                        this.bi = this.bm(this.gj);
                        this.bk = this.bm(this.hb);
                        this.bj = this.bm(this.gt);
                        this.bg = this.bm(this.fk);
                        if (this.a3 == null) {
                            this.bh = this.bl(f, this.gb);
                        }
                    }
                    this.bw = true;
                    this.bv = true;
                    this.aq.a2();
                }
                break;
            case "HighlightedFastItemsSource":
                {
                    var g = b;
                    var h = c;
                    if (b != null) {
                        g.event = delegateRemove(g.event, this.ev);
                        g.deregisterColumn(this.bh);
                        this.bh = null;
                        if (this.a2 != null) {
                            this.bh = this.bl(this.a2, this.gb);
                        }
                    }
                    if (c != null) {
                        if (this.a2 != null) {
                            this.a2.deregisterColumn(this.bh);
                            this.bh = null;
                        }
                        h.event = delegateCombine(h.event, this.ev);
                        if (!stringIsNullOrEmpty(this.gb)) {
                            this.bh = this.bl(h, this.gb);
                        }
                        else {
                            this.bh = this.bl(h, this.hx);
                        }
                    }
                    this.am = null;
                    this.bw = true;
                    this.bv = true;
                    this.aq.a2();
                }
                break;
            case "TransitionDuration":
                this.ay.r = this.e3;
                break;
            case "HighlightingTransitionDuration":
                this.az.r = this.e1;
                break;
            case "HighlightingMode":
                this.au = this.av();
                break;
        }
    };
    Treemap.prototype.h6 = function () {
        if (this.a3 != null) {
            var a = this.hx;
            if (!stringIsNullOrEmpty(this.gb)) {
                a = this.gb;
            }
            this.a2.deregisterColumn(this.bh);
            this.a3.deregisterColumn(this.bh);
            this.bh = this.bl(this.a3, a);
            this.am = null;
        }
        else if (this.a2 != null) {
            var b = this.gb;
            this.a2.deregisterColumn(this.bh);
            this.bh = this.bl(this.a2, b);
            this.am = null;
        }
    };
    Treemap.prototype.im = function () {
        if (this.bq) {
            return;
        }
        if (this.am == null) {
            return;
        }
        if (this.e5 == null) {
            this.ao = null;
            this.bw = true;
            this.aq.a2();
            return;
        }
        for (var a = 0; a < this.am.d.count; a++) {
            var b = this.am.b.item(this.am.d._inner[a]);
            if (b.k == this.e5) {
                this.ao = b;
                this.bw = true;
                this.aq.a2();
                break;
            }
        }
    };
    Object.defineProperty(Treemap.prototype, "kb", {
        get: function () {
            return this.j9;
        },
        set: function (a) {
            var b = this.j9;
            this.j9 = a;
            if (!b.equals1(this.j9)) {
                this.it("Viewport", b, this.j9);
            }
        },
        enumerable: false,
        configurable: true
    });
    Treemap.prototype.h2 = function (a, b) {
        this.et = this.ay.o;
    };
    Object.defineProperty(Treemap.prototype, "hx", {
        get: function () {
            return this.fd;
        },
        set: function (a) {
            var b = this.fd;
            this.fd = a;
            if (b != this.fd) {
                this.iy("ValueMemberPath", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "hn", {
        get: function () {
            return this.fc;
        },
        set: function (a) {
            var b = this.fc;
            this.fc = a;
            if (b != this.fc) {
                this.iy("RootTitle", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "fh", {
        get: function () {
            return this.e6;
        },
        set: function (a) {
            var b = this.e6;
            this.e6 = a;
            if (b != this.fc) {
                this.iy("BreadcrumbSequence", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "hb", {
        get: function () {
            return this.fb;
        },
        set: function (a) {
            var b = this.fb;
            this.fb = a;
            if (b != this.fb) {
                this.it("ParentIdMemberPath", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "gt", {
        get: function () {
            return this.fa;
        },
        set: function (a) {
            var b = this.fa;
            this.fa = a;
            if (b != this.fa) {
                this.it("LabelMemberPath", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "fk", {
        get: function () {
            return this.e7;
        },
        set: function (a) {
            var b = this.e7;
            this.e7 = a;
            if (b != this.e7) {
                this.it("CustomValueMemberPath", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "gj", {
        get: function () {
            return this.e9;
        },
        set: function (a) {
            var b = this.e9;
            this.e9 = a;
            if (b != this.e9) {
                this.it("IdMemberPath", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dataSource", {
        get: function () {
            return this.b9;
        },
        set: function (a) {
            var b = this.b9;
            this.b9 = a;
            if (b != this.b9) {
                this.it("ItemsSource", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "highlightedDataSource", {
        get: function () {
            return this.b8;
        },
        set: function (a) {
            var b = this.b8;
            this.b8 = a;
            if (b != this.b8) {
                this.it("HighlightedItemsSource", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "gb", {
        get: function () {
            return this.e8;
        },
        set: function (a) {
            var b = this.e8;
            this.e8 = a;
            if (b != this.e8) {
                this.it("HighlightedValueMemberPath", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dt", {
        get: function () {
            return this.cr;
        },
        set: function (a) {
            var b = this.cr;
            this.cr = a;
            if (b != this.cr) {
                this.it("HighlightedValueOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "l", {
        get: function () {
            return this.k;
        },
        set: function (a) {
            var b = this.k;
            this.k = a;
            if (b != this.k) {
                this.it("HighlightedValuesDisplayMode", enumGetBox(TreemapHighlightedValueDisplayMode_$type, b), enumGetBox(TreemapHighlightedValueDisplayMode_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "b", {
        get: function () {
            return this.a;
        },
        set: function (a) {
            var b = this.a;
            this.a = a;
            if (b != this.a) {
                this.it("FillBrushes", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "styleMappings", {
        get: function () {
            return this.ag;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d", {
        get: function () {
            return this.c;
        },
        set: function (a) {
            var b = this.c;
            this.c = a;
            if (b != this.c) {
                this.it("FillScaleMode", enumGetBox(TreemapFillScaleMode_$type, b), enumGetBox(TreemapFillScaleMode_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "bx", {
        get: function () {
            return this.br;
        },
        set: function (a) {
            var b = this.br;
            this.br = a;
            if (b != this.br) {
                this.it("IsFillScaleLogarithmic", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "ez", {
        get: function () {
            return this.ew;
        },
        set: function (a) {
            var b = this.ew;
            this.ew = a;
            if (b != this.ew) {
                this.it("FillScaleLogarithmBase", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dl", {
        get: function () {
            return this.cl;
        },
        set: function (a) {
            var b = this.cl;
            this.cl = a;
            if (b != this.cl) {
                this.it("FillScaleMinimumValue", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dk", {
        get: function () {
            return this.ck;
        },
        set: function (a) {
            var b = this.ck;
            this.ck = a;
            if (b != this.ck) {
                this.it("FillScaleMaximumValue", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "r", {
        get: function () {
            return this.p;
        },
        set: function (a) {
            var b = this.p;
            this.p = a;
            if (b != this.p) {
                this.it("LabelVerticalFitMode", enumGetBox(TreemapLabelVerticalFitMode_$type, b), enumGetBox(TreemapLabelVerticalFitMode_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "q", {
        get: function () {
            return this.r == 0 ? 1 : this.r;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "o", {
        get: function () {
            return this.m;
        },
        set: function (a) {
            var b = this.m;
            this.m = a;
            if (b != this.m) {
                this.it("LabelHorizontalFitMode", enumGetBox(TreemapLabelHorizontalFitMode_$type, b), enumGetBox(TreemapLabelHorizontalFitMode_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "n", {
        get: function () {
            return this.o == 0 ? 1 : this.o;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "jx", {
        get: function () {
            return this.jl;
        },
        set: function (a) {
            var b = this.jl;
            this.jl = a;
            if (b != this.jl) {
                this.it("OverlayHeaderHoverBackground", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "jr", {
        get: function () {
            return this.jf;
        },
        set: function (a) {
            var b = this.jf;
            this.jf = a;
            if (b != this.jf) {
                this.it("HeaderHoverBackground", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "jp", {
        get: function () {
            return this.jd;
        },
        set: function (a) {
            var b = this.jd;
            this.jd = a;
            if (b != this.jd) {
                this.it("HeaderBackground", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "jw", {
        get: function () {
            return this.jk;
        },
        set: function (a) {
            var b = this.jk;
            this.jk = a;
            if (b != this.jk) {
                this.it("OverlayHeaderBackground", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "ju", {
        get: function () {
            return this.ji;
        },
        set: function (a) {
            var b = this.ji;
            this.ji = a;
            if (b != this.ji) {
                this.it("HeaderTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "jq", {
        get: function () {
            return this.je;
        },
        set: function (a) {
            var b = this.je;
            this.je = a;
            if (b != this.je) {
                this.it("HeaderDarkTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "j7", {
        get: function () {
            return this.jm;
        },
        set: function (a) {
            var b = this.jm;
            this.jm = a;
            if (b != this.jm) {
                this.it("TextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "jo", {
        get: function () {
            return this.jc;
        },
        set: function (a) {
            var b = this.jc;
            this.jc = a;
            if (b != this.jc) {
                this.it("DarkTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "jt", {
        get: function () {
            return this.jh;
        },
        set: function (a) {
            var b = this.jh;
            this.jh = a;
            if (b != this.jh) {
                this.it("HeaderHoverTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "js", {
        get: function () {
            return this.jg;
        },
        set: function (a) {
            var b = this.jg;
            this.jg = a;
            if (b != this.jg) {
                this.it("HeaderHoverDarkTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "a8", {
        get: function () {
            return this.a5;
        },
        set: function (a) {
            var b = this.a5;
            this.a5 = a;
            if (b != this.a5) {
                this.it("TextStyle", b, this.a5);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "a6", {
        get: function () {
            return this.a4;
        },
        set: function (a) {
            var b = this.a4;
            this.a4 = a;
            if (b != this.a4) {
                this.it("HeaderTextStyle", b, this.a4);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "j", {
        get: function () {
            return this.h;
        },
        set: function (a) {
            var b = this.h;
            this.h = a;
            if (b != this.h) {
                this.it("HeaderDisplayMode", enumGetBox(TreemapHeaderDisplayMode_$type, b), enumGetBox(TreemapHeaderDisplayMode_$type, this.h));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "i", {
        get: function () {
            return this.j == 0 ? 1 : this.j;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dq", {
        get: function () {
            return this.co;
        },
        set: function (a) {
            var b = this.co;
            this.co = a;
            if (b != this.co) {
                this.it("HeaderLabelLeftMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "ds", {
        get: function () {
            return this.cq;
        },
        set: function (a) {
            var b = this.cq;
            this.cq = a;
            if (b != this.cq) {
                this.it("HeaderLabelTopMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dr", {
        get: function () {
            return this.cp;
        },
        set: function (a) {
            var b = this.cp;
            this.cp = a;
            if (b != this.cp) {
                this.it("HeaderLabelRightMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dp", {
        get: function () {
            return this.cn;
        },
        set: function (a) {
            var b = this.cn;
            this.cn = a;
            if (b != this.cn) {
                this.it("HeaderLabelBottomMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d3", {
        get: function () {
            return this.c1;
        },
        set: function (a) {
            var b = this.c1;
            this.c1 = a;
            if (b != this.c1) {
                this.it("OverlayHeaderLabelLeftMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d5", {
        get: function () {
            return this.c3;
        },
        set: function (a) {
            var b = this.c3;
            this.c3 = a;
            if (b != this.c3) {
                this.it("OverlayHeaderLabelTopMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d4", {
        get: function () {
            return this.c2;
        },
        set: function (a) {
            var b = this.c2;
            this.c2 = a;
            if (b != this.c2) {
                this.it("OverlayHeaderLabelRightMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d2", {
        get: function () {
            return this.c0;
        },
        set: function (a) {
            var b = this.c0;
            this.c0 = a;
            if (b != this.c0) {
                this.it("OverlayHeaderLabelBottomMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dx", {
        get: function () {
            return this.cv;
        },
        set: function (a) {
            var b = this.cv;
            this.cv = a;
            if (b != this.cv) {
                this.it("LabelLeftMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dz", {
        get: function () {
            return this.cx;
        },
        set: function (a) {
            var b = this.cx;
            this.cx = a;
            if (b != this.cx) {
                this.it("LabelTopMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dy", {
        get: function () {
            return this.cw;
        },
        set: function (a) {
            var b = this.cw;
            this.cw = a;
            if (b != this.cw) {
                this.it("LabelRightMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dw", {
        get: function () {
            return this.cu;
        },
        set: function (a) {
            var b = this.cu;
            this.cu = a;
            if (b != this.cu) {
                this.it("LabelBottomMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d8", {
        get: function () {
            return this.c6;
        },
        set: function (a) {
            var b = this.c6;
            this.c6 = a;
            if (b != this.c6) {
                this.it("ParentNodeLeftMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "ec", {
        get: function () {
            return this.da;
        },
        set: function (a) {
            var b = this.da;
            this.da = a;
            if (b != this.da) {
                this.it("ParentNodeTopMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "ea", {
        get: function () {
            return this.c8;
        },
        set: function (a) {
            var b = this.c8;
            this.c8 = a;
            if (b != this.c8) {
                this.it("ParentNodeRightMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d6", {
        get: function () {
            return this.c4;
        },
        set: function (a) {
            var b = this.c4;
            this.c4 = a;
            if (b != this.c4) {
                this.it("ParentNodeBottomMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d9", {
        get: function () {
            return this.c7;
        },
        set: function (a) {
            var b = this.c7;
            this.c7 = a;
            if (b != this.c7) {
                this.it("ParentNodeLeftPadding", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "ed", {
        get: function () {
            return this.db;
        },
        set: function (a) {
            var b = this.db;
            this.db = a;
            if (b != this.db) {
                this.it("ParentNodeTopPadding", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "eb", {
        get: function () {
            return this.c9;
        },
        set: function (a) {
            var b = this.c9;
            this.c9 = a;
            if (b != this.c9) {
                this.it("ParentNodeRightPadding", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d7", {
        get: function () {
            return this.c5;
        },
        set: function (a) {
            var b = this.c5;
            this.c5 = a;
            if (b != this.c5) {
                this.it("ParentNodeBottomPadding", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "ja", {
        get: function () {
            return this.i9;
        },
        set: function (a) {
            var b = this.i9;
            this.i9 = a;
            if (b != this.i9) {
                this.it("LabelHorizontalAlignment", enumGetBox(HorizontalAlignment_$type, b), enumGetBox(HorizontalAlignment_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "kd", {
        get: function () {
            return this.kc;
        },
        set: function (a) {
            var b = this.kc;
            this.kc = a;
            if (b != this.kc) {
                this.it("LabelVerticalAlignment", enumGetBox(VerticalAlignment_$type, b), enumGetBox(VerticalAlignment_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dn", {
        get: function () {
            return this.cm;
        },
        set: function (a) {
            var b = this.cm;
            this.cm = a;
            if (b != this.cm) {
                this.it("HeaderHeight", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "jv", {
        get: function () {
            return this.jj;
        },
        set: function (a) {
            var b = this.jj;
            this.jj = a;
            if (b != this.jj) {
                this.it("Outline", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "es", {
        get: function () {
            return this.dd;
        },
        set: function (a) {
            var b = this.dd;
            this.dd = a;
            if (b != this.dd) {
                this.it("StrokeThickness", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d1", {
        get: function () {
            return this.cz;
        },
        set: function (a) {
            var b = this.cz;
            this.cz = a;
            if (b != this.cz) {
                this.it("NodeOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "al", {
        get: function () {
            return this.ak;
        },
        set: function (a) {
            var b = this.ak;
            this.ak = a;
            if (b != this.ak) {
                this.it("LayoutOrientation", enumGetBox(TreemapOrientation_$type, b), enumGetBox(TreemapOrientation_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "u", {
        get: function () {
            return this.t;
        },
        set: function (a) {
            var b = this.t;
            this.t = a;
            if (b != this.t) {
                this.it("LayoutType", enumGetBox(TreemapLayoutType_$type, b), enumGetBox(TreemapLayoutType_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "d0", {
        get: function () {
            return this.cy;
        },
        set: function (a) {
            var b = this.cy;
            this.cy = a;
            if (b != this.cy) {
                this.it("MinimumDisplaySize", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "e3", {
        get: function () {
            return this.ey;
        },
        set: function (a) {
            var b = this.ey;
            this.ey = a;
            if (b != this.ey) {
                this.it("TransitionDuration", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "et", {
        get: function () {
            return this.de;
        },
        set: function (a) {
            var b = this.de;
            this.de = a;
            if (b != this.de) {
                this.it("TransitionProgress", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "a2", {
        get: function () {
            return this.a0;
        },
        set: function (a) {
            var b = this.a0;
            this.a0 = a;
            if (b != this.a0) {
                this.it("FastItemsSource", b, this.a0);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "a3", {
        get: function () {
            return this.a1;
        },
        set: function (a) {
            var b = this.a1;
            this.a1 = a;
            if (b != this.a1) {
                this.it("HighlightedFastItemsSource", b, this.a1);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "bn", {
        get: function () {
            return this.bf;
        },
        set: function (a) {
            this.bf = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "bg", {
        get: function () {
            return this.ba;
        },
        set: function (a) {
            this.ba = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "bk", {
        get: function () {
            return this.be;
        },
        set: function (a) {
            this.be = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "bi", {
        get: function () {
            return this.bc;
        },
        set: function (a) {
            this.bc = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "bj", {
        get: function () {
            return this.bd;
        },
        set: function (a) {
            this.bd = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "bh", {
        get: function () {
            return this.bb;
        },
        set: function (a) {
            this.bb = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "ee", {
        get: function () {
            return this.dc;
        },
        set: function (a) {
            var b = this.dc;
            this.dc = a;
            if (b != this.dc) {
                this.it("PixelScalingRatio", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dg", {
        get: function () {
            return this.cd;
        },
        set: function (a) {
            var b = this.cd;
            this.cd = a;
            if (b != this.cd) {
                this.it("ActualPixelScalingRatio", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "dv", {
        get: function () {
            return this.ct;
        },
        set: function (a) {
            var b = this.ct;
            this.ct = a;
            if (b != this.ct) {
                this.it("InteractionPixelScalingRatio", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "df", {
        get: function () {
            return this.cc;
        },
        set: function (a) {
            var b = this.cc;
            this.cc = a;
            if (b != this.cc) {
                this.it("ActualInteractionPixelScalingRatio", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "e1", {
        get: function () {
            return this.ex;
        },
        set: function (a) {
            var b = this.ex;
            this.ex = a;
            if (b != this.ex) {
                this.it("HighlightingTransitionDuration", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "aw", {
        get: function () {
            return this.at;
        },
        set: function (a) {
            var b = this.at;
            this.at = a;
            if (b != this.at) {
                this.it("HighlightingMode", enumGetBox(TreemapHighlightingMode_$type, b), enumGetBox(TreemapHighlightingMode_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "au", {
        get: function () {
            return this.as;
        },
        set: function (a) {
            var b = this.as;
            this.as = a;
            if (b != this.as) {
                this.it("ActualHighlightingMode", enumGetBox(TreemapHighlightingMode_$type, b), enumGetBox(TreemapHighlightingMode_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Treemap.prototype.av = function () {
        if (this.aw != 0) {
            return this.aw;
        }
        return 2;
    };
    Object.defineProperty(Treemap.prototype, "du", {
        get: function () {
            return this.cs;
        },
        set: function (a) {
            var b = this.cs;
            this.cs = a;
            if (b != this.cs) {
                this.it("HighlightingFadeOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(Treemap.prototype, "bo", {
        get: function () {
            if (this.ar == null) {
                this.ar = new TreemapHighlightingManager();
                this.ar.executionContext = this.aq.d();
                this.ar.ensureAnimator = runOn(this, this.h7);
            }
            return this.ar;
        },
        enumerable: false,
        configurable: true
    });
    Treemap.prototype.h7 = function () {
        var a = this.az;
        if (!a.f() && a.r > 0) {
            a.v();
        }
        if (a.r == 0) {
            this.i7(1);
        }
    };
    Treemap.prototype.h3 = function () {
        this.a9 = null;
    };
    Treemap.prototype.ia = function (a, b) {
        this.i7(this.az.o);
    };
    Treemap.prototype.i7 = function (a) {
        var b = this.bo.tick(a);
        if (a == 1 && b && this.az.r > 0) {
            this.az.v();
        }
        if (this.bs) {
            this.i0(this.e);
        }
        else {
            this.i0(this.f);
        }
        if (!b) {
            this.az.w();
        }
    };
    Treemap.prototype.id = function (a, b, c, d) {
        if (c) {
            return;
        }
        if (this.au == 1) {
            return;
        }
        var e = null;
        var f = this.bo;
        var g = d;
        var h = !g;
        if (g && this.a9 != null) {
            e = this.a9;
        }
        else {
            if (a != null) {
                e = a.f(this);
            }
            if (this.a9 != null && this.a9 != e) {
                f.endHighlight(this.a9);
            }
            this.a9 = e;
        }
        if (g) {
            f.endHighlight(e);
        }
        else if (h) {
            f.startHighlight(e);
        }
        this.h7();
    };
    Treemap.prototype.bl = function (a, b) {
        var c = null;
        return a.registerColumn(b, c, false);
    };
    Treemap.prototype.bm = function (a) {
        var b = null;
        return this.a2.registerColumnObject(a, b, false);
    };
    Treemap.prototype.ic = function () {
        this.bw = true;
        this.aq.a2();
    };
    Object.defineProperty(Treemap.prototype, "bs", {
        get: function () {
            return this.ay.f();
        },
        enumerable: false,
        configurable: true
    });
    Treemap.prototype.bz = function () {
        if (this.l == 2) {
            return false;
        }
        if (this.bh == null) {
            return false;
        }
        if (this.a3 == null && stringIsNullOrEmpty(this.gb)) {
            return false;
        }
        return true;
    };
    Treemap.prototype.an = function () {
        var a = new TreemapTreeData();
        if (this.bn == null || (this.bj == null && this.bi == null)) {
            return null;
        }
        for (var b = 0; b < this.a2.count; b++) {
            var c = null;
            if (this.bg != null && this.bg.count > b) {
                c = this.bg.item(b);
            }
            var d = NaN;
            if (this.bz() && this.bh != null && this.bh.count > b) {
                d = this.bh.item(b);
                if (isNaN_(d)) {
                    d = 0;
                }
            }
            var e = this.bn.item(b);
            var f = null;
            var g = "";
            if (this.bj != null) {
                g = this.bj.item(b) != null ? this.bj.item(b).toString() : "";
            }
            if (this.bi != null) {
                if (this.bi.item(b) == null) {
                    continue;
                }
                f = stringReplace(this.bi.item(b).toString(), " ", "_");
            }
            if (f == null) {
                f = stringReplace(g, " ", "_");
                if (stringIsNullOrEmpty(f)) {
                    continue;
                }
            }
            var h = null;
            if (this.bk != null) {
                h = this.bk.item(b) != null ? stringReplace(this.bk.item(b).toString(), " ", "_") : null;
            }
            var i = new TreemapTreeNode();
            i.l = f;
            i.n = h;
            i.k = this.a2.item(b);
            i.i = b;
            i.h = e;
            i.g = d;
            if (!isNaN_(i.h) && !isNaN_(i.g)) {
                i.f = Math.max(0, Math.min(1, i.g / i.h));
            }
            i.j = c;
            i.m = g;
            a.e(i);
        }
        a.f();
        return a;
    };
    Treemap.prototype.ix = function () {
        if (this.am == null) {
            this.am = this.an();
            if (this.am == null) {
                return;
            }
            this.b0 = true;
            this.im();
        }
        if (this.b0) {
            this.b0 = false;
            for (var a = 0; a < this.am.d.count; a++) {
                var b = this.am.b.item(this.am.d._inner[a]);
                b.c.clear();
                for (var c = 0; c < this.styleMappings.count; c++) {
                    if (this.bt(this.styleMappings._inner[c], b)) {
                        b.c.add(this.styleMappings._inner[c]);
                    }
                }
            }
        }
        if (!this.aq.q()) {
            return;
        }
        var d = new TreemapLayoutSettings();
        d.b = this.am;
        if (this.ao != null && !this.am.b.containsKey(this.ao.l)) {
            this.ao = null;
            this.i5(null);
        }
        else {
            if (this.ao != null) {
                var e = this.am.b.item(this.ao.l);
                if (e != this.ao) {
                    this.ao = e;
                    this.i5(this.ao);
                }
            }
        }
        d.h = this.kb;
        d.c = this.ao;
        d.f = this.d0;
        d.a = this.al;
        var f = this.i;
        var g = this.ei();
        var h = this.ek();
        var i = this.ej();
        var j = this.eh();
        var k = this.en();
        var l = this.ep();
        var m = this.eo();
        var n = this.em();
        var o = this.jb();
        var p = this.ke();
        var q = this.aq.y("M");
        var r = this.aq.aa("M");
        var s = q + h + j;
        var t = r + l + n;
        d.j = new Thickness(1, this.d9, this.ed, this.eb, this.d7);
        d.i = new Thickness(1, this.d8, this.ec, this.ea, this.d6);
        if (!isNaN_(this.dn)) {
            s = this.dn;
        }
        d.e = s;
        if (f == 2) {
            d.e = 0;
        }
        d.d = this.ao == null;
        this.s.d(this.f, d);
        var u = 1.7976931348623157E+308;
        var v = -1.7976931348623157E+308;
        if (this.d == 1 || this.d == 3) {
            for (var w = 0; w < this.am.d.count; w++) {
                var x = 0;
                if (this.d == 1) {
                    x = this.am.b.item(this.am.d._inner[w]).e();
                }
                else {
                    x = this.am.b.item(this.am.d._inner[w]).h;
                }
                if (!isNaN_(x)) {
                    u = Math.min(x, u);
                    v = Math.max(x, v);
                }
            }
        }
        else {
            for (var y = 0; y < this.f.e.count; y++) {
                var z = 0;
                if (this.d == 0) {
                    z = this.am.b.item(this.f.e._inner[y]).e();
                }
                else {
                    z = this.am.b.item(this.f.e._inner[y]).h;
                }
                if (!isNaN_(z)) {
                    u = Math.min(z, u);
                    v = Math.max(z, v);
                }
            }
        }
        for (var aa = 0; aa < this.f.e.count; aa++) {
            var ab = this.f.e._inner[aa];
            var ac = this.am.b.item(ab);
            var ad = this.jy(ac, u, v);
            var ae = this.j3(ac);
            var af = this.jz(ac);
            var ag = this.er(ac);
            var ah = this.eq(ac);
            var ai = this.ef(ac);
            var aj = this.hm(this.f, ac, g, i, k, m, s, t);
            var ak = this.j2(ac, ad, af);
            var al = this.a7(ac);
            var am = 0;
            if (this.by(ac)) {
                am = this.aq.z(aj);
            }
            else {
                am = this.aq.ab(aj);
            }
            var an = 0;
            if (this.by(ac)) {
                an = s;
            }
            else {
                an = this.aq.aa(aj);
            }
            var ao = this.el(ac);
            var ap = this.eg(ac);
            this.f.l(ac, aj, ad, ae, af, ak, ag, ah, ai, f, am, an, g, h, i, j, k, l, m, n, o, p, ao, ap);
            if (ac.c.count > 0) {
                for (var aq = 0; aq < ac.c.count; aq++) {
                    var ar = ac.b != null && ac.b.count > 0;
                    if (ac.c._inner[aq].bo == 2 && ar) {
                        continue;
                    }
                    this.f.f(ac, ac.c._inner[aq], runOn(this, this.j2));
                }
            }
            if (this.nodeStyling != null) {
                var as = new TreemapNodeStylingEventArgs();
                as.item = ac.k;
                if (ac.n != null) {
                    if (this.am.b.containsKey(ac.n)) {
                        var at = this.am.b.item(ac.n);
                        as.parentItem = at.k;
                        as.parentLabel = at.m;
                        as.parentSum = at.e();
                        as.parentValue = at.h;
                    }
                }
                as.sum = ac.e();
                as.value = ac.h;
                as.label = ac.m;
                as.customValue = ac.j;
                if (ac.b != null && ac.b.count > 0) {
                    as.isParent = true;
                }
                as.style = new TreemapNodeStyle();
                as.highlightingInfo = this.bo.getHighlightingInfo(this, this.a2, ac.i, ac.i, false);
                this.nodeStyling(this, as);
                this.f.f(ac, as.style, runOn(this, this.j2));
            }
        }
    };
    Treemap.prototype.by = function (a) {
        return a.b != null && a.b.count > 0;
    };
    Treemap.prototype.em = function () {
        return this.dw;
    };
    Treemap.prototype.eo = function () {
        return this.dy;
    };
    Treemap.prototype.ep = function () {
        return this.dz;
    };
    Treemap.prototype.en = function () {
        return this.dx;
    };
    Treemap.prototype.jb = function () {
        return this.ja;
    };
    Treemap.prototype.ke = function () {
        return this.kd;
    };
    Treemap.prototype.eh = function () {
        if (this.i == 2) {
            return this.d2;
        }
        return this.dp;
    };
    Treemap.prototype.ej = function () {
        if (this.i == 2) {
            return this.d4;
        }
        return this.dr;
    };
    Treemap.prototype.ek = function () {
        if (this.i == 2) {
            return this.d5;
        }
        return this.ds;
    };
    Treemap.prototype.ei = function () {
        if (this.i == 2) {
            return this.d2;
        }
        return this.dq;
    };
    Treemap.prototype.hv = function (a, b, c, d, e) {
        var f = b.length;
        var g = b;
        var h = ("\u2026");
        if (isNaN_(this.ce)) {
            if (this.by(a)) {
                this.ce = this.aq.z(h);
            }
            else {
                this.ce = this.aq.ab(h);
            }
        }
        if (c <= (this.ce + d + e)) {
            if (this.n == 2) {
                return "";
            }
            return h;
        }
        var i = 0;
        if (this.by(a)) {
            i = this.aq.z(b);
        }
        else {
            i = this.aq.ab(b);
        }
        if (i + d + e <= c) {
            return b;
        }
        var j = c / (i + d + e);
        var k = truncate(Math.ceil(f * j));
        var l = b.substr(0, k) + h;
        var m = 0;
        if (this.by(a)) {
            m = this.aq.z(l);
        }
        else {
            m = this.aq.ab(l);
        }
        if ((m + d + e) > c) {
            f = k;
        }
        else {
            k = k + 1;
            l = b.substr(0, k) + h;
            if (this.by(a)) {
                m = this.aq.z(l);
            }
            else {
                m = this.aq.ab(l);
            }
            if ((m + d + e) > c) {
                f = k;
            }
        }
        while ((i + d + e) > c && f > 0) {
            f--;
            b = b.substr(0, f) + h;
            if (this.n == 2) {
                return "";
            }
            if (this.by(a)) {
                i = this.aq.z(b);
            }
            else {
                i = this.aq.ab(b);
            }
        }
        return b;
    };
    Treemap.prototype.hm = function (a, b, c, d, e, f, g, h) {
        if (b == null) {
            if (this.fh != null && this.hn != null && !stringIsNullOrEmpty(this.hn)) {
                return this.hn + this.fh;
            }
            return "";
        }
        var i = a.o(b);
        var j = i.width;
        var k = i.height;
        var l = b.m;
        if (this.ao != null && this.ao == b && this.fh != null) {
            var m = null;
            var n = b;
            while (n.n != null) {
                if (this.am.b.containsKey(n.n)) {
                    m = this.am.b.item(n.n);
                    if (m.m != null) {
                        l = m.m + this.fh + l;
                    }
                    n = m;
                }
            }
            if (this.hn != null && !stringIsNullOrEmpty(this.hn)) {
                l = this.hn + this.fh + l;
            }
        }
        var o = 0;
        var p = 0;
        if (a.c(b.l)) {
            var q = a.a(b.l);
            if (b.b.count > 0) {
                o = c;
                p = d;
                if (this.q == 2) {
                    if (k < g) {
                        return "";
                    }
                }
            }
            else {
                o = e;
                p = f;
                if (this.q == 2) {
                    if (k < h) {
                        return "";
                    }
                }
            }
        }
        return this.hv(b, l, j, o, p);
    };
    Treemap.prototype.er = function (a) {
        if (!isNaN_(this.es)) {
            return this.es;
        }
        return this.cj;
    };
    Treemap.prototype.eq = function (a) {
        if (!isNaN_(this.d1)) {
            return this.d1;
        }
        return this.ci;
    };
    Treemap.prototype.ef = function (a) {
        if (!isNaN_(this.du)) {
            return this.du;
        }
        return this.cf;
    };
    Treemap.prototype.el = function (a) {
        if (!isNaN_(this.dt)) {
            return this.dt;
        }
        return this.ch;
    };
    Treemap.prototype.eg = function (a) {
        return this.cg;
    };
    Treemap.prototype.jz = function (a) {
        if (this.i == 2) {
            return this.j4(a);
        }
        if (a == this.ap) {
            return this.j0(a);
        }
        if (this.jp != null) {
            return this.jp;
        }
        return this.aq.a7();
    };
    Treemap.prototype.j4 = function (a) {
        if (a == this.ap) {
            return this.j5(a);
        }
        if (this.jw != null) {
            return this.jw;
        }
        return this.aq.bc();
    };
    Treemap.prototype.j2 = function (a, b, c) {
        if (a.b.count > 0) {
            if (a == this.ap) {
                return this.j1(a, c);
            }
            var d = this.aq.a8();
            var e = this.aq.a9();
            if (this.ju != null) {
                e = this.ju;
            }
            if (this.jq != null) {
                d = this.jq;
            }
            return BrushUtil.l(c, d, e);
        }
        else {
            var f = this.aq.a6();
            var g = this.aq.be();
            if (this.j7 != null) {
                g = this.j7;
            }
            if (this.jo != null) {
                f = this.jo;
            }
            return BrushUtil.l(b, f, g);
        }
    };
    Treemap.prototype.a7 = function (a) {
        if (a.b.count > 0) {
            if (this.a6 != null) {
                return this.a6;
            }
            return this.aq.j();
        }
        else {
            if (this.a8 != null) {
                return this.a8;
            }
            return this.aq.k();
        }
    };
    Treemap.prototype.onDetachedFromUI = function () {
        this.aq.av();
    };
    Treemap.prototype.onAttachedToUI = function () {
        this.aq.at();
    };
    Treemap.prototype.j0 = function (a) {
        if (this.jr != null) {
            return this.jr;
        }
        return this.aq.ba();
    };
    Treemap.prototype.j5 = function (a) {
        if (this.jx != null) {
            return this.jx;
        }
        return this.aq.bd();
    };
    Treemap.prototype.j1 = function (a, b) {
        var c = this.aq.a8();
        var d = this.aq.a9();
        if (this.ju != null) {
            d = this.ju;
        }
        if (this.jq != null) {
            c = this.jq;
        }
        if (this.jt != null) {
            d = this.jt;
        }
        if (this.js != null) {
            c = this.js;
        }
        return BrushUtil.l(b, c, d);
    };
    Treemap.prototype.j3 = function (a) {
        if (this.jv != null) {
            return this.jv;
        }
        return this.aq.bb();
    };
    Treemap.prototype.jy = function (a, b, c) {
        if (this.b == null || this.b.count == 0) {
            return this.j6(a);
        }
        var d = this.dm(a);
        if (isNaN_(d)) {
            return this.j6(a);
        }
        var e = 0;
        if (this.bx && this.ez > 0) {
            if (d > 0) {
                e = (logBase(d, this.ez) - logBase(b, this.ez)) / (logBase(c, this.ez) - logBase(b, this.ez));
            }
            else {
                return this.j6(a);
            }
        }
        else {
            var f = c - b;
            if (f == 0) {
                e = 0;
            }
            else {
                e = (d - b) / (c - b);
            }
        }
        e = e * (this.b.count - 1);
        return BrushCollectionUtil.d(this.b, e);
    };
    Treemap.prototype.dm = function (a) {
        switch (this.d) {
            case 0:
            case 1: return a.e();
            case 2:
            case 3: return a.h;
        }
        return a.e();
    };
    Treemap.prototype.j6 = function (a) {
        return this.aq.a7();
    };
    Treemap.prototype.i0 = function (a) {
        var b = new List$1(TreemapVisual.$, 0);
        var c = this.aq.l();
        var d = 0;
        if (this.i == 2) {
            d = this.e2(a, false, d, c, function (e) { return true; }, b);
            d = this.e2(a, true, d, c, function (e) { return e.e.b != null && e.e.b.count > 0; }, b);
        }
        else {
            d = this.e2(a, false, d, c, function (e) { return true; }, b);
        }
        c.count = d;
        this.aq.ai(b);
    };
    Treemap.prototype.e2 = function (a, b, c, d, e, f) {
        for (var g = 0; g < a.e.count; g++) {
            var h = a.e._inner[g];
            var i = a.a(h);
            if (!e(i)) {
                continue;
            }
            var j = d.item(c);
            if (i.ae.isEmpty || (i.ae.width == 0 && i.ae.height == 0)) {
                j.x = 1;
                continue;
            }
            c++;
            f.add(j);
            var k = i.e;
            var l = true;
            if (this.nodeRenderStyling != null) {
                var m = new TreemapNodeStylingEventArgs();
                m.item = k.k;
                if (k.n != null) {
                    if (this.am.b.containsKey(k.n)) {
                        var n = this.am.b.item(k.n);
                        m.parentItem = n.k;
                        m.parentLabel = n.m;
                        m.parentSum = n.e();
                        m.parentValue = n.h;
                    }
                }
                m.sum = k.e();
                m.value = k.h;
                m.label = k.m;
                m.customValue = k.j;
                if (k.b != null && k.b.count > 0) {
                    m.isParent = true;
                }
                m.style = new TreemapNodeStyle();
                m.isHighlightInProgress = this.bo.inProgress;
                m.totalHighlightProgress = this.bo.totalHighlightingProgress;
                m.highlightingInfo = this.bo.getHighlightingInfo(this, this.a2, k.i, k.i, false);
                this.nodeRenderStyling(this, m);
                l = !m.highlightingHandled;
                i.y(k, m.style, runOn(this, this.j2));
            }
            var o = i.e.b.count == 0;
            var p = !o && i.a == 2;
            j.a = this.a7(i.e);
            j.l = i.aa;
            j.o = i.ad;
            j.m = i.ab;
            j.r = new Thickness(1, i.l, i.n, i.m, i.k);
            j.s = new Thickness(1, i.r, i.t, i.s, i.q);
            j.n = i.ac;
            j.j = i.x;
            j.i = i.v;
            j.x = 0;
            j.p = this.ka(i.ae, i.v);
            j.b = o;
            j.u = !o && !p ? 0 : 1;
            j.w = !o && p ? 0 : 1;
            j.v = o ? 0 : 1;
            j.f = i.o;
            j.e = i.j;
            j.k = i.z;
            j.t = i.ag;
            j.h = i.u;
            j.d = i.i;
            j.q = Rect.empty;
            if (i.af.height != i.ae.height) {
                j.q = this.ka(i.af, i.v);
                j.d = i.p;
            }
            if (!b && !o && p) {
                j.w = 1;
            }
            if (b && !o && p) {
                j.l = null;
                j.o = null;
            }
            if (this.au != 1 && l) {
                var q = this.bo.getHighlightingInfo(this, this.a2, k.i, k.i, false);
                j.l = this.jn(q, this.au, j.l);
                j.o = this.jn(q, this.au, j.o);
                j.h = this.di(q, this.au, j.h, i.h, this.bo.totalHighlightingProgress, this.bo.totalHighlightingProgress);
            }
        }
        return c;
    };
    Treemap.prototype.di = function (a, b, c, d, e, f) {
        if (b == 3) {
            var g = 0;
            if (a != null) {
                g = a.e;
            }
            if (g > 1) {
                g = 1;
            }
            if (e > 1) {
                e = 1;
            }
            if (f > 1) {
                f = 1;
            }
            g = g - Math.max(e, f);
            return d + (1 + g) * (1 - d);
        }
        return c;
    };
    Treemap.prototype.jn = function (a, b, c) {
        if (c != null && b == 2) {
            var d = 0;
            if (a != null) {
                d = a.e;
            }
            var e = d;
            e = e * 0.5;
            if (e == 0) {
                return c;
            }
            return BrushUtil.o(c, e);
        }
        return c;
    };
    Treemap.prototype.ka = function (a, b) {
        var c = this.dh(Math.floor(a.left), b);
        var d = this.dh(Math.floor(a.right), b);
        var e = this.dh(Math.floor(a.top), b);
        var f = this.dh(Math.floor(a.bottom), b);
        return new Rect(0, c, e, d - c, f - e);
    };
    Treemap.prototype.dh = function (a, b) {
        var c = a;
        if (b > 0) {
            var d = b % 2;
            if (d == 0 || d == 1) {
                var e = 1;
                c = Math.floor(a);
                if (c + 0.5 < a) {
                    e = -1;
                    c = Math.ceil(a);
                }
                if (d == 1) {
                    c += 0.5 * e;
                }
            }
        }
        return c;
    };
    Treemap.prototype.b4 = function () {
        return !this.kb.isEmpty && this.aq.q();
    };
    Treemap.prototype.i1 = function () {
        if (!this.b4()) {
            return;
        }
        if (this.bw) {
            if (this.bs) {
                if (this.ay.g) {
                    this.ay.t();
                }
                var a = this.g;
                this.g = this.e;
                this.e = a;
            }
            else {
                var b = this.g;
                this.g = this.f;
                this.f = b;
            }
        }
        else if (this.bs) {
            this.e.h(this.et, this.g, this.f);
            this.i0(this.e);
        }
        if (this.bw) {
            this.ix();
        }
        if (this.bw && this.b5) {
            this.i3();
            this.e.h(this.et, this.g, this.f);
            this.i0(this.e);
        }
        else {
            if (this.bw) {
                this.i0(this.f);
            }
        }
        this.bw = false;
        this.aq.a1();
    };
    Treemap.prototype.bt = function (a, b) {
        var c = null;
        switch (a.bq) {
            case 1:
                c = b.h;
                break;
            case 0:
                c = b.e();
                break;
            case 2:
                c = b.j;
                break;
        }
        if (this.b1(c)) {
            var d = this.dj(c);
            if (a.bw != null) {
                if (this.b1(a.bw)) {
                    var e = this.dj(a.bw);
                    if (isNaN_(e) && isNaN_(d)) {
                        return true;
                    }
                    if (d == e) {
                        return true;
                    }
                }
            }
            else if (!isNaN_(a.bu) || !isNaN_(a.bt)) {
                var f = a.bu;
                var g = a.bt;
                if (d >= f && d <= g) {
                    return true;
                }
            }
        }
        else if (this.b3(c)) {
            if (a.bw != null) {
                if (this.b3(a.bw)) {
                    var h = (a.bw);
                    if (Base.equalsStatic(h, c)) {
                        return true;
                    }
                }
            }
        }
        else {
            if (Base.equalsStatic(c, a.bw)) {
                return true;
            }
        }
        return false;
    };
    Treemap.prototype.b3 = function (a) {
        return typeof a === 'string';
    };
    Treemap.prototype.dj = function (a) {
        if (typeof a === 'number') {
            return a;
        }
        if (typeof a === 'number') {
            return typeGetValue(a);
        }
        if (typeof a === 'number') {
            return typeGetValue(a);
        }
        if (typeof a === 'number') {
            return typeGetValue(a);
        }
        if (typeof a === 'number') {
            return a;
        }
        if (typeof a === 'number') {
            return typeGetValue(a);
        }
        if (typeof a === 'number') {
            return a;
        }
        return NaN;
    };
    Treemap.prototype.b1 = function (a) {
        if (typeof a === 'number') {
            return true;
        }
        if (typeof a === 'number') {
            return true;
        }
        if (typeof a === 'number') {
            return true;
        }
        if (typeof a === 'number') {
            return true;
        }
        if (typeof a === 'number') {
            return true;
        }
        if (typeof a === 'number') {
            return true;
        }
        if (typeof a === 'number') {
            return true;
        }
        return false;
    };
    Treemap.prototype.w = function (a) {
        var e_13, _a;
        var _this = this;
        var b = this.f;
        if (this.bs) {
            b = this.e;
        }
        var c = new List$1(TreemapNodeFrame.$, 0);
        for (var d = 0; d < b.e.count; d++) {
            var e = b.e._inner[d];
            var f = b.a(e);
            if (a.x >= f.ae.left && a.x <= f.ae.right && a.y >= f.ae.top && a.y <= f.ae.bottom) {
                c.add(f);
            }
        }
        c.aa(function (g, h) {
            var i = _this.e0(h);
            var j = _this.e0(g);
            if (i > j) {
                return 1;
            }
            else if (j > i) {
                return -1;
            }
            return 0;
        });
        try {
            for (var _b = __values(fromEnum(c)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var g = _c.value;
                if (g.e.b.count > 0) {
                    return g;
                }
            }
        }
        catch (e_13_1) {
            e_13 = { error: e_13_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_13)
                    throw e_13.error;
            }
        }
        return null;
    };
    Treemap.prototype.e0 = function (a) {
        var b = a.e;
        var c = 0;
        while (b.n != null) {
            if (this.am == null) {
                break;
            }
            if (this.am.b.containsKey(b.n)) {
                c++;
                b = this.am.b.item(b.n);
            }
            else {
                break;
            }
        }
        return c;
    };
    Treemap.prototype.x = function (a) {
        var e_14, _a, e_15, _b;
        var _this = this;
        var b = this.f;
        if (this.bs) {
            b = this.e;
        }
        var c = new List$1(TreemapNodeFrame.$, 0);
        for (var d = 0; d < b.e.count; d++) {
            var e = b.e._inner[d];
            var f = b.a(e);
            if (a.x >= f.ae.left && a.x <= f.ae.right && a.y >= f.ae.top && a.y <= f.ae.bottom) {
                c.add(f);
            }
        }
        c.aa(function (g, h) {
            var i = _this.e0(h);
            var j = _this.e0(g);
            if (i > j) {
                return 1;
            }
            else if (j > i) {
                return -1;
            }
            return 0;
        });
        if (this.i == 2) {
            try {
                for (var _c = __values(fromEnum(c)), _d = _c.next(); !_d.done; _d = _c.next()) {
                    var g = _d.value;
                    if (g.e.b.count > 0) {
                        if (this.b2(a, g)) {
                            return g;
                        }
                    }
                }
            }
            catch (e_14_1) {
                e_14 = { error: e_14_1 };
            }
            finally {
                try {
                    if (_d && !_d.done && (_a = _c.return))
                        _a.call(_c);
                }
                finally {
                    if (e_14)
                        throw e_14.error;
                }
            }
        }
        try {
            for (var _e = __values(fromEnum(c)), _f = _e.next(); !_f.done; _f = _e.next()) {
                var h = _f.value;
                return h;
            }
        }
        catch (e_15_1) {
            e_15 = { error: e_15_1 };
        }
        finally {
            try {
                if (_f && !_f.done && (_b = _e.return))
                    _b.call(_e);
            }
            finally {
                if (e_15)
                    throw e_15.error;
            }
        }
        return null;
    };
    Treemap.prototype.i3 = function () {
        this.de = 0;
        this.ay.w();
        this.ay.v();
        this.aq.ay();
    };
    Object.defineProperty(Treemap.prototype, "b5", {
        get: function () {
            return this.e3 > 0;
        },
        enumerable: false,
        configurable: true
    });
    Treemap.prototype.provideContainer = function (a) {
        this.aq.au(a);
        this.ay.u(a);
        this.az.u(a);
    };
    Treemap.prototype.h9 = function () {
        this.aq.ap();
    };
    Object.defineProperty(Treemap.prototype, "z", {
        get: function () {
            return this.v;
        },
        set: function (a) {
            var b = this.v;
            this.v = a;
            if (b != a) {
                this.ib(b);
                this.h8(a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Treemap.prototype.h8 = function (a) {
        if (a != null) {
            if (this.nodePointerEnter != null) {
                this.nodePointerEnter(this, this.aa(a));
            }
        }
    };
    Treemap.prototype.ib = function (a) {
        if (a != null) {
            if (this.nodePointerLeave != null) {
                this.nodePointerLeave(this, this.aa(a));
            }
        }
    };
    Treemap.prototype.aa = function (a) {
        var b = new TreemapNodePointerEventArgs();
        if (a != null) {
            b.customValue = a.e.j;
            b.item = a.e.k;
            b.position = this.j8;
            b.sum = a.e.e();
            b.value = a.e.h;
            b.label = a.e.m;
            b.isOverHeader = this.b2(this.j8, a);
            if (a.e.n != null && this.am != null && this.am.b.containsKey(a.e.n)) {
                var c = this.am.b.item(a.e.n);
                b.parentItem = c.k;
                b.parentSum = c.e();
                b.parentValue = c.h;
                b.parentLabel = c.m;
            }
        }
        b.isRightButton = false;
        return b;
    };
    Object.defineProperty(Treemap.prototype, "e5", {
        get: function () {
            return this.e4;
        },
        set: function (a) {
            var b = this.e4;
            this.e4 = a;
            if (b != this.e4) {
                this.it("FocusItem", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Treemap.prototype.io = function (a) {
        this.i8(a);
        if (this.nodePointerPressed != null && this.z != null) {
            var b = this.aa(this.z);
            this.nodePointerPressed(this, b);
        }
    };
    Treemap.prototype.is = function (a) {
        this.i8(a);
        var b = false;
        if (this.nodePointerReleased != null && this.z != null) {
            var c = this.aa(this.z);
            this.nodePointerReleased(this, c);
            b = c.isHandled;
        }
        if (!b) {
            if (this.y != null) {
                if (this.y.e == this.ao && this.b2(a, this.y)) {
                    this.ao = null;
                    this.bw = true;
                    this.aq.a2();
                    this.i5(null);
                    return;
                }
                this.ao = this.y.e;
                this.i5(this.y.e);
                this.bw = true;
                this.aq.a2();
            }
            else {
                this.ao = null;
                this.bw = true;
                this.i5(null);
                this.aq.a2();
            }
        }
    };
    Treemap.prototype.i5 = function (a) {
        try {
            this.bq = true;
            if (a == null) {
                this.e5 = null;
            }
            else {
                this.e5 = a.k;
            }
            this.bq = false;
        }
        finally {
            this.bq = false;
        }
    };
    Treemap.prototype.b2 = function (a, b) {
        var c = this.f;
        if (this.bs) {
            c = this.e;
        }
        if (b == null) {
            return false;
        }
        var d = b;
        if (a.x >= d.ae.left && a.x <= d.ae.right && a.y >= d.ae.top && a.y <= d.ae.bottom) {
            if (a.y - d.ae.top <= d.j) {
                return true;
            }
        }
        return false;
    };
    Treemap.prototype.ii = function (source_, a, b, c) {
        if (source_.dataView && source_.dataSource) {
            source_ = source_.dataView();
        }
        ;
        var d = null;
        if (this.b6(source_)) {
            d = this.a2;
        }
        if (this.bu(source_)) {
            d = this.a3;
        }
        if (d == null) {
            return;
        }
        d.handleCollectionChanged(new NotifyCollectionChangedEventArgs(2, 2, c, b, a));
    };
    Treemap.prototype.ie = function (source_) {
        if (source_.dataView && source_.dataSource) {
            source_ = source_.dataView();
        }
        ;
        var a = null;
        if (this.b6(source_)) {
            a = this.a2;
        }
        if (this.bu(source_)) {
            a = this.a3;
        }
        if (a == null) {
            return;
        }
        a.handleCollectionChanged(new NotifyCollectionChangedEventArgs(0, 4));
    };
    Treemap.prototype.b6 = function (a) {
        return Treemap.b7(a, this.dataSource);
    };
    Treemap.prototype.bu = function (a) {
        return Treemap.b7(a, this.highlightedDataSource);
    };
    Treemap.b7 = function (a, b) {
        return a == b;
    };
    Treemap.prototype.ig = function (source_, a, b) {
        if (source_.dataView && source_.dataSource) {
            source_ = source_.dataView();
        }
        ;
        var c = null;
        if (this.b6(source_)) {
            c = this.a2;
        }
        if (this.bu(source_)) {
            c = this.a3;
        }
        if (c == null) {
            return;
        }
        c.handleCollectionChanged(new NotifyCollectionChangedEventArgs(1, 0, b, a));
    };
    Treemap.prototype.ih = function (source_, a, b) {
        if (source_.dataView && source_.dataSource) {
            source_ = source_.dataView();
        }
        ;
        var c = null;
        if (this.b6(source_)) {
            c = this.a2;
        }
        if (this.bu(source_)) {
            c = this.a3;
        }
        if (c == null) {
            return;
        }
        c.handleCollectionChanged(new NotifyCollectionChangedEventArgs(1, 1, b, a));
    };
    Treemap.prototype.ip = function (a) {
        this.i8(a);
        this.id(this.z, a, false, false);
    };
    Treemap.prototype.iq = function (a) {
        this.id(this.z, a, false, true);
        this.i8(a);
        this.y = null;
        this.z = null;
        if (!this.bs) {
            this.bw = true;
            this.aq.a2();
        }
    };
    Treemap.prototype.i8 = function (a) {
        this.j8 = { $type: Point_$type, x: a.x, y: a.y };
        this.y = this.w(a);
        this.z = this.x(a);
        this.i6(a);
    };
    Treemap.prototype.i2 = function (a) {
        this.ir(a);
    };
    Treemap.prototype.ir = function (a) {
        this.i8(a);
        this.id(this.z, a, false, false);
        if (this.z != null) {
            if (this.nodePointerOver != null) {
                this.nodePointerOver(this, this.aa(this.z));
            }
        }
    };
    Treemap.prototype.i6 = function (a) {
        if (!this.bs) {
            if (this.b2(a, this.y)) {
                var b = this.ap;
                this.ap = this.y.e;
                if (this.ap != b) {
                    this.bw = true;
                    this.aq.a2();
                }
            }
            else {
                var c = this.ap;
                this.ap = null;
                if (this.ap != c) {
                    this.bw = true;
                    this.aq.a2();
                }
            }
        }
    };
    Treemap.prototype.iu = function (a) {
        this.i8(a);
        if (this.nodePointerPressed != null && this.z != null) {
            var b = this.aa(this.z);
            b.isRightButton = true;
            this.nodePointerPressed(this, b);
        }
    };
    Treemap.prototype.iv = function (a) {
        this.i8(a);
        var b = false;
        if (this.nodePointerReleased != null && this.z != null) {
            var c = this.aa(this.z);
            c.isRightButton = true;
            this.nodePointerReleased(this, c);
            b = c.isHandled;
        }
        if (!b) {
            this.y = null;
            this.ao = null;
            this.i5(null);
            this.bw = true;
            this.aq.a2();
        }
    };
    Treemap.prototype.iw = function (a) {
        this.bw = true;
        this.aq.a2();
    };
    Treemap.$t = markType(Treemap, 'Treemap', Base.$, [INotifyPropertyChanged_$type]);
    return Treemap;
}(Base));
export { Treemap };
/**
 * @hidden
 */
var TreemapNodeStyle = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapNodeStyle, _super);
    function TreemapNodeStyle() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this.a = null;
        _this.e = new HashSet$1(String_$type, 0);
        _this.a9 = null;
        _this.a8 = null;
        _this.bb = null;
        _this.ad = null;
        _this.bd = null;
        _this.ba = null;
        _this.i = DeviceUtils.g(5);
        _this.k = DeviceUtils.g(3);
        _this.j = DeviceUtils.g(5);
        _this.h = DeviceUtils.g(3);
        _this.m = DeviceUtils.g(5);
        _this.o = DeviceUtils.g(3);
        _this.n = DeviceUtils.g(5);
        _this.l = DeviceUtils.g(3);
        _this.g = NaN;
        _this.a5 = 1;
        _this.bl = 1;
        _this.a7 = null;
        _this.bc = null;
        _this.q = NaN;
        _this.p = NaN;
        _this.f = NaN;
        _this.b = false;
        _this.propertyChanged = null;
        return _this;
    }
    TreemapNodeStyle.prototype.a3 = function (a, b, c) {
        if (this.propertyChanged != null) {
            this.propertyChanged(this, new PropertyChangedEventArgs(a));
        }
        this.a4(a, b, c);
    };
    TreemapNodeStyle.prototype.a2 = function () {
        this.e.clear();
    };
    TreemapNodeStyle.prototype.d = function (a) {
        return this.e.contains(a);
    };
    TreemapNodeStyle.prototype.a4 = function (a, b, c) {
        if (!this.e.contains(a)) {
            this.e.add_1(a);
        }
        if (this.a != null) {
            this.a.iw(this);
        }
    };
    Object.defineProperty(TreemapNodeStyle.prototype, "bg", {
        get: function () {
            return this.a9;
        },
        set: function (a) {
            var b = this.a9;
            this.a9 = a;
            if (b != this.a9) {
                this.a3("HeaderHoverBackground", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "bf", {
        get: function () {
            return this.a8;
        },
        set: function (a) {
            var b = this.a8;
            this.a8 = a;
            if (b != this.a8) {
                this.a3("HeaderBackground", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "bi", {
        get: function () {
            return this.bb;
        },
        set: function (a) {
            var b = this.bb;
            this.bb = a;
            if (b != this.bb) {
                this.a3("HeaderTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "aq", {
        get: function () {
            return this.ad;
        },
        set: function (a) {
            var b = this.ad;
            this.ad = a;
            if (b != this.ad) {
                this.a3("Label", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "bk", {
        get: function () {
            return this.bd;
        },
        set: function (a) {
            var b = this.bd;
            this.bd = a;
            if (b != this.bd) {
                this.a3("TextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "bh", {
        get: function () {
            return this.ba;
        },
        set: function (a) {
            var b = this.ba;
            this.ba = a;
            if (b != this.ba) {
                this.a3("HeaderHoverTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "u", {
        get: function () {
            return this.i;
        },
        set: function (a) {
            var b = this.i;
            this.i = a;
            if (b != this.i) {
                this.a3("HeaderLabelLeftMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "w", {
        get: function () {
            return this.k;
        },
        set: function (a) {
            var b = this.k;
            this.k = a;
            if (b != this.k) {
                this.a3("HeaderLabelTopMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "v", {
        get: function () {
            return this.j;
        },
        set: function (a) {
            var b = this.j;
            this.j = a;
            if (b != this.j) {
                this.a3("HeaderLabelRightMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "t", {
        get: function () {
            return this.h;
        },
        set: function (a) {
            var b = this.h;
            this.h = a;
            if (b != this.h) {
                this.a3("HeaderLabelBottomMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "y", {
        get: function () {
            return this.m;
        },
        set: function (a) {
            var b = this.m;
            this.m = a;
            if (b != this.m) {
                this.a3("LabelLeftMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "aa", {
        get: function () {
            return this.o;
        },
        set: function (a) {
            var b = this.o;
            this.o = a;
            if (b != this.o) {
                this.a3("LabelTopMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "z", {
        get: function () {
            return this.n;
        },
        set: function (a) {
            var b = this.n;
            this.n = a;
            if (b != this.n) {
                this.a3("LabelRightMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "x", {
        get: function () {
            return this.l;
        },
        set: function (a) {
            var b = this.l;
            this.l = a;
            if (b != this.l) {
                this.a3("LabelBottomMargin", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "s", {
        get: function () {
            return this.g;
        },
        set: function (a) {
            var b = this.g;
            this.g = a;
            if (b != this.g) {
                this.a3("HeaderHeight", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "a6", {
        get: function () {
            return this.a5;
        },
        set: function (a) {
            var b = this.a5;
            this.a5 = a;
            if (b != this.a5) {
                this.a3("LabelHorizontalAlignment", enumGetBox(HorizontalAlignment_$type, b), enumGetBox(HorizontalAlignment_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "bm", {
        get: function () {
            return this.bl;
        },
        set: function (a) {
            var b = this.bl;
            this.bl = a;
            if (b != this.bl) {
                this.a3("LabelVerticalAlignment", enumGetBox(VerticalAlignment_$type, b), enumGetBox(VerticalAlignment_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "be", {
        get: function () {
            return this.a7;
        },
        set: function (a) {
            var b = this.a7;
            this.a7 = a;
            if (b != this.a7) {
                this.a3("Fill", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "bj", {
        get: function () {
            return this.bc;
        },
        set: function (a) {
            var b = this.bc;
            this.bc = a;
            if (b != this.bc) {
                this.a3("Outline", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "ac", {
        get: function () {
            return this.q;
        },
        set: function (a) {
            var b = this.q;
            this.q = a;
            if (b != this.q) {
                this.a3("StrokeThickness", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "ab", {
        get: function () {
            return this.p;
        },
        set: function (a) {
            var b = this.p;
            this.p = a;
            if (b != this.p) {
                this.a3("Opacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "r", {
        get: function () {
            return this.f;
        },
        set: function (a) {
            var b = this.f;
            this.f = a;
            if (b != this.f) {
                this.a3("FadeOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyle.prototype, "c", {
        get: function () {
            return this.b;
        },
        set: function (a) {
            var b = this.b;
            this.b = a;
            if (b != this.b) {
                this.a3("HighlightingHandled", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    TreemapNodeStyle.$t = markType(TreemapNodeStyle, 'TreemapNodeStyle', Base.$, [INotifyPropertyChanged_$type]);
    return TreemapNodeStyle;
}(Base));
export { TreemapNodeStyle };
/**
 * @hidden
 */
var TreemapNodeStyleMapping = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapNodeStyleMapping, _super);
    function TreemapNodeStyleMapping() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this.bn = 0;
        _this.bx = null;
        _this.bs = NaN;
        _this.br = NaN;
        _this.bv = null;
        _this.bp = 1;
        return _this;
    }
    Object.defineProperty(TreemapNodeStyleMapping.prototype, "bo", {
        get: function () {
            return this.bn;
        },
        set: function (a) {
            var b = this.bn;
            this.bn = a;
            if (b != this.bn) {
                this.a3("TargetType", enumGetBox(TreemapNodeStyleMappingTargetType_$type, b), enumGetBox(TreemapNodeStyleMappingTargetType_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyleMapping.prototype, "b1", {
        get: function () {
            return this.bx;
        },
        set: function (a) {
            var b = this.bx;
            this.bx = a;
            if (b != this.bx) {
                this.a3("Name", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyleMapping.prototype, "bu", {
        get: function () {
            return this.bs;
        },
        set: function (a) {
            var b = this.bs;
            this.bs = a;
            if (b != this.bs) {
                this.a3("MinimumValue", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyleMapping.prototype, "bt", {
        get: function () {
            return this.br;
        },
        set: function (a) {
            var b = this.br;
            this.br = a;
            if (b != this.br) {
                this.a3("MaximumValue", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyleMapping.prototype, "bw", {
        get: function () {
            return this.bv;
        },
        set: function (a) {
            var b = this.bv;
            this.bv = a;
            if (b != this.bv) {
                this.a3("Value", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStyleMapping.prototype, "bq", {
        get: function () {
            return this.bp;
        },
        set: function (a) {
            var b = this.bp;
            this.bp = a;
            if (b != this.bp) {
                this.a3("MappingMode", enumGetBox(TreemapValueMappingMode_$type, b), enumGetBox(TreemapValueMappingMode_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    TreemapNodeStyleMapping.$t = markType(TreemapNodeStyleMapping, 'TreemapNodeStyleMapping', TreemapNodeStyle.$);
    return TreemapNodeStyleMapping;
}(TreemapNodeStyle));
export { TreemapNodeStyleMapping };
/**
 * @hidden
 */
var TreemapNodeStyleMappingCollection = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapNodeStyleMappingCollection, _super);
    function TreemapNodeStyleMappingCollection() {
        var _this = _super.call(this, TreemapNodeStyleMapping.$, 0) || this;
        _this.collectionResetting = null;
        return _this;
    }
    TreemapNodeStyleMappingCollection.prototype.p = function () {
        if (this.collectionResetting != null) {
            this.collectionResetting(this, null);
        }
        _super.prototype.p.call(this);
    };
    TreemapNodeStyleMappingCollection.$t = markType(TreemapNodeStyleMappingCollection, 'TreemapNodeStyleMappingCollection', ObservableCollection$1.$.specialize(TreemapNodeStyleMapping.$));
    return TreemapNodeStyleMappingCollection;
}(ObservableCollection$1));
export { TreemapNodeStyleMappingCollection };
/**
 * @hidden
 */
var TreemapNodeStylingEventArgs = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapNodeStylingEventArgs, _super);
    function TreemapNodeStylingEventArgs() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this._value = 0;
        _this._sum = 0;
        _this._customValue = null;
        _this._item = null;
        _this._parentItem = null;
        _this._label = null;
        _this._parentValue = 0;
        _this._parentLabel = null;
        _this._parentSum = 0;
        _this._isParent = false;
        _this._style = null;
        _this._highlightingInfo = null;
        _this._highlightingHandled = false;
        _this._isHighlightInProgress = false;
        _this._totalHighlightProgress = 0;
        return _this;
    }
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "value", {
        get: function () {
            return this._value;
        },
        set: function (a) {
            this._value = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "sum", {
        get: function () {
            return this._sum;
        },
        set: function (a) {
            this._sum = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "customValue", {
        get: function () {
            return this._customValue;
        },
        set: function (a) {
            this._customValue = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "item", {
        get: function () {
            return this._item;
        },
        set: function (a) {
            this._item = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "parentItem", {
        get: function () {
            return this._parentItem;
        },
        set: function (a) {
            this._parentItem = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "label", {
        get: function () {
            return this._label;
        },
        set: function (a) {
            this._label = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "parentValue", {
        get: function () {
            return this._parentValue;
        },
        set: function (a) {
            this._parentValue = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "parentLabel", {
        get: function () {
            return this._parentLabel;
        },
        set: function (a) {
            this._parentLabel = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "parentSum", {
        get: function () {
            return this._parentSum;
        },
        set: function (a) {
            this._parentSum = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "isParent", {
        get: function () {
            return this._isParent;
        },
        set: function (a) {
            this._isParent = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "style", {
        get: function () {
            return this._style;
        },
        set: function (a) {
            this._style = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "highlightingInfo", {
        get: function () {
            return this._highlightingInfo;
        },
        set: function (a) {
            this._highlightingInfo = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "highlightingHandled", {
        get: function () {
            return this._highlightingHandled;
        },
        set: function (a) {
            this._highlightingHandled = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "isHighlightInProgress", {
        get: function () {
            return this._isHighlightInProgress;
        },
        set: function (a) {
            this._isHighlightInProgress = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(TreemapNodeStylingEventArgs.prototype, "totalHighlightProgress", {
        get: function () {
            return this._totalHighlightProgress;
        },
        set: function (a) {
            this._totalHighlightProgress = a;
        },
        enumerable: false,
        configurable: true
    });
    TreemapNodeStylingEventArgs.$t = markType(TreemapNodeStylingEventArgs, 'TreemapNodeStylingEventArgs', EventArgs.$);
    return TreemapNodeStylingEventArgs;
}(EventArgs));
export { TreemapNodeStylingEventArgs };
/**
 * @hidden
 */
var TreemapFrame = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapFrame, _super);
    function TreemapFrame() {
        var _this = _super.call(this) || this;
        _this.d = null;
        _this.e = null;
        _this.e = new List$1(String_$type, 0);
        _this.d = new Dictionary$2(String_$type, TreemapNodeFrame.$, 0);
        return _this;
    }
    TreemapFrame.prototype.h = function (a, b, c) {
        this.g();
        this.k(a, b, c);
        this.j(a, b, c);
        this.i(a, b, c);
    };
    TreemapFrame.prototype.i = function (a, b, c) {
        for (var d = 0; d < b.e.count; d++) {
            var e = b.e._inner[d];
            if (c.d.containsKey(e)) {
                var f = TreemapNodeFrame.b(a, b.d.item(e), c.d.item(e));
                this.d.addItem(f.w, f);
                this.e.add(f.w);
            }
        }
    };
    TreemapFrame.prototype.j = function (a, b, c) {
        for (var d = 0; d < c.e.count; d++) {
            var e = c.e._inner[d];
            if (!b.d.containsKey(e)) {
                var f = TreemapNodeFrame.c(a, c.d.item(e));
                this.d.addItem(f.w, f);
                this.e.add(f.w);
            }
        }
    };
    TreemapFrame.prototype.k = function (a, b, c) {
        for (var d = 0; d < b.e.count; d++) {
            var e = b.e._inner[d];
            if (!c.d.containsKey(e)) {
                var f = TreemapNodeFrame.d(a, b.d.item(e));
                this.d.addItem(f.w, f);
                this.e.add(f.w);
            }
        }
    };
    TreemapFrame.prototype.m = function (a, b) {
        var _this = this;
        var c;
        if (!((function () { var d = _this.d.tryGetValue(a.l, c); c = d.p1; return d.ret; })())) {
            c = new TreemapNodeFrame();
            c.w = a.l;
            c.e = a;
            this.d.item(c.w, c);
            this.e.add(c.w);
        }
        c.ae = b;
        var d = c.ae;
        if (!isNaN_(a.f)) {
            var e = b.height * a.f;
            var f = b.height - e;
            d = new Rect(0, b.x, b.y + f, b.width, e);
        }
        c.af = d;
    };
    TreemapFrame.prototype.n = function (a, b) {
        this.d.item(a.l).g = b;
    };
    TreemapFrame.prototype.b = function (a) {
        if (!this.d.containsKey(a.l)) {
            return false;
        }
        return this.d.item(a.l).g;
    };
    TreemapFrame.prototype.o = function (a) {
        var _this = this;
        var b;
        if (!((function () { var c = _this.d.tryGetValue(a.l, b); b = c.p1; return c.ret; })())) {
            return Rect.empty;
        }
        return b.ae;
    };
    TreemapFrame.prototype.l = function (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) {
        var _this = this;
        var y;
        if (!((function () { var z = _this.d.tryGetValue(a.l, y); y = z.p1; return z.ret; })())) {
            return;
        }
        y.x = b;
        y.aa = c;
        y.ad = d;
        y.v = g;
        y.u = h;
        y.ab = e;
        y.a = j;
        y.o = k;
        y.j = l;
        y.ac = f;
        y.l = m;
        y.n = n;
        y.m = o;
        y.k = p;
        y.r = q;
        y.t = r;
        y.s = s;
        y.q = t;
        y.z = u;
        y.ag = v;
        y.h = i;
        y.p = w;
        y.i = x;
    };
    TreemapFrame.prototype.g = function () {
        this.e.clear();
        this.d.clear();
    };
    TreemapFrame.prototype.c = function (a) {
        return this.d.containsKey(a);
    };
    TreemapFrame.prototype.a = function (a) {
        return this.d.item(a);
    };
    TreemapFrame.prototype.f = function (a, b, c) {
        var _this = this;
        var d;
        if (!((function () { var e = _this.d.tryGetValue(a.l, d); d = e.p1; return e.ret; })())) {
            return;
        }
        d.y(a, b, c);
    };
    TreemapFrame.$t = markType(TreemapFrame, 'TreemapFrame');
    return TreemapFrame;
}(Base));
export { TreemapFrame };
/**
 * @hidden
 */
var TreemapNodeFrame = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(TreemapNodeFrame, _super);
    function TreemapNodeFrame() {
        var _this = _super.call(this) || this;
        _this.ae = null;
        _this.af = null;
        _this.p = 0;
        _this.i = 0;
        _this.e = null;
        _this.w = null;
        _this.x = null;
        _this.aa = null;
        _this.ad = null;
        _this.v = 0;
        _this.u = 0;
        _this.h = 0;
        _this.l = 0;
        _this.n = 0;
        _this.m = 0;
        _this.k = 0;
        _this.r = 0;
        _this.t = 0;
        _this.s = 0;
        _this.q = 0;
        _this.ac = null;
        _this.ab = null;
        _this.a = 0;
        _this.o = 0;
        _this.j = 0;
        _this.z = 0;
        _this.ag = 0;
        _this.g = false;
        _this.ae = Rect.empty;
        _this.u = 1;
        _this.h = 0.3;
        return _this;
    }
    TreemapNodeFrame.b = function (a, b, c) {
        var d = new TreemapNodeFrame();
        d.e = c.e;
        d.w = c.w;
        d.x = c.x;
        var e = c.ae;
        if (e.isEmpty) {
            e = new Rect(0, 0, 0, 0, 0);
        }
        var f = b.ae;
        if (f.isEmpty) {
            f = new Rect(0, 0, 0, 0, 0);
        }
        d.ae = new Rect(0, f.left + (e.left - f.left) * a, f.top + (e.top - f.top) * a, f.width + (e.width - f.width) * a, f.height + (e.height - f.height) * a);
        var g = c.af;
        if (g.isEmpty) {
            g = new Rect(0, 0, 0, 0, 0);
        }
        var h = b.af;
        if (h.isEmpty) {
            h = new Rect(0, 0, 0, 0, 0);
        }
        d.af = new Rect(0, h.left + (g.left - h.left) * a, h.top + (g.top - h.top) * a, h.width + (g.width - h.width) * a, h.height + (g.height - h.height) * a);
        d.aa = BrushUtil.n(b.aa, a, c.aa, 0);
        d.ad = BrushUtil.n(b.ad, a, c.ad, 0);
        d.ab = BrushUtil.n(b.ab, a, c.ab, 0);
        d.ac = BrushUtil.n(b.ac, a, c.ac, 0);
        d.v = b.v + (c.v - b.v) * a;
        d.l = b.l + (c.l - b.l) * a;
        d.n = b.n + (c.n - b.n) * a;
        d.m = b.m + (c.m - b.m) * a;
        d.k = b.k + (c.k - b.k) * a;
        d.r = b.r + (c.r - b.r) * a;
        d.t = b.t + (c.t - b.t) * a;
        d.s = b.s + (c.s - b.s) * a;
        d.q = b.q + (c.q - b.q) * a;
        d.o = b.o + (c.o - b.o) * a;
        d.j = b.j + (c.j - b.j) * a;
        d.z = a < 0.5 ? b.z : c.z;
        d.ag = a < 0.5 ? b.ag : c.ag;
        d.a = a < 0.5 ? b.a : c.a;
        d.u = b.u + (c.u - b.u) * a;
        d.h = b.h + (c.h - b.h) * a;
        d.p = b.p + (c.p - b.p) * a;
        d.i = b.i + (c.i - b.i) * a;
        return d;
    };
    TreemapNodeFrame.d = function (a, b) {
        var c = new Rect(0, 0, 0, 0, 0);
        var d = new TreemapNodeFrame();
        d.e = b.e;
        d.x = b.x;
        d.w = b.w;
        var e = b.ae;
        if (e.isEmpty) {
            e = new Rect(0, 0, 0, 0, 0);
        }
        d.ae = new Rect(0, e.left + (c.left - e.left) * a, e.top + (c.top - e.top) * a, e.width + (c.width - e.width) * a, e.height + (c.height - e.height) * a);
        var f = b.af;
        if (f.isEmpty) {
            f = new Rect(0, 0, 0, 0, 0);
        }
        d.af = new Rect(0, f.left + (c.left - f.left) * a, f.top + (c.top - f.top) * a, f.width + (c.width - f.width) * a, f.height + (c.height - f.height) * a);
        d.aa = BrushUtil.n(b.aa, a, null, 0);
        d.ad = BrushUtil.n(b.ad, a, null, 0);
        d.ab = BrushUtil.n(b.ab, a, null, 0);
        d.ac = BrushUtil.n(b.ac, a, null, 0);
        d.v = b.v + (0 - b.v) * a;
        d.l = b.l + (0 - b.l) * a;
        d.n = b.n + (0 - b.n) * a;
        d.m = b.m + (0 - b.m) * a;
        d.k = b.k + (0 - b.k) * a;
        d.r = b.r + (0 - b.r) * a;
        d.t = b.t + (0 - b.t) * a;
        d.s = b.s + (0 - b.s) * a;
        d.q = b.q + (0 - b.q) * a;
        d.o = b.o + (0 - b.o) * a;
        d.j = b.j + (0 - b.j) * a;
        d.z = b.z;
        d.ag = b.ag;
        d.a = b.a;
        d.u = b.u + (0 - b.u) * a;
        d.h = b.h + (0 - b.h) * a;
        d.p = b.p + (0 - b.p) * a;
        d.i = b.i + (0 - b.i) * a;
        return d;
    };
    TreemapNodeFrame.c = function (a, b) {
        var c = new Rect(0, 0, 0, 0, 0);
        var d = new TreemapNodeFrame();
        d.e = b.e;
        d.x = b.x;
        d.w = b.w;
        var e = b.ae;
        if (e.isEmpty) {
            e = new Rect(0, 0, 0, 0, 0);
        }
        d.ae = new Rect(0, c.left + (e.left - c.left) * a, c.top + (e.top - c.top) * a, c.width + (e.width - c.width) * a, c.height + (e.height - c.height) * a);
        var f = b.af;
        if (f.isEmpty) {
            f = new Rect(0, 0, 0, 0, 0);
        }
        d.af = new Rect(0, c.left + (f.left - c.left) * a, c.top + (f.top - c.top) * a, c.width + (f.width - c.width) * a, c.height + (f.height - c.height) * a);
        d.aa = BrushUtil.n(null, a, b.aa, 0);
        d.ad = BrushUtil.n(null, a, b.ad, 0);
        d.ab = BrushUtil.n(null, a, b.ab, 0);
        d.ac = BrushUtil.n(null, a, b.ac, 0);
        d.v = 0 + (b.v - 0) * a;
        d.l = 0 + (b.l - 0) * a;
        d.n = 0 + (b.n - 0) * a;
        d.m = 0 + (b.m - 0) * a;
        d.k = 0 + (b.k - 0) * a;
        d.r = 0 + (b.r - 0) * a;
        d.t = 0 + (b.t - 0) * a;
        d.s = 0 + (b.s - 0) * a;
        d.q = 0 + (b.q - 0) * a;
        d.o = 0 + (b.o - 0) * a;
        d.j = 0 + (b.j - 0) * a;
        d.z = b.z;
        d.ag = b.ag;
        d.a = b.a;
        d.u = 0 + (b.u - 0) * a;
        d.h = 0 + (b.h - 0) * a;
        d.p = 0 + (b.p - 0) * a;
        d.i = 0 + (b.i - 0) * a;
        return d;
    };
    TreemapNodeFrame.prototype.f = function (a) {
        var b = new HighlightingInfo();
        b.i = a;
        b.g = this.e.i;
        b.f = this.e.i;
        return b;
    };
    TreemapNodeFrame.prototype.y = function (a, b, c) {
        var d;
        d = this;
        var e = a.b != null && a.b.count > 0;
        if (b.d("Label")) {
            d.x = b.aq;
        }
        if (b.d("Fill")) {
            d.aa = b.be;
        }
        if (b.d("LabelHorizontalAlignment")) {
            d.z = b.a6;
        }
        if (b.d("Outline")) {
            d.ad = b.bj;
        }
        if (b.d("StrokeThickness")) {
            d.v = b.ac;
        }
        if (b.d("Opacity")) {
            d.u = b.ab;
        }
        if (b.d("FadeOpacity")) {
            d.h = b.r;
        }
        if (b.d("HeaderBackground")) {
            d.ab = b.bf;
        }
        if (e) {
            if (b.d("HeaderTextColor")) {
                d.ac = b.bi;
            }
            else if (b.d("Fill") || b.d("HeaderBackground")) {
                d.ac = c(a, d.aa, d.ab);
            }
        }
        else {
            if (b.d("TextColor")) {
                d.ac = b.bk;
            }
            else if (b.d("Fill") || b.d("HeaderBackground")) {
                d.ac = c(a, d.aa, d.ab);
            }
        }
        if (b.d("HeaderLabelLeftMargin")) {
            d.l = b.u;
        }
        if (b.d("HeaderLabelTopMargin")) {
            d.n = b.w;
        }
        if (b.d("HeaderLabelRightMargin")) {
            d.m = b.v;
        }
        if (b.d("HeaderLabelBottomMargin")) {
            d.k = b.t;
        }
        if (b.d("LabelLeftMargin")) {
            d.r = b.y;
        }
        if (b.d("LabelTopMargin")) {
            d.t = b.aa;
        }
        if (b.d("LabelRightMargin")) {
            d.s = b.z;
        }
        if (b.d("LabelBottomMargin")) {
            d.q = b.x;
        }
    };
    TreemapNodeFrame.$t = markType(TreemapNodeFrame, 'TreemapNodeFrame');
    return TreemapNodeFrame;
}(Base));
export { TreemapNodeFrame };