@syncfusion/ej2-treemap 28.2.3 → 29.1.33
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.
- package/README.md +2 -2
- package/dist/ej2-treemap.min.js +2 -2
- package/dist/ej2-treemap.umd.min.js +2 -2
- package/dist/ej2-treemap.umd.min.js.map +1 -1
- package/dist/es6/ej2-treemap.es2015.js +284 -106
- package/dist/es6/ej2-treemap.es2015.js.map +1 -1
- package/dist/es6/ej2-treemap.es5.js +284 -106
- package/dist/es6/ej2-treemap.es5.js.map +1 -1
- package/dist/global/ej2-treemap.min.js +2 -2
- package/dist/global/ej2-treemap.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/treemap/layout/legend.js +7 -2
- package/src/treemap/layout/render-panel.js +2 -1
- package/src/treemap/treemap.d.ts +26 -1
- package/src/treemap/treemap.js +100 -0
- package/src/treemap/user-interaction/highlight-selection.d.ts +19 -3
- package/src/treemap/user-interaction/highlight-selection.js +138 -84
- package/src/treemap/user-interaction/tooltip.js +4 -2
- package/src/treemap/utils/helper.js +34 -18
|
@@ -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.search(options.connectorText[1]) >= 0) : 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, ' ');\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 var colorMappingValue = colorMapping[i].value ? colorMapping[i].value.toString() :\n colorMapping[i].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 (colorMappingValue === 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 || (colorMappingValue === equalValue)) {\n if (colorMappingValue === 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 || (colorMappingValue === 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) {\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('stroke', treemap.selectionSettings.border.color);\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\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('stroke', treemap.selectionSettings.border.color);\n legendItem.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendItem.setAttribute('opacity', treemap.selectionSettings.opacity);\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'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n if (!isNullOrUndefined(legendText)) {\n setColor(legendText, treeMap.legendSettings.textStyle.color, item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\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 element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\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;\n for (var i = 0; i < length; 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) && 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 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.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 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 this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\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 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 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 };\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]['groupIndex'] === data[i]['groupIndex']) {\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 this.legendGroup.appendChild(render.drawRectangle(rectOptions));\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 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 down 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 treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.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 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 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 && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n var legendShapeElement = selectionModule ? selectionModule.shapeElement : null;\n if (selectionModule ? this.shapeElement !== legendShapeElement : 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, highlight.border.color, highlight.border.width.toString());\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 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 if (this.treemap.legendSettings.mode === 'Interactive') {\n this.treemap.treeMapLegendModule.removeInteractivePointer();\n }\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ?\n this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n var valuePath = treemap.rangeColorValuePath;\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 process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process &&\n (!isNullOrUndefined(valuePath) && valuePath !== '' ?\n item['data'][valuePath] === targetItem['data'][valuePath] : 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 else {\n processHighlight = false;\n }\n }\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;\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) && valuePath !== '' && treemap.leafItemSettings.colorMapping.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 setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\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 }\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 }\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\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 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 }\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 }\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\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 }\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 var eventArgs;\n var treemap = this.treemap;\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.nextSibling.textContent.indexOf('[+]') > -1 || targetEle.nextSibling.textContent.indexOf('[-]') > -1);\n if (targetId.indexOf('_Item_Index') > -1 && !isDrillItem) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId) {\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, selection.border.color, selection.border.width.toString());\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;\n if (orders.indexOf(item['levelOrderName']) > -1 &&\n (!isNullOrUndefined(valuePath) && valuePath !== '' ?\n item['data'][valuePath] === targetItem['data'][valuePath] : true)) {\n selectionElements.push(element);\n if (targetId.indexOf('_RectPath') > -1) {\n treemap.levelSelection.push(targetId);\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.shapeSelectionCollection, treemap);\n this.treemap.legendId = [];\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.levelSelection = [];\n if (this.legendSelect) {\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;\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) && valuePath !== '' && treemap.leafItemSettings.colorMapping.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 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 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 this.shapeElement = targetEle_1;\n }\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\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 if (treemap.legendId.indexOf(targetEle_1.id) === -1) {\n treemap.legendId.push(targetEle_1.id);\n }\n if (treemap.legendId.indexOf(legendItem.id) === -1) {\n treemap.legendId.push(legendItem.id);\n }\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 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 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 this.legendSelectId = targetId;\n this.shapeElement = targetEle_1;\n }\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\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 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 }\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 }\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 } 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) {\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 }\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","search","drillLevelText","split","z","drillText","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","colorMappingValue","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","k","shapeElement","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","valuePath","rangeColorValuePath","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","themeStyle","labelFontFamily","labelFontSize","textStyleOpacity","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","textColor","trigger","observedArgs","pathOptions","path","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","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","legendTextColor","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","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","Internationalization","args_1","isDestroyed","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","doubleTapTimer1","targetEle","labelText","end","mouseEvent","preventDefault","itemIndex","textContent","Date","getMilliseconds","mouseDown","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","selectItem","levelOrder","isSelected","treeMapSelectionModule","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","orders","highlight","highLightElements","selectionModule","shapeSelected","legendSelectionCollection","selectedElementIndex","targetElementIndex","treeMapElement","selectionElements","legendSelectId","currentElement","legendShapeElement","selectedLegendIndex","shapeSelectId","targetIndex","length_2","shapeTarget","legendHighlightCollection","nodeEle","Elements","TreeMapSelection","selection","highlightModule","isDrillItem","nextSibling","selectionId","shapeSelect","length_3","undefined","shapeSelectionCollection","legendSelect","legendSelectIdIndex","length_4","targetEle_1","s","m","length_5","selectionElement","__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.search(options.connectorText[1]) >= 0) : 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, ' ');\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 };\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","search","drillLevelText","split","z","drillText","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","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","includes","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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"}
|