@syncfusion/ej2-treemap 31.2.12 → 32.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-treemap.umd.min.js","sources":["../src/treemap/model/base.js","../src/treemap/model/constants.js","../src/treemap/utils/helper.js","../src/treemap/layout/render-panel.js","../src/treemap/model/theme.js","../src/treemap/model/print.js","../src/treemap/model/image-export.js","../src/treemap/model/pdf-export.js","../src/treemap/treemap.js","../src/treemap/layout/legend.js","../src/treemap/user-interaction/highlight-selection.js","../src/treemap/user-interaction/tooltip.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: null, fontFamily: null }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontWeight: null, opacity: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px', fontFamily: null }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.includes(options.connectorText[1])) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, '&nbsp');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index] ||\n element.children[0].id === elementId[index]) {\n if (element.childElementCount > 0 && element.children[0].id.indexOf('_Group') === -1) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n if (treemap.legendSettings.mode === 'Interactive') {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i] ||\n parseFloat(legendGroup.childNodes[j]['id'].split('Index_')[1]) === parseFloat(elementId[i].split('Index_')[1])) {\n var treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n if (treemapSVGRectElement.id.indexOf('Text') === -1) {\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n }\n else {\n treemapSVGRectElement.setAttribute('stroke', null);\n treemapSVGRectElement.setAttribute('stroke-width', null);\n }\n }\n }\n }\n else {\n var legendItem = document.getElementById(elementId[i]);\n if (!isNullOrUndefined(legendItem)) {\n legendItem.setAttribute('fill', treemap.selectionSettings.fill);\n legendItem.setAttribute('opacity', treemap.selectionSettings.opacity);\n if (legendItem.id.indexOf('Text') === -1) {\n legendItem.setAttribute('stroke', treemap.selectionSettings.border.color);\n legendItem.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n }\n else {\n legendItem.setAttribute('stroke', null);\n legendItem.setAttribute('stroke-width', null);\n }\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n var element;\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n else {\n element.setAttribute('fill', 'black');\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options) {\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nvar TreeMapAjax = /** @class */ (function () {\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection, treeMap) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n var item = collection[j];\n var legendIndex = parseFloat(item['legendEle'].id.split('_Index_')[1]);\n var isText = item['legendEle'].id.indexOf('Text') > -1;\n var shapeId = isText ? item['legendEle'].id.replace('_Text', '') : item['legendEle'].id;\n var legendShape = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId)\n : document.getElementById(treeMap.element.id + '_Legend_Shape_Index_' + legendIndex);\n var legendText = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId + '_Text')\n : document.getElementById(treeMap.element.id + '_Legend_Text_Index_' + legendIndex);\n if (!isNullOrUndefined(legendShape)) {\n setColor(legendShape, item['oldFill'], item['oldOpacity'], 'none', '0px');\n }\n if (!isNullOrUndefined(legendText)) {\n setColor(legendText, treeMap.legendSettings.textStyle.color || treeMap.themeStyle.legendTextColor, item['oldOpacity'], null, null);\n }\n var dataCount = !isNullOrUndefined(item['ShapeCollection']) ? item['ShapeCollection']['Elements'].length : 0;\n for (var k = 0; k < dataCount; k++) {\n var shapeElement = document.getElementById(item['ShapeCollection']['Elements'][k].id);\n if (!isNullOrUndefined(shapeElement)) {\n setColor(shapeElement, item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n }\n}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n if (!isNullOrUndefined(borderColor)) {\n element.setAttribute('stroke', borderColor);\n }\n if (!isNullOrUndefined(borderWidth)) {\n element.setAttribute('stroke-width', borderWidth);\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeLegend(collection, treemap);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n var index;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var indexFound = false;\n for (var i = 0; i < length && !indexFound; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n if (dataLength > 0) {\n for (var j = 0; j < dataLength; j++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 ?\n (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['data'][valuePath] === item['data'][valuePath])\n : treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']\n || item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['legendName']) > -1)) {\n index = i;\n indexFound = true;\n break;\n }\n }\n }\n else if (treemap.palette && treemap.palette.length > 0) {\n if ((treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'] === item['levelOrderName'] ||\n (item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'])) > -1)\n && treemap.treeMapLegendModule.legendCollections[i]['legendName'] === item['name']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum += data[i_1]['weight'];\n }\n var multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n LayoutPanel.prototype.renderLayoutItems = function () {\n var _this = this;\n var position;\n var treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill;\n var item;\n var renderText;\n var opacity;\n var rectPath = '';\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? (treeMap.legendSettings.visible ? this_1.treemap.totalRect\n : convertToContainer(this_1.treemap.totalRect)) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n if (treeMap.enableHtmlSanitizer) {\n renderText = SanitizeHtmlHelper.sanitize(renderText);\n }\n var fontFamily = (isLeafItem ? leaf.labelStyle.fontFamily : levels[index].headerStyle.fontFamily);\n fontFamily = fontFamily || this_1.treemap.themeStyle.labelFontFamily;\n var size = (isLeafItem ? leaf.labelStyle.size : levels[index].headerStyle.size);\n size = size || this_1.treemap.themeStyle.labelFontSize;\n var fontWeight = (isLeafItem ? leaf.labelStyle.fontWeight : levels[index].headerStyle.fontWeight);\n fontWeight = fontWeight || this_1.treemap.themeStyle.fontWeight;\n var color = (isLeafItem ? leaf.labelStyle.color : levels[index].headerStyle.color);\n var fontStyle = (isLeafItem ? leaf.labelStyle.fontStyle : levels[index].headerStyle.fontStyle);\n var textStyleOpacity = (isLeafItem ? leaf.labelStyle.opacity : levels[index].headerStyle.opacity);\n textStyle = {\n fontFamily: fontFamily, size: size, fontWeight: fontWeight, color: color, fontStyle: fontStyle, opacity: textStyleOpacity\n };\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options'], textColor: textStyle.color\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n textStyle.color = eventArgs.textColor ? eventArgs.textColor : textStyle.color;\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n if ((_this.treemap.enableDrillDown && !isLeafItem) || (_this.treemap.selectionSettings.enable ||\n _this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', _this.treemap.tabIndex.toString());\n itemGroup.style.outline = 'none';\n itemGroup.style.cursor = _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && (_this.treemap.enableDrillDown && item['groupIndex'] === (_this.treemap.levels.length - 1)) ? 'default' :\n _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && !_this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n maintainSelection(this.treemap, this.layoutGroup, 'treeMapSelection');\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n if (!isNullOrUndefined(option)) {\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : !isNullOrUndefined(item['options']) ?\n item['options'].fill : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n if (this.treemap.enableHtmlSanitizer && typeof template === 'string') {\n template = SanitizeHtmlHelper.sanitize(template);\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n /**\n *\n * @returns {void}\n * @private\n */\n LayoutPanel.prototype.destroy = function () {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","/**\n * Maps Themes doc\n */\nimport { defaultFont } from './constants';\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n labelFontFamily: defaultFont,\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#111827',\n titleFontWeight: '600',\n subTitleFontColor: '#111827',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#111827',\n legendTextColor: '#111827',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Inter',\n fontWeight: '400',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#212529',\n titleFontWeight: '400',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#DEE2E6',\n titleFontWeight: '400',\n subTitleFontColor: '#DEE2E6',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#DEE2E6',\n legendTextColor: '#DEE2E6',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#242424',\n titleFontWeight: '600',\n subTitleFontColor: '#242424',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#242424',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#242424',\n legendTextColor: '#242424',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#292929',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2highcontrast':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#FFF',\n legendBorderWidth: 1,\n tooltipBorderColor: '#FFF',\n tooltipBorderWidth: 1\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n }\n return style;\n}\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (treeMap, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (treeMap, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = treeMap.element.cloneNode(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent, legendMaintain, removeLegend } from '../treemap/utils/helper';\nimport { removeClassNames, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var fetchApiModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = function (args) {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n var reader_1 = new FileReader();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treemap_1 = _this;\n reader_1.onload = function () {\n args = JSON.parse(reader_1.result.toString());\n treemap_1.dataSource = args;\n treemap_1.renderTreeMapElements();\n };\n reader_1.readAsText(args);\n }\n else {\n _this.dataSource = args;\n _this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n if (!isNullOrUndefined(this.treeMapLegendModule) && this.legendSettings.visible) {\n legendMaintain(this, this.treeMapLegendModule.legendGroup);\n }\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var titleText = this.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(title.text)) : title.text;\n var trimmedTitle = textTrim(width, titleText, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || titleText);\n element.setAttribute('role', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (var i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n if (!isNullOrUndefined(mainData_1)) {\n for (var k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var orderNames = [];\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n var totalWeight;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focusout', this.focusHandler);\n window.removeEventListener('resize', this.resizeEvent);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusHandler, this);\n this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\n this.setStyle(this.element);\n };\n TreeMap.prototype.setStyle = function (element) {\n element.style.overflow = 'hidden';\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n _this.refreshing = false;\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n if (e.type === 'touchstart' || e.type === 'mousedown') {\n this.removeFocus('none');\n e.preventDefault();\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n this.removeFocus('none');\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n else {\n this.element.style.cursor = 'default';\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);\n this.treeMapHighlightModule.highLightId = '';\n }\n this.removeFocus('');\n };\n /**\n * This method is used to perform operations when keyboard up on TreeMap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on TreeMap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.keyUpHandler = function (event) {\n if (event.code !== 'Tab') {\n return;\n }\n var id = event.target['id'];\n var targetEle = document.getElementById(id);\n if ((id.indexOf('Item_Index') > -1 || id.indexOf('Legend') > -1)) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapHighlightModule && this.highlightSettings.enable) {\n targetEle.style.setProperty('outline', 'none');\n targetEle.classList.add('keyboard-focused');\n var highlightElement = id.indexOf('_Legend_') > -1 && this.legendSettings.mode === 'Default' ?\n targetEle.children[0] : targetEle;\n this.treeMapHighlightModule.highlightOnMouseMove(highlightElement);\n }\n else {\n this.removeFocus('');\n targetEle.style.outline = '2px solid black';\n targetEle.classList.add('keyboard-focused');\n }\n }\n else {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);\n }\n this.removeFocus('none');\n }\n };\n /**\n * This method is used to perform operations when keyboard down on treemap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.keyDownHandler = function (event) {\n var id = event.target['id'];\n var targetEle = document.getElementById(id);\n if (event.code === 'Enter') {\n if (this.selectionSettings.enable && (id.indexOf('Item_Index') > -1 || id.indexOf('Legend') > -1)) {\n var selectionElement = id.indexOf('_Legend_') > -1 && this.legendSettings.mode === 'Default' ?\n targetEle.children[0] : targetEle;\n this.treeMapSelectionModule.selectionOnMouseDown(selectionElement);\n }\n if (this.enableDrillDown && targetEle.childElementCount > 0) {\n this.mouseEndOnTreeMap(event);\n }\n }\n };\n /**\n * This method is used to perform operations when focus out on treemap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.focusHandler = function (event) {\n var id = event.target['id'];\n if (!this.element.contains(event.relatedTarget) ||\n (id.indexOf('Item_Index') > -1 && event.relatedTarget.id.indexOf('Legend') > -1) ||\n (id.indexOf('Legend') > -1 && event.relatedTarget.id.indexOf('Item_Index') > -1)) {\n if (this.treeMapHighlightModule && this.highlightSettings.enable) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n removeLegend(this.treeMapHighlightModule.legendHighlightCollection, this);\n this.treeMapHighlightModule.highLightId = '';\n }\n else {\n this.removeFocus('none');\n }\n }\n };\n TreeMap.prototype.removeFocus = function (outline) {\n var highlightedElement = document.querySelector('.keyboard-focused');\n if (highlightedElement) {\n highlightedElement.style.outline = outline;\n highlightedElement.classList.remove('keyboard-focused');\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this],\n name: 'TreeMapTooltip'\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this],\n name: 'TreeMapHighlight'\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this],\n name: 'TreeMapSelection'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this],\n name: 'TreeMapLegend'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n };\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n this.areaRect = null;\n this.themeStyle = null;\n this.totalRect = null;\n this.drilledLegendItems = null;\n this.doubleTapTimer = null;\n this.treemapLevelData = null;\n this.resizeEvent = null;\n this.availableSize = null;\n this.intl = null;\n if (!isNullOrUndefined(this.layout)) {\n this.layout.destroy();\n }\n this.layout = null;\n this.renderer = null;\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n /**\n * method for legend\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if (((!isNullOrUndefined(this.treemap.palette) && this.treemap.palette.length > 0) || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0; });\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(legend.title.text) : legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = titleTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = titleTextStyle.size || treemap.themeStyle.subtitleFontSize;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(treemap.enableHtmlSanitizer ?\n SanitizeHtmlHelper.sanitize(legendItem['legendName']) : legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n if (!isNullOrUndefined(childElement['data']['options'])) {\n legendFillColor = childElement['data']['options']['fill'];\n }\n else {\n for (var k = 0; k < childElement.length; k++) {\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n childElement[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight'],\n levelOrderName: child[i]['levelOrderName']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, labelLegend) : false;\n if (isNullOrUndefined(this.outOfRangeLegend) && !isDuplicate) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill, groupIndex: (!isLeafItem || groupIndex > -1) ? groupIndex : -1\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n for (var k = this.legendCollections.length - 1; k >= 0; k--) {\n if (this.legendCollections[k]['actualValue'] === (colorMap.label || 'Others')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[k]['legendData'].push(data[i]);\n break;\n }\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n *\n * @private\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var legend = this.treemap.legendSettings;\n var render = this.treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = this.treemap.element.id + '_Legend_Index_' + i;\n var textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n var text = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(item['text'])) : item['text'];\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', text, '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n var legendElement = render.drawRectangle(rectOptions);\n legendElement.setAttribute('tabindex', this.treemap.tabIndex.toString());\n legendElement.style.outline = '';\n this.legendGroup.appendChild(legendElement);\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendText = this_1.treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(collection['DisplayText']) : collection['DisplayText'];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n legendElement.setAttribute('aria-label', legendText + ' Legend');\n legendElement.setAttribute('role', 'region');\n legendElement.setAttribute('tabindex', this_1.treemap.tabIndex.toString());\n legendElement.style.outline = 'none';\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': '',\n 'role': 'region',\n 'aria-label': pagingText\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var borderStyle = {\n color: legend.border.color || this.treemap.themeStyle.legendBorderColor,\n width: legend.border.width || this.treemap.themeStyle.legendBorderWidth\n };\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, borderStyle, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var legend = this.treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(legend.title.text)) : legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n var textElement = renderTextElement(textOptions, textStyle, textStyle.color ||\n this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n textElement.setAttribute('role', 'region');\n textElement.setAttribute('aria-label', legendTitle);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n var pointerDrawn = false;\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length && !pointerDrawn; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData']) && currentData['legendData'].length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n var valuePath = treemap.rangeColorValuePath;\n if (targetItem['levelOrderName'].indexOf(this.legendCollections[i]['legendName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n else {\n for (var j = 0; j < data.length; j++) {\n if ((treemap.rangeColorValuePath && treemap.leafItemSettings.colorMapping.length > 0)\n ? data[j]['data'][valuePath] === targetItem['data'][valuePath]\n : (data[j]['levelOrderName'] === targetItem['levelOrderName'] ||\n data[j]['levelOrderName'].indexOf(targetItem['levelOrderName']) > -1)) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n break;\n }\n }\n }\n }\n else if (this.treemap.leafItemSettings.colorMapping.length === 0 && this.treemap.palette) {\n if (targetItem['levelOrderName'].indexOf(currentData['levelOrderName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n /**\n * @param {PointerEvent} e - Specifies the event.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n *\n * @private\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = null;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n this.treemap = null;\n };\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse Move event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var targetEle = e.target;\n return this.highlightOnMouseMove(targetEle);\n };\n /**\n * This method highlights the target element for mouse move event.\n *\n * @param {Element} targetElement - Specifies the target element to highlight.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.highlightOnMouseMove = function (targetElement) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = targetElement.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n var shapeSelected = false;\n if (selectionModule && selectionModule.legendSelectionCollection.length > 0) {\n for (var i = 0; i < selectionModule.legendSelectionCollection.length; i++) {\n for (var j = 0; j < selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'].length; j++) {\n var selectedElementIndex = parseFloat(selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id.split('Item_Index_')[1].split('_')[0]);\n var targetElementIndex = targetId.indexOf('_Item_Index_') > -1 ? parseFloat(targetId.split('Item_Index_')[1].split('_')[0]) : null;\n if (selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id === targetId ||\n selectedElementIndex === targetElementIndex) {\n shapeSelected = true;\n break;\n }\n }\n }\n }\n if (targetId.indexOf('_Item_Index') > -1 && !shapeSelected) {\n if (this.highLightId !== targetId ||\n (this.legendHighlightCollection[0] ? this.legendHighlightCollection[0]['ShapeCollection']['Elements'].length > 1 : false)) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0 && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length_1, item, treemap);\n if (isNullOrUndefined(index)) {\n removeLegend(this.legendHighlightCollection, treemap);\n removeLegend(this.shapeHighlightCollection, treemap);\n this.legendHighlightCollection = [];\n treemap.treeMapLegendModule.removeInteractivePointer();\n }\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n if (selectionModule ? this.shapeElement.id !== ((selectionModule && selectionModule.shapeElement)\n ? selectionModule.shapeElement.id : null) : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n var legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, highlight.fill, highlight.opacity, null, null);\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id ||\n element.id === selectionElements[j].parentElement.id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process &&\n (!isNullOrUndefined(valuePath) ?\n (item['data'][valuePath] === targetItem['data'][valuePath] ||\n (highlight.mode !== 'Item' && treemap.levels.length > 0)) : true)) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_Index') > -1) {\n if (!isNullOrUndefined(selectionModule)) {\n selectionModule.legendSelectId = !isNullOrUndefined(treemap.legendId[0]) ? treemap.legendId[0] : null;\n }\n var selectedLegendIndex = selectionModule && selectionModule.legendSelectId ?\n parseFloat(selectionModule.legendSelectId.split('Index_')[1]) :\n (selectionModule && selectionModule.shapeSelectId ? parseFloat(selectionModule.shapeSelectId.split('Index_')[1]) : null);\n var targetIndex = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n if (this.treemap.legendSettings.visible && targetIndex !== selectedLegendIndex) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, this.treemap);\n this.legendHighlightCollection = [];\n }\n this.shapeTarget = 'highlight';\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 &&\n treemap.levels.length === 0)\n ? treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['data'][valuePath] === treemap.layout.renderItems[j]['data'][valuePath]\n : (treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['levelOrderName'] === treemap.layout.renderItems[j]['levelOrderName'])) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0 || this.legendHighlightCollection.length === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n var legendShape = void 0;\n var legendText = void 0;\n if (targetEle.id.indexOf('Text') > -1) {\n legendShape = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n setColor(targetEle, highlight.fill, highlight.opacity, null, null);\n setColor(legendShape, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n else {\n legendText = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n setColor(legendText, highlight.fill, highlight.opacity, null, null);\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n !this.treemap.layout.renderItems[j].parent.isDrilled) ?\n targetIndex === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n var legendItem = void 0;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n setColor(targetEle, highlight.fill, highlight.opacity, null, null);\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n setColor(legendItem, highlight.fill, highlight.opacity, null, null);\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n removeLegend(this.legendHighlightCollection, treemap);\n this.legendHighlightCollection = [];\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ?\n selectionModule.legendSelect : true) {\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, this.treemap);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n e.preventDefault();\n this.selectionOnMouseDown(targetEle);\n };\n /**\n * This method selects the target element for mouse down event.\n *\n * @param {Element} targetEle - Specifies the target element that was clicked.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectionOnMouseDown = function (targetEle) {\n var eventArgs;\n var treemap = this.treemap;\n targetEle.setAttribute('tabindex', '-1');\n targetEle.style.outline = 'none';\n if (!targetEle.id.includes('Legend_Shape_Index')) {\n targetEle.focus();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var isDrillItem = (item && !item.isLeafItem && treemap.enableDrillDown) &&\n (targetEle.textContent.indexOf('[+]') > -1 || targetEle.textContent.indexOf('[-]') > -1 ||\n (!isNullOrUndefined(targetEle.nextElementSibling) &&\n (targetEle.nextSibling.textContent.indexOf('[+]') > -1 || targetEle.nextSibling.textContent.indexOf('[-]') > -1)));\n if (targetId.indexOf('_Item_Index') > -1 && !isDrillItem) {\n if ((this.treemap.selectionId !== targetId &&\n (treemap.selectionId ? parseFloat(treemap.selectionId.split('_Item_Index_')[1]) !== parseFloat(targetId.split('_Item_Index_')[1]) : true)) ||\n (this.legendSelectionCollection[0] ? this.legendSelectionCollection[0]['ShapeCollection']['Elements'].length > 1 : false)) {\n treemap.levelSelection = [];\n treemap.legendId = [];\n this.shapeSelectId = '';\n removeLegend(this.legendSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n treeMapElement = document.getElementById(layoutID);\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeLegend(this.shapeSelectionCollection, treemap);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0\n && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n var legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, selection.fill, selection.opacity, null, null);\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.legendId.push(this.shapeElement.id);\n treemap.legendId.push(legendText.id);\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n if (orders.indexOf(item['levelOrderName']) > -1 &&\n (!isNullOrUndefined(valuePath) ?\n (item['data'][valuePath] === targetItem['data'][valuePath] ||\n (selection.mode !== 'Item' && treemap.levels.length > 0)) : true)) {\n selectionElements.push(element);\n if (targetId.indexOf('_RectPath') > -1) {\n treemap.levelSelection.push(element.id);\n }\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, treemap);\n removeLegend(this.shapeSelectionCollection, treemap);\n this.treemap.legendId = [];\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.levelSelection = [];\n this.legendSelectId = '';\n if (this.legendSelect || this.shapeSelect) {\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendSelectIdIndex = !isNullOrUndefined(this.legendSelectId) ? parseFloat(this.legendSelectId.split('_Index_')[1]) : null;\n if (this.treemap.legendSettings.visible && (legendSelectIdIndex !== parseFloat(targetId.split('_Index_')[1]))) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n treemap.legendId = [];\n treemap.levelSelection = [];\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = !isNaN(parseInt(targetId[targetId.length - 1], 10)) ?\n parseInt(targetId[targetId.length - 1], 10) :\n parseInt(targetId[targetId.length - 6], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, treemap);\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n removeLegend(this.shapeSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.legendHighlightCollection = [];\n }\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var index = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 &&\n treemap.levels.length === 0) ?\n (treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['data'][valuePath] === treemap.layout.renderItems[l]['data'][valuePath])\n : (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName'])) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n this.treemap.selectionId = nodeEle.id;\n if (k === 0 || this.legendSelectionCollection.length === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n this.treemap.selectionId = nodeEle.id;\n var legendShape = void 0;\n var legendText = void 0;\n if (targetEle_1.id.indexOf('Text') > -1) {\n legendShape = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n setColor(legendShape, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle_1, selection.fill, selection.opacity, null, null);\n this.legendSelectId = legendShape.id;\n this.shapeElement = legendShape;\n treemap.legendId.push(targetEle_1.id);\n treemap.legendId.push(legendShape.id);\n }\n else {\n legendText = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n setColor(legendText, selection.fill, selection.opacity, null, null);\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.shapeElement = targetEle_1;\n treemap.legendId.push(targetEle_1.id);\n treemap.legendId.push(legendText.id);\n }\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n treemap.levelSelection.push(nodeEle.id);\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n !this.treemap.layout.renderItems[j].parent.isDrilled) ?\n index === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendSelectionCollection, index, j, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n this.treemap.selectionId = nodeEle.id;\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n var legendItem = void 0;\n if (targetEle_1.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n setColor(targetEle_1, selection.fill, selection.opacity, null, null);\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.legendSelectId = legendItem.id;\n this.shapeElement = legendItem;\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n setColor(legendItem, selection.fill, selection.opacity, null, null);\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.legendSelectId = targetId;\n this.shapeElement = targetEle_1;\n }\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.levelSelection.push(nodeEle.id);\n if (treemap.legendId.indexOf(legendItem.id) === -1) {\n treemap.legendId.push(legendItem.id);\n }\n if (treemap.legendId.indexOf(targetEle_1.id) === -1) {\n treemap.legendId.push(targetEle_1.id);\n }\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, this.treemap);\n removeLegend(this.shapeSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n this.shapeElement = null;\n this.shapeSelectId = '';\n if (this.legendSelect || this.shapeSelect) {\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n }\n else if (isDrillItem) {\n removeLegend(this.legendSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n this.treemap.selectionId = '';\n this.shapeElement = null;\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue, removeElement } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1 && e.type.indexOf('key') === -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.tooltipSettings.textStyle.fontFamily || this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.tooltipSettings.textStyle.color || this.treemap.themeStyle.tooltipFontColor;\n // eslint-disable-next-line max-len\n this.tooltipSettings.textStyle.opacity = this.tooltipSettings.textStyle.opacity || this.treemap.themeStyle.tooltipTextOpacity;\n var border = {\n width: this.tooltipSettings.border.width || this.treemap.themeStyle.tooltipBorderWidth || 0,\n color: this.tooltipSettings.border.color || this.treemap.themeStyle.tooltipBorderColor || 'transparent'\n };\n if (this.treemap.enableHtmlSanitizer) {\n for (var a = 0; a < tooltipContent.length; a++) {\n tooltipContent[a] = SanitizeHtmlHelper.sanitize(tooltipContent[a]);\n }\n }\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData, border: border,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n theme: this.treemap.theme,\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor,\n border: args['border'],\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n this.svgTooltip.controlInstance = null;\n removeElement(this.treemap.element.id + '_TreeMapTooltip');\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n"],"names":["extendStatics","_super","load","loaded","beforePrint","itemRendering","drillStart","drillEnd","itemSelected","itemHighlight","tooltipRendering","itemClick","itemMove","click","doubleClick","rightClick","mouseMove","legendItemRendering","legendRendering","resize","defaultFont","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","Border","ChildProperty","Property","apply","Margin","Font","CommonTitleSettings","SubTitleSettings","Complex","fontFamily","fontWeight","TitleSettings","ColorMapping","LegendSettings","size","color","width","x","y","InitialDrillSettings","LeafItemSettings","Collection","TooltipSettings","opacity","SelectionSettings","HighlightSettings","LevelSettings","Size","height","stringToNumber","value","containerSize","indexOf","parseInt","Rect","RectOption","id","fill","border","rect","dashArray","stroke","PathOption","measureText","text","font","measureObject","document","getElementById","createElement","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","fontStyle","visibility","top","left","whiteSpace","lineHeight","clientWidth","clientHeight","TextOption","anchor","transform","baseLine","connectorText","textTrim","maxWidth","label","substring","Location","findPosition","location","alignment","textSize","type","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","parent","isMinus","font-size","font-style","font-family","font-weight","text-anchor","dominant-baseline","SvgRenderer","isNullOrUndefined","includes","drillLevelText","split","z","drillText","search","replace","len","tspanElement","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemSelect","itemTemplate","querySelector","getElement","itemsToOrder","a","isContainsData","source","pathName","processData","treemap","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","keys","children","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","elementLength","cssText","templateHtml","regExp","RegExp","toString","findLabelLocation","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","measureElementId","offsetHeight","offsetWidth","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","g","componentToHex","Number","rbg","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","charAt","colorNameToHex","nextColor","splitColor","length_1","splitColorValueOffset","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","selectionSettings","legendMaintain","legendGroup","legendId","legendSettings","treemapSVGRectElement","parseFloat","legendItem","removeClassNames","elements","classList","remove","textFormatter","format","_i","keys_1","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","xValue","yValue","cos","PI","sin","href","isParentItem","item","TreeMapAjax","async","contentType","sendData","dataOptions","removeShape","collection","setColor","removeLegend","legendIndex","shapeId","legendShape","legendText","dataCount","textStyle","themeStyle","legendTextColor","k","shapeElement","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","valuePath","rangeColorValuePath","indexFound","dataLength","treeMapLegendModule","legendCollections","palette","pushCollection","number","legendElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","LayoutPanel","processLayoutPanel","totalRect","treemapLevelData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","currentLevel","calculateLayoutItems","count","enableBreadcrumb","renderLayoutItems","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","isHorizontal","forEach","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","newStack","currentMaxAspectRatio","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaHeight","areaWidth","isParent","parentRect","subXOffset","subYOffset","coordinates","x1","y1","dataLength_1","dataSum","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","txtVisible","eventArgs","templatePosition","renderText","groupId","templateEle","itemGroup","_this","elementID","interSectAction","rectPath","secondaryEle","templateGroup","layoutGroup","createGroup","isLeafItem","this_1","_loop_1","drillDownView","levelName","treemapItemRect","visible","getItemColor","labelFormat","headerFormat","showLabels","breadcrumbConnector","enableRtl","enableHtmlSanitizer","labelStyle","headerStyle","labelFontFamily","labelFontSize","textStyleOpacity","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","textColor","trigger","observedArgs","pathOptions","path","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","outline","cursor","svgObject","tspanText","customText","labelInterSectAction","textLocation","drillSymbolCount","drillSymbolSize","texts","maxNumber","collectionLength","stringText","textName","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","colorValuePath","saturatedColor","rgbValue","backgroundColor","labelElement","templateId","baseTemplateId","templateLocation","textValue","destroy","currentRect","getThemeStyle","theme","toLowerCase","titleFontColor","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","legendTitleColor","subtitleFontSize","legendFontSize","legendBorderColor","legendBorderWidth","tooltipFillOpacity","tooltipTextOpacity","tooltipBorderColor","tooltipBorderWidth","Theme","mapsTitleFont","Print","print","printWindow","open","outerHeight","outerWidth","argsData","moveTo","resizeTo","screen","availWidth","availHeight","htmlContent","getHTMLContent","printFunction","backgroundElement","div","cloneNode","Element","exportElement","getElementsByTagName","getModuleName","control","ImageExport","export","allowDownload","Promise","resolve","reject","image_1","context_1","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","Image","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","Component","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","LevelsData","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","localAjax","fetchApiModule","Fetch","onSuccess","args","reader_1","treemap_1","FileReader","JSON","parse","readAsText","send","processingData","renderLegend","elementChange","isResized","isResize","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","titleText","margin","right","elementSize","trimmedTitle","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","level","currentData","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","levelIndex","childData","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","childName","name_1","childGroupPath","start","currentPath","prevPath","previousData","currentName","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","keyDownHandler","keyUpHandler","focusHandler","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","setStyle","overflow","Internationalization","args_1","isDestroyed","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","doubleTapTimer1","targetEle","labelText","end","mouseEvent","preventDefault","itemIndex","textContent","Date","getMilliseconds","mouseDown","removeFocus","notify","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","text1","drillTextLevel","h","levelItems","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","layoutID","templateID","drillMouseMove","drillLength","startEvent","which","drillElementId","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","endEvent","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","event","code","setProperty","highlightElement","highlightOnMouseMove","selectionElement","treeMapSelectionModule","selectionOnMouseDown","relatedTarget","legendHighlightCollection","highlightedElement","selectItem","levelOrder","isSelected","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","doubleTapTimer","getPersistData","Event","NotifyPropertyChanges","TreeMapLegend","page","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","firstItem","nextItem","leafIndex","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","maxSize","prevPositionY","nextPositionX","legendTextSize","Page","textMaxWidth","prvePositionX","nextPositionY","getPageChanged","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendItemRect","legendLength","rectWidth","rectHeight","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","actualValue","isRange","colorMapProcess","isDesaturation","outOfRangeLegend","gradientElement","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","x2","y2","drawGradient","isDuplicate","legendGradientColor","legendLinearGradient","outfill","labelLegend","otherIndex","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","currentPage","itemId","textId","rectOptions","shapeBorder","translate","legendBorderRect","defaultLegendRtlLocation","spacing","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","legendRtlLocation","imageUrl","pagingText","pagingFont","pagingTextSize","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPageOptions","rightRectPageOptions","pageTextOptions","pagingGroup","leftPageX","rightPath","leftPageOptions","leftRectPageOptions","wireEvents","role","aria-label","borderStyle","legendBorder","pointerEvents","getLegendAlignment","trimTitle","textElement","renderInteractivePointer","interactiveId","pointerDrawn","elementFromPoint","changedTouches","clientX","clientY","targetItem","svgRect","strokeWidth","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","legendInteractiveGradient","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","processHighlight","highlight","highLightElements","selectionModule","shapeSelected","legendSelectionCollection","selectedElementIndex","targetElementIndex","treeMapElement","selectionElements","currentElement","orders","legendSelectId","selectedLegendIndex","shapeSelectId","targetIndex","length_2","shapeTarget","nodeEle","Elements","isDrilled","TreeMapSelection","focus","selection","highlightModule","isDrillItem","nextElementSibling","nextSibling","selectionId","shapeSelect","length_3","undefined","shapeSelectionCollection","legendSelect","legendSelectIdIndex","length_4","targetEle_1","s","m","length_5","__rest","t","getOwnPropertySymbols","TreeMapTooltip","renderTooltip","tootipArgs","tooltipEle","toolTipData","markerFill","isTouch","pointerType","tooltipContent","tooltipId","addTooltip","svgTooltip","Tooltip","header","content","shapes","areaBounds","enableShadow","isVue","isVue3","controlInstance","appendTo","tooltipElementId"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-treemap.umd.min.js","sources":["../src/treemap/model/base.js","../src/treemap/model/constants.js","../src/treemap/utils/helper.js","../src/treemap/layout/render-panel.js","../src/treemap/model/theme.js","../src/treemap/model/print.js","../src/treemap/model/image-export.js","../src/treemap/model/pdf-export.js","../src/treemap/treemap.js","../src/treemap/layout/legend.js","../src/treemap/user-interaction/highlight-selection.js","../src/treemap/user-interaction/tooltip.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: null, fontFamily: null }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontWeight: null, opacity: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px', fontFamily: null }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.includes(options.connectorText[1])) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, '&nbsp');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {number} textCount - Specifies the number of text.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap, textCount) {\n if (textCount === void 0) { textCount = 0; }\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n var isTopLabel = (treemap.leafItemSettings.labelPosition === 'TopCenter' ||\n treemap.leafItemSettings.labelPosition === 'TopLeft' ||\n treemap.leafItemSettings.labelPosition === 'TopRight');\n var textHeight = (textCount > 1 && !isTopLabel &&\n (treemap.renderDirection === 'BottomLeftTopRight' ||\n treemap.renderDirection === 'BottomRightTopLeft')) ? (labelSize.height * textCount) : labelSize.height;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - textHeight + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + textHeight) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (textHeight / 2))) :\n (rect.y + (rect.height / 2) + textHeight / 4) : (rect.y + rect.height) - textHeight));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index] ||\n element.children[0].id === elementId[index]) {\n if (element.childElementCount > 0 && element.children[0].id.indexOf('_Group') === -1) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n if (treemap.legendSettings.mode === 'Interactive') {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i] ||\n parseFloat(legendGroup.childNodes[j]['id'].split('Index_')[1]) === parseFloat(elementId[i].split('Index_')[1])) {\n var treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n if (treemapSVGRectElement.id.indexOf('Text') === -1) {\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n }\n else {\n treemapSVGRectElement.setAttribute('stroke', null);\n treemapSVGRectElement.setAttribute('stroke-width', null);\n }\n }\n }\n }\n else {\n var legendItem = document.getElementById(elementId[i]);\n if (!isNullOrUndefined(legendItem)) {\n legendItem.setAttribute('fill', treemap.selectionSettings.fill);\n legendItem.setAttribute('opacity', treemap.selectionSettings.opacity);\n if (legendItem.id.indexOf('Text') === -1) {\n legendItem.setAttribute('stroke', treemap.selectionSettings.border.color);\n legendItem.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n }\n else {\n legendItem.setAttribute('stroke', null);\n legendItem.setAttribute('stroke-width', null);\n }\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n var element;\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n else {\n element.setAttribute('fill', 'black');\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options) {\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nvar TreeMapAjax = /** @class */ (function () {\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection, treeMap) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n var item = collection[j];\n var legendIndex = parseFloat(item['legendEle'].id.split('_Index_')[1]);\n var isText = item['legendEle'].id.indexOf('Text') > -1;\n var shapeId = isText ? item['legendEle'].id.replace('_Text', '') : item['legendEle'].id;\n var legendShape = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId)\n : document.getElementById(treeMap.element.id + '_Legend_Shape_Index_' + legendIndex);\n var legendText = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId + '_Text')\n : document.getElementById(treeMap.element.id + '_Legend_Text_Index_' + legendIndex);\n if (!isNullOrUndefined(legendShape)) {\n setColor(legendShape, item['oldFill'], item['oldOpacity'], 'none', '0px');\n }\n if (!isNullOrUndefined(legendText)) {\n setColor(legendText, treeMap.legendSettings.textStyle.color || treeMap.themeStyle.legendTextColor, item['oldOpacity'], null, null);\n }\n var dataCount = !isNullOrUndefined(item['ShapeCollection']) ? item['ShapeCollection']['Elements'].length : 0;\n for (var k = 0; k < dataCount; k++) {\n var shapeElement = document.getElementById(item['ShapeCollection']['Elements'][k].id);\n if (!isNullOrUndefined(shapeElement)) {\n setColor(shapeElement, item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n }\n}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n if (!isNullOrUndefined(borderColor)) {\n element.setAttribute('stroke', borderColor);\n }\n if (!isNullOrUndefined(borderWidth)) {\n element.setAttribute('stroke-width', borderWidth);\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeLegend(collection, treemap);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n var index;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var indexFound = false;\n for (var i = 0; i < length && !indexFound; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n if (dataLength > 0) {\n for (var j = 0; j < dataLength; j++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 ?\n (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['data'][valuePath] === item['data'][valuePath])\n : treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']\n || item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['legendName']) > -1)) {\n index = i;\n indexFound = true;\n break;\n }\n }\n }\n else if (treemap.palette && treemap.palette.length > 0) {\n if ((treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'] === item['levelOrderName'] ||\n (item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'])) > -1)\n && treemap.treeMapLegendModule.legendCollections[i]['legendName'] === item['name']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum += data[i_1]['weight'];\n }\n var multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n LayoutPanel.prototype.renderLayoutItems = function () {\n var _this = this;\n var position;\n var treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill;\n var item;\n var renderText;\n var opacity;\n var rectPath = '';\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? (treeMap.legendSettings.visible ? this_1.treemap.totalRect\n : convertToContainer(this_1.treemap.totalRect)) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n if (treeMap.enableHtmlSanitizer) {\n renderText = SanitizeHtmlHelper.sanitize(renderText);\n }\n var fontFamily = (isLeafItem ? leaf.labelStyle.fontFamily : levels[index].headerStyle.fontFamily);\n fontFamily = fontFamily || this_1.treemap.themeStyle.labelFontFamily;\n var size = (isLeafItem ? leaf.labelStyle.size : levels[index].headerStyle.size);\n size = size || this_1.treemap.themeStyle.labelFontSize;\n var fontWeight = (isLeafItem ? leaf.labelStyle.fontWeight : levels[index].headerStyle.fontWeight);\n fontWeight = fontWeight || this_1.treemap.themeStyle.fontWeight;\n var color = (isLeafItem ? leaf.labelStyle.color : levels[index].headerStyle.color);\n var fontStyle = (isLeafItem ? leaf.labelStyle.fontStyle : levels[index].headerStyle.fontStyle);\n var textStyleOpacity = (isLeafItem ? leaf.labelStyle.opacity : levels[index].headerStyle.opacity);\n textStyle = {\n fontFamily: fontFamily, size: size, fontWeight: fontWeight, color: color, fontStyle: fontStyle, opacity: textStyleOpacity\n };\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options'], textColor: textStyle.color\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n textStyle.color = eventArgs.textColor ? eventArgs.textColor : textStyle.color;\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n if ((_this.treemap.enableDrillDown && !isLeafItem) || (_this.treemap.selectionSettings.enable ||\n _this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', _this.treemap.tabIndex.toString());\n itemGroup.style.outline = 'none';\n itemGroup.style.cursor = _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && (_this.treemap.enableDrillDown && item['groupIndex'] === (_this.treemap.levels.length - 1)) ? 'default' :\n _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && !_this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n maintainSelection(this.treemap, this.layoutGroup, 'treeMapSelection');\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n var largerText = '';\n var largerTextWidth = 0;\n if (!isNullOrUndefined(textCollection) && textCollection.length > 0) {\n for (var i = 0; i < textCollection.length; i++) {\n var currentTextWidth = measureText(textCollection[i], textStyle).width;\n if (currentTextWidth > largerTextWidth) {\n largerTextWidth = currentTextWidth;\n largerText = textCollection[i];\n }\n }\n }\n textSize = measureText(textCollection && largerText || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textCount = (!isNullOrUndefined(textCollection) && textCollection.length > 1) ? textCollection.length : 0;\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap, textCount);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n if (!isNullOrUndefined(option)) {\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : !isNullOrUndefined(item['options']) ?\n item['options'].fill : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n if (this.treemap.enableHtmlSanitizer && typeof template === 'string') {\n template = SanitizeHtmlHelper.sanitize(template);\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n /**\n *\n * @returns {void}\n * @private\n */\n LayoutPanel.prototype.destroy = function () {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","/**\n * Maps Themes doc\n */\nimport { defaultFont } from './constants';\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n labelFontFamily: defaultFont,\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#111827',\n titleFontWeight: '600',\n subTitleFontColor: '#111827',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#111827',\n legendTextColor: '#111827',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Inter',\n fontWeight: '400',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#212529',\n titleFontWeight: '400',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#DEE2E6',\n titleFontWeight: '400',\n subTitleFontColor: '#DEE2E6',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#DEE2E6',\n legendTextColor: '#DEE2E6',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#242424',\n titleFontWeight: '600',\n subTitleFontColor: '#242424',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#242424',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#242424',\n legendTextColor: '#242424',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#292929',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2highcontrast':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#FFF',\n legendBorderWidth: 1,\n tooltipBorderColor: '#FFF',\n tooltipBorderWidth: 1\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n }\n return style;\n}\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (treeMap, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (treeMap, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = treeMap.element.cloneNode(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent, legendMaintain, removeLegend } from '../treemap/utils/helper';\nimport { removeClassNames, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var fetchApiModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = function (args) {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n var reader_1 = new FileReader();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treemap_1 = _this;\n reader_1.onload = function () {\n args = JSON.parse(reader_1.result.toString());\n treemap_1.dataSource = args;\n treemap_1.renderTreeMapElements();\n };\n reader_1.readAsText(args);\n }\n else {\n _this.dataSource = args;\n _this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n if (!isNullOrUndefined(this.treeMapLegendModule) && this.legendSettings.visible) {\n legendMaintain(this, this.treeMapLegendModule.legendGroup);\n }\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var titleText = this.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(title.text)) : title.text;\n var trimmedTitle = textTrim(width, titleText, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || titleText);\n element.setAttribute('role', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (var i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n if (!isNullOrUndefined(mainData_1)) {\n for (var k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var orderNames = [];\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n var totalWeight;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focusout', this.focusHandler);\n window.removeEventListener('resize', this.resizeEvent);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusHandler, this);\n this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\n this.setStyle(this.element);\n };\n TreeMap.prototype.setStyle = function (element) {\n element.style.overflow = 'hidden';\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n _this.refreshing = false;\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n if (e.type === 'touchstart' || e.type === 'mousedown') {\n this.removeFocus('none');\n e.preventDefault();\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n this.removeFocus('none');\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n else {\n this.element.style.cursor = 'default';\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);\n this.treeMapHighlightModule.highLightId = '';\n }\n this.removeFocus('');\n };\n /**\n * This method is used to perform operations when keyboard up on TreeMap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on TreeMap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.keyUpHandler = function (event) {\n if (event.code !== 'Tab') {\n return;\n }\n var id = event.target['id'];\n var targetEle = document.getElementById(id);\n if ((id.indexOf('Item_Index') > -1 || id.indexOf('Legend') > -1)) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapHighlightModule && this.highlightSettings.enable) {\n targetEle.style.setProperty('outline', 'none');\n targetEle.classList.add('keyboard-focused');\n var highlightElement = id.indexOf('_Legend_') > -1 && this.legendSettings.mode === 'Default' ?\n targetEle.children[0] : targetEle;\n this.treeMapHighlightModule.highlightOnMouseMove(highlightElement);\n }\n else {\n this.removeFocus('');\n targetEle.style.outline = '2px solid black';\n targetEle.classList.add('keyboard-focused');\n }\n }\n else {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);\n }\n this.removeFocus('none');\n }\n };\n /**\n * This method is used to perform operations when keyboard down on treemap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.keyDownHandler = function (event) {\n var id = event.target['id'];\n var targetEle = document.getElementById(id);\n if (event.code === 'Enter') {\n if (this.selectionSettings.enable && (id.indexOf('Item_Index') > -1 || id.indexOf('Legend') > -1)) {\n var selectionElement = id.indexOf('_Legend_') > -1 && this.legendSettings.mode === 'Default' ?\n targetEle.children[0] : targetEle;\n this.treeMapSelectionModule.selectionOnMouseDown(selectionElement);\n }\n if (this.enableDrillDown && targetEle.childElementCount > 0) {\n this.mouseEndOnTreeMap(event);\n }\n }\n };\n /**\n * This method is used to perform operations when focus out on treemap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.focusHandler = function (event) {\n var id = event.target['id'];\n if (!this.element.contains(event.relatedTarget) ||\n (id.indexOf('Item_Index') > -1 && event.relatedTarget.id.indexOf('Legend') > -1) ||\n (id.indexOf('Legend') > -1 && event.relatedTarget.id.indexOf('Item_Index') > -1)) {\n if (this.treeMapHighlightModule && this.highlightSettings.enable) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n removeLegend(this.treeMapHighlightModule.legendHighlightCollection, this);\n this.treeMapHighlightModule.highLightId = '';\n }\n else {\n this.removeFocus('none');\n }\n }\n };\n TreeMap.prototype.removeFocus = function (outline) {\n var highlightedElement = document.querySelector('.keyboard-focused');\n if (highlightedElement) {\n highlightedElement.style.outline = outline;\n highlightedElement.classList.remove('keyboard-focused');\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this],\n name: 'TreeMapTooltip'\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this],\n name: 'TreeMapHighlight'\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this],\n name: 'TreeMapSelection'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this],\n name: 'TreeMapLegend'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n };\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n this.areaRect = null;\n this.themeStyle = null;\n this.totalRect = null;\n this.drilledLegendItems = null;\n this.doubleTapTimer = null;\n this.treemapLevelData = null;\n this.resizeEvent = null;\n this.availableSize = null;\n this.intl = null;\n if (!isNullOrUndefined(this.layout)) {\n this.layout.destroy();\n }\n this.layout = null;\n this.renderer = null;\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n /**\n * method for legend\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if (((!isNullOrUndefined(this.treemap.palette) && this.treemap.palette.length > 0) || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0; });\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(legend.title.text) : legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = titleTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = titleTextStyle.size || treemap.themeStyle.subtitleFontSize;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(treemap.enableHtmlSanitizer ?\n SanitizeHtmlHelper.sanitize(legendItem['legendName']) : legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n if (!isNullOrUndefined(childElement['data']['options'])) {\n legendFillColor = childElement['data']['options']['fill'];\n }\n else {\n for (var k = 0; k < childElement.length; k++) {\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n childElement[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight'],\n levelOrderName: child[i]['levelOrderName']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, labelLegend) : false;\n if (isNullOrUndefined(this.outOfRangeLegend) && !isDuplicate) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill, groupIndex: (!isLeafItem || groupIndex > -1) ? groupIndex : -1\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n for (var k = this.legendCollections.length - 1; k >= 0; k--) {\n if (this.legendCollections[k]['actualValue'] === (colorMap.label || 'Others')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[k]['legendData'].push(data[i]);\n break;\n }\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n *\n * @private\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var legend = this.treemap.legendSettings;\n var render = this.treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = this.treemap.element.id + '_Legend_Index_' + i;\n var textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n var text = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(item['text'])) : item['text'];\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', text, '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n var legendElement = render.drawRectangle(rectOptions);\n legendElement.setAttribute('tabindex', this.treemap.tabIndex.toString());\n legendElement.style.outline = '';\n this.legendGroup.appendChild(legendElement);\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendText = this_1.treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(collection['DisplayText']) : collection['DisplayText'];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n legendElement.setAttribute('aria-label', legendText + ' Legend');\n legendElement.setAttribute('role', 'region');\n legendElement.setAttribute('tabindex', this_1.treemap.tabIndex.toString());\n legendElement.style.outline = 'none';\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': '',\n 'role': 'region',\n 'aria-label': pagingText\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var borderStyle = {\n color: legend.border.color || this.treemap.themeStyle.legendBorderColor,\n width: legend.border.width || this.treemap.themeStyle.legendBorderWidth\n };\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, borderStyle, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var legend = this.treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(legend.title.text)) : legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n var textElement = renderTextElement(textOptions, textStyle, textStyle.color ||\n this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n textElement.setAttribute('role', 'region');\n textElement.setAttribute('aria-label', legendTitle);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n var pointerDrawn = false;\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length && !pointerDrawn; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData']) && currentData['legendData'].length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n var valuePath = treemap.rangeColorValuePath;\n if (targetItem['levelOrderName'].indexOf(this.legendCollections[i]['legendName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n else {\n for (var j = 0; j < data.length; j++) {\n if ((treemap.rangeColorValuePath && treemap.leafItemSettings.colorMapping.length > 0)\n ? data[j]['data'][valuePath] === targetItem['data'][valuePath]\n : (data[j]['levelOrderName'] === targetItem['levelOrderName'] ||\n data[j]['levelOrderName'].indexOf(targetItem['levelOrderName']) > -1)) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n break;\n }\n }\n }\n }\n else if (this.treemap.leafItemSettings.colorMapping.length === 0 && this.treemap.palette) {\n if (targetItem['levelOrderName'].indexOf(currentData['levelOrderName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n /**\n * @param {PointerEvent} e - Specifies the event.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n *\n * @private\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = null;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n this.treemap = null;\n };\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse Move event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var targetEle = e.target;\n return this.highlightOnMouseMove(targetEle);\n };\n /**\n * This method highlights the target element for mouse move event.\n *\n * @param {Element} targetElement - Specifies the target element to highlight.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.highlightOnMouseMove = function (targetElement) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = targetElement.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n var shapeSelected = false;\n if (selectionModule && selectionModule.legendSelectionCollection.length > 0) {\n for (var i = 0; i < selectionModule.legendSelectionCollection.length; i++) {\n for (var j = 0; j < selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'].length; j++) {\n var selectedElementIndex = parseFloat(selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id.split('Item_Index_')[1].split('_')[0]);\n var targetElementIndex = targetId.indexOf('_Item_Index_') > -1 ? parseFloat(targetId.split('Item_Index_')[1].split('_')[0]) : null;\n if (selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id === targetId ||\n selectedElementIndex === targetElementIndex) {\n shapeSelected = true;\n break;\n }\n }\n }\n }\n if (targetId.indexOf('_Item_Index') > -1 && !shapeSelected) {\n if (this.highLightId !== targetId ||\n (this.legendHighlightCollection[0] ? this.legendHighlightCollection[0]['ShapeCollection']['Elements'].length > 1 : false)) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0 && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length_1, item, treemap);\n if (isNullOrUndefined(index)) {\n removeLegend(this.legendHighlightCollection, treemap);\n removeLegend(this.shapeHighlightCollection, treemap);\n this.legendHighlightCollection = [];\n treemap.treeMapLegendModule.removeInteractivePointer();\n }\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n if (selectionModule ? this.shapeElement.id !== ((selectionModule && selectionModule.shapeElement)\n ? selectionModule.shapeElement.id : null) : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n var legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, highlight.fill, highlight.opacity, null, null);\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id ||\n element.id === selectionElements[j].parentElement.id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process &&\n (!isNullOrUndefined(valuePath) ?\n (item['data'][valuePath] === targetItem['data'][valuePath] ||\n (highlight.mode !== 'Item' && treemap.levels.length > 0)) : true)) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_Index') > -1) {\n if (!isNullOrUndefined(selectionModule)) {\n selectionModule.legendSelectId = !isNullOrUndefined(treemap.legendId[0]) ? treemap.legendId[0] : null;\n }\n var selectedLegendIndex = selectionModule && selectionModule.legendSelectId ?\n parseFloat(selectionModule.legendSelectId.split('Index_')[1]) :\n (selectionModule && selectionModule.shapeSelectId ? parseFloat(selectionModule.shapeSelectId.split('Index_')[1]) : null);\n var targetIndex = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n if (this.treemap.legendSettings.visible && targetIndex !== selectedLegendIndex) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, this.treemap);\n this.legendHighlightCollection = [];\n }\n this.shapeTarget = 'highlight';\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 &&\n treemap.levels.length === 0)\n ? treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['data'][valuePath] === treemap.layout.renderItems[j]['data'][valuePath]\n : (treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['levelOrderName'] === treemap.layout.renderItems[j]['levelOrderName'])) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0 || this.legendHighlightCollection.length === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n var legendShape = void 0;\n var legendText = void 0;\n if (targetEle.id.indexOf('Text') > -1) {\n legendShape = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n setColor(targetEle, highlight.fill, highlight.opacity, null, null);\n setColor(legendShape, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n else {\n legendText = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n setColor(legendText, highlight.fill, highlight.opacity, null, null);\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n !this.treemap.layout.renderItems[j].parent.isDrilled) ?\n targetIndex === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n var legendItem = void 0;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n setColor(targetEle, highlight.fill, highlight.opacity, null, null);\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n setColor(legendItem, highlight.fill, highlight.opacity, null, null);\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n removeLegend(this.legendHighlightCollection, treemap);\n this.legendHighlightCollection = [];\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ?\n selectionModule.legendSelect : true) {\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, this.treemap);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n e.preventDefault();\n this.selectionOnMouseDown(targetEle);\n };\n /**\n * This method selects the target element for mouse down event.\n *\n * @param {Element} targetEle - Specifies the target element that was clicked.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectionOnMouseDown = function (targetEle) {\n var eventArgs;\n var treemap = this.treemap;\n targetEle.setAttribute('tabindex', '-1');\n targetEle.style.outline = 'none';\n if (!targetEle.id.includes('Legend_Shape_Index')) {\n targetEle.focus();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var isDrillItem = (item && !item.isLeafItem && treemap.enableDrillDown) &&\n (targetEle.textContent.indexOf('[+]') > -1 || targetEle.textContent.indexOf('[-]') > -1 ||\n (!isNullOrUndefined(targetEle.nextElementSibling) &&\n (targetEle.nextSibling.textContent.indexOf('[+]') > -1 || targetEle.nextSibling.textContent.indexOf('[-]') > -1)));\n if (targetId.indexOf('_Item_Index') > -1 && !isDrillItem) {\n if ((this.treemap.selectionId !== targetId &&\n (treemap.selectionId ? parseFloat(treemap.selectionId.split('_Item_Index_')[1]) !== parseFloat(targetId.split('_Item_Index_')[1]) : true)) ||\n (this.legendSelectionCollection[0] ? this.legendSelectionCollection[0]['ShapeCollection']['Elements'].length > 1 : false)) {\n treemap.levelSelection = [];\n treemap.legendId = [];\n this.shapeSelectId = '';\n removeLegend(this.legendSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n treeMapElement = document.getElementById(layoutID);\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeLegend(this.shapeSelectionCollection, treemap);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0\n && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n var legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, selection.fill, selection.opacity, null, null);\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.legendId.push(this.shapeElement.id);\n treemap.legendId.push(legendText.id);\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n if (orders.indexOf(item['levelOrderName']) > -1 &&\n (!isNullOrUndefined(valuePath) ?\n (item['data'][valuePath] === targetItem['data'][valuePath] ||\n (selection.mode !== 'Item' && treemap.levels.length > 0)) : true)) {\n selectionElements.push(element);\n if (targetId.indexOf('_RectPath') > -1) {\n treemap.levelSelection.push(element.id);\n }\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, treemap);\n removeLegend(this.shapeSelectionCollection, treemap);\n this.treemap.legendId = [];\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.levelSelection = [];\n this.legendSelectId = '';\n if (this.legendSelect || this.shapeSelect) {\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendSelectIdIndex = !isNullOrUndefined(this.legendSelectId) ? parseFloat(this.legendSelectId.split('_Index_')[1]) : null;\n if (this.treemap.legendSettings.visible && (legendSelectIdIndex !== parseFloat(targetId.split('_Index_')[1]))) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n treemap.legendId = [];\n treemap.levelSelection = [];\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = !isNaN(parseInt(targetId[targetId.length - 1], 10)) ?\n parseInt(targetId[targetId.length - 1], 10) :\n parseInt(targetId[targetId.length - 6], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, treemap);\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n removeLegend(this.shapeSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.legendHighlightCollection = [];\n }\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var index = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 &&\n treemap.levels.length === 0) ?\n (treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['data'][valuePath] === treemap.layout.renderItems[l]['data'][valuePath])\n : (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName'])) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n this.treemap.selectionId = nodeEle.id;\n if (k === 0 || this.legendSelectionCollection.length === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n this.treemap.selectionId = nodeEle.id;\n var legendShape = void 0;\n var legendText = void 0;\n if (targetEle_1.id.indexOf('Text') > -1) {\n legendShape = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n setColor(legendShape, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle_1, selection.fill, selection.opacity, null, null);\n this.legendSelectId = legendShape.id;\n this.shapeElement = legendShape;\n treemap.legendId.push(targetEle_1.id);\n treemap.legendId.push(legendShape.id);\n }\n else {\n legendText = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n setColor(legendText, selection.fill, selection.opacity, null, null);\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.shapeElement = targetEle_1;\n treemap.legendId.push(targetEle_1.id);\n treemap.legendId.push(legendText.id);\n }\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n treemap.levelSelection.push(nodeEle.id);\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n !this.treemap.layout.renderItems[j].parent.isDrilled) ?\n index === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendSelectionCollection, index, j, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n this.treemap.selectionId = nodeEle.id;\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n var legendItem = void 0;\n if (targetEle_1.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n setColor(targetEle_1, selection.fill, selection.opacity, null, null);\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.legendSelectId = legendItem.id;\n this.shapeElement = legendItem;\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n setColor(legendItem, selection.fill, selection.opacity, null, null);\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.legendSelectId = targetId;\n this.shapeElement = targetEle_1;\n }\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.levelSelection.push(nodeEle.id);\n if (treemap.legendId.indexOf(legendItem.id) === -1) {\n treemap.legendId.push(legendItem.id);\n }\n if (treemap.legendId.indexOf(targetEle_1.id) === -1) {\n treemap.legendId.push(targetEle_1.id);\n }\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, this.treemap);\n removeLegend(this.shapeSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n this.shapeElement = null;\n this.shapeSelectId = '';\n if (this.legendSelect || this.shapeSelect) {\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n }\n else if (isDrillItem) {\n removeLegend(this.legendSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n this.treemap.selectionId = '';\n this.shapeElement = null;\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue, removeElement } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1 && e.type.indexOf('key') === -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.tooltipSettings.textStyle.fontFamily || this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.tooltipSettings.textStyle.color || this.treemap.themeStyle.tooltipFontColor;\n // eslint-disable-next-line max-len\n this.tooltipSettings.textStyle.opacity = this.tooltipSettings.textStyle.opacity || this.treemap.themeStyle.tooltipTextOpacity;\n var border = {\n width: this.tooltipSettings.border.width || this.treemap.themeStyle.tooltipBorderWidth || 0,\n color: this.tooltipSettings.border.color || this.treemap.themeStyle.tooltipBorderColor || 'transparent'\n };\n if (this.treemap.enableHtmlSanitizer) {\n for (var a = 0; a < tooltipContent.length; a++) {\n tooltipContent[a] = SanitizeHtmlHelper.sanitize(tooltipContent[a]);\n }\n }\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData, border: border,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n theme: this.treemap.theme,\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor,\n border: args['border'],\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n this.svgTooltip.controlInstance = null;\n removeElement(this.treemap.element.id + '_TreeMapTooltip');\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n"],"names":["extendStatics","_super","load","loaded","beforePrint","itemRendering","drillStart","drillEnd","itemSelected","itemHighlight","tooltipRendering","itemClick","itemMove","click","doubleClick","rightClick","mouseMove","legendItemRendering","legendRendering","resize","defaultFont","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","Border","ChildProperty","Property","apply","Margin","Font","CommonTitleSettings","SubTitleSettings","Complex","fontFamily","fontWeight","TitleSettings","ColorMapping","LegendSettings","size","color","width","x","y","InitialDrillSettings","LeafItemSettings","Collection","TooltipSettings","opacity","SelectionSettings","HighlightSettings","LevelSettings","Size","height","stringToNumber","value","containerSize","indexOf","parseInt","Rect","RectOption","id","fill","border","rect","dashArray","stroke","PathOption","measureText","text","font","measureObject","document","getElementById","createElement","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","fontStyle","visibility","top","left","whiteSpace","lineHeight","clientWidth","clientHeight","TextOption","anchor","transform","baseLine","connectorText","textTrim","maxWidth","label","substring","Location","findPosition","location","alignment","textSize","type","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","parent","isMinus","font-size","font-style","font-family","font-weight","text-anchor","dominant-baseline","SvgRenderer","isNullOrUndefined","includes","drillLevelText","split","z","drillText","search","replace","len","tspanElement","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemSelect","itemTemplate","querySelector","getElement","itemsToOrder","a","isContainsData","source","pathName","processData","treemap","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","keys","children","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","elementLength","cssText","templateHtml","regExp","RegExp","toString","findLabelLocation","labelSize","textCount","areaRect","isTopLabel","labelPosition","textHeight","renderDirection","Math","abs","enableDrillDown","measureElement","parentElement","measureElementId","offsetHeight","offsetWidth","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","g","componentToHex","Number","rbg","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","charAt","colorNameToHex","nextColor","splitColor","length_1","splitColorValueOffset","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","selectionSettings","legendMaintain","legendGroup","legendId","legendSettings","treemapSVGRectElement","parseFloat","legendItem","removeClassNames","elements","classList","remove","textFormatter","format","_i","keys_1","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","xValue","yValue","cos","PI","sin","href","isParentItem","item","TreeMapAjax","async","contentType","sendData","dataOptions","removeShape","collection","setColor","removeLegend","legendIndex","shapeId","legendShape","legendText","dataCount","textStyle","themeStyle","legendTextColor","k","shapeElement","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","valuePath","rangeColorValuePath","indexFound","dataLength","treeMapLegendModule","legendCollections","palette","pushCollection","number","legendElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","LayoutPanel","processLayoutPanel","totalRect","treemapLevelData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","currentLevel","calculateLayoutItems","count","enableBreadcrumb","renderLayoutItems","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","isHorizontal","forEach","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","newStack","currentMaxAspectRatio","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaHeight","areaWidth","isParent","parentRect","subXOffset","subYOffset","coordinates","x1","y1","dataLength_1","dataSum","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","txtVisible","eventArgs","templatePosition","renderText","groupId","templateEle","itemGroup","_this","elementID","interSectAction","rectPath","secondaryEle","templateGroup","layoutGroup","createGroup","isLeafItem","this_1","_loop_1","drillDownView","levelName","treemapItemRect","visible","getItemColor","labelFormat","headerFormat","showLabels","breadcrumbConnector","enableRtl","enableHtmlSanitizer","labelStyle","headerStyle","labelFontFamily","labelFontSize","textStyleOpacity","labelTemplate","headerTemplate","cancel","RenderItems","textColor","trigger","observedArgs","pathOptions","path","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","outline","cursor","svgObject","tspanText","customText","labelInterSectAction","largerText","largerTextWidth","currentTextWidth","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","textName","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","colorValuePath","saturatedColor","rgbValue","backgroundColor","labelElement","templateId","baseTemplateId","templateLocation","textValue","destroy","currentRect","getThemeStyle","theme","toLowerCase","titleFontColor","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","legendTitleColor","subtitleFontSize","legendFontSize","legendBorderColor","legendBorderWidth","tooltipFillOpacity","tooltipTextOpacity","tooltipBorderColor","tooltipBorderWidth","Theme","mapsTitleFont","Print","print","printWindow","open","outerHeight","outerWidth","argsData","moveTo","resizeTo","screen","availWidth","availHeight","htmlContent","getHTMLContent","printFunction","backgroundElement","div","cloneNode","Element","exportElement","getElementsByTagName","getModuleName","control","ImageExport","export","allowDownload","Promise","resolve","reject","image_1","context_1","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","Image","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","Component","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","LevelsData","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","localAjax","fetchApiModule","Fetch","onSuccess","args","reader_1","treemap_1","FileReader","JSON","parse","readAsText","send","processingData","renderLegend","elementChange","isResized","isResize","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","titleText","margin","right","elementSize","trimmedTitle","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","level","currentData","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","levelIndex","childData","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","childName","name_1","childGroupPath","start","currentPath","prevPath","previousData","currentName","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","keyDownHandler","keyUpHandler","focusHandler","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","setStyle","overflow","Internationalization","args_1","isDestroyed","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","doubleTapTimer1","targetEle","labelText","end","mouseEvent","preventDefault","itemIndex","textContent","Date","getMilliseconds","mouseDown","removeFocus","notify","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","text1","drillTextLevel","h","levelItems","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","layoutID","templateID","drillMouseMove","drillLength","startEvent","which","drillElementId","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","endEvent","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","event","code","setProperty","highlightElement","highlightOnMouseMove","selectionElement","treeMapSelectionModule","selectionOnMouseDown","relatedTarget","legendHighlightCollection","highlightedElement","selectItem","levelOrder","isSelected","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","doubleTapTimer","getPersistData","Event","NotifyPropertyChanges","TreeMapLegend","page","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","firstItem","nextItem","leafIndex","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","maxSize","prevPositionY","nextPositionX","legendTextSize","Page","textMaxWidth","prvePositionX","nextPositionY","getPageChanged","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendItemRect","legendLength","rectWidth","rectHeight","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","itemTextSize","textWidth","calculateLegendItems","legendFillColor","legendName","showLegendPath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","actualValue","isRange","colorMapProcess","isDesaturation","outOfRangeLegend","gradientElement","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","x2","y2","drawGradient","isDuplicate","legendGradientColor","legendLinearGradient","outfill","labelLegend","otherIndex","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","currentPage","itemId","textId","rectOptions","shapeBorder","translate","legendBorderRect","defaultLegendRtlLocation","spacing","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","legendRtlLocation","imageUrl","pagingText","pagingFont","pagingTextSize","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPageOptions","rightRectPageOptions","pageTextOptions","pagingGroup","leftPageX","rightPath","leftPageOptions","leftRectPageOptions","wireEvents","role","aria-label","borderStyle","legendBorder","pointerEvents","getLegendAlignment","trimTitle","textElement","renderInteractivePointer","interactiveId","pointerDrawn","elementFromPoint","changedTouches","clientX","clientY","targetItem","svgRect","strokeWidth","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","legendInteractiveGradient","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","processHighlight","highlight","highLightElements","selectionModule","shapeSelected","legendSelectionCollection","selectedElementIndex","targetElementIndex","treeMapElement","selectionElements","currentElement","orders","legendSelectId","selectedLegendIndex","shapeSelectId","targetIndex","length_2","shapeTarget","nodeEle","Elements","isDrilled","TreeMapSelection","focus","selection","highlightModule","isDrillItem","nextElementSibling","nextSibling","selectionId","shapeSelect","length_3","undefined","shapeSelectionCollection","legendSelect","legendSelectIdIndex","length_4","targetEle_1","s","m","length_5","__rest","t","getOwnPropertySymbols","TreeMapTooltip","renderTooltip","tootipArgs","tooltipEle","toolTipData","markerFill","isTouch","pointerType","tooltipContent","tooltipId","addTooltip","svgTooltip","Tooltip","header","content","shapes","areaBounds","enableShadow","isVue","isVue3","controlInstance","appendTo","tooltipElementId"],"mappings":"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"}