@syncfusion/ej2-treemap 27.2.2 → 28.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-treemap.es2015.js","sources":["../src/es6/treemap/model/constants.js","../src/es6/treemap/model/base.js","../src/es6/treemap/utils/helper.js","../src/es6/treemap/layout/render-panel.js","../src/es6/treemap/model/theme.js","../src/es6/treemap/model/print.js","../src/es6/treemap/model/image-export.js","../src/es6/treemap/model/pdf-export.js","../src/es6/treemap/treemap.js","../src/es6/treemap/layout/legend.js","../src/es6/treemap/user-interaction/highlight-selection.js","../src/es6/treemap/user-interaction/tooltip.js"],"sourcesContent":["/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport const load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport const loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport const beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport const itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport const drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport const drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport const itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport const itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport const tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport const itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport const itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport const click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport const doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport const rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport const mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport const legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport const legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport const resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport const defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nexport class Border extends ChildProperty {\n}\n__decorate([\n Property('#808080')\n], Border.prototype, \"color\", void 0);\n__decorate([\n Property(0)\n], Border.prototype, \"width\", void 0);\n/**\n * Sets and gets the margin for the treemap.\n */\nexport class Margin extends ChildProperty {\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/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nexport class Font extends ChildProperty {\n}\n__decorate([\n Property(null)\n], Font.prototype, \"size\", void 0);\n__decorate([\n Property(null)\n], Font.prototype, \"color\", void 0);\n__decorate([\n Property(defaultFont)\n], Font.prototype, \"fontFamily\", void 0);\n__decorate([\n Property('')\n], Font.prototype, \"fontWeight\", void 0);\n__decorate([\n Property('Normal')\n], Font.prototype, \"fontStyle\", void 0);\n__decorate([\n Property(1)\n], Font.prototype, \"opacity\", void 0);\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nexport class CommonTitleSettings extends ChildProperty {\n}\n__decorate([\n Property('')\n], CommonTitleSettings.prototype, \"text\", void 0);\n__decorate([\n Property('')\n], CommonTitleSettings.prototype, \"description\", void 0);\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nexport class SubTitleSettings extends CommonTitleSettings {\n}\n__decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n], SubTitleSettings.prototype, \"textStyle\", void 0);\n__decorate([\n Property('Center')\n], SubTitleSettings.prototype, \"alignment\", void 0);\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nexport class TitleSettings extends CommonTitleSettings {\n}\n__decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n], TitleSettings.prototype, \"textStyle\", void 0);\n__decorate([\n Property('Center')\n], TitleSettings.prototype, \"alignment\", void 0);\n__decorate([\n Complex({}, SubTitleSettings)\n], TitleSettings.prototype, \"subtitleSettings\", void 0);\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nexport class ColorMapping extends ChildProperty {\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/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nexport class LegendSettings extends ChildProperty {\n}\n__decorate([\n Property(false)\n], LegendSettings.prototype, \"visible\", void 0);\n__decorate([\n Property('Default')\n], LegendSettings.prototype, \"mode\", void 0);\n__decorate([\n Property('transparent')\n], LegendSettings.prototype, \"background\", void 0);\n__decorate([\n Property('Circle')\n], LegendSettings.prototype, \"shape\", void 0);\n__decorate([\n Property('')\n], LegendSettings.prototype, \"width\", void 0);\n__decorate([\n Property('')\n], LegendSettings.prototype, \"height\", void 0);\n__decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n], LegendSettings.prototype, \"textStyle\", void 0);\n__decorate([\n Property(null)\n], LegendSettings.prototype, \"fill\", void 0);\n__decorate([\n Property(1)\n], LegendSettings.prototype, \"opacity\", void 0);\n__decorate([\n Property(15)\n], LegendSettings.prototype, \"shapeWidth\", void 0);\n__decorate([\n Property(15)\n], LegendSettings.prototype, \"shapeHeight\", void 0);\n__decorate([\n Property(10)\n], LegendSettings.prototype, \"shapePadding\", void 0);\n__decorate([\n Property(null)\n], LegendSettings.prototype, \"imageUrl\", void 0);\n__decorate([\n Complex({ color: null, width: null }, Border)\n], LegendSettings.prototype, \"border\", void 0);\n__decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n], LegendSettings.prototype, \"shapeBorder\", void 0);\n__decorate([\n Complex({}, CommonTitleSettings)\n], LegendSettings.prototype, \"title\", void 0);\n__decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n], LegendSettings.prototype, \"titleStyle\", void 0);\n__decorate([\n Property('Bottom')\n], LegendSettings.prototype, \"position\", void 0);\n__decorate([\n Property('None')\n], LegendSettings.prototype, \"orientation\", void 0);\n__decorate([\n Property(false)\n], LegendSettings.prototype, \"invertedPointer\", void 0);\n__decorate([\n Property('After')\n], LegendSettings.prototype, \"labelPosition\", void 0);\n__decorate([\n Property('None')\n], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n__decorate([\n Property('Center')\n], LegendSettings.prototype, \"alignment\", void 0);\n__decorate([\n Property({ x: 0, y: 0 })\n], LegendSettings.prototype, \"location\", void 0);\n__decorate([\n Property(null)\n], LegendSettings.prototype, \"showLegendPath\", void 0);\n__decorate([\n Property(null)\n], LegendSettings.prototype, \"valuePath\", void 0);\n__decorate([\n Property(false)\n], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nexport class InitialDrillSettings extends ChildProperty {\n}\n__decorate([\n Property(null)\n], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n__decorate([\n Property(null)\n], InitialDrillSettings.prototype, \"groupName\", void 0);\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nexport class LeafItemSettings extends ChildProperty {\n}\n__decorate([\n Property(null)\n], LeafItemSettings.prototype, \"fill\", void 0);\n__decorate([\n Property(false)\n], LeafItemSettings.prototype, \"autoFill\", void 0);\n__decorate([\n Complex({}, Border)\n], LeafItemSettings.prototype, \"border\", void 0);\n__decorate([\n Property(0)\n], LeafItemSettings.prototype, \"gap\", void 0);\n__decorate([\n Property(10)\n], LeafItemSettings.prototype, \"padding\", void 0);\n__decorate([\n Property(1)\n], LeafItemSettings.prototype, \"opacity\", void 0);\n__decorate([\n Property(true)\n], LeafItemSettings.prototype, \"showLabels\", void 0);\n__decorate([\n Property(null)\n], LeafItemSettings.prototype, \"labelPath\", void 0);\n__decorate([\n Property(null)\n], LeafItemSettings.prototype, \"labelFormat\", void 0);\n__decorate([\n Property('TopLeft')\n], LeafItemSettings.prototype, \"labelPosition\", void 0);\n__decorate([\n Complex({ color: null, size: null, fontFamily: null }, Font)\n], LeafItemSettings.prototype, \"labelStyle\", void 0);\n__decorate([\n Property(null)\n], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n__decorate([\n Property('Center')\n], LeafItemSettings.prototype, \"templatePosition\", void 0);\n__decorate([\n Property('Trim')\n], LeafItemSettings.prototype, \"interSectAction\", void 0);\n__decorate([\n Collection([], ColorMapping)\n], LeafItemSettings.prototype, \"colorMapping\", void 0);\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nexport class TooltipSettings extends ChildProperty {\n}\n__decorate([\n Property(false)\n], TooltipSettings.prototype, \"visible\", void 0);\n__decorate([\n Property('')\n], TooltipSettings.prototype, \"template\", void 0);\n__decorate([\n Property(null)\n], TooltipSettings.prototype, \"format\", void 0);\n__decorate([\n Property(null)\n], TooltipSettings.prototype, \"fill\", void 0);\n__decorate([\n Property(0.75)\n], TooltipSettings.prototype, \"opacity\", void 0);\n__decorate([\n Property(['Circle'])\n], TooltipSettings.prototype, \"markerShapes\", void 0);\n__decorate([\n Complex({ width: null, color: null }, Border)\n], TooltipSettings.prototype, \"border\", void 0);\n__decorate([\n Complex({ fontFamily: null, size: null, fontWeight: null, opacity: null }, Font)\n], TooltipSettings.prototype, \"textStyle\", void 0);\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nexport class SelectionSettings extends ChildProperty {\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/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nexport class HighlightSettings extends ChildProperty {\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/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nexport class LevelSettings extends ChildProperty {\n}\n__decorate([\n Property(null)\n], LevelSettings.prototype, \"groupPath\", void 0);\n__decorate([\n Property(0)\n], LevelSettings.prototype, \"groupGap\", void 0);\n__decorate([\n Property(10)\n], LevelSettings.prototype, \"groupPadding\", void 0);\n__decorate([\n Complex({}, Border)\n], LevelSettings.prototype, \"border\", void 0);\n__decorate([\n Property(null)\n], LevelSettings.prototype, \"fill\", void 0);\n__decorate([\n Property(false)\n], LevelSettings.prototype, \"autoFill\", void 0);\n__decorate([\n Property(1)\n], LevelSettings.prototype, \"opacity\", void 0);\n__decorate([\n Property(true)\n], LevelSettings.prototype, \"showHeader\", void 0);\n__decorate([\n Property(20)\n], LevelSettings.prototype, \"headerHeight\", void 0);\n__decorate([\n Property(null)\n], LevelSettings.prototype, \"headerTemplate\", void 0);\n__decorate([\n Property(null)\n], LevelSettings.prototype, \"headerFormat\", void 0);\n__decorate([\n Property('Near')\n], LevelSettings.prototype, \"headerAlignment\", void 0);\n__decorate([\n Complex({ color: null, size: '13px', fontFamily: null }, Font)\n], LevelSettings.prototype, \"headerStyle\", void 0);\n__decorate([\n Property('TopLeft')\n], LevelSettings.prototype, \"templatePosition\", void 0);\n__decorate([\n Collection([], ColorMapping)\n], LevelSettings.prototype, \"colorMapping\", void 0);\n","import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nexport class Size {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n}\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nexport class Rect {\n constructor(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nexport class RectOption {\n constructor(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}\nexport class PathOption {\n constructor(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}\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n let measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nexport class TextOption {\n constructor(id, x, y, anchor, text, transform = '', baseLine, connectorText) {\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}\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 let label = text;\n let size = measureText(text, font).width;\n if (size > maxWidth) {\n const textLength = text.length;\n for (let i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nexport class Location {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n let 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 const y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n const htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus = false) {\n const 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 const text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n let tspanElement;\n const renderer = new SvgRenderer('');\n let height;\n let htmlObject;\n const breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n const drilledLabel = text;\n const spacing = 5;\n const drillLevelText = drilledLabel.split('#');\n for (let z = 0; z < drillLevelText.length; z++) {\n let drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n const re = /\\s+/g;\n drillText = drillText.replace(re, '&nbsp');\n }\n const 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 (let i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n const itemSelect = targetId.split('_RectPath')[0];\n let itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n let isExist = false;\n let name = '';\n let path;\n const leaf = treemap.leafItemSettings;\n for (let i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n const data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n let children;\n if (data) {\n const keys = Object.keys(data);\n children = {};\n for (let i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n const children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (let i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (let 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 const parentName = data['levelOrderName'].split('#')[0];\n let currentItem;\n for (let i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n let templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n const childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n let elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n let templateHtml = childElement.innerHTML;\n const keys = Object.keys(data);\n for (let i = 0; i < keys.length; i++) {\n const regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n const location = new Location(0, 0);\n const padding = 5;\n const paddings = 2;\n const x = (type === 'Template') ? treemap.areaRect.x : 0;\n const y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n const size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n const measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n const container = convertToContainer(input);\n const width = container.width;\n const height = container.height;\n const result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n const x = rect.x;\n const y = rect.y;\n const width = rect.width;\n const height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n const xOffset = container.x;\n const yOffset = container.y;\n const width = container.width;\n const height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n const elementRect = element.getBoundingClientRect();\n const pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n const pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n const clientTop = element.ownerDocument.documentElement.clientTop;\n const clientLeft = element.ownerDocument.documentElement.clientLeft;\n const positionX = elementRect.left + pageXOffset - clientLeft;\n const positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n let fill;\n const paths = [];\n let opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (let i = 0; i < colorMapping.length; i++) {\n let isEqualColor = false;\n const dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (let j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n let opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n const ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n const gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n let color = '';\n let rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n const previousOffset = colorMap.from;\n const nextOffset = colorMap.to;\n let percent = 0;\n const full = nextOffset - previousOffset;\n let midColor;\n percent = (value - previousOffset) / full;\n let previousColor;\n let 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 const a = full / (colorMap.color.length - 1);\n let b;\n let c;\n const length = colorMap.color.length - 1;\n const splitColorValueOffset = [];\n let splitColor = {};\n for (let j = 1; j < length; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (let i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n const nextColor = next.split('#')[1];\n const prevColor = previous.split('#')[1];\n const r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n const g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n const b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n const full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n const textCollection = dataLabel.split(' ');\n let label = '';\n const labelCollection = [];\n let text;\n for (let i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n const resultText = [];\n let currentLength = 0;\n let totalWidth = measureText(label, font).width;\n const totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (let i = label.length; i > currentLength; i--) {\n const sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n let hideText = text;\n const textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n const elementId = treemap.levelSelection;\n if (elementId) {\n for (let 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}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n const elementId = treemap.legendId;\n if (elementId) {\n for (let i = 0; i < elementId.length; i++) {\n for (let j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n const treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n let element;\n let options = {};\n for (let j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n const keys = Object.keys(data);\n for (const key of keys) {\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n let formatValue;\n let 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 */\nexport class ColorValue {\n constructor(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n}\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n const 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 const 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 const element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n const isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options) {\n const svgRenderer = new SvgRenderer('');\n const temp = renderLegendShape(location, size, shape, options, url);\n const htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n let renderPath;\n let functionName = 'Path';\n const shapeWidth = size.width;\n const shapeHeight = size.height;\n const shapeX = location.x;\n const shapeY = location.y;\n const x = location.x + (-shapeWidth / 2);\n const 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 const eq = 72;\n // eslint-disable-next-line no-case-declarations\n let xValue;\n // eslint-disable-next-line no-case-declarations\n let yValue;\n for (let i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n let isParentItem = false;\n for (let j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nexport class TreeMapAjax {\n constructor(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}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (let i = 0; i < collection.length; i++) {\n const item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection) {\n if (collection.length > 0) {\n for (let j = 0; j < collection.length; j++) {\n const item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n const dataCount = item['ShapeCollection']['Elements'].length;\n for (let k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n let index;\n for (let i = 0; i < length; i++) {\n const dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (let 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}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n const 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 { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nexport class LayoutPanel {\n constructor(treemap) {\n this.treemap = treemap;\n }\n processLayoutPanel() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let data;\n let totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n const count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getDrilldownData(data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const treemap = this.treemap;\n const newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (let 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 (let 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 calculateLayoutItems(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 computeSliceAndDiceDimensional(data, coords) {\n const leafItem = this.treemap.leafItemSettings;\n let rect;\n const groups = this.treemap.levels;\n let groupIndex;\n let isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const children = findChildren(data)['values'];\n let gap;\n let headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (let i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sliceAndDiceProcess(processData, rect) {\n const parentArea = rect.height * rect.width;\n const levels = this.treemap.levels;\n let childValue;\n let alottedValue = 0;\n let totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach((data) => { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach((child) => {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n const isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (let i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const 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 computeSquarifyDimensional(data, coords) {\n const leaf = this.treemap.leafItemSettings;\n let rect;\n const levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child = findChildren(data)['values'];\n let index;\n let padding;\n let 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 (let i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calculateChildrenLayout(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 performRowsLayout(data, currentRow, rect, stack) {\n const dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newStack = stack.concat(newCoordinates);\n return newStack;\n }\n const width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n const currentRowLength = currentRow.length;\n let valueSum = 0;\n for (let i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n const newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n aspectRatio(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 const newRow = currentRow.concat(nextDatum);\n const currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n const newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n findMaxAspectRatio(row, length) {\n const rowLength = row.length;\n let minArea = Infinity;\n let maxArea = -Infinity;\n let sumArea = 0;\n for (let i = 0; i < rowLength; i += 1) {\n const 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 const 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 cutArea(rect, area) {\n const newContainer = convertToContainer(rect);\n const width = newContainer.width;\n const height = newContainer.height;\n const xOffset = newContainer.x;\n const yOffset = newContainer.y;\n if (width >= height) {\n const areaWidth = area / height;\n const newWidth = width - areaWidth;\n const container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n const areaHeight = area / width;\n const newHeight = height - areaHeight;\n const 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 getCoordinates(row, rect) {\n const container = convertToContainer(rect);\n const width = container.width;\n const height = container.height;\n const xOffset = container.x;\n const yOffset = container.y;\n const rowLength = row.length;\n const levels = this.treemap.levels;\n const leaf = this.treemap.leafItemSettings;\n let index;\n let valueSum = 0;\n for (let i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n const areaWidth = valueSum / height;\n const areaHeight = valueSum / width;\n let subXOffset = xOffset;\n let subYOffset = yOffset;\n let padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const coordinates = [];\n let isParent;\n let parentRect;\n for (let i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const 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 const 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 const 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 computeTotalArea(data, area) {\n const dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = [];\n for (let i = 0; i < dataLength; i += 1) {\n const dataLength = data.length;\n let dataSum = 0;\n for (let i = 0; i < dataLength; i += 1) {\n dataSum += data[i]['weight'];\n }\n const multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let datum;\n for (let j = 0; j < dataLength; 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 onDemandProcess(childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let parentItem = {};\n let 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 let 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 const count = this.treemap.levels.length;\n for (let i = 0; i < count; i++) {\n const levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n }\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n renderLayoutItems() {\n let position;\n const treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let txtVisible;\n let getItemColor;\n let eventArgs;\n this.renderer = treeMap.renderer;\n let pathOptions;\n const elementID = treeMap.element.id;\n let index;\n let templatePosition;\n const mode = treeMap.layoutType;\n let rect;\n let format;\n const interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let fill;\n let item;\n let renderText;\n let opacity;\n let rectPath = '';\n const secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n let groupId;\n let templateEle;\n let gap;\n let textStyle;\n const levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n let itemGroup;\n let template;\n let border;\n const templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n let isLeafItem = false;\n const leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let childItems;\n let connectorText;\n for (let i = 0; i < this.renderItems.length; i++) {\n item = this.renderItems[i];\n index = item['groupIndex'];\n if (this.treemap.drillDownView && isNullOrUndefined(this.treemap.currentLevel)\n && index > 0 || this.treemap.drillDownView\n && index > (this.treemap.currentLevel + 1)) {\n continue;\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n const treemapItemRect = this.treemap.totalRect ? convertToContainer(this.treemap.totalRect) : this.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n let levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this.treemap.currentLevel) {\n if (this.treemap.enableBreadcrumb) {\n const re = /#/gi;\n connectorText = '#' + this.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.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n let fontFamily = (isLeafItem ? leaf.labelStyle.fontFamily : levels[index].headerStyle.fontFamily);\n fontFamily = fontFamily || this.treemap.themeStyle.labelFontFamily;\n let size = (isLeafItem ? leaf.labelStyle.size : levels[index].headerStyle.size);\n size = size || this.treemap.themeStyle.labelFontSize;\n let fontWeight = (isLeafItem ? leaf.labelStyle.fontWeight : levels[index].headerStyle.fontWeight);\n fontWeight = fontWeight || this.treemap.themeStyle.fontWeight;\n const color = (isLeafItem ? leaf.labelStyle.color : levels[index].headerStyle.color);\n const fontStyle = (isLeafItem ? leaf.labelStyle.fontStyle : levels[index].headerStyle.fontStyle);\n const textStyleOpacity = (isLeafItem ? leaf.labelStyle.opacity : levels[index].headerStyle.opacity);\n textStyle = {\n fontFamily: fontFamily, size: size, fontWeight: fontWeight, color: color, fontStyle: fontStyle, opacity: textStyleOpacity\n };\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this.treemap, text: renderText,\n currentItem: item, RenderItems: this.renderItems, options: item['options'], textColor: textStyle.color\n };\n this.treemap.trigger(itemRendering, eventArgs, (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 const path = this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], this.treemap) || levelName;\n }\n textStyle.color = eventArgs.textColor ? eventArgs.textColor : textStyle.color;\n this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n if ((this.treemap.enableDrillDown && isLeafItem) || (this.treemap.selectionSettings.enable ||\n this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', this.treemap.tabIndex.toString());\n itemGroup.style.cursor = this.treemap.highlightSettings.enable && !this.treemap.selectionSettings.enable && (this.treemap.enableDrillDown && item['groupIndex'] === (this.treemap.levels.length - 1)) ? 'default' :\n this.treemap.highlightSettings.enable && !this.treemap.selectionSettings.enable && !this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(this.treemap, itemGroup, 'treeMapSelection');\n this.layoutGroup.appendChild(itemGroup);\n }\n });\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n }\n renderItemText(text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n const padding = 5;\n let textSize;\n let textCollection = [];\n let customText;\n const tspanText = [];\n let height = 0;\n let 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 const labelSize = measureText(text, textStyle);\n const drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n const label = text.substring(drillSymbolCount - 1, text.length);\n const drillSymbol = '[+]';\n const drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n const textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n const collection = [];\n let texts = null;\n const maxNumber = [];\n for (let 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 (let 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 const collectionLength = tspanText.length - 1;\n let 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 const 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 getItemColor(isLeafItem, item) {\n const treemap = this.treemap;\n let itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n let itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n const 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 const option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n if (!isNullOrUndefined(option)) {\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n }\n else {\n for (let i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n }\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n getSaturatedColor(color) {\n let saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n const rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n const contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n }\n renderTemplate(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n const templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n const baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const keys = Object.keys(item['data']);\n for (let i = 0; i < keys.length; i++) {\n const regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n let labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const templateFn = getTemplateFunction(template);\n const templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n const templateSize = measureElement(labelElement, secondaryEle);\n const templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n }\n labelInterSectAction(rect, text, textStyle, alignment) {\n let textValue;\n const maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n }\n /**\n *\n * @returns {void}\n * @private\n */\n destroy() {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n }\n}\n","/**\n * Maps Themes doc\n */\nimport { defaultFont } from './constants';\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n let style;\n let color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#212529',\n titleFontWeight: '400',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#DEE2E6',\n titleFontWeight: '400',\n subTitleFontColor: '#DEE2E6',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#DEE2E6',\n legendTextColor: '#DEE2E6',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#242424',\n titleFontWeight: '600',\n subTitleFontColor: '#242424',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#242424',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#242424',\n legendTextColor: '#242424',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#292929',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2highcontrast':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#FFF',\n legendBorderWidth: 1,\n tooltipBorderColor: '#FFF',\n tooltipBorderWidth: 1\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n labelFontFamily: defaultFont,\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n }\n return style;\n}\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nexport class Print {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n constructor(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n print(treeMap, elements) {\n const printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n const argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, () => {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n }\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n getHTMLContent(treeMap, elements) {\n const div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach((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 const exportElement = treeMap.element.cloneNode(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n const backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n }\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n getModuleName() {\n // Returns te module name\n return 'Print';\n }\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n destroy() { }\n}\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nexport class ImageExport {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n constructor(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n export(treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const promise = new Promise((resolve, reject) => {\n const element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n const exportElement = treeMap.svgObject.cloneNode(true);\n const backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n const backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n const isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n const svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n const url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n const image = new Image();\n const context = element.getContext('2d');\n image.onload = (() => {\n context.drawImage(image, 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.src = url;\n }\n });\n return promise;\n }\n getModuleName() {\n // Returns te module name\n return 'ImageExport';\n }\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n destroy() { }\n}\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nexport class PdfExport {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n constructor(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n export(treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const promise = new Promise((resolve, reject) => {\n const element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n const exportElement = treeMap.svgObject.cloneNode(true);\n const backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n const backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n const url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n const image = new Image();\n const context = element.getContext('2d');\n image.onload = (() => {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n const document = new PdfDocument();\n let imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n }\n getModuleName() {\n // Returns te module name\n return 'PdfExport';\n }\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n destroy() { }\n}\n","/**\n * Tree Map Components\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch } 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 control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nlet TreeMap = class TreeMap extends Component {\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n constructor(options, element) {\n super(options, element);\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 }\n preRender() {\n this.trigger(load, { treemap: this }, () => {\n this.initPrivateVariable();\n this.unWireEVents();\n this.createSvg();\n this.wireEVents();\n this.setCulture();\n });\n }\n render() {\n this.renderElements();\n }\n renderElements() {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n }\n processDataManager() {\n let dataModule;\n let queryModule;\n let fetchApiModule;\n let 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 const dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then((e) => {\n this.dataSource = e['result'];\n this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = (args) => {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n const reader = new FileReader();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const treemap = this;\n reader.onload = function () {\n args = JSON.parse(reader.result.toString());\n treemap.dataSource = args;\n treemap.renderTreeMapElements();\n };\n reader.readAsText(args);\n }\n else {\n this.dataSource = args;\n this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n }\n renderTreeMapElements() {\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 createSvg() {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n const containerWidth = this.element.clientWidth;\n const 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 initPrivateVariable() {\n if (this.element.id === '') {\n const 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 createSecondaryElement() {\n const 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 const secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n }\n elementChange() {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n }\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n renderBorder() {\n const width = this.border.width;\n const borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n const 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 renderTitle(title, type, bounds, groupEle) {\n const style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n let height;\n const titlePadding = 10;\n const width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n const trimmedTitle = textTrim(width, title.text, style);\n const elementSize = measureText(trimmedTitle, style);\n const rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n const location = findPosition(rect, title.alignment, elementSize, type);\n const options = new TextOption(this.element.id + '_TreeMap_' + type, location.x, location.y, 'start', trimmedTitle);\n const titleBounds = new Rect(location.x, location.y, elementSize.width, elementSize.height);\n const 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('role', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n }\n processingData() {\n let path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map((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 const data = {};\n data['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data[path] = [];\n for (let i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const 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((currentData) => {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (let i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n }\n checkIsHierarchicalData() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let child;\n this.dataSource = this.dataSource;\n for (let 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 processHierarchicalData(data, dataCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let newData = {};\n let levelIndex;\n const path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n let key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (let i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (let 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 const childItemLevel = childData[j]['levelOrderName'];\n let childLevel;\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((currentData) => {\n this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mainData = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n if (!isNullOrUndefined(mainData)) {\n for (let k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach((currentData) => { mainData.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (let l = 0; l < mainData.length; l++) {\n newData[this.levels[0].groupPath] = mainData;\n mainData[l]['parent'] = newData;\n }\n }\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n print(id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n export(type, fileName, orientation, allowDownload) {\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise((resolve, reject) => {\n resolve(this.pdfExportModule.export(this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise((resolve, reject) => {\n resolve(this.imageExportModule.export(this, type, fileName, allowDownload));\n });\n }\n return null;\n }\n processFlatJsonData() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n let groupPath;\n const orderNames = [];\n for (let 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 const level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (let j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const currentData = {};\n let childName = '';\n if (!isNullOrUndefined(groupPath)) {\n const name = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (let k = 0; k <= i; k++) {\n const childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name) !== -1 : false)) {\n currentData['name'] = name;\n currentData['levelOrderName'] = ((childName) ? childName : name) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name);\n }\n }\n }\n }\n }\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n reOrderLevelData(start) {\n let currentName;\n const currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n const prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (let i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (let j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n }\n IsChildHierarchy(current, previous) {\n let isChild = false;\n for (let i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n }\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n findTotalWeight(processData, type) {\n let totalWeight;\n let split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let groupName;\n const groupObj = {};\n for (let i = 0; i < processData.length; 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.dataSource.forEach((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 }\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n unWireEVents() {\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 wireEVents() {\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 setCulture() {\n this.intl = new Internationalization();\n }\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n addTabIndex() {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n }\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n resizeOnTreeMap(e) {\n if (!this.isDestroyed) {\n this.isResize = true;\n const 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(() => {\n this.unWireEVents();\n this.createSvg();\n this.refreshing = true;\n this.wireEVents();\n args.currentSize = this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.trigger(resize, args, (observedArgs) => {\n this.render();\n this.refreshing = false;\n });\n }, 500);\n }\n }\n }\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n clickOnTreeMap(e) {\n const targetEle = e.target;\n const targetId = targetEle.id;\n let eventArgs;\n let itemIndex;\n const labelText = targetEle.innerHTML;\n const 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, (observedArgs) => {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n const end = new Date().getMilliseconds();\n let doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n }\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n doubleClickOnTreeMap(e) {\n const doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n }\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n rightClickOnTreeMap(e) {\n const rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n }\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n mouseDownOnTreeMap(e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n }\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n mouseMoveOnTreeMap(e) {\n const targetEle = e.target;\n const targetId = targetEle.id;\n let eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n const 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 let childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n else {\n this.element.style.cursor = 'default';\n }\n this.notify(Browser.touchMoveEvent, e);\n }\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calculateSelectedTextLevels(labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n let drillLevel;\n let k;\n let text;\n const levelLabels = item['levelOrderName'];\n const levelText = levelLabels.split('#');\n for (k of Object.keys(levelText)) {\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n }\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calculatePreviousLevelChildItems(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 let text;\n let p = 0;\n let levelItems;\n let text1;\n const drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (let 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 (levelItems of Object['values'](this.layout.renderItems)) {\n const drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n }\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let drillLevelChild;\n const newDrillItem = {};\n const b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n }\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n mouseEndOnTreeMap(e) {\n const targetEle = e.target;\n const targetId = targetEle.id;\n let totalRect;\n let startEvent;\n let endEvent;\n let directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let index;\n let newDrillItem = {};\n let item;\n const process = true;\n const layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n let drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const templateID = this.element.id + '_Label_Template_Group';\n let 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 const labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (let i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n const 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, (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 const 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 const drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n this.layout.calculateLayoutItems(newDrillItem, totalRect);\n this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n }\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n mouseLeaveOnTreeMap(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);\n this.treeMapHighlightModule.highLightId = '';\n }\n }\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n selectItem(levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n let levelOrderName = '';\n for (let 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 requiredModules() {\n const modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this],\n name: 'TreeMapTooltip'\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this],\n name: 'TreeMapHighlight'\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this],\n name: 'TreeMapSelection'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this],\n name: 'TreeMapLegend'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n return modules;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onPropertyChanged(newProp, oldProp) {\n if (!this.isDestroyed) {\n let render = false;\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n }\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n getModuleName() {\n return 'treemap';\n }\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n destroy() {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n super.destroy();\n this.areaRect = null;\n this.themeStyle = null;\n this.totalRect = null;\n this.drilledLegendItems = null;\n this.doubleTapTimer = null;\n this.treemapLevelData = null;\n this.resizeEvent = null;\n this.availableSize = null;\n this.intl = null;\n if (!isNullOrUndefined(this.layout)) {\n this.layout.destroy();\n }\n this.layout = null;\n this.renderer = null;\n }\n removeSvg() {\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 getPersistData() {\n return '';\n }\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(0)\n], TreeMap.prototype, \"tabIndex\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"format\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"load\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"beforePrint\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"loaded\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemRendering\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"drillStart\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"drillEnd\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemSelected\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemHighlight\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"tooltipRendering\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemClick\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemMove\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"click\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"doubleClick\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"rightClick\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"mouseMove\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"resize\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"legendItemRendering\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"legendRendering\", void 0);\nTreeMap = __decorate([\n NotifyPropertyChanges\n], TreeMap);\nexport { TreeMap };\n/**\n * @private\n */\nexport class LevelsData {\n}\n","import { 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 */\nexport class TreeMapLegend {\n constructor(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n /**\n * method for legend\n *\n * @returns {void}\n * @private\n */\n renderLegend() {\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n const 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, (observedArgs) => {\n if (!observedArgs.cancel && observedArgs._changePosition !== this.treemap.legendSettings.position) {\n this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n this.calculateLegendBounds();\n if (this.legendCollections.length > 0) {\n this.drawLegend();\n }\n });\n }\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n calculateLegendBounds() {\n const treemap = this.treemap;\n const legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if (((!isNullOrUndefined(this.treemap.palette) && this.treemap.palette.length > 0) || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort((firstItem, nextItem) => (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort((firstItem, nextItem) => (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort((firstItem, nextItem) => (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0);\n const defaultSize = 25;\n const textPadding = 10;\n const position = legend.position;\n const legendTitle = legend.title.text;\n const titleTextStyle = legend.titleStyle;\n const legendMode = legend.mode;\n let shapeX = 0;\n let shapeY = 0;\n let textX = 0;\n let textY = 0;\n const shapeHeight = legend.shapeHeight;\n const shapeWidth = legend.shapeWidth;\n let shapeLocation = [];\n let textLocation = [];\n const orientation = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n const leftPadding = 10;\n const topPadding = 10;\n const spacing = 10;\n let legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n let legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = titleTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = titleTextStyle.size || treemap.themeStyle.subtitleFontSize;\n const legendTitleSize = measureText(legendTitle, titleTextStyle);\n let startX = 0;\n let startY = 0;\n const shapePadding = legend.shapePadding;\n const itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n let j = 0;\n for (let i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n const legendTextSize = measureText(legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX = shapeX = (leftPadding + (shapeWidth / 2));\n startY = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n const maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation === 'Horizontal') {\n const prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n const 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;\n shapeY = startY;\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 const 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 const nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX;\n shapeY = startY;\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 const collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach((legendObj, index) => {\n const legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX = legendRect.x;\n startY = legendRect.y;\n }\n this.widthIncrement = Math.max(this.widthIncrement, Math.abs(startX - (legendRect.x + legendRect.width)));\n this.heightIncrement = Math.max(this.heightIncrement, Math.abs(startY - (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 const legendLength = this.legendCollections.length;\n const rectWidth = (orientation === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n const rectHeight = (orientation === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX = 0;\n startY = legendTitleSize.height + spacing;\n const textPadding = 10;\n const placement = legend.labelPosition;\n let itemStartX = 0;\n let itemStartY = 0;\n const labelAction = legend.labelDisplayMode;\n let maxTextHeight = 0;\n let maxTextWidth = 0;\n for (let i = 0; i < this.legendCollections.length; i++) {\n startX = (orientation === 'Horizontal') ? (startX + rectWidth) : startX;\n startY = (orientation === 'Horizontal') ? startY : (startY + rectHeight);\n let legendText = this.legendCollections[i]['legendName'];\n let itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation === 'Horizontal') {\n textX = startX + (rectWidth / 2);\n textY = (placement === 'After') ? (startY + rectHeight + (itemTextSize.height / 2)) + textPadding :\n (startY - textPadding);\n }\n else {\n textX = (placement === 'After') ? startX - (itemTextSize.width / 2) - textPadding\n : (startX + rectWidth + itemTextSize.width / 2) + textPadding;\n textY = startY + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation === 'Horizontal') ? startX : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX;\n itemStartY = (orientation === 'Horizontal') ? (placement === 'After') ? startY :\n textY - (itemTextSize.height / 2) : startY;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation === 'Horizontal') ? Math.abs((startX + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding);\n legendHeight = (orientation === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding) :\n Math.abs((startY + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX, y: startY,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n }\n getPageChanged() {\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 findColorMappingLegendItems(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (let 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 findPaletteLegendItems(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let child;\n let 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 const items = findChildren(data)['values'];\n for (let 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 const 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 const parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n let isDuplicate;\n let legendName;\n if (child && child.length > 0) {\n for (let 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 (let 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 calculateLegendItems(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let isAddData;\n let fill;\n let rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let currentData;\n let legendText;\n let isLeafItem;\n let colorMapProcess = false;\n let colorMapping;\n let groupIndex;\n const leaf = this.treemap.leafItemSettings;\n const levels = this.treemap.levels;\n let equalValue;\n const position = this.treemap.legendSettings.position;\n let gradientElement;\n let x2;\n let y2;\n let actualValue;\n let isDuplicate;\n let isEqualColor;\n let isRange;\n let isDesaturation = false;\n let legendIndex = 0;\n let outfill;\n let labelLegend;\n let otherIndex;\n this.outOfRangeLegend = null;\n for (let 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 (let j = 0; j < colorMapping.length; j++) {\n const colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n const colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (let q = 0; q < colorMap.color.length; q++) {\n const offsetColor = 100 / (colorMap.color.length - 1);\n const offsetValue = q * offsetColor + '%';\n const stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n const stop1Color = { colorStop: '0%', color: fill };\n const 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 const gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !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 isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, labelLegend) : false;\n if (isNullOrUndefined(this.outOfRangeLegend) && !isDuplicate) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\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[this.legendCollections.length - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n removeDuplicates(legendCollection, text) {\n let isDuplicate = false;\n for (let 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 isAddNewLegendData(legendText) {\n let newDataProcess;\n let itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (let j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n *\n * @private\n */\n drawLegend() {\n const legend = this.treemap.legendSettings;\n const render = this.treemap.renderer;\n let fill;\n let textOptions;\n let gradientElement;\n const textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (let i = 0; i < this.legendRenderingCollections.length; i++) {\n const itemId = this.treemap.element.id + '_Legend_Index_' + i;\n const textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n const bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n const textLocation = new Location(item['textX'], item['textY']);\n const rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n 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 defaultLegendRtlLocation(collection, spacing, treemap, legend) {\n const shapeLocation = collection['Shape'];\n const textLocation = collection['Text'];\n const legendText = collection['DisplayText'];\n const 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 drawLegendItem(page) {\n const treemap = this.treemap;\n const spacing = 10;\n const legend = treemap.legendSettings;\n const shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let textOptions;\n let legendRtlLocation;\n const render = treemap.renderer;\n const shapeBorder = legend.shapeBorder;\n let 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 const isLineShape = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n const strokeColor = isLineShape ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n const strokeWidth = isLineShape ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (let i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.totalPages[page]['Collection'][i];\n const legendText = collection['DisplayText'];\n const legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n legendElement.setAttribute('aria-label', legendText + ' Legend');\n legendElement.setAttribute('role', 'region');\n const shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n const textId = treemap.element.id + '_Legend_Text_Index_' + i;\n let shapeLocation = collection['Shape'];\n let textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, (observedArgs) => {\n const renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth, isLineShape ? collection['Fill'] : strokeColor, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n this.legendGroup.appendChild(legendElement);\n });\n }\n let pagingGroup;\n const width = spacing;\n const height = (spacing / 2);\n if (this.page !== 0) {\n const pagingText = (page + 1) + '/' + this.totalPages.length;\n const pagingFont = legend.textStyle;\n const pagingTextSize = measureText(pagingText, pagingFont);\n const leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n const rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n const locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n const pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n const leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n const rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n const rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n const leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n const leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n const 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 const rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n const 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 const pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': '',\n 'role': 'region',\n 'aria-label': pagingText\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n }\n renderLegendBorder() {\n const treemap = this.treemap;\n const legend = treemap.legendSettings;\n const legendTitle = legend.title.text;\n const spacing = 10;\n const textStyle = legend.titleStyle;\n const title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n const 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 const borderStyle = {\n color: legend.border.color || this.treemap.themeStyle.legendBorderColor,\n width: legend.border.width || this.treemap.themeStyle.legendBorderWidth\n };\n const renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, borderStyle, 1, this.legendBorderRect, '');\n const 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 renderLegendTitle() {\n const legend = this.treemap.legendSettings;\n const textStyle = legend.titleStyle;\n const legendTitle = legend.title.text;\n let textOptions;\n const spacing = 10;\n const trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n const textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n const textElement = renderTextElement(textOptions, textStyle, textStyle.color ||\n this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n textElement.setAttribute('role', 'region');\n textElement.setAttribute('aria-label', legendTitle);\n }\n }\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n renderInteractivePointer(e) {\n const treemap = this.treemap;\n let target = e.target;\n const 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 let targetItem;\n const 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 let currentData;\n let legendRect;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let data;\n let fill;\n let stroke;\n let strokeWidth;\n let legendElement;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n const svgRect = treemap.svgObject.getBoundingClientRect();\n for (let 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 const rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (let j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n break;\n }\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n }\n drawInteractivePointer(legend, fill, stroke, id, strokeWidth, rect) {\n let path;\n let locX;\n let locY;\n const height = 10;\n const width = 10;\n const 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 const pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n }\n getLegendAlignment(treemap, width, height, legend) {\n let x;\n let y;\n const spacing = 10;\n let totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n const areaX = totalRect.x;\n const areaY = totalRect.y;\n const areaHeight = totalRect.height;\n const areaWidth = totalRect.width;\n const totalWidth = treemap.availableSize.width;\n const totalHeight = treemap.availableSize.height;\n const position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n }\n /**\n * @param {PointerEvent} e - Specifies the event.\n * @returns {void}\n * @private\n */\n mouseUpHandler(e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n *\n * @private\n */\n removeInteractivePointer() {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n const legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n }\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n changeNextPage(e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n }\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n wireEvents(element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n *\n * @private\n */\n addEventListener() {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n *\n * @private\n */\n removeEventListener() {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n }\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n getModuleName() {\n return 'treeMapLegend';\n }\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n destroy() {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = null;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n this.treemap = null;\n }\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n legendGradientColor(colorMap, legendIndex) {\n let legendFillColor;\n const xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n const defElement = this.treemap.renderer.createDefs();\n const linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n const opacity = 1;\n const position = this.treemap.legendSettings.position;\n const x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n const 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 (let b = 0; b < colorMap.color.length; b++) {\n const offsetColor = 100 / (colorMap.color.length - 1);\n const 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 const color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n }\n}\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 */\nexport class TreeMapHighlight {\n constructor(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n mouseMove(e) {\n const treemap = this.treemap;\n let processHighlight;\n const targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let eventArgs;\n const items = [];\n const highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n const highLightElements = [];\n let process;\n let treeMapElement;\n let element;\n let orders;\n const 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 const selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n let index;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n const length = this.treemap.treeMapLegendModule.legendCollections.length;\n index = getLegendIndex(length, 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);\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 ?\n this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (let 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 (let 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 (let 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)\n && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n let itemIndex;\n let groupIndex;\n let length;\n const targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection);\n }\n this.shapeTarget = 'highlight';\n const index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n const dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n const legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (let i = 0; i < dataLength; i++) {\n for (let 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 const 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 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length - 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 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ?\n selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection);\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 addEventListener() {\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 removeEventListener() {\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 getModuleName() {\n return 'treeMapHighlight';\n }\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n destroy() {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n }\n}\n/**\n * Performing treemap selection\n */\nexport class TreeMapSelection {\n constructor(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n mouseDown(e) {\n const targetEle = e.target;\n let eventArgs;\n const treemap = this.treemap;\n treemap.levelSelection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n const targetId = targetEle.id;\n const labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n const selectionElements = [];\n let treeMapElement;\n let element;\n let orders;\n const selection = treemap.selectionSettings;\n const highlightModule = this.treemap.treeMapHighlightModule;\n const 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 let index;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n const length = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = getLegendIndex(length, 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 (let 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 const highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (let k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (let 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, (observedArgs) => {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\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 const collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n let itemIndex;\n let groupIndex;\n let length;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n const legendIndex = parseInt(targetId[targetId.length - 1], 10);\n const targetEle = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n const index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n const dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (let k = 0; k < dataLength; k++) {\n for (let 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 const 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, nodeEle, this.treemap.layout.renderItems, collection);\n length = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, 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 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection);\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 selectTreemapItem(levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n for (let 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 const selection = this.treemap.selectionSettings;\n const selectionElements = [];\n let element;\n let index;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n this.treemap.levelSelection = [];\n const layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n const treeMapElement = document.getElementById(layoutID);\n const orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (let 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 (let m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n const length = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n index = getLegendIndex(length, 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 const selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n const highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (let k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (let j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n }\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n addEventListener() {\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 removeEventListener() {\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 getModuleName() {\n return 'treeMapSelection';\n }\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n destroy() {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n }\n}\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 */\nexport class TreeMapTooltip {\n constructor(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n renderTooltip(e) {\n let pageX;\n let pageY;\n let target;\n let touchArg;\n let 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 let value;\n const targetId = target.id;\n let item = {};\n let tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let location;\n let toolTipData = {};\n let tooltipContent = [];\n let markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.tooltipSettings.textStyle.fontFamily || this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.tooltipSettings.textStyle.color || this.treemap.themeStyle.tooltipFontColor;\n // eslint-disable-next-line max-len\n this.tooltipSettings.textStyle.opacity = this.tooltipSettings.textStyle.opacity || this.treemap.themeStyle.tooltipTextOpacity;\n const border = {\n width: this.tooltipSettings.border.width || this.treemap.themeStyle.tooltipBorderWidth || 0,\n color: this.tooltipSettings.border.color || this.treemap.themeStyle.tooltipBorderColor || 'transparent'\n };\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData, border: border,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, (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 addTooltip(tootipArgs, markerFill, tooltipEle, eventArgs) {\n let cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let args;\n if (!isNullOrUndefined(tootipArgs)) {\n const { cancel: c } = tootipArgs, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n theme: this.treemap.theme,\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor,\n border: args['border'],\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n }\n mouseUpHandler(e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n }\n removeTooltip() {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n const tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n *\n * @private\n */\n addEventListener() {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n *\n * @private\n */\n removeEventListener() {\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 getModuleName() {\n return 'treeMapTooltip';\n }\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n destroy() {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n }\n}\n"],"names":["this","printFunction","__decorate"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-treemap.es2015.js","sources":["../src/es6/treemap/model/constants.js","../src/es6/treemap/model/base.js","../src/es6/treemap/utils/helper.js","../src/es6/treemap/layout/render-panel.js","../src/es6/treemap/model/theme.js","../src/es6/treemap/model/print.js","../src/es6/treemap/model/image-export.js","../src/es6/treemap/model/pdf-export.js","../src/es6/treemap/treemap.js","../src/es6/treemap/layout/legend.js","../src/es6/treemap/user-interaction/highlight-selection.js","../src/es6/treemap/user-interaction/tooltip.js"],"sourcesContent":["/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport const load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport const loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport const beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport const itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport const drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport const drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport const itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport const itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport const tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport const itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport const itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport const click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport const doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport const rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport const mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport const legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport const legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport const resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport const defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nexport class Border extends ChildProperty {\n}\n__decorate([\n Property('#808080')\n], Border.prototype, \"color\", void 0);\n__decorate([\n Property(0)\n], Border.prototype, \"width\", void 0);\n/**\n * Sets and gets the margin for the treemap.\n */\nexport class Margin extends ChildProperty {\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/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nexport class Font extends ChildProperty {\n}\n__decorate([\n Property(null)\n], Font.prototype, \"size\", void 0);\n__decorate([\n Property(null)\n], Font.prototype, \"color\", void 0);\n__decorate([\n Property(defaultFont)\n], Font.prototype, \"fontFamily\", void 0);\n__decorate([\n Property('')\n], Font.prototype, \"fontWeight\", void 0);\n__decorate([\n Property('Normal')\n], Font.prototype, \"fontStyle\", void 0);\n__decorate([\n Property(1)\n], Font.prototype, \"opacity\", void 0);\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nexport class CommonTitleSettings extends ChildProperty {\n}\n__decorate([\n Property('')\n], CommonTitleSettings.prototype, \"text\", void 0);\n__decorate([\n Property('')\n], CommonTitleSettings.prototype, \"description\", void 0);\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nexport class SubTitleSettings extends CommonTitleSettings {\n}\n__decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n], SubTitleSettings.prototype, \"textStyle\", void 0);\n__decorate([\n Property('Center')\n], SubTitleSettings.prototype, \"alignment\", void 0);\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nexport class TitleSettings extends CommonTitleSettings {\n}\n__decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n], TitleSettings.prototype, \"textStyle\", void 0);\n__decorate([\n Property('Center')\n], TitleSettings.prototype, \"alignment\", void 0);\n__decorate([\n Complex({}, SubTitleSettings)\n], TitleSettings.prototype, \"subtitleSettings\", void 0);\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nexport class ColorMapping extends ChildProperty {\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/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nexport class LegendSettings extends ChildProperty {\n}\n__decorate([\n Property(false)\n], LegendSettings.prototype, \"visible\", void 0);\n__decorate([\n Property('Default')\n], LegendSettings.prototype, \"mode\", void 0);\n__decorate([\n Property('transparent')\n], LegendSettings.prototype, \"background\", void 0);\n__decorate([\n Property('Circle')\n], LegendSettings.prototype, \"shape\", void 0);\n__decorate([\n Property('')\n], LegendSettings.prototype, \"width\", void 0);\n__decorate([\n Property('')\n], LegendSettings.prototype, \"height\", void 0);\n__decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n], LegendSettings.prototype, \"textStyle\", void 0);\n__decorate([\n Property(null)\n], LegendSettings.prototype, \"fill\", void 0);\n__decorate([\n Property(1)\n], LegendSettings.prototype, \"opacity\", void 0);\n__decorate([\n Property(15)\n], LegendSettings.prototype, \"shapeWidth\", void 0);\n__decorate([\n Property(15)\n], LegendSettings.prototype, \"shapeHeight\", void 0);\n__decorate([\n Property(10)\n], LegendSettings.prototype, \"shapePadding\", void 0);\n__decorate([\n Property(null)\n], LegendSettings.prototype, \"imageUrl\", void 0);\n__decorate([\n Complex({ color: null, width: null }, Border)\n], LegendSettings.prototype, \"border\", void 0);\n__decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n], LegendSettings.prototype, \"shapeBorder\", void 0);\n__decorate([\n Complex({}, CommonTitleSettings)\n], LegendSettings.prototype, \"title\", void 0);\n__decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n], LegendSettings.prototype, \"titleStyle\", void 0);\n__decorate([\n Property('Bottom')\n], LegendSettings.prototype, \"position\", void 0);\n__decorate([\n Property('None')\n], LegendSettings.prototype, \"orientation\", void 0);\n__decorate([\n Property(false)\n], LegendSettings.prototype, \"invertedPointer\", void 0);\n__decorate([\n Property('After')\n], LegendSettings.prototype, \"labelPosition\", void 0);\n__decorate([\n Property('None')\n], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n__decorate([\n Property('Center')\n], LegendSettings.prototype, \"alignment\", void 0);\n__decorate([\n Property({ x: 0, y: 0 })\n], LegendSettings.prototype, \"location\", void 0);\n__decorate([\n Property(null)\n], LegendSettings.prototype, \"showLegendPath\", void 0);\n__decorate([\n Property(null)\n], LegendSettings.prototype, \"valuePath\", void 0);\n__decorate([\n Property(false)\n], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nexport class InitialDrillSettings extends ChildProperty {\n}\n__decorate([\n Property(null)\n], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n__decorate([\n Property(null)\n], InitialDrillSettings.prototype, \"groupName\", void 0);\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nexport class LeafItemSettings extends ChildProperty {\n}\n__decorate([\n Property(null)\n], LeafItemSettings.prototype, \"fill\", void 0);\n__decorate([\n Property(false)\n], LeafItemSettings.prototype, \"autoFill\", void 0);\n__decorate([\n Complex({}, Border)\n], LeafItemSettings.prototype, \"border\", void 0);\n__decorate([\n Property(0)\n], LeafItemSettings.prototype, \"gap\", void 0);\n__decorate([\n Property(10)\n], LeafItemSettings.prototype, \"padding\", void 0);\n__decorate([\n Property(1)\n], LeafItemSettings.prototype, \"opacity\", void 0);\n__decorate([\n Property(true)\n], LeafItemSettings.prototype, \"showLabels\", void 0);\n__decorate([\n Property(null)\n], LeafItemSettings.prototype, \"labelPath\", void 0);\n__decorate([\n Property(null)\n], LeafItemSettings.prototype, \"labelFormat\", void 0);\n__decorate([\n Property('TopLeft')\n], LeafItemSettings.prototype, \"labelPosition\", void 0);\n__decorate([\n Complex({ color: null, size: null, fontFamily: null }, Font)\n], LeafItemSettings.prototype, \"labelStyle\", void 0);\n__decorate([\n Property(null)\n], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n__decorate([\n Property('Center')\n], LeafItemSettings.prototype, \"templatePosition\", void 0);\n__decorate([\n Property('Trim')\n], LeafItemSettings.prototype, \"interSectAction\", void 0);\n__decorate([\n Collection([], ColorMapping)\n], LeafItemSettings.prototype, \"colorMapping\", void 0);\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nexport class TooltipSettings extends ChildProperty {\n}\n__decorate([\n Property(false)\n], TooltipSettings.prototype, \"visible\", void 0);\n__decorate([\n Property('')\n], TooltipSettings.prototype, \"template\", void 0);\n__decorate([\n Property(null)\n], TooltipSettings.prototype, \"format\", void 0);\n__decorate([\n Property(null)\n], TooltipSettings.prototype, \"fill\", void 0);\n__decorate([\n Property(0.75)\n], TooltipSettings.prototype, \"opacity\", void 0);\n__decorate([\n Property(['Circle'])\n], TooltipSettings.prototype, \"markerShapes\", void 0);\n__decorate([\n Complex({ width: null, color: null }, Border)\n], TooltipSettings.prototype, \"border\", void 0);\n__decorate([\n Complex({ fontFamily: null, size: null, fontWeight: null, opacity: null }, Font)\n], TooltipSettings.prototype, \"textStyle\", void 0);\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nexport class SelectionSettings extends ChildProperty {\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/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nexport class HighlightSettings extends ChildProperty {\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/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nexport class LevelSettings extends ChildProperty {\n}\n__decorate([\n Property(null)\n], LevelSettings.prototype, \"groupPath\", void 0);\n__decorate([\n Property(0)\n], LevelSettings.prototype, \"groupGap\", void 0);\n__decorate([\n Property(10)\n], LevelSettings.prototype, \"groupPadding\", void 0);\n__decorate([\n Complex({}, Border)\n], LevelSettings.prototype, \"border\", void 0);\n__decorate([\n Property(null)\n], LevelSettings.prototype, \"fill\", void 0);\n__decorate([\n Property(false)\n], LevelSettings.prototype, \"autoFill\", void 0);\n__decorate([\n Property(1)\n], LevelSettings.prototype, \"opacity\", void 0);\n__decorate([\n Property(true)\n], LevelSettings.prototype, \"showHeader\", void 0);\n__decorate([\n Property(20)\n], LevelSettings.prototype, \"headerHeight\", void 0);\n__decorate([\n Property(null)\n], LevelSettings.prototype, \"headerTemplate\", void 0);\n__decorate([\n Property(null)\n], LevelSettings.prototype, \"headerFormat\", void 0);\n__decorate([\n Property('Near')\n], LevelSettings.prototype, \"headerAlignment\", void 0);\n__decorate([\n Complex({ color: null, size: '13px', fontFamily: null }, Font)\n], LevelSettings.prototype, \"headerStyle\", void 0);\n__decorate([\n Property('TopLeft')\n], LevelSettings.prototype, \"templatePosition\", void 0);\n__decorate([\n Collection([], ColorMapping)\n], LevelSettings.prototype, \"colorMapping\", void 0);\n","import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nexport class Size {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n}\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nexport class Rect {\n constructor(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nexport class RectOption {\n constructor(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}\nexport class PathOption {\n constructor(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}\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n let measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nexport class TextOption {\n constructor(id, x, y, anchor, text, transform = '', baseLine, connectorText) {\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}\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 let label = text;\n let size = measureText(text, font).width;\n if (size > maxWidth) {\n const textLength = text.length;\n for (let i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nexport class Location {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n let 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 const y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n const htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus = false) {\n const 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 const text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n let tspanElement;\n const renderer = new SvgRenderer('');\n let height;\n let htmlObject;\n const breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n const drilledLabel = text;\n const spacing = 5;\n const drillLevelText = drilledLabel.split('#');\n for (let z = 0; z < drillLevelText.length; z++) {\n let drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n const re = /\\s+/g;\n drillText = drillText.replace(re, '&nbsp');\n }\n const 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 (let i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n const itemSelect = targetId.split('_RectPath')[0];\n let itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n let isExist = false;\n let name = '';\n let path;\n const leaf = treemap.leafItemSettings;\n for (let i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n const data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n let children;\n if (data) {\n const keys = Object.keys(data);\n children = {};\n for (let i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n const children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (let i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (let 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 const parentName = data['levelOrderName'].split('#')[0];\n let currentItem;\n for (let i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n let templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n const childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n let elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n let templateHtml = childElement.innerHTML;\n const keys = Object.keys(data);\n for (let i = 0; i < keys.length; i++) {\n const regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n const location = new Location(0, 0);\n const padding = 5;\n const paddings = 2;\n const x = (type === 'Template') ? treemap.areaRect.x : 0;\n const y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n const size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n const measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n const container = convertToContainer(input);\n const width = container.width;\n const height = container.height;\n const result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n const x = rect.x;\n const y = rect.y;\n const width = rect.width;\n const height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n const xOffset = container.x;\n const yOffset = container.y;\n const width = container.width;\n const height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n const elementRect = element.getBoundingClientRect();\n const pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n const pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n const clientTop = element.ownerDocument.documentElement.clientTop;\n const clientLeft = element.ownerDocument.documentElement.clientLeft;\n const positionX = elementRect.left + pageXOffset - clientLeft;\n const positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n let fill;\n const paths = [];\n let opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (let i = 0; i < colorMapping.length; i++) {\n let isEqualColor = false;\n const dataValue = value;\n const colorMappingValue = colorMapping[i].value ? colorMapping[i].value.toString() :\n colorMapping[i].value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMappingValue === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMappingValue === equalValue)) {\n if (colorMappingValue === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMappingValue === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (let j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n let opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n const ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n const gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n let color = '';\n let rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n const previousOffset = colorMap.from;\n const nextOffset = colorMap.to;\n let percent = 0;\n const full = nextOffset - previousOffset;\n let midColor;\n percent = (value - previousOffset) / full;\n let previousColor;\n let 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 const a = full / (colorMap.color.length - 1);\n let b;\n let c;\n const length = colorMap.color.length - 1;\n const splitColorValueOffset = [];\n let splitColor = {};\n for (let j = 1; j < length; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (let i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n const nextColor = next.split('#')[1];\n const prevColor = previous.split('#')[1];\n const r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n const g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n const b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n const full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n const textCollection = dataLabel.split(' ');\n let label = '';\n const labelCollection = [];\n let text;\n for (let i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n const resultText = [];\n let currentLength = 0;\n let totalWidth = measureText(label, font).width;\n const totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (let i = label.length; i > currentLength; i--) {\n const sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n let hideText = text;\n const textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n const elementId = treemap.levelSelection;\n if (elementId) {\n for (let index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index] ||\n element.children[0].id === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n const elementId = treemap.legendId;\n if (elementId) {\n for (let i = 0; i < elementId.length; i++) {\n if (treemap.legendSettings.mode === 'Interactive') {\n for (let j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i] ||\n parseFloat(legendGroup.childNodes[j]['id'].split('Index_')[1]) === parseFloat(elementId[i].split('Index_')[1])) {\n const treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n else {\n const legendItem = document.getElementById(elementId[i]);\n if (!isNullOrUndefined(legendItem)) {\n legendItem.setAttribute('fill', treemap.selectionSettings.fill);\n legendItem.setAttribute('stroke', treemap.selectionSettings.border.color);\n legendItem.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendItem.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n let element;\n let options = {};\n for (let j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n else {\n element.setAttribute('fill', 'black');\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n const keys = Object.keys(data);\n for (const key of keys) {\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n let formatValue;\n let 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 */\nexport class ColorValue {\n constructor(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n}\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n const 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 const 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 const element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n const isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options) {\n const svgRenderer = new SvgRenderer('');\n const temp = renderLegendShape(location, size, shape, options, url);\n const htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n let renderPath;\n let functionName = 'Path';\n const shapeWidth = size.width;\n const shapeHeight = size.height;\n const shapeX = location.x;\n const shapeY = location.y;\n const x = location.x + (-shapeWidth / 2);\n const 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 const eq = 72;\n // eslint-disable-next-line no-case-declarations\n let xValue;\n // eslint-disable-next-line no-case-declarations\n let yValue;\n for (let i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n let isParentItem = false;\n for (let j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nexport class TreeMapAjax {\n constructor(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}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (let i = 0; i < collection.length; i++) {\n const item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection, treeMap) {\n if (collection.length > 0) {\n for (let j = 0; j < collection.length; j++) {\n const item = collection[j];\n const legendIndex = parseFloat(item['legendEle'].id.split('_Index_')[1]);\n const isText = item['legendEle'].id.indexOf('Text') > -1;\n const shapeId = isText ? item['legendEle'].id.replace('_Text', '') : item['legendEle'].id;\n const legendShape = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId)\n : document.getElementById(treeMap.element.id + '_Legend_Shape_Index_' + legendIndex);\n const legendText = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId + '_Text')\n : document.getElementById(treeMap.element.id + '_Legend_Text_Index_' + legendIndex);\n if (!isNullOrUndefined(legendShape)) {\n setColor(legendShape, item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n if (!isNullOrUndefined(legendText)) {\n setColor(legendText, treeMap.legendSettings.textStyle.color, item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n const dataCount = !isNullOrUndefined(item['ShapeCollection']) ? item['ShapeCollection']['Elements'].length : 0;\n for (let k = 0; k < dataCount; k++) {\n const shapeElement = document.getElementById(item['ShapeCollection']['Elements'][k].id);\n if (!isNullOrUndefined(shapeElement)) {\n setColor(shapeElement, item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n }\n}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeLegend(collection, treemap);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n let index;\n const valuePath = treemap.rangeColorValuePath;\n for (let i = 0; i < length; i++) {\n const dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n if (dataLength > 0) {\n for (let j = 0; j < dataLength; j++) {\n if ((!isNullOrUndefined(valuePath) && valuePath !== '' && treemap.leafItemSettings.colorMapping.length > 0 ?\n (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['data'][valuePath] === item['data'][valuePath])\n : treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']\n || item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['legendName']) > -1)) {\n index = i;\n break;\n }\n }\n }\n else if (treemap.palette && treemap.palette.length > 0) {\n if ((treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'] === item['levelOrderName'] ||\n (item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'])) > -1)\n && treemap.treeMapLegendModule.legendCollections[i]['legendName'] === item['name']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n const element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nexport class LayoutPanel {\n constructor(treemap) {\n this.treemap = treemap;\n }\n processLayoutPanel() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let data;\n let totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n const count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getDrilldownData(data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const treemap = this.treemap;\n const newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (let 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 (let 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 calculateLayoutItems(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 computeSliceAndDiceDimensional(data, coords) {\n const leafItem = this.treemap.leafItemSettings;\n let rect;\n const groups = this.treemap.levels;\n let groupIndex;\n let isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const children = findChildren(data)['values'];\n let gap;\n let headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (let i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sliceAndDiceProcess(processData, rect) {\n const parentArea = rect.height * rect.width;\n const levels = this.treemap.levels;\n let childValue;\n let alottedValue = 0;\n let totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach((data) => { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach((child) => {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n const isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (let i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const 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 computeSquarifyDimensional(data, coords) {\n const leaf = this.treemap.leafItemSettings;\n let rect;\n const levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child = findChildren(data)['values'];\n let index;\n let padding;\n let 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 (let i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calculateChildrenLayout(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 performRowsLayout(data, currentRow, rect, stack) {\n const dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newStack = stack.concat(newCoordinates);\n return newStack;\n }\n const width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n const currentRowLength = currentRow.length;\n let valueSum = 0;\n for (let i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n const newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n aspectRatio(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 const newRow = currentRow.concat(nextDatum);\n const currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n const newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n findMaxAspectRatio(row, length) {\n const rowLength = row.length;\n let minArea = Infinity;\n let maxArea = -Infinity;\n let sumArea = 0;\n for (let i = 0; i < rowLength; i += 1) {\n const 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 const 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 cutArea(rect, area) {\n const newContainer = convertToContainer(rect);\n const width = newContainer.width;\n const height = newContainer.height;\n const xOffset = newContainer.x;\n const yOffset = newContainer.y;\n if (width >= height) {\n const areaWidth = area / height;\n const newWidth = width - areaWidth;\n const container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n const areaHeight = area / width;\n const newHeight = height - areaHeight;\n const 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 getCoordinates(row, rect) {\n const container = convertToContainer(rect);\n const width = container.width;\n const height = container.height;\n const xOffset = container.x;\n const yOffset = container.y;\n const rowLength = row.length;\n const levels = this.treemap.levels;\n const leaf = this.treemap.leafItemSettings;\n let index;\n let valueSum = 0;\n for (let i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n const areaWidth = valueSum / height;\n const areaHeight = valueSum / width;\n let subXOffset = xOffset;\n let subYOffset = yOffset;\n let padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const coordinates = [];\n let isParent;\n let parentRect;\n for (let i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const 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 const 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 const 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 computeTotalArea(data, area) {\n const dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = [];\n for (let i = 0; i < dataLength; i += 1) {\n const dataLength = data.length;\n let dataSum = 0;\n for (let i = 0; i < dataLength; i += 1) {\n dataSum += data[i]['weight'];\n }\n const multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let datum;\n for (let j = 0; j < dataLength; 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 onDemandProcess(childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let parentItem = {};\n let 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 let 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 const count = this.treemap.levels.length;\n for (let i = 0; i < count; i++) {\n const levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n }\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n renderLayoutItems() {\n let position;\n const treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let txtVisible;\n let getItemColor;\n let eventArgs;\n this.renderer = treeMap.renderer;\n let pathOptions;\n const elementID = treeMap.element.id;\n let index;\n let templatePosition;\n const mode = treeMap.layoutType;\n let rect;\n let format;\n const interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let fill;\n let item;\n let renderText;\n let opacity;\n let rectPath = '';\n const secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n let groupId;\n let templateEle;\n let gap;\n let textStyle;\n const levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n let itemGroup;\n let template;\n let border;\n const templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n let isLeafItem = false;\n const leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let childItems;\n let connectorText;\n for (let i = 0; i < this.renderItems.length; i++) {\n item = this.renderItems[i];\n index = item['groupIndex'];\n if (this.treemap.drillDownView && isNullOrUndefined(this.treemap.currentLevel)\n && index > 0 || this.treemap.drillDownView\n && index > (this.treemap.currentLevel + 1)) {\n continue;\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n const treemapItemRect = this.treemap.totalRect ? (treeMap.legendSettings.visible ? this.treemap.totalRect\n : convertToContainer(this.treemap.totalRect)) : this.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n let levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this.treemap.currentLevel) {\n if (this.treemap.enableBreadcrumb) {\n const re = /#/gi;\n connectorText = '#' + this.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.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n if (treeMap.enableHtmlSanitizer) {\n renderText = SanitizeHtmlHelper.sanitize(renderText);\n }\n let fontFamily = (isLeafItem ? leaf.labelStyle.fontFamily : levels[index].headerStyle.fontFamily);\n fontFamily = fontFamily || this.treemap.themeStyle.labelFontFamily;\n let size = (isLeafItem ? leaf.labelStyle.size : levels[index].headerStyle.size);\n size = size || this.treemap.themeStyle.labelFontSize;\n let fontWeight = (isLeafItem ? leaf.labelStyle.fontWeight : levels[index].headerStyle.fontWeight);\n fontWeight = fontWeight || this.treemap.themeStyle.fontWeight;\n const color = (isLeafItem ? leaf.labelStyle.color : levels[index].headerStyle.color);\n const fontStyle = (isLeafItem ? leaf.labelStyle.fontStyle : levels[index].headerStyle.fontStyle);\n const textStyleOpacity = (isLeafItem ? leaf.labelStyle.opacity : levels[index].headerStyle.opacity);\n textStyle = {\n fontFamily: fontFamily, size: size, fontWeight: fontWeight, color: color, fontStyle: fontStyle, opacity: textStyleOpacity\n };\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this.treemap, text: renderText,\n currentItem: item, RenderItems: this.renderItems, options: item['options'], textColor: textStyle.color\n };\n this.treemap.trigger(itemRendering, eventArgs, (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 const path = this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], this.treemap) || levelName;\n }\n textStyle.color = eventArgs.textColor ? eventArgs.textColor : textStyle.color;\n this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n if ((this.treemap.enableDrillDown && isLeafItem) || (this.treemap.selectionSettings.enable ||\n this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', this.treemap.tabIndex.toString());\n itemGroup.style.cursor = this.treemap.highlightSettings.enable && !this.treemap.selectionSettings.enable && (this.treemap.enableDrillDown && item['groupIndex'] === (this.treemap.levels.length - 1)) ? 'default' :\n this.treemap.highlightSettings.enable && !this.treemap.selectionSettings.enable && !this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(this.treemap, itemGroup, 'treeMapSelection');\n this.layoutGroup.appendChild(itemGroup);\n }\n });\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n maintainSelection(this.treemap, this.layoutGroup, 'treeMapSelection');\n }\n renderItemText(text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n const padding = 5;\n let textSize;\n let textCollection = [];\n let customText;\n const tspanText = [];\n let height = 0;\n let 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 const labelSize = measureText(text, textStyle);\n const drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n const label = text.substring(drillSymbolCount - 1, text.length);\n const drillSymbol = '[+]';\n const drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n const textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n const collection = [];\n let texts = null;\n const maxNumber = [];\n for (let 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 (let 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 const collectionLength = tspanText.length - 1;\n let 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 const 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 getItemColor(isLeafItem, item) {\n const treemap = this.treemap;\n let itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n let itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n const 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 const option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n if (!isNullOrUndefined(option)) {\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n }\n else {\n for (let i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : !isNullOrUndefined(item['options']) ?\n item['options'].fill : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n }\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n getSaturatedColor(color) {\n let saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n const rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n const contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n }\n renderTemplate(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n const templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n const baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const keys = Object.keys(item['data']);\n for (let i = 0; i < keys.length; i++) {\n const regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n if (this.treemap.enableHtmlSanitizer && typeof template === 'string') {\n template = SanitizeHtmlHelper.sanitize(template);\n }\n let labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const templateFn = getTemplateFunction(template);\n const templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n const templateSize = measureElement(labelElement, secondaryEle);\n const templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n }\n labelInterSectAction(rect, text, textStyle, alignment) {\n let textValue;\n const maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n }\n /**\n *\n * @returns {void}\n * @private\n */\n destroy() {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n }\n}\n","/**\n * Maps Themes doc\n */\nimport { defaultFont } from './constants';\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n let style;\n let color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n labelFontFamily: defaultFont,\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#111827',\n titleFontWeight: '600',\n subTitleFontColor: '#111827',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#111827',\n legendTextColor: '#111827',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Inter',\n fontWeight: '400',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#212529',\n titleFontWeight: '400',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#DEE2E6',\n titleFontWeight: '400',\n subTitleFontColor: '#DEE2E6',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#DEE2E6',\n legendTextColor: '#DEE2E6',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#242424',\n titleFontWeight: '600',\n subTitleFontColor: '#242424',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#242424',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#242424',\n legendTextColor: '#242424',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#292929',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2highcontrast':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#FFF',\n legendBorderWidth: 1,\n tooltipBorderColor: '#FFF',\n tooltipBorderWidth: 1\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n }\n return style;\n}\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nexport class Print {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n constructor(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n print(treeMap, elements) {\n const printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n const argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, () => {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n }\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n getHTMLContent(treeMap, elements) {\n const div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach((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 const exportElement = treeMap.element.cloneNode(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n const backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n }\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n getModuleName() {\n // Returns te module name\n return 'Print';\n }\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n destroy() { }\n}\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nexport class ImageExport {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n constructor(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n export(treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const promise = new Promise((resolve, reject) => {\n const element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n const exportElement = treeMap.svgObject.cloneNode(true);\n const backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n const backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n const isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n const svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n const url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n const image = new Image();\n const context = element.getContext('2d');\n image.onload = (() => {\n context.drawImage(image, 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.src = url;\n }\n });\n return promise;\n }\n getModuleName() {\n // Returns te module name\n return 'ImageExport';\n }\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n destroy() { }\n}\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nexport class PdfExport {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n constructor(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n export(treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n const promise = new Promise((resolve, reject) => {\n const element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n const exportElement = treeMap.svgObject.cloneNode(true);\n const backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n const backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n const url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n const image = new Image();\n const context = element.getContext('2d');\n image.onload = (() => {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n const document = new PdfDocument();\n let imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n }\n getModuleName() {\n // Returns te module name\n return 'PdfExport';\n }\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n destroy() { }\n}\n","/**\n * Tree Map Components\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent, legendMaintain, removeLegend } from '../treemap/utils/helper';\nimport { removeClassNames, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nlet TreeMap = class TreeMap extends Component {\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n constructor(options, element) {\n super(options, element);\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 }\n preRender() {\n this.trigger(load, { treemap: this }, () => {\n this.initPrivateVariable();\n this.unWireEVents();\n this.createSvg();\n this.wireEVents();\n this.setCulture();\n });\n }\n render() {\n this.renderElements();\n }\n renderElements() {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n }\n processDataManager() {\n let dataModule;\n let queryModule;\n let fetchApiModule;\n let 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 const dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then((e) => {\n this.dataSource = e['result'];\n this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = (args) => {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n const reader = new FileReader();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const treemap = this;\n reader.onload = function () {\n args = JSON.parse(reader.result.toString());\n treemap.dataSource = args;\n treemap.renderTreeMapElements();\n };\n reader.readAsText(args);\n }\n else {\n this.dataSource = args;\n this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n }\n renderTreeMapElements() {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n if (!isNullOrUndefined(this.treeMapLegendModule) && this.legendSettings.visible) {\n legendMaintain(this, this.treeMapLegendModule.legendGroup);\n }\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n }\n createSvg() {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n const containerWidth = this.element.clientWidth;\n const 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 initPrivateVariable() {\n if (this.element.id === '') {\n const 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 createSecondaryElement() {\n const 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 const secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n }\n elementChange() {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n }\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n renderBorder() {\n const width = this.border.width;\n const borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n const 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 renderTitle(title, type, bounds, groupEle) {\n const style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n let height;\n const titlePadding = 10;\n const width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n const titleText = this.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(title.text)) : title.text;\n const trimmedTitle = textTrim(width, titleText, style);\n const elementSize = measureText(trimmedTitle, style);\n const rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n const location = findPosition(rect, title.alignment, elementSize, type);\n const options = new TextOption(this.element.id + '_TreeMap_' + type, location.x, location.y, 'start', trimmedTitle);\n const titleBounds = new Rect(location.x, location.y, elementSize.width, elementSize.height);\n const element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || titleText);\n element.setAttribute('role', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n }\n processingData() {\n let path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map((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 const data = {};\n data['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data[path] = [];\n for (let i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const 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((currentData) => {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (let i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n }\n checkIsHierarchicalData() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let child;\n this.dataSource = this.dataSource;\n for (let 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 processHierarchicalData(data, dataCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let newData = {};\n let levelIndex;\n const path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n let key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (let i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (let 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 const childItemLevel = childData[j]['levelOrderName'];\n let childLevel;\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((currentData) => {\n this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mainData = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n if (!isNullOrUndefined(mainData)) {\n for (let k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach((currentData) => { mainData.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (let l = 0; l < mainData.length; l++) {\n newData[this.levels[0].groupPath] = mainData;\n mainData[l]['parent'] = newData;\n }\n }\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n print(id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n export(type, fileName, orientation, allowDownload) {\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise((resolve, reject) => {\n resolve(this.pdfExportModule.export(this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise((resolve, reject) => {\n resolve(this.imageExportModule.export(this, type, fileName, allowDownload));\n });\n }\n return null;\n }\n processFlatJsonData() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n let groupPath;\n const orderNames = [];\n for (let 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 const level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (let j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const currentData = {};\n let childName = '';\n if (!isNullOrUndefined(groupPath)) {\n const name = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (let k = 0; k <= i; k++) {\n const childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name) !== -1 : false)) {\n currentData['name'] = name;\n currentData['levelOrderName'] = ((childName) ? childName : name) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name);\n }\n }\n }\n }\n }\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n reOrderLevelData(start) {\n let currentName;\n const currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n const prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (let i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (let j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n }\n IsChildHierarchy(current, previous) {\n let isChild = false;\n for (let i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n }\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n findTotalWeight(processData, type) {\n let totalWeight;\n let split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let groupName;\n const groupObj = {};\n for (let i = 0; i < processData.length; 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.dataSource.forEach((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 }\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n unWireEVents() {\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 wireEVents() {\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 setCulture() {\n this.intl = new Internationalization();\n }\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n addTabIndex() {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n }\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n resizeOnTreeMap(e) {\n if (!this.isDestroyed) {\n this.isResize = true;\n const 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(() => {\n this.unWireEVents();\n this.createSvg();\n this.refreshing = true;\n this.wireEVents();\n args.currentSize = this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.trigger(resize, args, (observedArgs) => {\n this.render();\n this.refreshing = false;\n });\n }, 500);\n }\n }\n }\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n clickOnTreeMap(e) {\n const targetEle = e.target;\n const targetId = targetEle.id;\n let eventArgs;\n let itemIndex;\n const labelText = targetEle.innerHTML;\n const 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, (observedArgs) => {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n const end = new Date().getMilliseconds();\n let doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n }\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n doubleClickOnTreeMap(e) {\n const doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n }\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n rightClickOnTreeMap(e) {\n const rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n }\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n mouseDownOnTreeMap(e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n }\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n mouseMoveOnTreeMap(e) {\n const targetEle = e.target;\n const targetId = targetEle.id;\n let eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n const 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 let childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n else {\n this.element.style.cursor = 'default';\n }\n this.notify(Browser.touchMoveEvent, e);\n }\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calculateSelectedTextLevels(labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n let drillLevel;\n let k;\n let text;\n const levelLabels = item['levelOrderName'];\n const levelText = levelLabels.split('#');\n for (k of Object.keys(levelText)) {\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n }\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calculatePreviousLevelChildItems(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 let text;\n let p = 0;\n let levelItems;\n let text1;\n const drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (let 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 (levelItems of Object['values'](this.layout.renderItems)) {\n const drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n }\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let drillLevelChild;\n const newDrillItem = {};\n const b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n }\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n mouseEndOnTreeMap(e) {\n const targetEle = e.target;\n const targetId = targetEle.id;\n let totalRect;\n let startEvent;\n let endEvent;\n let directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let index;\n let newDrillItem = {};\n let item;\n const process = true;\n const layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n let drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const templateID = this.element.id + '_Label_Template_Group';\n let 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 const labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (let i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n const 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, (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 const 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 const drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n this.layout.calculateLayoutItems(newDrillItem, totalRect);\n this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n }\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n mouseLeaveOnTreeMap(e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);\n this.treeMapHighlightModule.highLightId = '';\n }\n }\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n selectItem(levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n let levelOrderName = '';\n for (let 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 requiredModules() {\n const modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this],\n name: 'TreeMapTooltip'\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this],\n name: 'TreeMapHighlight'\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this],\n name: 'TreeMapSelection'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this],\n name: 'TreeMapLegend'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n return modules;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onPropertyChanged(newProp, oldProp) {\n if (!this.isDestroyed) {\n let render = false;\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n }\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n getModuleName() {\n return 'treemap';\n }\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n destroy() {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n super.destroy();\n this.areaRect = null;\n this.themeStyle = null;\n this.totalRect = null;\n this.drilledLegendItems = null;\n this.doubleTapTimer = null;\n this.treemapLevelData = null;\n this.resizeEvent = null;\n this.availableSize = null;\n this.intl = null;\n if (!isNullOrUndefined(this.layout)) {\n this.layout.destroy();\n }\n this.layout = null;\n this.renderer = null;\n }\n removeSvg() {\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 getPersistData() {\n return '';\n }\n};\n__decorate([\n Property(false)\n], TreeMap.prototype, \"allowPrint\", void 0);\n__decorate([\n Property(false)\n], TreeMap.prototype, \"allowImageExport\", void 0);\n__decorate([\n Property(false)\n], TreeMap.prototype, \"allowPdfExport\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"width\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"height\", void 0);\n__decorate([\n Complex({}, Border)\n], TreeMap.prototype, \"border\", void 0);\n__decorate([\n Complex({}, Margin)\n], TreeMap.prototype, \"margin\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"background\", void 0);\n__decorate([\n Property('Material')\n], TreeMap.prototype, \"theme\", void 0);\n__decorate([\n Complex({}, TitleSettings)\n], TreeMap.prototype, \"titleSettings\", void 0);\n__decorate([\n Property('Squarified')\n], TreeMap.prototype, \"layoutType\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"dataSource\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"query\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"weightValuePath\", void 0);\n__decorate([\n Property('')\n], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n__decorate([\n Property('')\n], TreeMap.prototype, \"equalColorValuePath\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"colorValuePath\", void 0);\n__decorate([\n Property([])\n], TreeMap.prototype, \"palette\", void 0);\n__decorate([\n Property('TopLeftBottomRight')\n], TreeMap.prototype, \"renderDirection\", void 0);\n__decorate([\n Property(false)\n], TreeMap.prototype, \"enableDrillDown\", void 0);\n__decorate([\n Property(false)\n], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n__decorate([\n Property(' - ')\n], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n__decorate([\n Property(false)\n], TreeMap.prototype, \"drillDownView\", void 0);\n__decorate([\n Property(false)\n], TreeMap.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate([\n Complex({}, InitialDrillSettings)\n], TreeMap.prototype, \"initialDrillDown\", void 0);\n__decorate([\n Complex({}, LeafItemSettings)\n], TreeMap.prototype, \"leafItemSettings\", void 0);\n__decorate([\n Collection([], LevelSettings)\n], TreeMap.prototype, \"levels\", void 0);\n__decorate([\n Complex({}, HighlightSettings)\n], TreeMap.prototype, \"highlightSettings\", void 0);\n__decorate([\n Complex({}, SelectionSettings)\n], TreeMap.prototype, \"selectionSettings\", void 0);\n__decorate([\n Complex({}, TooltipSettings)\n], TreeMap.prototype, \"tooltipSettings\", void 0);\n__decorate([\n Complex({}, LegendSettings)\n], TreeMap.prototype, \"legendSettings\", void 0);\n__decorate([\n Property(false)\n], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"description\", void 0);\n__decorate([\n Property(0)\n], TreeMap.prototype, \"tabIndex\", void 0);\n__decorate([\n Property(null)\n], TreeMap.prototype, \"format\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"load\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"beforePrint\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"loaded\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemRendering\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"drillStart\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"drillEnd\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemSelected\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemHighlight\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"tooltipRendering\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemClick\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"itemMove\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"click\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"doubleClick\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"rightClick\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"mouseMove\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"resize\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"legendItemRendering\", void 0);\n__decorate([\n Event()\n], TreeMap.prototype, \"legendRendering\", void 0);\nTreeMap = __decorate([\n NotifyPropertyChanges\n], TreeMap);\nexport { TreeMap };\n/**\n * @private\n */\nexport class LevelsData {\n}\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nexport class TreeMapLegend {\n constructor(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n /**\n * method for legend\n *\n * @returns {void}\n * @private\n */\n renderLegend() {\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n const 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, (observedArgs) => {\n if (!observedArgs.cancel && observedArgs._changePosition !== this.treemap.legendSettings.position) {\n this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n this.calculateLegendBounds();\n if (this.legendCollections.length > 0) {\n this.drawLegend();\n }\n });\n }\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n calculateLegendBounds() {\n const treemap = this.treemap;\n const legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if (((!isNullOrUndefined(this.treemap.palette) && this.treemap.palette.length > 0) || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort((firstItem, nextItem) => (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort((firstItem, nextItem) => (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort((firstItem, nextItem) => (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0);\n const defaultSize = 25;\n const textPadding = 10;\n const position = legend.position;\n const legendTitle = treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(legend.title.text) : legend.title.text;\n const titleTextStyle = legend.titleStyle;\n const legendMode = legend.mode;\n let shapeX = 0;\n let shapeY = 0;\n let textX = 0;\n let textY = 0;\n const shapeHeight = legend.shapeHeight;\n const shapeWidth = legend.shapeWidth;\n let shapeLocation = [];\n let textLocation = [];\n const orientation = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n const leftPadding = 10;\n const topPadding = 10;\n const spacing = 10;\n let legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n let legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = titleTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = titleTextStyle.size || treemap.themeStyle.subtitleFontSize;\n const legendTitleSize = measureText(legendTitle, titleTextStyle);\n let startX = 0;\n let startY = 0;\n const shapePadding = legend.shapePadding;\n const itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n let j = 0;\n for (let i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n const legendTextSize = measureText(treemap.enableHtmlSanitizer ?\n SanitizeHtmlHelper.sanitize(legendItem['legendName']) : legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX = shapeX = (leftPadding + (shapeWidth / 2));\n startY = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n const maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation === 'Horizontal') {\n const prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n const 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;\n shapeY = startY;\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 const 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 const nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX;\n shapeY = startY;\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 const collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach((legendObj, index) => {\n const legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX = legendRect.x;\n startY = legendRect.y;\n }\n this.widthIncrement = Math.max(this.widthIncrement, Math.abs(startX - (legendRect.x + legendRect.width)));\n this.heightIncrement = Math.max(this.heightIncrement, Math.abs(startY - (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 const legendLength = this.legendCollections.length;\n const rectWidth = (orientation === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n const rectHeight = (orientation === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX = 0;\n startY = legendTitleSize.height + spacing;\n const textPadding = 10;\n const placement = legend.labelPosition;\n let itemStartX = 0;\n let itemStartY = 0;\n const labelAction = legend.labelDisplayMode;\n let maxTextHeight = 0;\n let maxTextWidth = 0;\n for (let i = 0; i < this.legendCollections.length; i++) {\n startX = (orientation === 'Horizontal') ? (startX + rectWidth) : startX;\n startY = (orientation === 'Horizontal') ? startY : (startY + rectHeight);\n let legendText = this.legendCollections[i]['legendName'];\n let itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation === 'Horizontal') {\n textX = startX + (rectWidth / 2);\n textY = (placement === 'After') ? (startY + rectHeight + (itemTextSize.height / 2)) + textPadding :\n (startY - textPadding);\n }\n else {\n textX = (placement === 'After') ? startX - (itemTextSize.width / 2) - textPadding\n : (startX + rectWidth + itemTextSize.width / 2) + textPadding;\n textY = startY + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation === 'Horizontal') ? startX : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX;\n itemStartY = (orientation === 'Horizontal') ? (placement === 'After') ? startY :\n textY - (itemTextSize.height / 2) : startY;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation === 'Horizontal') ? Math.abs((startX + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding);\n legendHeight = (orientation === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding) :\n Math.abs((startY + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX, y: startY,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n }\n getPageChanged() {\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 findColorMappingLegendItems(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (let 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 findPaletteLegendItems(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let child;\n let 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 const items = findChildren(data)['values'];\n for (let 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 const childElement = this.treemap.drilledLegendItems;\n if (!isNullOrUndefined(childElement['data']['options'])) {\n legendFillColor = childElement['data']['options']['fill'];\n }\n else {\n for (let k = 0; k < childElement.length; k++) {\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n childElement[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n let isDuplicate;\n let legendName;\n if (child && child.length > 0) {\n for (let i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight'],\n levelOrderName: child[i]['levelOrderName']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (let 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 calculateLegendItems(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let isAddData;\n let fill;\n let rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let currentData;\n let legendText;\n let isLeafItem;\n let colorMapProcess = false;\n let colorMapping;\n let groupIndex;\n const leaf = this.treemap.leafItemSettings;\n const levels = this.treemap.levels;\n let equalValue;\n const position = this.treemap.legendSettings.position;\n let gradientElement;\n let x2;\n let y2;\n let actualValue;\n let isDuplicate;\n let isEqualColor;\n let isRange;\n let isDesaturation = false;\n let legendIndex = 0;\n let outfill;\n let labelLegend;\n let otherIndex;\n this.outOfRangeLegend = null;\n for (let 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 (let j = 0; j < colorMapping.length; j++) {\n const colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n const colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (let q = 0; q < colorMap.color.length; q++) {\n const offsetColor = 100 / (colorMap.color.length - 1);\n const offsetValue = q * offsetColor + '%';\n const stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n const stop1Color = { colorStop: '0%', color: fill };\n const 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 const gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, labelLegend) : false;\n if (isNullOrUndefined(this.outOfRangeLegend) && !isDuplicate) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill, groupIndex: (!isLeafItem || groupIndex > -1) ? groupIndex : -1\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n for (let k = this.legendCollections.length - 1; k >= 0; k--) {\n if (this.legendCollections[k]['groupIndex'] === data[i]['groupIndex']) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[k]['legendData'].push(data[i]);\n break;\n }\n }\n }\n }\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n removeDuplicates(legendCollection, text) {\n let isDuplicate = false;\n for (let 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 isAddNewLegendData(legendText) {\n let newDataProcess;\n let itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (let j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n *\n * @private\n */\n drawLegend() {\n const legend = this.treemap.legendSettings;\n const render = this.treemap.renderer;\n let fill;\n let textOptions;\n let gradientElement;\n const textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (let i = 0; i < this.legendRenderingCollections.length; i++) {\n const itemId = this.treemap.element.id + '_Legend_Index_' + i;\n const textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n const bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n const textLocation = new Location(item['textX'], item['textY']);\n const rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n const text = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(item['text'])) : item['text'];\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', text, '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n defaultLegendRtlLocation(collection, spacing, treemap, legend) {\n const shapeLocation = collection['Shape'];\n const textLocation = collection['Text'];\n const legendText = collection['DisplayText'];\n const 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 drawLegendItem(page) {\n const treemap = this.treemap;\n const spacing = 10;\n const legend = treemap.legendSettings;\n const shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let textOptions;\n let legendRtlLocation;\n const render = treemap.renderer;\n const shapeBorder = legend.shapeBorder;\n let 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 const isLineShape = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n const strokeColor = isLineShape ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n const strokeWidth = isLineShape ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (let i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.totalPages[page]['Collection'][i];\n const legendText = this.treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(collection['DisplayText']) : collection['DisplayText'];\n const legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n legendElement.setAttribute('aria-label', legendText + ' Legend');\n legendElement.setAttribute('role', 'region');\n const shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n const textId = treemap.element.id + '_Legend_Text_Index_' + i;\n let shapeLocation = collection['Shape'];\n let textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, (observedArgs) => {\n const renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth, isLineShape ? collection['Fill'] : strokeColor, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n this.legendGroup.appendChild(legendElement);\n });\n }\n let pagingGroup;\n const width = spacing;\n const height = (spacing / 2);\n if (this.page !== 0) {\n const pagingText = (page + 1) + '/' + this.totalPages.length;\n const pagingFont = legend.textStyle;\n const pagingTextSize = measureText(pagingText, pagingFont);\n const leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n const rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n const locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n const pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n const leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n const rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n const rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n const leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n const leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n const 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 const rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n const 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 const pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': '',\n 'role': 'region',\n 'aria-label': pagingText\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n }\n renderLegendBorder() {\n const treemap = this.treemap;\n const legend = treemap.legendSettings;\n const legendTitle = legend.title.text;\n const spacing = 10;\n const textStyle = legend.titleStyle;\n const title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n const 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 const borderStyle = {\n color: legend.border.color || this.treemap.themeStyle.legendBorderColor,\n width: legend.border.width || this.treemap.themeStyle.legendBorderWidth\n };\n const renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, borderStyle, 1, this.legendBorderRect, '');\n const 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 renderLegendTitle() {\n const legend = this.treemap.legendSettings;\n const textStyle = legend.titleStyle;\n const legendTitle = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(legend.title.text)) : legend.title.text;\n let textOptions;\n const spacing = 10;\n const trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n const textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n const textElement = renderTextElement(textOptions, textStyle, textStyle.color ||\n this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n textElement.setAttribute('role', 'region');\n textElement.setAttribute('aria-label', legendTitle);\n }\n }\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n renderInteractivePointer(e) {\n const treemap = this.treemap;\n let target = e.target;\n const interactiveId = treemap.element.id + '_Interactive_Legend';\n let pointerDrawn = false;\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let targetItem;\n const 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 let currentData;\n let legendRect;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let data;\n let fill;\n let stroke;\n let strokeWidth;\n let legendElement;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n const svgRect = treemap.svgObject.getBoundingClientRect();\n for (let i = 0; i < this.legendCollections.length && !pointerDrawn; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n const rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData']) && currentData['legendData'].length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n const valuePath = treemap.rangeColorValuePath;\n if (targetItem['levelOrderName'].indexOf(this.legendCollections[i]['legendName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n else {\n for (let j = 0; j < data.length; j++) {\n if ((treemap.rangeColorValuePath && treemap.leafItemSettings.colorMapping.length > 0)\n ? data[j]['data'][valuePath] === targetItem['data'][valuePath]\n : (data[j]['levelOrderName'] === targetItem['levelOrderName'] ||\n data[j]['levelOrderName'].indexOf(targetItem['levelOrderName']) > -1)) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n break;\n }\n }\n }\n }\n else if (this.treemap.leafItemSettings.colorMapping.length === 0 && this.treemap.palette) {\n if (targetItem['levelOrderName'].indexOf(currentData['levelOrderName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n }\n drawInteractivePointer(legend, fill, stroke, id, strokeWidth, rect) {\n let path;\n let locX;\n let locY;\n const height = 10;\n const width = 10;\n const 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 const pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n }\n getLegendAlignment(treemap, width, height, legend) {\n let x;\n let y;\n const spacing = 10;\n let totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n const areaX = totalRect.x;\n const areaY = totalRect.y;\n const areaHeight = totalRect.height;\n const areaWidth = totalRect.width;\n const totalWidth = treemap.availableSize.width;\n const totalHeight = treemap.availableSize.height;\n const position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n }\n /**\n * @param {PointerEvent} e - Specifies the event.\n * @returns {void}\n * @private\n */\n mouseUpHandler(e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n *\n * @private\n */\n removeInteractivePointer() {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n const legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n }\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n changeNextPage(e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n }\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n wireEvents(element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n *\n * @private\n */\n addEventListener() {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n *\n * @private\n */\n removeEventListener() {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n }\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n getModuleName() {\n return 'treeMapLegend';\n }\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n destroy() {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = null;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n this.treemap = null;\n }\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n legendGradientColor(colorMap, legendIndex) {\n let legendFillColor;\n const xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n const defElement = this.treemap.renderer.createDefs();\n const linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n const opacity = 1;\n const position = this.treemap.legendSettings.position;\n const x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n const 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 (let b = 0; b < colorMap.color.length; b++) {\n const offsetColor = 100 / (colorMap.color.length - 1);\n const 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 const color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n }\n}\n","import { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nexport class TreeMapHighlight {\n constructor(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n mouseMove(e) {\n const treemap = this.treemap;\n let processHighlight;\n const targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let eventArgs;\n const items = [];\n const highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n const highLightElements = [];\n let process;\n let treeMapElement;\n let element;\n let orders;\n const selectionModule = this.treemap.treeMapSelectionModule;\n let shapeSelected = false;\n if (selectionModule && selectionModule.legendSelectionCollection.length > 0) {\n for (let i = 0; i < selectionModule.legendSelectionCollection.length; i++) {\n for (let j = 0; j < selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'].length; j++) {\n const selectedElementIndex = parseFloat(selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id.split('Item_Index_')[1].split('_')[0]);\n const targetElementIndex = targetId.indexOf('_Item_Index_') > -1 ? parseFloat(targetId.split('Item_Index_')[1].split('_')[0]) : null;\n if (selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id === targetId ||\n selectedElementIndex === targetElementIndex) {\n shapeSelected = true;\n break;\n }\n }\n }\n }\n if (targetId.indexOf('_Item_Index') > -1 && !shapeSelected) {\n if (this.highLightId !== targetId) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n const selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n let index;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n const length = this.treemap.treeMapLegendModule.legendCollections.length;\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0 && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length, 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 const legendShapeElement = selectionModule ? selectionModule.shapeElement : null;\n if (selectionModule ? this.shapeElement !== legendShapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n const legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n if (this.treemap.legendSettings.mode === 'Interactive') {\n this.treemap.treeMapLegendModule.removeInteractivePointer();\n }\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ?\n this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (let i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n const valuePath = treemap.rangeColorValuePath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (let j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process &&\n (!isNullOrUndefined(valuePath) && valuePath !== '' ?\n item['data'][valuePath] === targetItem['data'][valuePath] : true)) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (let k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n else {\n processHighlight = false;\n }\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_Index') > -1) {\n if (!isNullOrUndefined(selectionModule)) {\n selectionModule.legendSelectId = !isNullOrUndefined(treemap.legendId[0]) ? treemap.legendId[0] : null;\n }\n const selectedLegendIndex = selectionModule && selectionModule.legendSelectId ?\n parseFloat(selectionModule.legendSelectId.split('Index_')[1]) :\n (selectionModule && selectionModule.shapeSelectId ? parseFloat(selectionModule.shapeSelectId.split('Index_')[1]) : null);\n const targetIndex = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n if (this.treemap.legendSettings.visible && targetIndex !== selectedLegendIndex) {\n let itemIndex;\n let groupIndex;\n let length;\n const valuePath = treemap.rangeColorValuePath;\n const targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, this.treemap);\n this.legendHighlightCollection = [];\n }\n this.shapeTarget = 'highlight';\n const dataLength = this.treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n for (let i = 0; i < dataLength; i++) {\n for (let j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((!isNullOrUndefined(valuePath) && valuePath !== '' && treemap.leafItemSettings.colorMapping.length > 0)\n ? treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['data'][valuePath] === treemap.layout.renderItems[j]['data'][valuePath]\n : (treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['levelOrderName'] === treemap.layout.renderItems[j]['levelOrderName'])) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n const nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0 || this.legendHighlightCollection.length === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n let legendItem;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n }\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (let j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0) ?\n targetIndex === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n const nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length - 1]['ShapeCollection'] = { Elements: [] };\n let legendItem;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n }\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ?\n selectionModule.legendSelect : true) {\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, this.treemap);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n }\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n addEventListener() {\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 removeEventListener() {\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 getModuleName() {\n return 'treeMapHighlight';\n }\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n destroy() {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n }\n}\n/**\n * Performing treemap selection\n */\nexport class TreeMapSelection {\n constructor(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n mouseDown(e) {\n const targetEle = e.target;\n let eventArgs;\n const treemap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n const targetId = targetEle.id;\n const labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n const selectionElements = [];\n let treeMapElement;\n let element;\n let orders;\n const selection = treemap.selectionSettings;\n const highlightModule = this.treemap.treeMapHighlightModule;\n const layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n const isDrillItem = (item && !item.isLeafItem && treemap.enableDrillDown) &&\n (targetEle.nextSibling.textContent.indexOf('[+]') > -1 || targetEle.nextSibling.textContent.indexOf('[-]') > -1);\n if (targetId.indexOf('_Item_Index') > -1 && !isDrillItem) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId) {\n treemap.levelSelection = [];\n treemap.legendId = [];\n this.shapeSelectId = '';\n removeLegend(this.legendSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n treeMapElement = document.getElementById(layoutID);\n let index;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n const length = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeLegend(this.shapeSelectionCollection, treemap);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0\n && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length, 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 const legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.legendId.push(this.shapeElement.id);\n treemap.legendId.push(legendText.id);\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (let i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n const valuePath = treemap.rangeColorValuePath;\n if (orders.indexOf(item['levelOrderName']) > -1 &&\n (!isNullOrUndefined(valuePath) && valuePath !== '' ?\n item['data'][valuePath] === targetItem['data'][valuePath] : true)) {\n selectionElements.push(element);\n if (targetId.indexOf('_RectPath') > -1) {\n treemap.levelSelection.push(targetId);\n }\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n const highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (let k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (let 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, (observedArgs) => {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeLegend(this.shapeSelectionCollection, treemap);\n this.treemap.legendId = [];\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.levelSelection = [];\n if (this.legendSelect) {\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n const legendSelectIdIndex = !isNullOrUndefined(this.legendSelectId) ? parseFloat(this.legendSelectId.split('_Index_')[1]) : null;\n if (this.treemap.legendSettings.visible && (legendSelectIdIndex !== parseFloat(targetId.split('_Index_')[1]))) {\n let itemIndex;\n let groupIndex;\n let length;\n treemap.legendId = [];\n treemap.levelSelection = [];\n this.legendSelectId = targetId;\n this.legendSelect = false;\n const legendIndex = !isNaN(parseInt(targetId[targetId.length - 1], 10)) ?\n parseInt(targetId[targetId.length - 1], 10) :\n parseInt(targetId[targetId.length - 6], 10);\n const targetEle = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, treemap);\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n removeLegend(this.shapeSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.legendHighlightCollection = [];\n }\n const valuePath = treemap.rangeColorValuePath;\n const index = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n const dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (let k = 0; k < dataLength; k++) {\n for (let l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if ((!isNullOrUndefined(valuePath) && valuePath !== '' && treemap.leafItemSettings.colorMapping.length > 0) ?\n (treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['data'][valuePath] === treemap.layout.renderItems[l]['data'][valuePath])\n : (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName'])) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n const nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n this.treemap.selectionId = nodeEle.id;\n if (k === 0 || this.legendSelectionCollection.length === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length - 1]['ShapeCollection'] = { Elements: [] };\n }\n this.treemap.selectionId = nodeEle.id;\n let legendItem;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n this.legendSelectId = legendItem.id;\n this.shapeElement = legendItem;\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n this.shapeElement = targetEle;\n }\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle, 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 = this.legendSelectionCollection.length;\n treemap.levelSelection.push(nodeEle.id);\n if (treemap.legendId.indexOf(targetEle.id) === -1) {\n treemap.legendId.push(targetEle.id);\n }\n if (treemap.legendId.indexOf(legendItem.id) === -1) {\n treemap.legendId.push(legendItem.id);\n }\n this.legendSelectionCollection[length - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (let j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0) ?\n index === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n const nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendSelectionCollection, index, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n this.treemap.selectionId = nodeEle.id;\n length = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length - 1]['ShapeCollection'] = { Elements: [] };\n let legendItem;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n this.legendSelectId = legendItem.id;\n this.shapeElement = legendItem;\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n this.legendSelectId = targetId;\n this.shapeElement = targetEle;\n }\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.levelSelection.push(nodeEle.id);\n if (treemap.legendId.indexOf(legendItem.id) === -1) {\n treemap.legendId.push(legendItem.id);\n }\n if (treemap.legendId.indexOf(targetEle.id) === -1) {\n treemap.legendId.push(targetEle.id);\n }\n length = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n }\n }\n else if (isDrillItem) {\n removeLegend(this.legendSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n }\n }\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n selectTreemapItem(levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let item;\n for (let 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 const selection = this.treemap.selectionSettings;\n const selectionElements = [];\n let element;\n let index;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n this.treemap.levelSelection = [];\n const layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n const treeMapElement = document.getElementById(layoutID);\n const orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (let 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 (let m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n const length = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n index = getLegendIndex(length, 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 const selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n const highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (let k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (let j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n }\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n addEventListener() {\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 removeEventListener() {\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 getModuleName() {\n return 'treeMapSelection';\n }\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n destroy() {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n }\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nexport class TreeMapTooltip {\n constructor(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n renderTooltip(e) {\n let pageX;\n let pageY;\n let target;\n let touchArg;\n let 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 let value;\n const targetId = target.id;\n let item = {};\n let tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let location;\n let toolTipData = {};\n let tooltipContent = [];\n let markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.tooltipSettings.textStyle.fontFamily || this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.tooltipSettings.textStyle.color || this.treemap.themeStyle.tooltipFontColor;\n // eslint-disable-next-line max-len\n this.tooltipSettings.textStyle.opacity = this.tooltipSettings.textStyle.opacity || this.treemap.themeStyle.tooltipTextOpacity;\n const border = {\n width: this.tooltipSettings.border.width || this.treemap.themeStyle.tooltipBorderWidth || 0,\n color: this.tooltipSettings.border.color || this.treemap.themeStyle.tooltipBorderColor || 'transparent'\n };\n if (this.treemap.enableHtmlSanitizer) {\n for (let a = 0; a < tooltipContent.length; a++) {\n tooltipContent[a] = SanitizeHtmlHelper.sanitize(tooltipContent[a]);\n }\n }\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData, border: border,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, (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 addTooltip(tootipArgs, markerFill, tooltipEle, eventArgs) {\n let cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let args;\n if (!isNullOrUndefined(tootipArgs)) {\n const { cancel: c } = tootipArgs, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n theme: this.treemap.theme,\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor,\n border: args['border'],\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n }\n mouseUpHandler(e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n }\n removeTooltip() {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n const tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n *\n * @private\n */\n addEventListener() {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n *\n * @private\n */\n removeEventListener() {\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 getModuleName() {\n return 'treeMapTooltip';\n }\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n destroy() {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n }\n}\n"],"names":["this","printFunction","__decorate"],"mappings":"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"}