@syncfusion/ej2-treemap 19.4.52 → 20.1.47-14088
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/CHANGELOG.md +96 -80
- package/README.md +69 -69
- package/dist/ej2-treemap.umd.min.js +1 -10
- package/dist/ej2-treemap.umd.min.js.map +1 -1
- package/dist/es6/ej2-treemap.es2015.js +80 -71
- package/dist/es6/ej2-treemap.es2015.js.map +1 -1
- package/dist/es6/ej2-treemap.es5.js +138 -129
- package/dist/es6/ej2-treemap.es5.js.map +1 -1
- package/helper/e2e/index.js +3 -3
- package/helper/e2e/treemap-helper.js +13 -13
- package/license +9 -9
- package/package.json +78 -78
- package/src/treemap/layout/legend.js +1 -1
- package/src/treemap/model/base-model.d.ts +485 -485
- package/src/treemap/model/base.js +19 -19
- package/src/treemap/model/interface.d.ts +17 -17
- package/src/treemap/model/pdf-export.js +2 -2
- package/src/treemap/model/theme.js +2 -2
- package/src/treemap/treemap-model.d.ts +221 -221
- package/src/treemap/treemap.d.ts +2 -1
- package/src/treemap/treemap.js +51 -46
- package/src/treemap/user-interaction/highlight-selection.js +12 -12
- package/src/treemap/user-interaction/tooltip.js +14 -10
- package/src/treemap/utils/enum.d.ts +5 -1
- package/src/treemap/utils/helper.js +5 -5
- package/.eslintrc.json +0 -244
- package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -72
- package/.github/PULL_REQUEST_TEMPLATE/Feature.md +0 -49
- package/dist/global/ej2-treemap.min.js +0 -11
- package/dist/global/ej2-treemap.min.js.map +0 -1
- package/dist/global/index.d.ts +0 -14
- package/tslint.json +0 -111
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-treemap.es5.js","sources":["../../src/treemap/model/constants.js","../../src/treemap/model/base.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","../../src/treemap/index.js","../../src/index.js"],"sourcesContent":["/**\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 component.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","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 component.\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 component.\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 component.\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('Normal')\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 common title of the treemap component.\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 component.\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({ size: '14px' }, 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 component.\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({ size: '15px' }, 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 component.\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 component.\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: '13px' }, 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: '#000000', width: 0 }, 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: '14px' }, 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 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 component.\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: '12px' }, 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 component.\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({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: '13px' }, 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 component.\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 levels of the treemap component.\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' }, 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","import { createElement, compile, merge, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Create the class for size\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 };\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 * @param {string} id - Specifies the id.\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 = 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 * Map internal class for Point\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 */\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}\nexport function createTextStyle(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderer, 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 - Specifes the html element\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 && !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}\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}\nexport function getElement(id) {\n return document.getElementById(id);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 : 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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findChildren(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTemplateFunction(template) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var e;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId,\n styles: 'position: absolute;pointer-events: auto;'\n });\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n templateHtml = templateHtml.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\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 elementRect = treemap.element.getBoundingClientRect();\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}\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}\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\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}\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}\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}\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}\nexport function colorMap(colorMapping, equalValue, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvalue, weightValuePath) {\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) && (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) || (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) || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity) && fill) {\n opacity = deSaturationColor(weightValuePath, colorMapping[i], fill, 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}\nexport function deSaturationColor(weightValuePath, colorMapping, color, 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}\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\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}\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var prev1;\n var full = nextOffset - previousOffset;\n var midColor;\n var midreturn;\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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}\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}\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\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}\nexport function textWrap(maxWidth, label, font) {\n var text = label;\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 hideText\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}\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}\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 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}\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n legendGroup.childNodes[j].setAttribute('fill', treemap.selectionSettings.fill);\n legendGroup.childNodes[j].setAttribute('stroke', treemap.selectionSettings.border.color);\n legendGroup.childNodes[j].setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendGroup.childNodes[j].setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\nexport function removeClassNames(elements, type, treemap) {\n var opacity;\n var process = true;\n var element;\n var stroke;\n var strokeWidth;\n var fill;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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[element.id.split('_')[6]]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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}\nexport function formatValue(value, treemap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 - Specifes 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 exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 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 * @param {string} label - Specifies the label\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var functionName = 'Path';\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n htmlElement.setAttribute('aria-label', label);\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 * Ajax support for treemap\n */\nvar TreeMapAjax = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeShape(collection, value) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeLegend(collection, value) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n var dataCount = item['ShapeCollection']['Elements'].length;\n for (var k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection, 'highlight');\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getLegendIndex(length, item, treemap) {\n var index;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (var j = 0; j < dataLength; j++) {\n if (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\nexport function pushCollection(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ncollection, index, number, legendElement, shapeElement, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderItems, 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 */\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}\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 } from '@syncfusion/ej2-base';\nimport { Location, findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\nimport { LevelsData } from './../treemap';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 (LevelsData.levelsData && LevelsData.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(LevelsData.levelsData[0], [])[0] : LevelsData.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 || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(y || LevelsData.levelsData[0]);\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 || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(data || LevelsData.levelsData[0]);\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 ? 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 groupIndex = 0;\n var isLeafItem = false;\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 : (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 headerHeight;\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 gap;\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 dataSum = 0;\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum_1 = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum_1 += data[i_1]['weight'];\n }\n var multiplier = area / dataSum_1;\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(parentItemGroupname);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.renderLayoutItems = function (renderData) {\n var _this = this;\n var textCollection = [];\n var position;\n var treeMap = this.treemap;\n var colorMapping;\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 trimHeader;\n var textLocation = new Location(0, 0);\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 textSize;\n var fill;\n var item;\n var renderText;\n var opacity;\n var padding = 5;\n var rectPath = '';\n var isRender;\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var textOptions;\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 level;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template',\n styles: '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 });\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 ? 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 colorMapping = isLeafItem ? leaf.colorMapping : levels[index].colorMapping;\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 textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\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']\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 _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 templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n itemGroup.setAttribute('aria-label', item['name']);\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\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 };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var level;\n var headerPosition;\n var secondaryEle = document.getElementById(this.treemap.element.id + '_Secondary_Element');\n var leaf = this.treemap.leafItemSettings;\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var templateEle;\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(LevelsData.defaultLevelsData)) {\n if (LevelsData.defaultLevelsData.length > 0) {\n LevelsData.levelsData = LevelsData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(LevelsData.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'][this.treemap.equalColorValuePath], item['data'][this.treemap.rangeColorValuePath], item['data'][this.treemap.weightValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\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] : 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\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'])) {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\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 var labelEle = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelEle, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelEle.style.left = templateLocation.x + 'px';\n labelEle.style.top = templateLocation.y + 'px';\n return labelEle;\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 return LayoutPanel;\n}());\nexport { LayoutPanel };\n","/**\n * Maps Themes doc\n */\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 subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluentui':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentuidark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n }\n return style;\n}\n","import { print as printWindow, createElement } 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/explicit-member-accessibility\n function Print(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (elements) {\n var _this = this;\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, _this.printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (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 div.appendChild(this.control.element.cloneNode(true));\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 legend.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance\n * @returns {void}\n * @private\n */\n Print.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser } 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/explicit-member-accessibility\n function ImageExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\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 (type, fileName, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': _this.control.availableSize.height.toString(),\n 'width': _this.control.availableSize.width.toString()\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 _this.control.svgObject.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(_this.control.svgObject)], { 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 * @param {TreeMap} treemap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n ImageExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined, Browser } 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/explicit-member-accessibility\n function PdfExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\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 component.\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 (type, fileName, orientation, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': _this.control.availableSize.width.toString(),\n 'height': _this.control.availableSize.height.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = _this.control.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((_this.control.theme === 'Tailwind' || _this.control.theme === 'TailwindDark' || _this.control.theme === 'Bootstrap5' || _this.control.theme === 'Bootstrap5Dark')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 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, (_this.control.availableSize.width - 60), _this.control.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 ImageExport.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n PdfExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable brace-style */\n/* eslint-disable max-len */\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, Ajax } 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 } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, 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 component.\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 /**s\n * Constructor for TreeMap component.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 LevelsData.levelsData = null;\n LevelsData.defaultLevelsData = null;\n LevelsData.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(LevelsData.levelsData)) {\n LevelsData.defaultLevelsData = LevelsData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var ajaxModule;\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 ajaxModule = new Ajax(localAjax.dataOptions, localAjax.type, localAjax.async, localAjax.contentType);\n ajaxModule.onSuccess = function (args) {\n _this.dataSource = JSON.parse('[' + args + ']')[0];\n _this.renderTreeMapElements();\n };\n ajaxModule.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 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 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 styles: 'position: absolute;z-index:1;'\n });\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)) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * @private\n * Render the treemap border\n *\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 = title.textStyle;\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n title.textStyle.fontFamily = this.themeStyle.fontFamily || title.textStyle.fontFamily;\n title.textStyle.size = this.themeStyle.fontSize || title.textStyle.size;\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, 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 || title.text);\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).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 LevelsData.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, dataIndex) {\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], 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 LevelsData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n LevelsData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.hierarchyData = extend([], this.dataSource, LevelsData.hierarchyData, true);\n for (var i = 0; i < LevelsData.hierarchyData.length; i++) {\n this.processHierarchicalData(LevelsData.hierarchyData[i], i);\n }\n LevelsData.levelsData = LevelsData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (LevelsData.levelsData.length > 1) {\n this.reOrderLevelData(LevelsData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(LevelsData.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 var levelData = [];\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var level;\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 level = this.levels[i];\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 === LevelsData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < LevelsData.hierarchyData.length; k++) {\n childData = findChildren(LevelsData.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 LevelsData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = LevelsData.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 /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param id - Specifies the element to print the treemap.\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param type - Specifies the index of the axis.\n * @param fileName - Specifies file name for exporting the rendered treemap.\n * @param orientation - Specifies the orientation of the pdf document.\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\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(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\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(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 childGroupPath;\n var orderNames = [];\n var process = false;\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 LevelsData.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_1 = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath_1]) + ((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\n LevelsData.levelsData[LevelsData.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 start - Specifies the start value of the treemap level.\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 = LevelsData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = LevelsData.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]) ? [] : 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(LevelsData.levelsData[LevelsData.levelsData.length - 1][currentPath], 'Child');\n LevelsData.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 processData - Specifies the treemap data.\n * @param type - Specifies the type of the data.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var totalWeight;\n var childData = [];\n var levelName;\n var start = 0;\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 */\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.resizeOnTreeMap);\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 window.addEventListener('resize', this.resizeOnTreeMap.bind(this));\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('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param e - Specifies the pointer event.\n */\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n this.isResize = true;\n var args = {\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.currentSize = _this.availableSize;\n _this.trigger(resize, args, function (observedArgs) {\n _this.render();\n });\n }, 500);\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param e - Specifies the mouse click event in the treemap.\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('_')[6]);\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.innerHTML = 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 e - Specifies the pointer event of mouse click.\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 e - Specifies the pointer event of mouse click.\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 e - Specifies the pointer event of mouse click.\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 e - Specifies the pointer event of mouse click.\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('_')[6])];\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 this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param labelText - Specifies the label text.\n * @param item - Specifies the treemap item.\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 labelText - Specifies the label text in treemap\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param directLevel - Specifies the current level.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (labelText, 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 drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param i - Specifies the treemap item.\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 e - Specifies the pointer event of mouse.\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('_')[6]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.innerHTML;\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(labelText, 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(newDrillItem);\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 e - Specifies the pointer event of mouse.\n */\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 removeShape(this.treeMapHighlightModule.shapeHighlightCollection, 'highlight');\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 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 });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, 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 TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\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 * Gets component name.\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method is used to dispose the treemap component.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\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 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(1)\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","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable max-len */\nimport { LevelsData } from '../treemap';\nimport { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } 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 // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapLegend(treemap) {\n this.page = 0;\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n this.heightIncrement = 0;\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 // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\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 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 // eslint-disable-next-line no-underscore-dangle\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n // eslint-disable-next-line no-underscore-dangle\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(LevelsData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(this.treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(LevelsData.levelsData[0], 'Parent');\n }\n if (this.legendCollections.length > 0) {\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = 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 = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var rectWidth = void 0;\n var rectHeight = void 0;\n var itemTextStyle = legend.textStyle;\n var legendLength = this.legendCollections.length;\n legend.textStyle.size = treemap.themeStyle.legendFontSize || legend.textStyle.size;\n legend.textStyle.fontFamily = treemap.themeStyle.fontFamily || legend.textStyle.fontFamily;\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(legendItem['legendName'], legend.textStyle);\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 itemTextStyle_1 = legend.textStyle;\n var legendLength_1 = this.legendCollections.length;\n var rectWidth_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength_1) :\n (legendWidth / legendLength_1) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength_1) : (legendHeight / legendLength_1);\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_1) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight_1);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle_1);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth_1 : rectHeight_1), legendText, itemTextStyle_1);\n itemTextSize = measureText(legendText, itemTextStyle_1);\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_1 / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight_1 + (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_1 + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight_1 / 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 - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth_1) - itemStartX) :\n (rectWidth_1 + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight_1 + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight_1) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth_1, height: rectHeight_1, 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, type) {\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 legendFillColor = childElement['data']['options']['fill'];\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 });\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 itemValue;\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 _i = 0, colorMapping_1 = colorMapping; _i < colorMapping_1.length; _i++) {\n var colorMap = colorMapping_1[_i];\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,\n legendName: legendText, legendFill: fill, legendData: [],\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 && !isDuplicate) {\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 if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\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 TreeMapLegend.prototype.drawLegend = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var render = treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: 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 = treemap.element.id + '_Legend_Index_' + i;\n var textId = 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 (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (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 textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['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 renderOptions;\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 legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\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 this_1.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, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || _this.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 };\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 textOptions;\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 renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 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 treemap = this.treemap;\n var legend = treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = 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(treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To rendered the interactive pointer\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 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 rect = void 0;\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('_')[6])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect_1 = 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'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (var j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect_1);\n break;\n }\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 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 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 // eslint-disable-next-line valid-jsdoc\n /**\n * To change the next page\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 this.drawLegend();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Wire events for event handler\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 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 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 // eslint-disable-next-line valid-jsdoc\n /**\n * Get module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @param {TreeMap} treemap - Specifies treemap instance\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the gradient color for interactive legend.\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 } 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 // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 /* eslint-disable max-len */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in highlight\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 if (targetId.indexOf('_Item_Index') > -1 && (selectionModule ? this.treemap.selectionId !== targetId : true)) {\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('_')[6])];\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 = getLegendIndex(length_1, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById('container_Legend_Shape_Index_' + index) : document.getElementById('container_Legend_Index_' + index);\n if (this.shapeElement !== null && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeShape(this.shapeHighlightCollection, 'highlight');\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 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 }\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 ? this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n item = treemap.layout.renderItems[element.id.split('_')[6]];\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 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) {\n if (this.treemap.legendSettings.visible && (selectionModule ? selectionModule.legendSelectId !== targetId : true) && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.shapeTarget = 'highlight';\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_')[4]) : parseFloat(targetId.split('_')[3]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][i]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName']) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById('container_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, legendIndex, 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 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 ? selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, 'highlight');\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 * @param {TreeMap} treeMap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in selection\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n treemap.levelSelection = [];\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 opacity;\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 if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId && this.legendSelect) {\n treeMapElement = document.getElementById(layoutID);\n item = treemap.layout.renderItems[parseFloat(targetId.split('_')[6])];\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 removeShape(this.shapeSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById('container_Legend_Shape_Index_' + index) : document.getElementById('container_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 setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = treemap.layout.renderItems[element.id.split('_')[6]];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n treemap.levelSelection.push(element.id);\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 removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_')[4]) : parseFloat(targetId.split('_')[3]);\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 (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('container_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (k === 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 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 this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, 'Selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n }\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[element.id.split('_')[6]];\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, 'selection');\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById('container_Legend_Shape_Index_' + index) : document.getElementById('container_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, 'selection');\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 * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function (treeMap) {\n this.removeEventListener();\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 } 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 // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 toolTipHeader;\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('_')[6])];\n if (!isNullOrUndefined(item)) {\n toolTipHeader = item['name'];\n value = item['weight'];\n toolTipData = item['data'];\n markerFill = item['options']['fill'];\n if (this.treemap.enableRtl) {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\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 styles: 'position: absolute;pointer-events:none;'\n });\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.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\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 enable: true,\n header: '',\n data: args['data'],\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 });\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 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 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 * @param {TreeMap} treeMap - Specifies the instance of the treemap\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function (treeMap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n","/**\n * export all modules from treemap component\n */\nexport * from './treemap';\nexport * from './model/base';\nexport * from './model/constants';\nexport * from './model/theme';\nexport * from './utils/helper';\nexport * from './layout/legend';\nexport * from './layout/render-panel';\nexport * from './user-interaction/highlight-selection';\nexport * from './user-interaction/tooltip';\nexport * from './model/image-export';\nexport * from './model/pdf-export';\nexport * from './model/print';\n","/**\n * exporting all modules from tree map index\n */\nexport * from './treemap/index';\n"],"names":["__extends","this","__decorate","printWindow","colorMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-treemap.es5.js","sources":["../../src/treemap/model/constants.js","../../src/treemap/model/base.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","../../src/treemap/index.js","../../src/index.js"],"sourcesContent":["/**\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 component.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\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 component.\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 component.\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 component.\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('Normal')\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 common title of the treemap component.\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 component.\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({ size: '14px' }, 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 component.\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({ size: '15px' }, 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 component.\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 component.\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: '13px' }, 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: '#000000', width: 0 }, 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: '14px' }, 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 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 component.\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: '12px' }, 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 component.\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({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: '13px' }, 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 component.\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 levels of the treemap component.\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' }, 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","import { createElement, compile, merge, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Create the class for size\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 };\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 * @param {string} id - Specifies the id.\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 = 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 * Map internal class for Point\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 */\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}\nexport function createTextStyle(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderer, 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 - Specifes the html element\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 && !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}\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}\nexport function getElement(id) {\n return document.getElementById(id);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 : 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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findChildren(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTemplateFunction(template) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var e;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId,\n styles: 'position: absolute;pointer-events: auto;'\n });\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n templateHtml = templateHtml.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\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 elementRect = treemap.element.getBoundingClientRect();\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}\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}\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\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}\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}\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}\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}\nexport function colorMap(colorMapping, equalValue, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvalue, weightValuePath) {\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) && (colorMapping[i].value.toString() === 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) || (colorMapping[i].value.toString() === equalValue)) {\n if (colorMapping[i].value.toString() === 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) || (colorMapping[i].value.toString() === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity) && fill) {\n opacity = deSaturationColor(weightValuePath, colorMapping[i], fill, 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}\nexport function deSaturationColor(weightValuePath, colorMapping, color, 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}\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\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}\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var prev1;\n var full = nextOffset - previousOffset;\n var midColor;\n var midreturn;\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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}\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}\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\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}\nexport function textWrap(maxWidth, label, font) {\n var text = label;\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 hideText\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}\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}\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 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}\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n legendGroup.childNodes[j].setAttribute('fill', treemap.selectionSettings.fill);\n legendGroup.childNodes[j].setAttribute('stroke', treemap.selectionSettings.border.color);\n legendGroup.childNodes[j].setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendGroup.childNodes[j].setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\nexport function removeClassNames(elements, type, treemap) {\n var opacity;\n var process = true;\n var element;\n var stroke;\n var strokeWidth;\n var fill;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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}\nexport function formatValue(value, treemap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 - Specifes 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 exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 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 * @param {string} label - Specifies the label\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var functionName = 'Path';\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n htmlElement.setAttribute('aria-label', label);\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 * Ajax support for treemap\n */\nvar TreeMapAjax = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeShape(collection, value) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeLegend(collection, value) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n var dataCount = item['ShapeCollection']['Elements'].length;\n for (var k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection, 'highlight');\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getLegendIndex(length, item, treemap) {\n var index;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (var j = 0; j < dataLength; j++) {\n if (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\nexport function pushCollection(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ncollection, index, number, legendElement, shapeElement, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderItems, 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 */\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}\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 } from '@syncfusion/ej2-base';\nimport { Location, findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\nimport { LevelsData } from './../treemap';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 (LevelsData.levelsData && LevelsData.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(LevelsData.levelsData[0], [])[0] : LevelsData.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 || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(y || LevelsData.levelsData[0]);\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 || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(data || LevelsData.levelsData[0]);\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 ? 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 groupIndex = 0;\n var isLeafItem = false;\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 : (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 headerHeight;\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 gap;\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 dataSum = 0;\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum_1 = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum_1 += data[i_1]['weight'];\n }\n var multiplier = area / dataSum_1;\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(parentItemGroupname);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.renderLayoutItems = function (renderData) {\n var _this = this;\n var textCollection = [];\n var position;\n var treeMap = this.treemap;\n var colorMapping;\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 trimHeader;\n var textLocation = new Location(0, 0);\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 textSize;\n var fill;\n var item;\n var renderText;\n var opacity;\n var padding = 5;\n var rectPath = '';\n var isRender;\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var textOptions;\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 level;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template',\n styles: '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 });\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 ? 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 colorMapping = isLeafItem ? leaf.colorMapping : levels[index].colorMapping;\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 textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\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']\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 _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 templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n itemGroup.setAttribute('aria-label', item['name']);\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\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 };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var level;\n var headerPosition;\n var secondaryEle = document.getElementById(this.treemap.element.id + '_Secondary_Element');\n var leaf = this.treemap.leafItemSettings;\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var templateEle;\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(LevelsData.defaultLevelsData)) {\n if (LevelsData.defaultLevelsData.length > 0) {\n LevelsData.levelsData = LevelsData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(LevelsData.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'][this.treemap.equalColorValuePath], item['data'][this.treemap.rangeColorValuePath], item['data'][this.treemap.weightValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\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] : 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\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'])) {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\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 var labelEle = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelEle, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelEle.style.left = templateLocation.x + 'px';\n labelEle.style.top = templateLocation.y + 'px';\n return labelEle;\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 return LayoutPanel;\n}());\nexport { LayoutPanel };\n","/**\n * Maps Themes doc\n */\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 subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n }\n return style;\n}\n","import { print as printWindow, createElement } 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/explicit-member-accessibility\n function Print(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (elements) {\n var _this = this;\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, _this.printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (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 div.appendChild(this.control.element.cloneNode(true));\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 legend.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance\n * @returns {void}\n * @private\n */\n Print.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser } 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/explicit-member-accessibility\n function ImageExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\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 (type, fileName, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': _this.control.availableSize.height.toString(),\n 'width': _this.control.availableSize.width.toString()\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 _this.control.svgObject.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(_this.control.svgObject)], { 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 * @param {TreeMap} treemap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n ImageExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined, Browser } 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/explicit-member-accessibility\n function PdfExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\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 component.\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 (type, fileName, orientation, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': _this.control.availableSize.width.toString(),\n 'height': _this.control.availableSize.height.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = _this.control.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((_this.control.theme === 'Tailwind' || _this.control.theme === 'TailwindDark' || _this.control.theme === 'Bootstrap5' || _this.control.theme === 'Bootstrap5Dark'\n || _this.control.theme === 'Fluent' || _this.control.theme === 'FluentDark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 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, (_this.control.availableSize.width - 60), _this.control.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 ImageExport.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n PdfExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable brace-style */\n/* eslint-disable max-len */\n/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Component, NotifyPropertyChanges, Property, extend, Ajax } 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 } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, 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 component.\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 /**s\n * Constructor for TreeMap component.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 LevelsData.levelsData = null;\n LevelsData.defaultLevelsData = null;\n LevelsData.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(LevelsData.levelsData)) {\n LevelsData.defaultLevelsData = LevelsData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var ajaxModule;\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 ajaxModule = new Ajax(localAjax.dataOptions, localAjax.type, localAjax.async, localAjax.contentType);\n ajaxModule.onSuccess = function (args) {\n _this.dataSource = JSON.parse('[' + args + ']')[0];\n _this.renderTreeMapElements();\n };\n ajaxModule.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 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 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 styles: 'position: absolute;z-index:1;'\n });\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)) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * @private\n * Render the treemap border\n *\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 = title.textStyle;\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n title.textStyle.fontFamily = this.themeStyle.fontFamily || title.textStyle.fontFamily;\n title.textStyle.size = this.themeStyle.fontSize || title.textStyle.size;\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, 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 || title.text);\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).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 LevelsData.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, dataIndex) {\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], 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 LevelsData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n LevelsData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.hierarchyData = extend([], this.dataSource, LevelsData.hierarchyData, true);\n for (var i = 0; i < LevelsData.hierarchyData.length; i++) {\n this.processHierarchicalData(LevelsData.hierarchyData[i], i);\n }\n LevelsData.levelsData = LevelsData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (LevelsData.levelsData.length > 1) {\n this.reOrderLevelData(LevelsData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(LevelsData.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 var levelData = [];\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var level;\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 level = this.levels[i];\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 === LevelsData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < LevelsData.hierarchyData.length; k++) {\n childData = findChildren(LevelsData.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 LevelsData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = LevelsData.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 /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param id - Specifies the element to print the treemap.\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param type - Specifies the index of the axis.\n * @param fileName - Specifies file name for exporting the rendered treemap.\n * @param orientation - Specifies the orientation of the pdf document.\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\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(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\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(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 childGroupPath;\n var orderNames = [];\n var process = false;\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 LevelsData.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_1 = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath_1]) + ((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\n LevelsData.levelsData[LevelsData.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 start - Specifies the start value of the treemap level.\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 = LevelsData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = LevelsData.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]) ? [] : 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(LevelsData.levelsData[LevelsData.levelsData.length - 1][currentPath], 'Child');\n LevelsData.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 processData - Specifies the treemap data.\n * @param type - Specifies the type of the data.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var totalWeight;\n var childData = [];\n var levelName;\n var start = 0;\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 */\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('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param e - Specifies the pointer event.\n */\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 e - Specifies the mouse click event in the treemap.\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.innerHTML = 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 e - Specifies the pointer event of mouse click.\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 e - Specifies the pointer event of mouse click.\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 e - Specifies the pointer event of mouse click.\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 e - Specifies the pointer event of mouse click.\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 this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param labelText - Specifies the label text.\n * @param item - Specifies the treemap item.\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 labelText - Specifies the label text in treemap\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param directLevel - Specifies the current level.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (labelText, 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 drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param i - Specifies the treemap item.\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 e - Specifies the pointer event of mouse.\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.innerHTML;\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(labelText, 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(newDrillItem);\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 e - Specifies the pointer event of mouse.\n */\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 removeShape(this.treeMapHighlightModule.shapeHighlightCollection, 'highlight');\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 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 });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, 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 TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\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 * Gets component name.\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method is used to dispose the treemap component.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\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 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(1)\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","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable max-len */\nimport { LevelsData } from '../treemap';\nimport { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } 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 // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapLegend(treemap) {\n this.page = 0;\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n this.heightIncrement = 0;\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 // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\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 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 // eslint-disable-next-line no-underscore-dangle\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n // eslint-disable-next-line no-underscore-dangle\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(LevelsData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(this.treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(LevelsData.levelsData[0], 'Parent');\n }\n if (this.legendCollections.length > 0) {\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = 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 = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var rectWidth = void 0;\n var rectHeight = void 0;\n var itemTextStyle = legend.textStyle;\n var legendLength = this.legendCollections.length;\n legend.textStyle.size = treemap.themeStyle.legendFontSize || legend.textStyle.size;\n legend.textStyle.fontFamily = treemap.themeStyle.fontFamily || legend.textStyle.fontFamily;\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(legendItem['legendName'], legend.textStyle);\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 itemTextStyle_1 = legend.textStyle;\n var legendLength_1 = this.legendCollections.length;\n var rectWidth_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength_1) :\n (legendWidth / legendLength_1) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength_1) : (legendHeight / legendLength_1);\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_1) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight_1);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle_1);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth_1 : rectHeight_1), legendText, itemTextStyle_1);\n itemTextSize = measureText(legendText, itemTextStyle_1);\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_1 / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight_1 + (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_1 + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight_1 / 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 - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth_1) - itemStartX) :\n (rectWidth_1 + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight_1 + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight_1) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth_1, height: rectHeight_1, 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, type) {\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 legendFillColor = childElement['data']['options']['fill'];\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 });\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 itemValue;\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 _i = 0, colorMapping_1 = colorMapping; _i < colorMapping_1.length; _i++) {\n var colorMap = colorMapping_1[_i];\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,\n legendName: legendText, legendFill: fill, legendData: [],\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 && !isDuplicate) {\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 if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\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 TreeMapLegend.prototype.drawLegend = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var render = treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: 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 = treemap.element.id + '_Legend_Index_' + i;\n var textId = 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 (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (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 textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['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 renderOptions;\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 legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\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 this_1.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, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || _this.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 };\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 textOptions;\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 renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 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 treemap = this.treemap;\n var legend = treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = 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(treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To rendered the interactive pointer\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 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 rect = void 0;\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; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect_1 = 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'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (var j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect_1);\n break;\n }\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 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 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 // eslint-disable-next-line valid-jsdoc\n /**\n * To change the next page\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 this.drawLegend();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Wire events for event handler\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 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 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 // eslint-disable-next-line valid-jsdoc\n /**\n * Get module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @param {TreeMap} treemap - Specifies treemap instance\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the gradient color for interactive legend.\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 } 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 // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 /* eslint-disable max-len */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in highlight\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 if (targetId.indexOf('_Item_Index') > -1 && (selectionModule ? this.treemap.selectionId !== targetId : true)) {\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 = 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 if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeShape(this.shapeHighlightCollection, 'highlight');\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 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 }\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 ? this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\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 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) {\n if (this.treemap.legendSettings.visible && (selectionModule ? selectionModule.legendSelectId !== targetId : true) && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.shapeTarget = 'highlight';\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][i]['levelOrderName'] === this.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) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, legendIndex, 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 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 ? selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, 'highlight');\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 * @param {TreeMap} treeMap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in selection\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n treemap.levelSelection = [];\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 opacity;\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 if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId && this.legendSelect) {\n treeMapElement = document.getElementById(layoutID);\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\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 removeShape(this.shapeSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = 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 setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n treemap.levelSelection.push(element.id);\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 removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : 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 (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 if (k === 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 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 this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, 'Selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n }\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, 'selection');\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, 'selection');\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 * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n};\r\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined } 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 // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\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 toolTipHeader;\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 toolTipHeader = item['name'];\n value = item['weight'];\n toolTipData = item['data'];\n markerFill = item['options']['fill'];\n if (this.treemap.enableRtl) {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\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 styles: 'position: absolute;pointer-events:none;'\n });\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.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\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 enable: true,\n header: '',\n data: args['data'],\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 });\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 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 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 * @param {TreeMap} treeMap - Specifies the instance of the treemap\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function (treeMap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n","/**\n * export all modules from treemap component\n */\nexport * from './treemap';\nexport * from './model/base';\nexport * from './model/constants';\nexport * from './model/theme';\nexport * from './utils/helper';\nexport * from './layout/legend';\nexport * from './layout/render-panel';\nexport * from './user-interaction/highlight-selection';\nexport * from './user-interaction/tooltip';\nexport * from './model/image-export';\nexport * from './model/pdf-export';\nexport * from './model/print';\n","/**\n * exporting all modules from tree map index\n */\nexport * from './treemap/index';\n"],"names":["__extends","this","__decorate","printWindow","colorMap"],"mappings":"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"}
|